暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 GaussDB数据库 2022-06-01
699

文章转自华为云社区,作者:乌龟哥哥;原文链接:https://bbs.huaweicloud.com/blogs/357470

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

一、多表设计——外键约束

  • 单表约束:主键约束;唯一约束;非空约束;
  • 多表约束:外键约束;

例子:在员工表(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 的子查询;
最后修改时间:2022-06-01 17:14:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论