JavaWebDay02_DQL,约束,多表关系,范式,数据库备份还原

JavaWebDay02

课程大纲
1、DQL 数据库表记录的查询(排序、聚合、分组、分页)
2、约束(非空、唯一、主键、外键)
3、多表关系(一对多、多对多、一对一)
4、范式
5、数据库备份还原

第一章 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

第二章 约束

约束的作用:(为什么要加上约束)

保证数据的完整性正确性。(可以校验数据是否是"重复的"是否是"不是空值"等)

对于每一种约束而言:

(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.名称
FOREIGN  KEY 
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;

第三章 多表关系

1、一对多
A.生活实例: 
	部门和员工之间的关系
	
B.建表原则:
	一是主键,多是外键.多的外键指向一的主键
2、多对多
A.生活实例:
	学生和课程之间的关系
	
B.建表原则:
	设计一个"中间表",至少包含两个字段(两个表的主键)
3、一对一 (了解即可)
A.生活实例:
	人和身份证的关系
	
B.建表原则:
	在任意一方添加外键(唯一约束 UNIQUE )指向另一方的主键

第四章 范式

1、范式的含义
设计数据库的时候,遵循的规范
2、范式的分类

在同一张表当中,不要存在两行数据当中都是相同的。使劲抽

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

第五章 数据库备份还原

1、命令行备份和还原
A.备份数据库
	mysqldump -u用户名 -p密码 数据库名称 > 保存的路径
	
B.还原数据库
	a.登录数据库
	b.创建数据库
	c.使用数据库
	d.执行文件  source 文件路径
2、图形化界面备份和还原
参考笔记、可以参考 川锅的 CHM格式笔记"D往期课程b数据库高级"	  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值