关于Mysql的高级查询的操作
前言:作为一名后端的程序员操作数据库的能力是我们基本的技能,而连表查询是我们的这个技能的关键点所在.注意这里顾明思义是对数据的查询的操作
(一).联合查询(关键字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的高级查询的操作的更多相关文章
- mysql常用快速查询修改操作
mysql常用快速查询修改操作 一.查找并修改非innodb引擎为innodb引擎 # 通用操作 mysql> select concat('alter table ',table_schema ...
- MYSQL SQL高级查询技巧
1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表. ...
- Mysql 基础 高级查询
在西面内容中 car 和 nation 都表示 表名 1.无论 高级查询还是简单查询 都用 select.. from..语句 from 后面 加表名 可以使一张表也可以是 ...
- MySQL的高级查询
高级查询 1.连接查询(对列的扩展) 第一种形式select * from Info,Nation #会形成笛卡尔积 select * from Info,Nation where Info.Nati ...
- MYSQL之高级查询
PHP高级查询 分组查询.联合查询.连接查询.子查询 版权声明:本文为博主原创文章,未经博主允许不得转载.
- python数据库-MySQL数据库高级查询操作(51)
一.什么是关系? 1.分析:有这么一组数据关于学生的数据 学号.姓名.年龄.住址.成绩.学科.学科(语文.数学.英语) 我们应该怎么去设计储存这些数据呢? 2.先考虑第一范式:列不可在拆分原则 这里面 ...
- mysql的子查询in()操作及按指定顺序显示
代码示例: in(逗号分隔开的值列表) 释:是否存在于值列表中 --------------------- 示例: select * from test where id in(3,1,5) orde ...
- Oracle与Mysql的高级查询与难点sql
一.连接查询 1.内连接 内连接用于返回满足连接条件的所有记录.默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询都属于内连接. Sql代码 1. SELEC ...
- MySQL 数据库 高级查询
1.连接查询select * from Info,Nation #笛卡尔积select * from Info,Nation where Info.Nation=Nation.Code join on ...
随机推荐
- 【XSY2709】count DP
题目描述 有一个序列\(A\),你可以随意排列这个序列,设\(s=\sum_{i=1}^{n-1}|a_i-a_{i+1}|\) . 问你最终\(s\leq m\)的方案数有几种. 保证\(A\)中的 ...
- PHUML 生成UML类图操作流程
项目基础阶段: 安装svn,因为托管在svn平台上: 项目下载到本地,并切换到对应目录(如:F:\wwwroot\phuml.git\trunk\src\app): svn checkout http ...
- python学习日记(基础数据类型及其方法01)
数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...
- 【JVM】查看JVM加载的类及类加载器的方法
查看JVM加载了哪些类 java -verbose[:class|gc|jni] 在输出设备上显示虚拟机运行信息. java -verbose:class 在程序运行的时候有多少类被加载!你可以用ve ...
- unittest单元测试框架中的参数化及每个用例的注释
相信大家和我有相同的经历,在写自动化用例脚本的时候,用例的操作是一样的,但是就是参数不同,比如说要测一个付款的接口,付款有很多种渠道,另外只有部分参数不一样,如果我们一个渠道一个渠道的写,在unitt ...
- luogu1919 A*BProblem升级版 (FFT)
把一个n位数看做n-1次的多项式,每一项的系数是反过来的每一位最后每一项系数进进位搞一搞就行了(数组一定要开到2的次数..要不然极端数据会RE) #include<cstdio> #inc ...
- Linux的wget命令详解【转载】
Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器.如果我们使用虚拟主机,处理这样的 ...
- poj1182、hdu1829(并查集)
题目链接:http://poj.org/problem?id=1182 食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...
- 洛谷P3620 数据备份
好吧,我一开始说这是个神级数据结构毒瘤题,后来改成神题了. 主要是贪心做法的巧妙转化: 首先发现选择的一对必须相邻,于是我们搞出差分. 然后考虑选取最小值时,最小值两侧的数要么同时选,要么都不选. 然 ...
- 如何写一个通用的README规范
背景 我们平常在进行项目开发时,一般都会把代码上传至代码托管平台上方便管理和维护.目前我厂使用的托管平台是SVN,国内外还有一些比较知名的代码托管平台,比如github.Gitlab.BitBucke ...