前言:作为一名后端的程序员操作数据库的能力是我们基本的技能,而连表查询是我们的这个技能的关键点所在.注意这里顾明思义是对数据的查询的操作

(一).联合查询(关键字union/union all)

  什么是联合查询:联合查询其实就是通过关键字将多条查询SQL语句连接起来。

  

例:(select * from teacher where 1 order by days desc limit 1) union (select * from teacher where 1 order by days desc limit 1);小结[1.常用于相反的业务逻辑,2.字段要保持一致3.会去除重复]
例:(select * from teacher where 1 order by days desc limit 1) union all (select * from teacher where 1 order by days desc limit 1);小结[1.常用于相反的业务逻辑,2.字段要保持一致3.不会去除重复]

(二).子查询

  1.标量子查询

  概念:标量子查询就是 本条查询语句的查询条件 是 另一个查询语句查询出来的单个值。

例:select * from teacher_class where teacher_id = (select id from teacher1 where name='zhansan');[小结本条查询的语句是另外一条查询的结果]

  

  2.列子查询

  概念:本条查询语句的查询条件 是 另一个查询语句查询出来的一列结果。

select * from teacher_class where teacher_id in (select id from teacher1 where name='孔子' or numb='n10078');[小结本条查询是另外一条查询结果的一个集合]

  3.行子查询

  概念:本条查询语句中的查询条件 是 另一个查询语句所查出来的一行记录。

select * from stu2 where (teacher_name,teacher_numb) = (select name,numb from teacher1 where id=4);

  4.exists子查询

  概述:TIPS:exists子查询和查询的具体数据没有关系,只和是否查询的出数据有关。

  

select * from stus where exists (select name from teacher1 where stu2.teacher_name=teacher1.name);

(三)连接查询

  1.内连接(inner join)

   概念:内连接就是左右两个表连接时候两边都相同的时候会显示查询结果否则不显示(关键字 [inner] join)

select * from stu3 [inner] join class2 on stu3.class_name = class2.name; [where可以替换on,使用using必须字段相同]

  2.左外连接(left [outer] join)

  概念:左连接就是以左表为主表连接右表如果右表不存在则显示为NULL

select * from stu3 left [outer] join class2 on stu3.class_name = class2.name; [只能用on、using]

  3.右外连接(right [outer] join)

  概念:右连接就是以右表为主表连接左表如果左表不存在则显示为NULL

select * from stu3 right[outer] join class2 on stu3.class_name = class2.name; [只能用on、using]

  4.全外连接是通过union和union all 实现的(此处省略)

  5.自然连接其实就是内连接使用using的条件因此可以根据自己条件掌握前面就够用

 

关于Mysql的高级查询的操作的更多相关文章

  1. mysql常用快速查询修改操作

    mysql常用快速查询修改操作 一.查找并修改非innodb引擎为innodb引擎 # 通用操作 mysql> select concat('alter table ',table_schema ...

  2. MYSQL SQL高级查询技巧

    1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表. ...

  3. Mysql 基础 高级查询

    在西面内容中    car  和  nation   都表示 表名 1.无论 高级查询还是简单查询   都用  select.. from..语句   from  后面 加表名  可以使一张表也可以是 ...

  4. MySQL的高级查询

    高级查询 1.连接查询(对列的扩展) 第一种形式select * from Info,Nation #会形成笛卡尔积 select * from Info,Nation where Info.Nati ...

  5. MYSQL之高级查询

    PHP高级查询 分组查询.联合查询.连接查询.子查询 版权声明:本文为博主原创文章,未经博主允许不得转载.

  6. python数据库-MySQL数据库高级查询操作(51)

    一.什么是关系? 1.分析:有这么一组数据关于学生的数据 学号.姓名.年龄.住址.成绩.学科.学科(语文.数学.英语) 我们应该怎么去设计储存这些数据呢? 2.先考虑第一范式:列不可在拆分原则 这里面 ...

  7. mysql的子查询in()操作及按指定顺序显示

    代码示例: in(逗号分隔开的值列表) 释:是否存在于值列表中 --------------------- 示例: select * from test where id in(3,1,5) orde ...

  8. Oracle与Mysql的高级查询与难点sql

    一.连接查询  1.内连接      内连接用于返回满足连接条件的所有记录.默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询都属于内连接. Sql代码   1.   SELEC ...

  9. MySQL 数据库 高级查询

    1.连接查询select * from Info,Nation #笛卡尔积select * from Info,Nation where Info.Nation=Nation.Code join on ...

随机推荐

  1. Docker镜像的使用

    当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理和使用本地 Docker ...

  2. Jdk1.6编译,1.7执行,1.7中没有需要的类,为何不会报错

      今天发现一个非常奇怪的问题   import sun.misc.BASE64Decoder; 我在本地引入了jdk1.6中的包,编译也用1.6没问题,但是实际上jdk1.7并没有这个包.在Linu ...

  3. Tarjan总结(缩点+割点(边)+双联通+LCA+相关模板)

    Tarjan求强连通分量 先来一波定义 强连通:有向图中A点可以到达B点,B点可以到达A点,则称为强连通 强连通分量:有向图的一个子图中,任意两个点可以相互到达,则称当前子图为图的强连通分量 强连通图 ...

  4. Linux block(1k) block(4k) 换算 gb

    输入 df  显示1k blocks  大小   再输入  df -h  显示 gb换算大小  结论 block(1k) 计算公式为:  block(1k)   /1024/1000  = xx gb ...

  5. maven "mvn不是内部或外部命令,也不是可运行的程序或批处理文件"

    配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件 首先maven环境变量: 变量名:MAVEN_HOME 变量值:E:\apache-maven-3.2 ...

  6. #565. 「LibreOJ Round #10」mathematican 的二进制(期望 + 分治NTT)

    题面 戳这里,题意简单易懂. 题解 首先我们发现,操作是可以不考虑顺序的,因为每次操作会加一个 \(1\) ,每次进位会减少一个 \(1\) ,我们就可以考虑最后 \(1\) 的个数(也就是最后的和) ...

  7. 【java+selenium】网易云音乐刷累计听歌数

    背景应该是在去年的时候,刷知乎看到一个问题,大概是说怎么刷网易云音乐个人累计听歌数,然后有一个高赞回答,贴了一段js代码,直接在浏览器console执行就可以了.当时试了下,直接一下子刷了有好几万.悲 ...

  8. Codeforces Round #543 Div1题解(并不全)

    Codeforces Round #543 Div1题解 Codeforces A. Diana and Liana 给定一个长度为\(m\)的序列,你可以从中删去不超过\(m-n*k\)个元素,剩下 ...

  9. 「HNOI2016」树 解题报告

    「HNOI2016」树 事毒瘤题... 我一开始以为每次把大树的子树再接给大树,然后死活不知道咋做,心想怕不是个神仙题哦 然后看题解后才发现是把模板树的子树给大树,虽然思维上难度没啥了,但是还是很难写 ...

  10. 20165223 week3蓝墨云测试总结

    1. 表达式0xaa | 0x55的值为 答案: 解析: 0xaa用二进制表示为10101010,0x55用二进制表示为01010101,按位或后为11111111,十进制表示为255,十六进制表示为 ...