Day09.多表操作
-
外键约束:
-
概述:一个(A)表的一列指向另一个(B)表的一列(B表的主键约束),那么A表的这一列就是外键约束。
-
格式:foreign key (外键字段)references 主表(字段)
-
特点:从表外键的值是对主表主键的引用; 从表外键类型必须与主表主键类型一致
-
目的:保证数据完整性
-
-
多表查询:
-
笛卡尔积:
语法:select *from A,B; 将两个表乘积显示
SELECT 字段1,字段2 FROM 表1,表2;
-
隐式查询(条件查询)——sql96规范
-
SELECT 字段1,字段2 FROM 表1,,表2 where 条件;
SELECT pname,cname FROM persons,cars WHERE pid=pids;
-
显示查询——sql99规范
*显示内连接查询 表
inner (线) join
表 on 条件select 【字段】 from 表1 inner join 表2 on 条件;
*显示左外连接查询 表
left(线) join
表 on 条件select 【字段】 from 表1 left join 表2 on 条件;
*显示右外连接查询 right join on
select 【字段】 from 表1
right (线) join
表2 on 条件;左右的区别:左外连接已关键字左边的为主,有外连接已关键字右边的为主
-
子查询:以一条语句的结果作为另一条语句的条件
注意:如果结果条件是多条数据,就不能用等号,用in
-
表与表之间的关系:
-
一对多关系:
-
常见实例:客户与订单 分类和商品 部门和员工
建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
-
多对多关系:
常见实例:学生和课程 商品和订单 人和角色
建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键(就是一个多对多拆分成两个一对多)
联合主键:多个字段都作为主键,非空唯一
非空:任何主键都不能为空,
唯一:多个主键的值不能完全重复
-
一对一关系:
实际开发中应用不多,因为一对一可以创建成一张表
建表原则
外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一unique
外键是主键: 主表的主键和从表的主键,形成主外键关系
-
注意事项:
-
从表不能够添加(更新)主表中不存在的数据
-
主表不能够删除(更新)从表中已经存在的数据
-
4.关系分析:
用户表(user)
订单表(order)
商品信息表(product)
商品类别表(category)
5.自连接查询:
查询员工及直属领导的名字
companys
cid(员工id) cname(员工的名字) pid
1 zhangsan 3
2 lisi 4
3 rongrong 5
4 jinlian 5
5 boss