简单介绍一下连接方式:

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 查询 总结 【行子查询 ; 列子查询 ; 表子查询 ; 自链接 ; 内连接 ;外连接 ; 无规则链接 ……】的更多相关文章

  1. mysql数据库中的多表查询(内连接,外连接,子查询)

    用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版 ...

  2. oracle 内连接 外连接 查询 笔记

    elect ename,job,sal from emp where deptno>10 order by sal desc; 联合查询,PK dept.deptno FK emp.deptno ...

  3. 【cl】多表查询(内、外连接)

    交叉连接(cross join):该连接产生的结果集笛卡尔积 a有7行,b有8行    a的第一行与b的每一行进行连接,就有8条a得第一行 7*8=56条 select a.real_name,s.u ...

  4. SQL内连接-外连接join,left join,right join,full join

    1.创建测试表test1及test2 SQL)); 表已创建. SQL)); 表已创建. ,'name1'); ,'name2'); ,'name3'); ,'name4'); ,'name5'); ...

  5. SQL中的内连接外连接和交叉连接是什么意思?

    内连接又分为等值连接.自然连接和不等连接三种. 外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN).右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接( ...

  6. SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...

  7. SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql

    SELECT DISTINCT       TOP 100 PERCENT isnull(p.name,'') AS 父对象, o.xtype,       CASE o.xtype WHEN 'C' ...

  8. sql内连接外连接自然连接

    为什么我们要使用内连接和外连接呢?可以从两张或者多张表中找出,我们需要的属性. 这个比较好:http://www.cnblogs.com/youzhangjin/archive/2009/05/22/ ...

  9. MS sql server 基础知识回顾(二)-表连接和子查询

    五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...

  10. 《SQL CookBook 》笔记-第三章-多表查询

    目录 3.1 叠加两个行集 3.2 合并相关行 3.3 查找两个表中相同的行 3.4 查找只存在于一个表中的数据 3.5 从一个表检索与另一个表不相关的行 3.6 新增连接查询而不影响其他连接查询 3 ...

随机推荐

  1. 23.oneOf

    const { resolve } = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') // 提取cs ...

  2. javasec(八)jndi注入

    JNDI JNDI(全称Java Naming and Directory Interface)是用于目录服务的Java API,它允许Java客户端通过名称发现和查找数据和资源(以Java对象的形式 ...

  3. 【有问必答】搭建uniapp项目流程手把手教学

    前言 缘由 博友有问,狗哥必答 前段时间,博友加本狗微信,询问uniapp的学习方法.本狗资历浅薄,没有专门学过uniapp,只能将自己日常开发uniapp的基本流程和步骤进行分享,希望可以略尽绵薄之 ...

  4. [Pytorch框架] 4.2.2 使用Tensorboard在 PyTorch 中进行可视化

    文章目录 4.2.2 使用Tensorboard在 PyTorch 中进行可视化 Tensorboard 简介 Tensorboard 安装 页面 SCALAR IMAGES GRAPHS HISTO ...

  5. 如何通过C#/VB.NET代码将PowerPoint转换为HTML

    利用PowerPoint可以很方便的呈现多媒体信息,且信息形式多媒体化,表现力强.但难免在某些情况下我们会需要将PowerPoint转换为HTML格式.因为HTML文档能独立于各种操作系统平台(如Un ...

  6. Prism Sample 2

    例2引入了Region的概念. 例1中我们提到bootstrapper与app.xaml.cs,现在是这样的: public partial class App : PrismApplication ...

  7. Python工具箱系列(三十)

    PostgreSQL MySQL的口号是"世界上最流行的开源关系型数据库",而PostgreSQL的Slogan则是"世界上最先进的开源关系型数据库(PostgreSQL ...

  8. #Powerbi 利用时间智能函数,进行周度分析

    在实际工作中,我们往往需要同比分析,月度和年度的分析都有对应的时间智能函数,分别是MTD和YTD,但是缺少了周度的时间智能函数,而 恰恰日常工作中,我们又需要以周度来进行对应的分析,今天我们来学习一下 ...

  9. sh: vue-cli-service: command not found

    mac环境下运行vue项目报错sh: vue-cli-service: command not found 解决方法:cd到项目目录下,执行命令sudo rm -rf node_modules pac ...

  10. 2023-04-11:给你下标从 0 开始、长度为 n 的字符串 pattern , 它包含两种字符,‘I‘ 表示 上升 ,‘D‘ 表示 下降 。 你需要构造一个下标从 0 开始长度为 n + 1 的

    2023-04-11:给你下标从 0 开始.长度为 n 的字符串 pattern , 它包含两种字符,'I' 表示 上升 ,'D' 表示 下降 . 你需要构造一个下标从 0 开始长度为 n + 1 的 ...