目录
一、分组查询-7
1.排序查询-4
关键字:order by
格式:select 列 from 表 [where] order by 条件(age) (Asc升/Desc降);
二级排序:select 列 from 表 [where] order by 条件(1) Asc , 条件(2) Asc;
注意:在书写代码时,先写where ,再写排序order by,默认升序
2.聚合查询-4
意义:一列数据计算出一个值
种类:最大max(······),最小min(······),平均avg(······),计数count(······),求和sum(······)
格式:select max(age) from 表 where [条件];
查询该表共多少数据:select count (*) from 表 ;
3.分组查询-3
意义:按照指定的字段,将数据分成若干组,通常情况下,分组和聚合结合使用
格式:select 列,[聚合结果] from 表 group by 分组条件列;
与聚合函数合并:select 列,[聚合结果] from 表 where 条件 group by 分组条件列 order by 条件(age) (Asc升/Desc降);
4.group by注意事项-4
(1)在使用group之后,无法在select中使用除分组字段之外的其他字段
(2)聚合函数配合分组进行使用时,聚合的范围是当前分组内部
(3)我们也可以根据多个字段进行分组操作,多个字段完全相同的会被归为一组数据
(4)在开发中使用where筛选,要使用在 group by 之前,order by要用在group by 之后
5.同类单独聚合-4
问题:select 中选择的字段,不能是分组范围外的其他字段
函数:group_count(聚合列)
格式:select group_count(聚合列) from 表 group by 分组列;
注意:按照分组列分组后,同组内不同属性记录放到一条中
6.having 和 where的区别-3
-
having 是在 group by 之后使用的,而where 是在group by之前使用的
-
having 中可以使用聚合函数, 而where中不能使用聚合函数
-
having 中不能使用除分组字段外的其他字段, 而where中可以使用任意字段
7.分页查询-5
定义:按照一定的规则,查询全部数据中的一部分信息, 又叫做边界查询
格式:select 列名 from 表名 limit m , n;
m 代表查询数据的起始索引 : 索引值从0开始 ,如果从头开始查询,则索引值为0
n 代表查询数据的条目数 : 如果要查询5条数据则为5
举例:要查询从 下标为4的记录开始,查询5条数据 limit 4, 5;
二、外键约束-5
1.多表-4
目的:减少数据冗余
-
学生表和班级表之前,学生是多的一方,成为从表, 班级是一的一方,称为主表.
在从表中创建一个外键(class_id),绑定主表的主键(class_id) 从而形成对应关系.
-
班级表和教师表之间,班级是多的一方称为从表, 教师是一的一方,称为主表.
在从表中创建一个外键(teacher_id),绑定主表中的主键(teacher_id).形成对应关系.
3.学生表和教师表之间.没有直接关系.
2.外键约束-5
外键(建表时末尾直接加):foreign key (外键字段) references category (主表主键)
外键约束:就是主表主键和从表外键之间的关联关系,添加约束后,强制关联,关联不成功则无法插入
如果在定义表时没有添加外键约束,也可以使用alter table进行添加
后加外键:ALTER TABLE 表 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES category(主表主键);
删外键:需要使用外键名称,ALTER TABLE 表 DROP FOREIGN KEY 外键名;
3.使用的外键值,必须是主表中存在的-2
先添加主表主键:INSERT INTO category VALUES (2,'办公用品');
再添加从表数据:INSERT INTO productsVALUES (1,'雕牌打字机',23.55,2);
4.删除主表数据-3
先删除从表中,使用该id值的从表记录 :DELETE FROM 从表 WHERE 外键 = 2;
再副除主表中的该记录即可 :DELETE FROM 主表 WHERE id = 2;
总结:副除主表中的数据记录时,该记录不能被从表中的外键引用(绑定),否则无法副除
5.注意-3
外键约束主要是保证了数据的一致性和完整性
外键约束也降低了数据的查询效筝和插入效率
增加了数据插入的难度、提高了数据操作复条性
三、多表连接-4
1.内连接-3
格式:select 字段列表 from 左表 inner join 右表 on 连接规则;
连接规则:左表.列 = 右表.列
内连接:就是左表和右表按照指定规则进行匹配,匹配成功的数据,则保留,不成功则放弃
2.左外连接-3
解释 : 左表和右表链接,保留左表全部数据,和右表中匹配成功数据,其他全删 关键字 : left outer join 格式 : select 列名 from 左表 left outer join 右表 on 连接规则;
3.右外连接-3
解释 : 左表和右表链接,保留右表全部数据,和左表中匹配成功数据,其他全删 关键字 : right outer join 格式 : select 列名 from 左表 right outer join 右表 on 连接规则;
4.注意事项-3
左表是主表还是从表呢? 没有关系 , 写在左边的表就是左表,写在右边的表就是右表
hero作为左表左连接时, 和hero作为右表右连接时获取的数据内容是完全相同的
列的顺序可以随意调整