SQL连接查询语句(内、外、交叉和合并查询)
接触Sql语句时间挺长时间了,听他人说过sql语句的连接查询,但一直没有认真研究和使用过!!最近在公司实习,需要用到一些连接的语句,我也从中体会到连接查询带来的方便。
下面总结一下SQL连接查询语句。
1、内连接 (INNER JOIN)
内连接也称自然连接,它是根据两个或多个表中的列之间的关系,从这些表中查询数据。
注意: 内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
重点:内连接,只查匹配行。
语法:(INNER可省略)
select dishname,dishcode,nums,catename from sn_dish_info inner join sn_dish_category
on sn_dish_info.cateuuid=sn_dish_category.cateuuid
菜品类别表:
菜品表
结果表
这样我们就把两张表中我们想要的数据查出来了。但同时招牌菜这个的数据就丢失了!!不过这对于我们好像不影响我们。我们只要菜品类别下有菜品的数据。
2、外连接(左,右,全连接)
外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。
在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。如果基表的数据在另一张表没有记录。那么在相关联的结果集行中列显示为空值(NULL)。
(1)左连接
以左表为基准,结果集保留左表的所有行,对于右表只包含左表匹配的行。如果右表不存在与左表相对应的数据,就将查询结果集合对应的数据字段放入NULL值。
Select dishname,dishcode,nums,sn_dish_category.catename as carename
from sn_dish_info left join sn_dish_info.cateuuid sn_dish_category.cateuuid
结果:
(2)右连接
与左连接正好相反。
Select dishname,dishcode,nums,sn_dish_category.catename as carename
from sn_dish_info right join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuui
结果:
(3)全连接
将左右两个表中的数据都查询出来,如果两个表中没有相对应的数据,就将该字段放入NULL值。
Select dishname,dishcode,nums,sn_dish_category.catename as carename
from sn_dish_info full join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuuid
3、交叉连接(Cross join)
交叉连接也称笛卡尔积,是将两个表中的每一条数据都进行组合。
例:a(a,1),b(2,3,4) 交叉连接后c{(a,2) ,(a,3),(a,4)(1,2),(1,3),(1,4)}
Select dishname,dishcode,nums,sn_dish_category.catename as
carename from sn_dish_info cross join sn_dish_category
他和用内连接进行查询的结果一样,就是太慢了,因为它得先进行组合,在进行筛选,导致查询的效率很低。
4、UNION
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。
当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
SQL UNION 语法 SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2 注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。 SQL UNION ALL 语法 SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
SQL连接查询语句(内、外、交叉和合并查询)相关推荐
- 小程序云开发数据库查询语句之doc与where||如何查询到不符合条件的结果
小程序云开发数据库查询语句之doc与where||如何查询到不符合条件的结果 一只孤独的菜鸟 最近在云开发时遇到的查询语句, where和doc,在官方文档上是这样的 db.collection('t ...
- 加sql查询语句导出_搞不懂这些查询语句,SQL简单查询也无法从入门到熟练
大纲: 一.基本的查询语句 二.指定查询条件 三.注释和SQL语句注意事项 四.运算符 五.谓词 一.基本的查询语句 从表中选取数据时需要使用select语句,也就是只从表中选出(select)必要数 ...
- MySQL查询语句大全(列举所有常用查询方式)
文章目录 前提条件 简单查询 直接查询 条件查询 模糊查询 算数运算符 逻辑运算符 in与not in运算符 排序查询 高级查询 范围运算 限制查询 嵌套查询 多表连查 内连接 左连接 右连接 聚合函 ...
- 结构化查询语句简称mysql_整理MySql常用查询语句
MySql的性能优化 性能优化是通过某些有效的方法提高MySQL数据库的性能.性能优化的目的是为了是MySQL数据运行速度更快.占用的磁盘空间更小.性能优化包括很多方面,例如优化查询速度.优化更新速度 ...
- oracle带时间查询语句,请教oracle按时间分组查询语句的写法
请教oracle按时间分组查询语句的写法 最近由于要做报表,在一张表中有一个字段为date类型,现在想要在一段时间内(比如一年)能够按照时间段分组查询记录总和,比如我要能够查询2007年到2009年间 ...
- Oracle数据库查询语句去重,Oracle数据库之SQL---select查询
最好的学习就是实战!因此我的学习也就是从实战中展开的.在一切SQL语句中最基本的莫过于查询语句了,因此笔者也是从select语句开 前言 最好的学习就是实战!因此我的学习也就是从实战中展开的.在一切S ...
- mysql语言中子查询是什么_SQL查询语句中,什么叫子查询?
展开全部 嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句3231313335323631343130323136353 ...
- mysql查询语句详解_基于mysql查询语句的使用详解
1> 查询数据表除了前三条以外的数据. 起初我想到的是这条语句 SELECT * FROM admin WHERE userid NOT IN (SELECT userid FROM admin ...
- mysql教程查询语句_最全的mysql查询语句整理
-- 基本查询 select * from pet -- 列出指定的列 select name, owner form pet -- 直接进行算术运算,对字段起别名 select sin(1+2) a ...
- mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)...
MySQL的外键 什么是外键,很简单保持数据一致性的一个约束键.如果你有两张表,第一张是学生表,第二张表是一个成绩表,我们来看看保持数据一致性,其实在Django等框架的模型中中也能做关联获取对象. ...
最新文章
- fork() 成为负担,需要淘汰
- laravel文件存储Storage
- jquery easyui combobox设置默认选中第一项
- Android 3D开发,OpenGL ES 的使用(一)
- WeScale 技术篇 —— mpvue 与微信小程序的火花
- 安装ARM交叉编译工具
- 查经 民数记3章 利未人
- 20145335郝昊《网络对抗》逆向及Bof基础实践
- layui文件上传 提示 请求上传接口出现异常
- python成语接龙代码_#python# 成语接龙(二)
- C++中Vector/Map/List中尽量使用指针,避免直接保存对象
- 基于SSM实现宠物领养网站平台管理系统
- python超市管理系统流程图_python实现超市管理系统(后台管理)
- 94G的kindle电子书btsync分享
- 郝兵c语言_郝斌C语言笔记——C语言概述
- 不用校园网如何下载论文文献|DOI号|文献免费下载
- 重温《遥远的救世主》
- 敬业签:备忘录在手机哪里能找到?
- linux如何更改mac地址
- Java程序性能优化 ! .