1.having和where的区别?
答:
where
1.对查询结果进行分组前,将不符合 where 条件的行去掉,即在分组之前过滤数据,即先过滤再分组。
2.where 后面不可以使用聚合函数
having
1.having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤。
2.having 后面可以使用聚合函数
2.什么是主键,主键有什么作用?
答:主键就是表中记录的唯一标识。
无规矩不成方圆,无约束不成完整数据。主键能对表进行约束规范,保证了数据的正确性、有效性和完整性。
3.我们今天学了几种约束,主键必须要有哪几种约束?
答:四种约束;
1.主键约束:primary key,非空且唯一,一张表只能有一个字段为主键,主键就是表中记录的唯一标识。
2.非空约束:not null,某一列的值不能为null
3.唯一约束:unique,某一列的值不能重复(注:唯一约束可以有null值,也可以有多条记录为null值)
4.外键约束:foreign key,让表于表产生关系,从而保证数据的正确性。
主键必须要非空和唯一约束。
4.什么情况下会用到group by分组函数?
答:
在需要对查询出来结果数据进行分组时,使用到group by分组函数。
使用group by 分组函数时需要注意以下几点:
1.分组之后查询的字段只能是分组字段、聚合函数
2. where 和 having 的区别?
1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。
5.什么情况下会用到一对多,什么情况下会用到多对多?
答:
一对多(1:n) 例如:班级和学生,部门和员工,客户和订单,分类和商品。
一对多建表原则: 在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键。
多对多(m:n) 例如:老师和学生,学生和课程,用户和角色
多对多关系建表原则: 需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。 |