SQL 查询 总结 【行子查询 ; 列子查询 ; 表子查询 ; 自链接 ; 内连接 ;外连接 ; 无规则链接 ……】
简单介绍一下连接方式:
1.1.使用无连接规则连接两表
无限规则 也就简单的 select * from tableA , tableB 即得到一个笛卡尔积。 什么是 笛卡尔积 在 我的 另外一篇文章中
1.2 .使用有连接规则连接两表
也就是在 上边的基础上 加上 条件 select * from tableA , tableB where tableA .colom1 = tableB .colom
1.3. 使用多表连接查询数据
相对于上边的1.2来说 select * from tableA , tableB,tableC where tableA .colom1 = tableB .colom and tableA.pid = tableC.id
二 高级连接查询
2.1 . inner join 下边是 连接语法
SELECT * FROM 表名1 INNER JOIN 表名2 ON 连接规则1 INNER JOIN 表名3 ON 连接规则 2
2.2自链接查询:
SELECT a.* FROM `users` as a INNER JOIN `users` as b
WHERE a.user_id = b.user_id
2.3 外连接
2.3.1 外连接 右外连接 这里只写 一个 右外连接 的同理 【左外连接就是 包含 左边表的所有内容和右边的需要相关联的内容】
SELECT * FROM STU_INFO RIGHT OUTER JOIN SCORE ON STU_INFO.SNO=SCORE.SNO
2.4全外连接
SELECT * FROM STU_INFO FULL OUTER JOIN SCORE ON STU_INFO.SNO=SCORE.SNO
2.5 组合查询
这个不多做赘述 主要是因为怕解释不到位 以 union 链接 函数为例子‘
首先简单介绍下 union 的使用方法 详情介绍的看 https://www.runoob.com/mysql/mysql-union-operation.html
SELECT 列名称 FROM 表名称 UNION SELECT 列名称 FROM 表名称 ORDER BY 列名称;
SELECT 列名称 FROM 表名称 UNION ALL SELECT 列名称 FROM 表名称 ORDER BY 列名称;
SELECT * FROM STU_INFO WHERE DEPART=’外语系’ UNION SELECT * FROM STU_INFO WHERE YEAR>21
## 这个是为了 查询出来 学科为去往 外语系 的 所有 stu—info 的表的数据 并且 从 stuinfo 表中 找到年龄大于21 岁 的 由于用的 是 union 所以说 取 交集
2.6 列子查询
简单介绍 什么是列子查询 列子查询的常见使用 操作符
列子查询中使用 IN、ANY、SOME 和 ALL 操作符
由于列子查询返回的结果集是 N 行一列,因此不能直接使用 = > < >= <= <> 这些比较标量结果的操作符。在列子查询中可以使用 IN、ANY、SOME 和 ALL 操作符:
- IN:在指定项内,同 IN(项1,项2,…)。
- ANY:与比较操作符联合使用,表示与子查询返回的任何值比较为 TRUE ,则返回 TRUE 。
- SOME:ANY 的别名,较少使用。
- ALL:与比较操作符联合使用,表示与子查询返回的所有值比较都为 TRUE ,则返回 TRUE
SELECT s1 FROM table1 WHERE s1 > ANY (SELECT s2 FROM table2)
上边就是一个简单的例子 用的是 any ;
注意 :NOT IN 是 <> ALL 的别名,二者相同。
2.7 行子查询
行子查询是指子查询返回的结果集是一行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集。
SELECT * FROM article WHERE (title,content,uid) = (SELECT title,content,uid FROM blog WHERE bid=2)
2.8 表子查询
下边仅仅是个例子 ; 不是现实环境 ;{不会有设计表的 一边算年龄 一边算出生日期 的 }
大致的目的就是 从表中查询出的数据 作为另一个 查询的对象
select a.* ,b.userPwd , b. date_format(user.birthday, '%Y-%m-%d %H:%i:%s')
from (
select tea.id, tea.name ,users.userCZ as '成绩',user.userID
,tclass.className
from teacher as tea ,user, tclass
where tea.id = user.tid
and tclass.id = user.cid
and user.age>20
and user.userType = '先锋班级'
and tclass.classcode < 2018
) as a inner join user as b
where a.userID = b.userID
and YEAR(Now()) - YEAR(birthday()) <50
SQL 查询 总结 【行子查询 ; 列子查询 ; 表子查询 ; 自链接 ; 内连接 ;外连接 ; 无规则链接 ……】的更多相关文章
- mysql数据库中的多表查询(内连接,外连接,子查询)
用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版 ...
- oracle 内连接 外连接 查询 笔记
elect ename,job,sal from emp where deptno>10 order by sal desc; 联合查询,PK dept.deptno FK emp.deptno ...
- 【cl】多表查询(内、外连接)
交叉连接(cross join):该连接产生的结果集笛卡尔积 a有7行,b有8行 a的第一行与b的每一行进行连接,就有8条a得第一行 7*8=56条 select a.real_name,s.u ...
- SQL内连接-外连接join,left join,right join,full join
1.创建测试表test1及test2 SQL)); 表已创建. SQL)); 表已创建. ,'name1'); ,'name2'); ,'name3'); ,'name4'); ,'name5'); ...
- SQL中的内连接外连接和交叉连接是什么意思?
内连接又分为等值连接.自然连接和不等连接三种. 外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN).右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接( ...
- SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...
- SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql
SELECT DISTINCT TOP 100 PERCENT isnull(p.name,'') AS 父对象, o.xtype, CASE o.xtype WHEN 'C' ...
- sql内连接外连接自然连接
为什么我们要使用内连接和外连接呢?可以从两张或者多张表中找出,我们需要的属性. 这个比较好:http://www.cnblogs.com/youzhangjin/archive/2009/05/22/ ...
- MS sql server 基础知识回顾(二)-表连接和子查询
五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...
- 《SQL CookBook 》笔记-第三章-多表查询
目录 3.1 叠加两个行集 3.2 合并相关行 3.3 查找两个表中相同的行 3.4 查找只存在于一个表中的数据 3.5 从一个表检索与另一个表不相关的行 3.6 新增连接查询而不影响其他连接查询 3 ...
随机推荐
- ros-python学习样例笔记
1.通信基本原理介绍 待写 2.三种通信方式的程序样例(python版) 2.1 topic 通信方式(非自定义和自定义) 2.1.1 创建工作空间和topic功能包 在ubuntu中打开命令行,输入 ...
- windows安装zabbix错误代码
zabbix安装:windows安装zabbix客户端很多坑,设计到很多问题,常见的问题有安装完成防火墙没有关闭,zabbix服务端接收不到客户端的信息.zabbix在cmd中安装的时候报错误代码,安 ...
- c语言趣味编程(1)百钱百鸡
一.问题描述 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡.母鸡.小鸡各买多少只 二.设计思路 (1)定义三个变量下x,y,z代表公鸡,母鸡,小鸡的数 ...
- Java全栈开发/API
2023/4/16 记录我学习的网站 前端 vuejs axios异步请求 微信开发者文档 uniapp开发文档 快速参考备忘清单 免费前端接口 读取json vant4UI cubeUI mintU ...
- This application failed to start because it could not find or load the Qt platforms plugins
由于一直在linux下操作,今天Qt移植平台的时候导致.exe可执行文件一直运行不起来,提示缺少某些dll库,这个问题解决起来简单(直接去qt源码里面查找对应库添加到可执行文件目录就行),但是之后一 ...
- Linux xfs文件系统stat命令Birth字段为空的原因探究
在Linux平台找出某个目录下创建时间最早的文件,测试验证脚本结果是否准确的过程中发现一个很有意思的现象,stat命令在一些平台下Birth字段有值,而在一些平台则为空值,如下所示: RHEL 8.7 ...
- 音视频八股文(7)-- 音频aac adts
AAC介绍 AAC(Advanced Audio Coding)是一种现代的音频编码技术,用于数字音频的传输和存储领域.AAC是MPEG-2和MPEG-4标准中的一部分,可提供更高质量的音频数据,并且 ...
- url函数
url() 函数看起来的格式象:url(r^/account/$', views.index, name=index),它可以接收四个参数,分别是两个必选参数:regex.view 和两个可选参数:k ...
- ESLint: More than 1 blank line not allowed. (no-multiple-empty-lines)
ESLint: More than 1 blank line not allowed. (no-multiple-empty-lines)
- Python基础 - 第一个python程序
Python程序是什么? Python源程序就是一个特殊格式的文本文件,可以使用任意文本编辑器软件做python的开发,python的文件扩展名为 .py 执行python程序的三种方式 直接调用解释 ...