MySQL总结2

MySQL总结2 1. DQL 数据库表记录的查询 1、排序查询

A.基础语法: ORDER BY 列名称 排序规则B.排序规则: ASC升序(从小到大) 默认的 DESC降序C.案例: -- 按照数学成绩升序排列 SELECT * FROM 学生表 ORDER BY 数学成绩 ASC ; -- 先按照数学成绩升序排,数学成绩相同就按英语成绩降序 SELECT * FROM 学生表 ORDER BY 数学成绩 ASC , 英语成绩 DESC;

2、聚合函数
A.常用的聚合函数 a. COUNT(列名)-- 求个数 b. MAX(列名)-- 求最大值 c. MIN(列名)-- 求最小值 d. SUM(列名)-- 求和 e. AVG(列名)-- 求平均值 B.注意事项 聚合函数排除为NULL值的列.解决方案: a.不采用 为NULL的列 b.函数 IFNULL(列名,0)C.例如: 统计学生表当中,数学成绩的平均分 SELECT AVG(IFNULL(数学成绩,0)) FROM 学生表;

3、分组查询 GROUP BY
A.基础格式 GROUP BY 分组的字段 B.注意事项 a.分组之后,查询的结果是 分组的字段 或者是 聚合函数 b.两个区别 WHERE 和 HAVING WHERE分组之前的条件筛选,不满足条件,不参与分组. 后面不能跟聚合函数 HAVING分组之后的条件筛选,不满足条件,不会显示出来. 后面直接跟聚合函数C.案例 --根据性别进行分组,查询学生表当中的性别和对应的人数 SELECT 性别,COUNT(主键id) FROM 学生表 GROUP BY 性别; -- 从学生表当中查询成绩大于80,对性别分组要求人数大于2,显示最后的结果 SELECT COUNT(主键id) FROM 学生表 WHERE 成绩>80 GROUP BY 性别 HAVING COUNT(主键ID)>2;

4、分页查询 LIMIT
A.基础格式 LIMIT 起始位置,每页条数 B.计算公式 起始位置 = (当前页数-1)*每页条数 C.案例: 每页条数显示4条,在第6页的写法 SELECT * FROM 表名称 LIMIT 20,4; -- (6-1)*4 =20

?
2. 约束
约束的作用:(为什么要加上约束)
保证数据的完整性正确性。(可以校验数据是否是"重复的"是否是"不是空值"等)
对于每一种约束而言:
【MySQL总结2】(1) 在创建表的时候,添加约束
(2)在表创建之后,添加约束
(3)删除约束
1、非空约束 A.名称
NOT NULL

B.效果
不能添加为空的数据.("姓名","商品编号")

C.三种操作的方式
a.创建表的时候,添加非空约束 CREATE TABLE 表名称 (列名1 数据类型1,列名2 数据类型2 NOT NULL); b.表创建完毕之后,再添加非空约束 ALTER TABLE 表名称 MODIFY 列名称 数据类型 NOT NULL; c.删除非空约束 ALTER TABLE 表名称 MODIFY 列名称 数据类型;

2、唯一约束 A.名称
UNIQUE

B.效果
不能添加重复的数据,NULL只能有一个.("手机号码","身份证","邮箱")

C.三种操作的方式
a.创建表的时候,添加唯一约束 CREATE TABLE 表名称 (列名1 数据类型1,列名2 数据类型2 UNIQUE); b.表创建完毕之后,再添加唯一约束【条件:不能有重复的】 ALTER TABLE 表名称 MODIFY 列名称 数据类型 UNIQUE; c.删除唯一约束 ALTER TABLE 表名称 DROP INDEX 列名称;

3、主键约束 A.名称
PRIMARY KEY主键的关键字 AUTO_INCREMENT 自动增长的关键字(根据上一行的数据进行自动增长)

B.效果
主键效果: 非空并且唯一,而且在一张表当中只能有一个主键 自动增长: 在上一行的基础上,自动加上1

C.三种操作的方式
a.创建表的时候,添加主键约束 CREATE TABLE 表名称 (列名1 数据类型1 PRIMARY KEY AUTO_INCREMENT,列名2 数据类型2); b.表创建完毕之后,再添加主键约束【条件:不能有重复的】 ALTER TABLE 表名称 MODIFY 列名称 数据类型PRIMARY KEY AUTO_INCREMENT; c.删除主键约束 ALTER TABLE 表名称 DROP PRIMARY KEY; -- 删除主键约束 ALTER TABLE 表名称 MODIFY 自动增长的列名称 自动增长的数据类型; -- 删除自动增长的效果

4、外键约束 A.名称
FOREIGNKEY

B.效果
让两个表之间产生关联,自己表的"外键"连上别人表的"主键"

C.三种操作的方式
a.创建表的时候,添加外键约束 CREATE TABLE 表名称( 列名1 数据类型1, 列名2 数据类型2, CONSTRAINT 外键别名 FOREIGN KEY (外键列名称) REFERENCES 其他表名称(其他表主键) ); b.表创建完毕之后,再添加外键约束 ALTER TABLE 表名称 ADD CONSTRAINT 外键别名 FOREIGN KEY (外键列名) REFERENCES 其他表名(其他表主键); c.删除外键约束 ALTER TABLE 表名称 DROP FOREIGN KEY 外键别名;

D.外键级联操作
a.级联的含义: 多个表主外键关系删除和修改的时候,彼此之间会受到影响 b.两个级联的关键字 级联更新ON UPDATE CASCADE 级联删除 ON DELETE CASCADE c.添加级联操作的语法 ALTER TABLE 表名称 ADD CONSTRAINT 外键别名 FOREIGN KEY (外键列名称) REFERENCES 其他表名称(其他表主键) ON UPDATE CASCADE ON DELETE CASCADE;

3.多表关系 1、一对多
A.生活实例: 部门和员工之间的关系 B.建表原则: 一是主键,多是外键.多的外键指向一的主键

2、多对多
A.生活实例: 学生和课程之间的关系 B.建表原则: 设计一个"中间表",至少包含两个字段(两个表的主键)

3、一对一 (了解即可)
A.生活实例: 人和身份证的关系 B.建表原则: 在任意一方添加外键(唯一约束 UNIQUE )指向另一方的主键

?
4. 范式 1、范式的含义
设计数据库的时候,遵循的规范

2、范式的分类
在同一张表当中,不要存在两行数据当中都是相同的。使劲抽
A. 第一范式(1NF) 每一项都是不可以分割的原子数据.不能存在合并项 B. 第二范式(2NF) 抽取了核心直接依赖关系,其他间接关系放在一边 C. 第三范式(3NF) 再次抽取间接表当中的依赖关系. D. 巴斯-科德范式(BCNF) E. 第四范式(4NF) F. 第五范式(5NF)

?
5.数据库备份还原 1、命令行备份和还原
A.备份数据库 mysqldump -u用户名 -p密码 数据库名称 > 保存的路径 B.还原数据库 a.登录数据库 b.创建数据库 c.使用数据库 d.执行文件source 文件路径

2、图形化界面备份和还原
参考笔记、可以参考 川锅的 CHM格式笔记"D往期课程b数据库高级"

    推荐阅读