子查询:在一个select语句中,嵌入了另外的一个select语句,那么被嵌套的select语句称为子查询语句。
主查询:主查询的对象,第一条select语句。
主查询与子查询的关系:
1.子查询是嵌入到主查询中的。
2.子查询是辅助主查询的,要么充当条件,要么充当数据源。
3.子查询是可以独立存在的语句,是一条完整的select语句。
标量子查询:就是一个查询的一个值,一般与比较运算符一起用
# 查看班级学生的身高大于平均值的
select * from students where age > (select avg(age) from students);
列集子查询:子查询出来的是一列,一般与in 连着用,
# 格式:主查询 where 条件 in (列子查询)
select name from classes where id in (select cls_id from students) ;
行集子查询;将多个字段合成一个行元素,在行级子查询中会使用到行元素.
select * from students where (height, age) = (select max(height), max(age) from students);
补充点:查询的执行顺序为:
select distinct *
from 表名
where .........
group by .... having ....
order by.....
limit start , count
外键:对数据进行有效性进行验证,防止无效信息的插入。外键对应的值是另外表的主键.
# 给brand_id 添加外键约束
alter table goods add foreign key (brand_id) references goods_brands(id);
注意点:goods中的cate_id 的类型一定要和goods_cates表中的id类型一致.
取消外键:
# 需要先获取外键约束名称,该名称会自动生成。
show create table goods;
# 获取名称之后,就可以根据名称来删除外键约束
alter table goods drop foreign key 外键名称;
注意点:在实际开发中回很少使用外键约束,会极大的降低表的效率。
2万+

被折叠的 条评论
为什么被折叠?



