实习复习---数据库多表操作5

外键:用于建立两个表数据之间的链接,外间是指引用另一个表中的一列或者多列,(具有唯一性约束。主键约束啊)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

主表从表?关联关系?1:n (外键在n上)   n:m(存在中间表,两个表的主键是中间表的联合主键)1:1(存在一个表中,没有从表)

=======================================================================================

插入时,先插入主表,删除时,先删除从表,

mysql中只有InnoDB才支持外键

cascade删除外键关联列的所有数据

set null 外键关联列被修改或者删除时,使用null替换

no action 不进行任何操作

restrict拒绝主表删除或修改外键关联列,,最安全!!!!!!!!!!!!!!!!!!!!!!

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

连接查询

交叉连接:select * from b1 cross join b2; 结果两个表的笛卡儿积 4*4=16

内连接 select b1.cc,b2.zz from b1 inner join b2 on b1.xxx=b2.xxx;==select b1.cc,b2.zz from b1,b2 where b1.xxx=b2.xxx

外连接:

1)左连接:left join:返回佐表中的所有记录和右表中符合连接条件的记录

2)右连接right join 返回右表中的所有记录和左表中符合连接条件的记录

附上交叉连接,内链接,外连接的例子

见表2个,结构数据如下学生表(id,姓名)和课程表(id,学生姓名,课程名)

进行查询

1交叉查询----笛卡儿积--------查询结果=两张表做笛卡儿积

2内链接查询-------查询结果=符合查询条件的记录

 

3外连接查询

1)左连接查询----------查询结果=左表的所有记录+右表符合条件的记录

2)右连接查询-----查询结果=右表中的所有记录+左表符合条件的记录,若左表不符合条件,则null

子查询

IN关键字的子查询 select * from user where id in(select id from del);

exits关键字的子查询 select * from user where exists(select id fom del where age>12);

使用any                        select * from user id>any(select id from del)

使用all                            select * from user id>any(select id from all)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值