数据库——多表设计和多表查询
【摘要】 数据库——多表设计和多表查询 一、多表设计——外键约束单表约束:主键约束;唯一约束;非空约束;多表约束:外键约束;例子:在员工表(employee)添加外键(注:employee为员工表,dept为部门表,did为部门表的主键,dno为员工表的部门字段)alter table employee add foreign key (dno) references dept(did);1 二、多...
数据库——多表设计和多表查询
一、多表设计——外键约束
- 单表约束:主键约束;唯一约束;非空约束;
- 多表约束:外键约束;
例子:在员工表(employee)添加外键
(注:employee为员工表,dept为部门表,did为部门表的主键,dno为员工表的部门字段)
alter table employee add foreign key (dno) references dept(did);
1
二、多表设计——表关系介绍
- 一对多:例:一个部门有多个员工,一个员工在只能属于一个部门;
- 多对多:例:一个学生可以选择多门课程,一门课程可以被多个学生选择;
- 一对一:例:一个公司可以有一个注册地址,一个注册地址只能有一个公司;
三、多表设计——一对多关系
- 建表原则:在多的一方建立外键 指向一的一方的主键;
四、多表设计——多对多关系
- 建表原则:需要建立第三张表(中间表),在中间表中至少两个字段 分别作为外键,指向多对多双方的主键;
五、多表设计——一对一关系
- 唯一外键对应:
假设是一对多,再多的一方创建外键指向一的一方的主键,将外键设置为 unique; - 主键对应:
将两个表的主键建立对应关系即可;
六、多表设计——多表分析及创建
七、多表查询——概述
1. 多表查询分类:
(1)连接查询
- 交叉连接:
cross join
查询到的是两个表的笛卡尔积;
select * from 表1 cross join 表2;
select * from 表1, 表2;
- 内连接:
inner join
显式内连接:select * from 表1 inner join 表2 on 关联条件;
隐式内连接:select * from 表1, 表2 where 关联条件;
- 外连接:
outer join
左外连接:select * from 表1 left outer join 表2 on 关联条件;
右外连接:select * from 表1 right outer join 表2 on 关联条件;
(2)子查询
一个查询语句条件需要依赖另一个查询语句的结果;
八、多表查询——数据准备
九、多表查询——交叉连接
(开发中应用较少)
十、多表查询——内连接
十一、多表查询——外连接
十二、多表查询——内连接与外连接的区别
十三、多表查询——子查询
- 带
in
的子查询;
- 带
exisit
的子查询;
- 带
any
的子查询;
- 带
all
的子查询;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)