数据库——多表设计和多表查询

举报
炒香菇的书呆子 发表于 2022/05/31 22:57:39 2022/05/31
【摘要】 数据库——多表设计和多表查询 一、多表设计——外键约束单表约束:主键约束;唯一约束;非空约束;多表约束:外键约束;例子:在员工表(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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。