首页 > 数据库 >数据库的几种连表方式详解

数据库的几种连表方式详解

时间:2023-12-05 15:14:20浏览次数:28  
标签:数据库 publish 出版社 连表 book 详解 北京出版社 null id

数据库主要有五种连表方式

首先需要准备两张表:

 

图书表 book

id    name    price    publish_id
1 西游记  33 1
2 红楼梦 56 1
3 三国演义 66 2
4 西厢记 55 6

 

 

 

 

 

出版社表 publish

id    name      addr
1 北京出版社 北京
2 南京出版社  南京
3 东京出版社 东京

 

 

 

 

 

1.左连接(Left Join)

从左表取出所有记录,与右表匹配。如果没有匹配,以null值代表右边表的列

 

SQL代码示例:

select * from book left join publish on book.publish_id=publish.id;

 

效果如下:

id    name    price    publish_id id  name    addr
1 西游记  33 1 1 北京出版社 北京
2 红楼梦 56 1 2 南京出版社 南京
3 三国演义 66 2 3 东京出版社 东京
4 西厢记 55 6 null null null

 

 

 

 

2.右连接(Right Join)

从右表取出所有记录,与左表匹配。如果没有匹配,以null值代表左边表的列

 

SQL代码示例:

select * from book right join publish on book.publish_id=publish.id;

 

效果如下:

id    name    price    publish_id id  name    addr
1 西游记  33 1 1 北京出版社 北京
2 红楼梦 56 1 1 北京出版社 北京
3 三国演义 66 2 2 南京出版社 南京
null null null null 3 东京出版社 东京

 

 

 

 

 

3.内连接(Inner Join)

得出同时存在book表和publish表的数据集,就是求两个表的交集

 

SQL代码示例:

 

select * from book inner join publish on book.publish_id=publish.id;

 

效果如下:

id    name    price    publish_id id  name    addr
1 西游记  33 1 1 北京出版社 北京
2 红楼梦 56 1 1 北京出版社 北京
3 三国演义 66 2 2 南京出版社 南京

 

 

 

 

 

4.全连接(Full Join)

利用左连接,右连接分两次将数据取出,然后用union将数据合并去重

 

SQL代码示例:

select * from book left join publish on book.publish_id=publish.id
union
select * from book right join publish on book.publish_id=publish.id;

 

效果如下:

id    name    price    publish_id id  name    addr
1 西游记  33 1 1 北京出版社 北京
2 红楼梦 56 1 1 北京出版社 北京
3 三国演义 66 2 2 南京出版社 南京
4 西厢记 55 6 null null null
null null null null 3 东京出版社 东京

 

 

 

 

 

 

5.交叉连接(笛卡尔积)

返回两个表的笛卡尔乘积,作用就是计算两个表之间每个可能的组合,结果集中的记录数等于两张表各自记录数的乘积

 

SQL代码示例:

select * from book,publish

 

效果如下:

id    name    price    publish_id id  name    addr
1 西游记  33 1 1 北京出版社 北京
1 西游记 33 1 2 南京出版社 南京
1 西游记 33 1 3 东京出版社 东京
2 红楼梦 56 1 1 北京出版社 北京
2 红楼梦 56 1 2 东京出版社 东京
2 红楼梦 56 1 3 东京出版社 东京
3 三国演义 66 2 1 北京出版社 北京
3 三国演义 66 2 2 南京出版社 南京
3 三国演义 66 2 3 东京出版社 东京
4 西厢记 55 6 1 北京出版社 北京
4 西厢记 55 6 2 南京出版社 南京
4 西厢记 55 6 3 东京出版社 东京

 

 

添加过滤条件,实现内连接:

select * from book,publish where book.publish_id=publish.id;

标签:数据库,publish,出版社,连表,book,详解,北京出版社,null,id
From: https://www.cnblogs.com/wellplayed/p/17877246.html

相关文章

  • [转]vue3+tsx开发语法详解
    原文地址:vue3+tsx开发语法详解-知乎很多组件库都使用了TSX的方式开发,主要因为其灵活性比较高,TSX和SFC开发的优缺点就不介绍了,这里主要说一下将SFC项目改造为TSX的过程。安装JSX库pnpminstall@vitejs/plugin-vue-jsx-D安装完之后在vite.config.ts进行插件使用,代码如下......
  • 【Python/数据库】SQLAlchemy基础操作
    一、SQLAlchemy——创建表#ORM#1.Class-Obj#2.创建数据库引擎#3.将所有的Class序列化为数据表#4.ORM操作-CRUD(增删改查操作的简称)1.创建一个class#create_table.pyfromsqlalchemy.ext.declarativeimportdeclarative_baseBase=declarative_base......
  • 【Python/数据库】SQLAlchemy一对多,多对多操作
    SQLAlchemy一对多操作1.创建多表#create_table_ForeginKey.pyfromsqlalchemy.ext.declarativeimportdeclarative_basefromsalalchemyimportColumn,INT,VARCHAR,ForeignKeyfromsqlalchemyimportcreate_engineBase=declarative_base()classStudent(Base)......
  • ​HTML代码混淆技术:原理、应用和实现方法详解
    ​HTML代码混淆是一种常用的反爬虫技术,它可以有效地防止爬虫对网站数据的抓取。本文将详细介绍HTML代码混淆技术的原理、应用以及实现方法,帮助大家更好地了解和运用这一技术。一、HTML代码混淆的原理HTML代码混淆是指将HTML源码通过特定的算法进行加密处理,使得人类可读的源码变......
  • IntelliJ IDEA 2023.2新特性详解第三弹!Docker、Kubernetes等支持!
    9Docker在Docker镜像层内预览文件现在可以在Services(服务)工具窗口中轻松访问和预览Docker镜像层的内容。从列表选择镜像,选择Showlayers(显示层),然后点击Analyzeimageformoreinformation(分析镜像以获得更多信息)。这将打开层中存储的文件列表,你可以右键点击文件,然后......
  • 硬件开发笔记(十四):RK3568底板电路LVDS模块、MIPI模块电路分析、LVDS硬件接口、MIPI硬件
    前言  本篇继续分析底板原理图mipi/lvds屏幕电路原理图、硬件接口详解。 LVDS与MIPI的区别  液晶屏有RGBTTL、LVDS、MIPI、HDMI接口,这些接口区别于信号的类型(种类),也区别于信号内容。RGBTTL接口信号类型是TTL电平,信号的内容是RGB666或者RGB888还有行场同步和......
  • Ansible自动化运维模块详解
    ansible ad-hoc点对点模块l ping模块主机连通性测试[root@node2~]#ansibleall-mping192.168.200.10|SUCCESS=>{    "ansible_facts":{        "discovered_interpreter_python":"/usr/bin/python"    },    "changed":fals......
  • 奇迹Mu 删除MD5加密数据库语句!
    很多GM在自己都不知道的情况下,就给游戏加了MD5的加密,MD5加密通常都是32位的加密,在写程序的逻辑上,通常会进行好几次的循环加密,导致很多用户注册或是登陆的时候会显示错误,今天MU-GM给大家提供一个清除数据库MD5的SQL语句。ifexists(select*fromdbo.sysobjectswhereid=obje......
  • CentOS7 安装 Oracle12c 详解
    1.安装前准备中科大镜像站下载完整版CentOS7 Indexof/centos/7/isos/x86_64/(ustc.edu.cn)安装时设置硬盘大小40G,选择GNOME桌面安装,勾选必要的一些东西安装时选择只装root用户重启后要求配置一个用户,设置用户名为oracle下载历史版本Oracle数据库 https://edelivery.o......
  • 【教程】苹果推送证书的创建和使用流程详解
    ​【教程】苹果推送证书的创建和使用流程详解 摘要本篇博客主要介绍了苹果推送证书的使用流程。首先,在苹果开发者中心创建推送证书,然后在应用程序中使用该证书进行消息推送。文章详细说明了创建推送证书的步骤,并提供了在应用程序中注册推送服务、发送推送消息以及处理推送消......