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 ...
随机推荐
- 23.oneOf
const { resolve } = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') // 提取cs ...
- javasec(八)jndi注入
JNDI JNDI(全称Java Naming and Directory Interface)是用于目录服务的Java API,它允许Java客户端通过名称发现和查找数据和资源(以Java对象的形式 ...
- 【有问必答】搭建uniapp项目流程手把手教学
前言 缘由 博友有问,狗哥必答 前段时间,博友加本狗微信,询问uniapp的学习方法.本狗资历浅薄,没有专门学过uniapp,只能将自己日常开发uniapp的基本流程和步骤进行分享,希望可以略尽绵薄之 ...
- [Pytorch框架] 4.2.2 使用Tensorboard在 PyTorch 中进行可视化
文章目录 4.2.2 使用Tensorboard在 PyTorch 中进行可视化 Tensorboard 简介 Tensorboard 安装 页面 SCALAR IMAGES GRAPHS HISTO ...
- 如何通过C#/VB.NET代码将PowerPoint转换为HTML
利用PowerPoint可以很方便的呈现多媒体信息,且信息形式多媒体化,表现力强.但难免在某些情况下我们会需要将PowerPoint转换为HTML格式.因为HTML文档能独立于各种操作系统平台(如Un ...
- Prism Sample 2
例2引入了Region的概念. 例1中我们提到bootstrapper与app.xaml.cs,现在是这样的: public partial class App : PrismApplication ...
- Python工具箱系列(三十)
PostgreSQL MySQL的口号是"世界上最流行的开源关系型数据库",而PostgreSQL的Slogan则是"世界上最先进的开源关系型数据库(PostgreSQL ...
- #Powerbi 利用时间智能函数,进行周度分析
在实际工作中,我们往往需要同比分析,月度和年度的分析都有对应的时间智能函数,分别是MTD和YTD,但是缺少了周度的时间智能函数,而 恰恰日常工作中,我们又需要以周度来进行对应的分析,今天我们来学习一下 ...
- sh: vue-cli-service: command not found
mac环境下运行vue项目报错sh: vue-cli-service: command not found 解决方法:cd到项目目录下,执行命令sudo rm -rf node_modules pac ...
- 2023-04-11:给你下标从 0 开始、长度为 n 的字符串 pattern , 它包含两种字符,‘I‘ 表示 上升 ,‘D‘ 表示 下降 。 你需要构造一个下标从 0 开始长度为 n + 1 的
2023-04-11:给你下标从 0 开始.长度为 n 的字符串 pattern , 它包含两种字符,'I' 表示 上升 ,'D' 表示 下降 . 你需要构造一个下标从 0 开始长度为 n + 1 的 ...