sql的子查询与外键

子查询:在一个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 外键名称;

注意点:在实际开发中回很少使用外键约束,会极大的降低表的效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值