目录
b). order by ... desc 和 desc ... 有什么区别
1.数据库约束
为什么要使用数据库约束?
目前有student表,book表,time表,那么我要完成学生可以在一个时间范围内借阅图书,并在这个时间范围内归还图书的这个要求,有两种选择,一:直接将3张表连接起来。二:创建专门的borrowing表。
建议使用方法二,因为可以使用数据约束,(数据约束:借阅关系表可以设置外键约束,确保录入的数据是有效的关联。比如borrowing
表中的student_id
必须是student
表中已存在的id
,这样能防止出现孤立的或无效的借阅记录,保证数据的完整性)。
1.1 not null
A. 代码实例 + 理解解释
a). 名词解释+演示


1.2 unique
A. 代码实例 + 理解解释
a). 名词解释+演示

1.3 default
A. 代码实例 + 理解解释
a). 名词解释+演示

b). order by ... desc 和 desc ... 有什么区别

c). 实操例子

1.4 primary key
A. 代码实例 + 理解解释
a). 名词解释+演示
b).如何保证主键唯一
c). 主键实操
1.5 foreign key
A. 代码实例 + 理解解释
a). 名词解释

b). 功能体现
c). 如何删除
d). 扩展
a. 是否可以修改不相关的列
b. 是否正确定义
e). 生活实例
a. 电商网站
b. 电脑文件
c. 是否导致硬盘空间满
2.表的设计
设计理念
2.1 一对一
图解
2.2 一对多
图解
2.3 多对多
图解
3.新增
语法
insert into table_name [(colum [, colum ...])] select ...
例子
-- 将学生表中的所有数据复制到用户表
insert into test_user(name, email) select name, qq_mail from student;
4.查询
进阶查询的介绍 + 注释
4.1 聚合查询
4.1.1 聚合函数
count
返回查询到的数据的 数量
sum
返回查询带的数据的 总和,不是数据没有意义
avg
返回查询带的数据的 平均值,不是数据没有意义
max
返回查询带的数据的 最大值,不是数据没有意义
用法与上方一致,就不做介绍
min
返回查询带的数据的 最小值,不是数据没有意义
用法与上方一致,就不做介绍
4.1.2 gruop by
语法
select column1, sum(column2), .. from table group by column1,column3;
例子
注意
4.1.3 having
select role,max(salary),min(salary),avg(salary) from emp group by role
having avg(salary)<1500;
4.2 联合查询
4.2.1 内连接
语法
select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;
select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;
例子
1.查某一同学成绩
2.查所有同学成绩 + 个人信息
3.查询每个同学每门课课程名字+分数
4.2.2 外连接
语法
-- 左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;
-- 右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件;
概述
例子
4.2.3 自连接
概述
为什么要使用自连接
例子
4.2.4 子查询
单子查询
查找同伴同学,关键突破就是拿到这个班级的id,因为同班=在一个班,在一个班 -> name
多子查询
其实就是简单的替换,套娃一样的查询
4.2.5 合并查询
union 关键字
与or进行对比
union的注意点
1.使用条件
2.筛选数据的个数
3.按照第一个表的数据来命名
union all 关键字
得到所有的数据
5.内容总结
5.1 约束类型
5.2 表的关系
1. 一对一:
2. 一对多:
3. 多对多:需要创建中间表来映射两张表的关系
5.3 新增加
insert into table_name [(colum [, colum ...])] select ...
5.4 查询
1. 聚合函数:max, min, avg, count, sum
2. 分组查询: group by...having...
3. 内连接:
select ... from 表1,表2 where 条件
-- inner可以省略
select ... from 表1 join 表2 on 条件 where 其它条件
4. 外连接:
select ... from 表1 left/right join 表2 on 条件 where 其它条件;
5.自连接:
select ... from 表1,表1 where 条件;
select ... from 表1 join 表1 on 条件;
6. 子查询:
--sql
--单行子查询
select ... from 表1 where 字段1 = (select ... from ...);
--[not] in
select ... from 表1 where 字段1 in (select ... from ...);
--[not] exists
select ... from 表1 where exists (select ... from ... where 条件);
--临时表:form子句中的查询
select ... from 表1,(select ... from ...) as tmp where 条件;
7.合并查询:
-- union:去除重复数据
select ... from ... where 条件
union
select ... from ... where 条件
-- union all:不去重
select ... from ... where 条件
union all
select ... from ... where 条件
-- 使用union和union all时,前后查询的结果集中,字段需要一致
总的来说,知识点不算多,但是需要的是每日的练习,来提升熟练度。