数据库(1.3 day 3)

一.关联关系

二.连接查询

三.子查询/嵌套查询

一.关联关系        

        通过在数据表中添加字段建立外键约束

1.一对一关联

        方案1. 主键关联——两张数据表中主键相同的数据为相互对应的数据

        方案2. 在任意一张表中添加一个字段添加外键约束与另一张表主键关联,并且将外键列添加唯一约束

2.一对多关联与多对一关联

        方案. 在多的一端添加外键,与一的一端主键进行关联        

3.多对多关联

        方案. 额外创建一张关系表来维护多对多关联——在关系表中定义两个外键,分别与两个数据表的主键进行关联

4.外键约束

        constraint FK_table1_table2 foreign key(columnName) references table(primary key);

5.级联操作(方便删除或修改一对多关系中,一表的数据)

        在添加外键时,可设置级联修改和级联删除

        alter table tableName add constraint FK_table1_table2 foreign key(columnName) references table(primary key) ON UPADTE CASCADE ON DELETE CASCADE;

二.连接查询

         在MySQL中可以使用join实现多表的联合查询——连接查询,join按照其功能不同分为三个操作: inner join  内连接

        left join  左连接

        right join  右连接

1.内连接 inner join

        只显示有匹配关系的数据

        select ... from tableName1 inner join tableName2;

                如果直接执行,则会获取数据集合的笛卡尔积(总数=A总数*B总数)

        内连接条件:使用 on / where 设置两张表连接查询的匹配条件

                where:select * from table1 INNER JOIN tabke2 where table1.foreign key=table2.primary key;(先生成笛卡尔积再过滤,效率低)

                on:select * from table1 INNER JOIN tabke2 ON table1.foreign key=table2.primary key;(先判断连接条件是否成立,如果成立两张表的数据进行组合生成一条结果记录,后面也可再使用where进行筛选)

2.左连接 left join

        显示左表中的所有数据,如果在右表中存在与左表记录满足匹配条件的数据,则进行匹配;如果右表中不存在匹配数据,则显示为Null

        select * from leftTable LEFT JOIN rightTable on 匹配条件 [ where 条件 ];

                

三.子查询/嵌套查询

        子查询:先进行一次查询,第一次查询的结果作为第二次查询的源/条件(第二次查询是基于第一次的查询结果来进行的)

        select * from students where cid=(select class_id from classes where class_name= ' ');  (返回单行单列,条件可以用= != ...)

        select * from students where cid IN (select class_id from classes where class_name LIKE 'Java%' );  (返回多个值(单列多行),条件用IN / NOT IN)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值