MySQL 知识点小结
------------------ 操作mysql的命令 --------------------
cmd命令行中查看mysql版本:
mysql -V
mysql --version
登陆mysql:
mysql -uroot -pluis
mysql -uroot -p
在mysql中查看数据库版本:
select version();
查看所有数据库:
show databases;
切换数据库:
use xxx;
查看当前库中的表:
show tables;
查看其他库中的表:
show tables from 库名;
创建数据库:
create database xxx;
删除数据库:
drop database xxx;
导表:(需要先有数据库)
source sql脚本;
查看表结构:
desc 表名;
查看当前库:
select database();
终止一条语句:
\c
退出mysql:
exit 或 Ctrl + c
查看某建表语句:
show create table 表名;
------------------ SQL语句 --------------------
条件查询 between and
条件查询 is null 和 is not null
and or
条件查询 in
模糊查询 like
数据排序 desc 和 asc
分组函数 group by
多字段分组查询
group by 之 having 二次过滤
去除重复记录 distinct
判空函数 ifnull()
内连接、外连接、全连接
内连接:等值连接、非等值连接、自连接
外连接:左外连接、右外连接
多表连接查询
够用测试题:找出每一个员工的部门名称、工资等级以及上级领导(内连接和外连接之多表查询)
select、where、from 后嵌套子查询(from后接子查询用的最多)
union 数据拼接
分页查询 limit mysql特有
desc asc 默认升序
count() 分组函数/多行处理函数
分组函数(sum,count,max,min,avg)自动忽略null
分组函数不可直接用于while子句中,因为分组函数是在group by之后执行,而group by是在while之后执行
ifnull() 空处理函数 有null参与的运算结果都为null
count() 和 count(字段) 区别:
count(*) 统计总记录条数
count(字段) 统计不为null的该字段记录的条数
分组函数一般都会和group by联合使用
重要结论:当一条语句后面有group by的话,select后面只能跟分组函数和参与分组的字段,其他
字段不能跟,有的话会有问题!(mysql中无意义,oracle中直接报错。)
多字段联合分组:group by后使用逗号分隔,按照字段先后顺序进行分组。
查询结果去重用distinct关键字
distinct出现在多字段最前面表示多字段联合去重
建表create、添加数据insert、修改数据update、删除数据delete、删除大表中数据truncate(留表头,删其他数据,不可回滚,永久删除)
表的复制create as select、表的删除drop
总结 DQL 语句执行顺序:
select 5
xxx
from 1
xxx
where 2
xxx
group by 3
xxx
having 4
xxx
order by 6
xxx;
约束:
非空约束: not null 只存在列级
唯一性约束:unique 列级&表级(唯一不可重复,但是可以为null)
主键约束:primary key 列级&表级(唯一不可重复,且不可为null)
外键约束:foreign key(字段) reference 表名(一般填父表主键)
原则:
删除:先删除子表,再删除父表
建表:先创建父表,再创建子表
主键自增:primary key auto_increment
三大搜索引擎:
MyISAM(不支持事务,但可压缩,占空间小,最常用的)
InnoDB(支持事务,安全,但执行效率较低,mysql默认引擎)
MEMORY(不支持事务,但查询效率最高,数据存在内存中,断电清空)
事务四大特性:
原子性:最小单元,不可再分
一致性:同时成功,同时失败
隔离性:四大隔离级别(读未提交、读已提交[oracle默认]、可重复读[mysql默认]、串行化读)
使用分组函数后,查询的时候只允许有参与分组的字段和分组函数,其他字段不允许写,
写了的话,其结果显示无意义。在oracle中会报错!
DQL 数据查询语言 (Date Query Language) select
DML 数据操控语言 (Date Manipulation Language) insert delete update
DDL 数据定义语言 (Date Definition Language) create drop alter
TCL 事务控制语言 (Transactional Control Language) commit rollback
DCL 数据控制语言 (Data Control Language) grant revoke
数据库设计三范式:
第一范式:所有表必须有主键,每个字段原子性不可再分
第二范式:所有非主键字段完全依赖主键,不能产生部分依赖
第三范式:所有非主键字段完全依赖主键,不能产生传递依赖
口诀:
多对多,三张表,关系表两个外键。
一对多,两张表,多的表加外键。
目的:减少数据冗余
提醒:实际开发中,以满足客户需求为主,有时候会拿冗余换执行速度。
(多表联查会降低执行速度,放一起虽然冗余,但效率有时会高一些)
一对一设计两种方案:主键共享、外键唯一
情景:用户登录和用户详情,登录单独出一张表就不用查全部信息。
分组函数是在分完组后可用,所以可以用在having二次过滤中!!!
select
deptno,count(*)
from
emp
group by
deptno
having
count(*) >= 5;
都看到最后了,右下角来个赞鸭!-.- 欢迎评论留言~