创建表时的更进一步限制和约束

1.约束类型
1)NOT NULL - 指示某列不能存储 NULL 值。
指定id不能为NULL
在这里插入图片描述

2)UNIQUE - 保证某列的每行必须有唯一的值。
在这里插入图片描述在这里插入图片描述

3)DEFAULT - 规定没有给列赋值时的默认值。
在这里插入图片描述

4)PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
在这里插入图片描述

5)FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
在这里插入图片描述这里的student中增添数据时,id后面的数据必须和class表中的对应,否则会出现错误
在这里插入图片描述
6)CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。

在一个表中插入另一个表的内容
查询(进阶)
1.聚合查询
1)COUNT([DISTINCT] expr) 返回查询到的数据的 数量
(* 是个通配符,可以写其他列名,表达式甚至可以把 * 换成常亮)
在这里插入图片描述
在这里插入图片描述
下面这种情况是当NULL是表中的数据时,它不被查询到
在这里插入图片描述

SUM([DISTINCT] expr) 返回查询到的数据的 总和,不是数字没有意义
在这里插入图片描述

AVG([DISTINCT] expr) 返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr) 返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr) 返回查询到的数据的 最小值,不是数字没有意义
在这里插入图片描述
分组查询(select 出来的结果的顺序是不定的,除非加上order by)
group by 还能指定 筛选条件.不是搭配where,而是搭配 having后面跟上一些条件表达式.(进行更复杂的统计)
在这里插入图片描述
在这里插入图片描述
联合查询/多表查询(SQL本来就是执行效率比较的的操作,多表查询是SQL中效率特别低的操作了)
在这里插入图片描述
内连接:
select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;
select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;
1)查询许仙的成绩
在这里插入图片描述
2)查找所有人的总成绩,以及每个人的个人信息
在这里插入图片描述
在这里插入图片描述
3)查询所有人的成绩,以及他的信息,要加上班级
在这里插入图片描述

外连接:
分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接。
语法:
案例:查询所有同学的成绩,及同学的个人信息,如果该同学没有成绩,也需要显示
– 左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;
在这里插入图片描述

– 右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件
在这里插入图片描述
自连接
自连接是指在同一张表连接自身进行查询。
显示所有“计算机原理”成绩比“Java”成绩高的成绩信息

子查询
子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询
单行子查询:返回一行记录的子查询
查询与“不想毕业” 同学的同班同学:
在这里插入图片描述
多行子查询:返回多行记录的子查询
查询“语文”或“英文”课程的成绩信息
先执行子查询,把查询结果放到内存中,再执行子查询,最后拿着内存中的数据辅助进行筛选主表中的记录.
适用于子查询结果比较小,主查询比较大的情况
在这里插入图片描述
先执行主查询,得到的结果再和子查询结果进行join操作(多表联合查询)
适用于子查询结果数目比较大的时候(尤其是在内存中不方便缓存子查询结果时)
在这里插入图片描述
为了合并多个select的执行结果,可以使用集合操作符 union,union all。使用UNION和UNION ALL时,前后查询的结果集中,字段需要一致。
union:该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行
union all:该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值