【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、图形化界面

posted @ 2021-06-03 23:12  哥们要飞  阅读(51)  评论(0编辑  收藏  举报