Mysql(2)

一.数据库的约束

1.not null(指示某列不能存储null值)

在创建表的时候我们可以指定某一列不能存储null值.

在这里插入图片描述

上述我们指定"id"这一列不能为null值,当我们添加元素的时候,如果id这一列为null的话就会报错.

在这里插入图片描述

2.unique(保证某列的每行必须有唯一的值)

在这里插入图片描述

以"id"这一列为例,当我们插入一个"id"为1的时候,显示插入成功,当我们第二次再次插入"id"为1的时候,就会显示"重复录入了key是1的数据"

3.default(规定给列赋值时的默认值)

在这里插入图片描述

4.主键(重要) primary key(not null和unique的结合,确保某列有唯一的标识)

在这里插入图片描述

在这里插入图片描述
这里我们只需要指定插入姓名,因为"id"这一列已经主键约束,而"primary key auto_increment"就是自增主键,不用我们再指定id,自增主键会帮助我们指定.

注意:一张表只能有一个primary key

5.外键 (foreign key)

外键是为了解决不科学的不合法的.
在这里插入图片描述
创建好外键就要求本表中这个列的数据必须要在引用的外面的表的对应列中存在

我们可以认为班级表约束了学生表
把班级表这种约束别人的表,称为"父表"
把学生表这种被别人约束的表叫做"子表"

不仅父表约束子表,子表也可以约束父表.

二.聚合查询

聚合查询就是"行和行"之间的运算,但是有一定的限制.

select count(*) from student;

在这里插入图片描述
查询操作:
1)先执行select * from
2)再执行count

使用count(*)的时候,即使全部是null的,也是加入计数的.
在这里插入图片描述

三.分组查询(group by)

就是把这个指定的列,值相同的记录,划分到一组,针对这些组就可以分别进行聚合查询了.
在这里插入图片描述
在这里插入图片描述

四.联合查询(多表查询)

在这里插入图片描述

笛卡尔积得到的是一个更大的表
笛卡尔积的列数,就是之间两个表的列数之和
笛卡尔积的行数,就是之间两个表的行数之积
select * from student,class;

在这里插入图片描述
将student和class表进行笛卡尔积后得出上述结果,但是上述结果很多都是没有意义的,所以我们要加入一些限制条件

加入限制条件后结果都是准确的
select * from student,class where student.classId=class.classId;

在这里插入图片描述

联合查询的过程:
1)笛卡尔积
2)指定连接条件
3)指定其他条件
4)针对列进行精简

进行夺标查询还有一种写法

select * from1 join2 on 连接条件;

介绍内连接,外连接:

内连接:

select * from student inner join class on student.id=class.classId;

在这里插入图片描述

内连接的结果

在这里插入图片描述

外连接分为左外连接(left)和右外连接(right)

左外连接

select * from student left join class on student.id=class.classId;

在这里插入图片描述

右外连接

select * from student right join class on student.id=class.classId;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值