SQL语句详解(四)——SQL联表查询
今天我们继续给大家介绍MySQL相关知识,本文主要内容是SQL联表查询。
一、SQL联表查询简介
在前文SQL语句详解(三)——SQL子查询中,我们给大家介绍了SQL子查询的相关知识和使用示例。实际上,如果涉及到SQL多个表之间的查询,使用SQL联表查询的频率比使用SQL子查询的频率要高。SQL联表查询是指以两个表中的一个共同的字段,在这两个表之间建立联系,查询两个表中的全部或部分字段。
SQL联表查询按照表结合方式的不同,可以分为内链接、外链接交叉链接和结果链接四种,其中外链接又可以分为左外链接和右外链接两种。
下面,我们就依次介绍这四种联表查询的使用。
本文中使用的三张表如下:
二、内链接
内链接指的是把两个表关联起来后,只有当两个表中共同有的数据才进行显示,内链接是最普通的联表查询,其使用示例为:
select 字段 from 表1 inner join 表2 on 连接条件
例如:
select name,score from student inner join grade on student.Sid=grade.id;
由于在默认情况下join为内链接,因此上例中inner关键字可以省略,至于前面的字段,如果在两个表中没有相同的字段,则可以直接写字段名,如果两个表中有相同的字段名,则必须指名该字段属于哪个表,上述示例修改后,命令如下:
select student.name,grade.score from student join grade on student.Sid=grade.id;
另外,有时,如果表的名字过长,SQL语句在书写起来就不太方便。MySQL支持给一个表起一个别名。例如,在上例中,我们还给student表起一个别名s,给grade表起一个别名g,别名必须在from字段后予以声明,这样,上例修改后如下:
select s.name,g.score from student s join grade g o s.Sid=g.id;
上述命令执行结果如下:
三、外链接
外链接可以分为左外链接和右外链接,其实这两种方式在本质上是相同的。如果说内链接是两个表都有数据时才会显示,那么外链接就是主表中有数据就显示,而不管从表。对于左外链接来说,from后面紧跟着的表就是主表,而对于右外链接来说,则正好相反,join后面紧跟着的表是主表。
四、交叉链接
交叉链接,不设置联表条件,join前面可以加一个关键字cross,也可以不加。交叉链接表示两个表中的元素按照排列组合的方式进行逐个对应。交叉链接SQL示例如下:
select name,score from student s cross join grade g;
执行结果如下:
五、结果链接
所谓结果链接,就是将两个select查询的结果合并显示,union语句用于连接两个不同的select语句,如下所示:
select name from studeng union select score from grade;
执行结果如下:
注意,如果这union结果连接的两个SQL语句存在相同的数据,则在最终的结果中,这些数据会被合并,如果不想让这些数据被合并,则可以在union后面添加关键词all,SQL语句如下:
select id from student union all select id from course;
执行结果如下:
不加all关键字之前:
加all关键字之后:
注意,使用SQL结果链接时,必须保证这两个select语句返回相同的列数,否则MySQL数据库会报错,如下所示:
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
SQL语句详解(四)——SQL联表查询相关推荐
- mysql切换用户sql语句,MySQL用户管理及SQL语句详解
[(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...
- MyBatis SQL语句详解
MyBatis SQL语句详解 1 CRUD标签 1.1 select 1.2 insert 1.3 update 1.4 delete 1.5 #{ }和${ }的区别 2 动态SQL 2.1 if ...
- oracle分页查询sql语句通用,oracle分页查询sql语句,oracle分页查询sql语句详解
oracle分页查询sql语句,oracle分页查询sql语句详解,Oracle分页查询sql语句 Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点 ...
- MaxCompute SQL函数详解 ODPS SQL函数详解---之日期相关函数
MaxCompute SQL函数详解 ODPS SQL函数详解 日期函数 to_date函数 返回类型:datetime 语法:to_date(类型 参数1,类型 参数2);to_date(strin ...
- MaxCompute SQL函数详解 ODPS SQL函数详解---之常用数学运算相关函数
MaxCompute SQL函数详解 ODPS SQL函数详解---之常用数学运算相关函数 MaxCompute/ODPS SQL常用数学运算相关函数 ABS函数-计算绝对值 sql:select A ...
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)...
我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INT ...
- 【数据库】MySQL的sql语句详解
目录 MySQL之sql语句 一, INSERT语句 insert语句的使用: 1,给表中一次性插入一条记录 2,给表中一次性插入多条记录 二, REPLACE语句 REPLACE语句的使用 1,语法 ...
- mysql左连接sql语句详解_SQL各种连接查询详解(左连接、右连接..)
一.交叉连接(cross join) 交叉连接(cross join):有两种,显式的和隐式的,不带on子句,返回的是两表的乘积,也叫笛卡尔积. 例如:下面的语句1和语句2的结果是相同的. 语句1:隐 ...
- SQL基础:常用SQL语句详解(转)
到今天为止,人们对关系数据库做了大量的研究,并开发出关系数据语言,为操作关系数据库提供了方便的用户接口.关系数据语言目前有几十种,具有增加.删除.修改.查询.数据定义与控制等完整的数据库操作功能.通常 ...
最新文章
- 嵌入式 linux 进程锁,嵌入式 Linux线程锁详解pthread_mutexattr_t
- Java String类源码解析
- 点击出现黑色背景的解决:-webkit-tap-highlight-color:rgba(0,0,0,0)
- 升级MariaDB为10.1版本
- 基于RGB图像的草莓叶片白粉病检测深度学习方法
- mac开发java安卓_mac下Android开发环境搭建
- 【转】在IIS 7.0上使用自签证书来启用SSL
- 关于DBC文件的格式解析(转)
- 给视频添加马赛克并裁剪画面的简单步骤
- 简单的jsp代码(登录界面)
- 将caj转换成pdf
- 窗口大小不规范,教你怎么写默认窗口
- linux local root exploit,Linux非交互环境下本地提权思路与反思 linux localroot exploit
- 2018华东师范软件复试机试
- 在网页中插入MediaPlayer控件
- vue对象属性为null_vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题...
- 华为PPPoE简单实验
- JAVA微信扫码支付及微信App支付开发(模式二)完整功能实现
- python实现中文的繁简转换
- Vue最全知识点「基础到进阶,覆盖vue3.0,建议收藏」
热门文章
- AA认证的办理了流程,AA认证在哪里可以做
- 运动控制第三篇之直流电机参数辨识
- 随笔(2016.11)
- DAC数转模信号MS4344 ES7144 ES7148 CS4344
- VScode格式化HTML代码保持标签属性不换行
- 如何检查是否在Cygwin,Mac或Linux中运行?
- git push 失败,提示 unpack error/unpack failed 解决方法
- UNIX系统中相关的限制问题如主机名的长度、页大小等等
- StoredProcedure(存储过程) 里的 WITH RECOMPILE 到底是干麻的?
- 6大常用数据分析模型详解,做分析不再没思路