黑马程序员技术交流社区

标题: 【石家庄校区】MYSQL多表 [打印本页]

作者: 李皓321    时间: 2018-5-9 16:04
标题: 【石家庄校区】MYSQL多表
day08 MYSQL多表

1,多表约束
        外键约束:用来保证数据完整性(多表之间)。
2,表与表之间的关系
                  在多的一方创建外键指向一的一方的主键
                  需要创建中间表,中间表至少两个字段,分别作为外键指向多对多
                  双方的主键(中间表可以添加别的属性字段)。
     唯一外键对应
                 假设是一对多,在多的一方创建外键指向一的一方的主键,将外
                 键设置为unique。
     主键对应
                 将两个表的主键建立对应关系即可。
3,多表查询分类:
                     :查询到的是两个表的笛卡尔积。
                      语法:
                              select * from  表1 cross join  表2;       
                              select * from 表1,表2;
                  显示内连接:在SQL中显示的调用inner join 关键字
                         语法:select  * from 表1  inner join 表2 on 关联条件
               隐式内连接:在SQl中没有调用inner join 关键字
                         语法:select * from 表1,表2 where 关联条件
                  左外连接:
                              语法:select* from 表1 left outer join 表2 on 关联条件
               右外连接:
                              语法:select * from 表1 right outer join 表2 on 关联条件
      
带in的子查询:    ---在条件范围内
    select*from classes where cid in (select cno from student where birthday>'1991-01-01');
带exists的子查询:---if条件判断,子句为true,执行前边
    select*from classes where exists (select cno from student where birthday>'1991-01-01');
带any的子查询:   ---大于任意的就是大于最小值
    select * from classes where cid >any (select cno from student);
带all的子查询:   ---大于所有的就是大于最大值
    select*from classes where cid > all (select cno from student);






4,事务
               失败。
       开启事务:start transaction;   
        提交事务:commit;
        回滚事务:rollback;
                1,原子性:事务不可分割,组成事务的各个逻辑单元不可分割。
             2,一致性:事务执行的前后,数据完整性爆出一致。
             3,隔离性:事务执行不应该受到其他事务的干扰。
             4,持久性:事务一旦结束,数据就持久化到数据库中。
1,脏读:一个事务读到了另一个事务未提交的数据,导致查询结果不一致。
2,不可重复读:一个事务读到了另一个事务已经提交的update数据,导致多次查询结果不一致
3,虚读/幻读:一个事务读到了另一个事务已经提交的insert的数据,导致多次查询结果不一致。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2