SQL多表语句
外键
通过主表的主键和从表的外键来描述主外键关系,呈现一对多关系
特点:
- 从表外键的值是对主表主键的引用
- 从表外键类型.必须与主表主键类型一致
添加外键约束:
alter table 从表 add [constraint] [外键名称] foreign key(从表外键) references 主表(主表主键);
删除主表绑定的主键:
- 删除从表所有和主表主键关联的数据
- 删除主表绑定的主键对应的记录
删除从表绑定的外键
alert table 从表 drop foreign key 外键名称
使用外键的目的
保证数据的完整性
建表原则
- 一对多: 多的一方建立外键,指向少的一方的主键
- 多对多: 需要创建中间表,中间表至少两个字段,分别作为外键指向两张表的主键
- 一对一: 基本可以合成一张表
- 原则1: 外键唯一: 主表的主键和从表的外键(唯一),形成主外键关系,外键唯一unique
- 原则2: 外键是主键: 主表的主键和从表的主键,形成主外键关系
多表查询
1. 交叉连接查询
select * from 表1,表2;
生成的是两个表的全集(乘积).基本不会使用
2. 内连接查询
关键字:inner join (inner可省略)
- 显示内连接
select * from 表1,表2 where 条件;
- 隐式内连接
select * from 表1 inner join 表2 on 条件
查询两个表交集
3. 外连接查询
关键字:outer join(outer可省略)
-左外连接
select * from 表1 left outer join 表2 on 条件;
-右外连接
select * from 表1 right outer join 表2 on 条件;
左右连接区别:
- 当没有主外键对应的时候,左表会全部显示,右表不显示没对应关系的记录. 即: 显示左表全部及两个表的交集
- 同理 即: 显示右表全部及两个表的交集
4. 子查询
将一条查询语句的结果作为另一条查询语句的一部分.
常见语法:
select * from 表1 where 表1字段=(select * from 表2 where 条件);