【Java EE】Day03 DQL、约束、数据库设计、范式、备份和还原
〇、总结
1、DQL
- 聚合函数有空值需要使用ifnull函数
- where不能使用聚合函数
- 分页开始索引的计算,及mysql和oracle的方言
2、约束
- 删除唯一约束DROP INDEX 列名;
3、范式
- 2N范式消除部分依赖
4、备份与还原
- 数据库备份mysqld DB名>路径
- 数据库还原:source SQL文件
一、DQL查询语句
1、排序查询:order by
2、聚合函数
- 一列为一个整体,进行列的纵向计算
- 会排除空值项
- ifnull函数
3、分组查询
- group by子句 having xxx条件
- where中不能跟聚合函数而having可以
4、分页查询
- limit 开始索引,每页条数
- 公式 :开始的索引=(当前的页码-1)*每页显示的条数
- 方言:oracle是rownumber
二、约束
1、概述
- 对表中数据限定,保证其正确性
- 分类
- 主键约束
- 非空约束:not null
- 唯一约束
- 外键约束
2、非空约束
- 创建
- 修改:ALTER TABLE STU MODIFY NAME VARCHAR(20) NOT NULL;
- 删除:ALTER TABLE STU MODIFY NAME VARCHAR(20);-- 也是一种修改
3、唯一约束
- 改:ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
- 删:ALTER TABLE stu DROP INDEX phone_number;
4、主键约束
- 表中记录的唯一标识
- 改:ALTER TABLE STU MODIFY ID INT PRIMARY KEY;
- 删:
- ALTER TABLE STU MODIFY ID INT;-- 执行成功但不会生效
- ALTER TABLE STU DROP PRIMARY KEY;
- 主键自增长:auto_increment
-- 删除自动增长 ALTER TABLE STU MODIFY ID INT; INSERT INTO STU VALUES(12,'CCC');-- 可以 INSERT INTO STU VALUES(NULL,'CCC');-- 不可以 -- 添加自动增长 ALTER TABLE STU MODIFY ID INT AUTO_INCREMENT; INSERT INTO STU VALUES(NULL,'CCC');-- 可以
5、外键约束
- constraint 外键名称 foreign key 外键列名称 reference 主表名称(主表的列名称)
- 删:ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk;
- 改:ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id);
- 级联操作
- 级联更新:ON UPDATE CASCADE;
- 级联删除:ON DELETE CASCADE;
三、数据库的设计
1、多表之间的关系
- 一对一
- 一对多
- 多对多
2、实现关系
- 一对一
- 一对多
- 多对多
- 避免多个外键值不指向同一个数据
- 解决:对外键列添加unique约束
3、案例:途牛旅游网
四、数据库设计范式
1、概述
- 设计数据库要遵循的规范
- 越高的范式冗余越小
- 共6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)
2、分类
- 第一范式(1NF):不可分割的原子项。
- 第二范式(2NF):非码属性完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
- 第三范式(3NF):非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
3、范式详解
- 2NF
- 函数依赖
- 完全函数依赖,如(学号,课程名称)--->分数
- 部分函数依赖,如(学号,课程名称)-->姓名
- 3NF
- 消除传递依赖,解决下述添加问题
五、数据库的备份和还原
1、备份
- mysqldum -u用户名 -p密码 (数据库名)> 保存的路径
2、还原
- 步骤:
- 建库
- 使用
- 执行还原文件
3、图形化界面
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/14847593.html