联合查询

联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加)。

语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关)。

Select 语句1

Union [union选项]

Select语句2........

Union 选项有两个

All:保留所有

Distinct:去重。默认的

联合查询只要求字段一样,与数据类型无关。

意义:两种

1,查询一张表但是需求不同。

2,多表查询,多张表的结构完全一样,保存的数据也一样

Order by

使联合查询中order by 不能直接使用需要对查询语句使用括号。

例:

(select * from my-class where sex=’男’ order by age asc limit 999)

Union

(select * from my-class where sex=’女’ order by age desc limit 999);

若要order by生效,必须搭配limit ,limit最大值。

 子查询

子查询:subquery 查询是在某个查询结果之上进行的(一条select语句含另一条select语句)

子查询分为两种:按位置分,按结果分

按位置分类:子查询select语句在外部查询

Select语句出现的位置

Form子查询:子查询跟在form后面。

Where 子查询:子查询出现在where条件中

Exists子查询:子查询出现在exists里面

按结果分类:根据子查询得到的数据进行分类(理论上讲任何一个查询得到的结构都可以理解为二维表)

标量查询:子查询得到的结果是一行一列

列子查询:子查询得到的结果是一行多列

行子查询:子查询得到的结果是一行多列(多行多列)

表子查询:子查询得到的结果是多行多列(出现位置在form之后)

标量子查询

例:需求:知道名字php获取学生

Select *from my_class where c_id =(select id from my_student where c_name=php);

列子查询

例:需求查询所有在读班级的学生(班级表存在的班级)

1,确定数据源:学生

Select * from my_sutdent where c_id in (?)

2,确定有效班级id,所有班级id

Select id from my_class;

合:Select * from my_sutdent where c_id in (Select id from my_class);

列子查询返回的结果比较:一行多列,需要使用in作为条件匹配,其实mysql还有几个类似:all ,some,any===in;

行子查询:

行子查询返回的结果可以是多行多列(一行多列)、

例:需求:要求查询整个学生中年龄最大,身高最高的学生

1,确定数据源

Select *from my_student where age =? and heigth=?;

2,确定最大的年龄和最高的身高

Select max(age),max(height) from my_student;

行子查询:需要构造行元素,行元素多个字段构成

Select * from my_student where (age,height)=(select max(age),max (height)from my_student);

表子查询:

表子查询:子查询返回的结果是多行多列的二维表,子查询的结果当做二维表来使用

例:需求:找出每班最后一个的学生

1,确定数据源;先将学生安装身高进行降序或者是升序

Select *from my_student order by height desc ;

2,从每个班选出第一个学生

Select * from my_student group by c_id;

表子查询:from子查询得到的结果作为from的数据源。

Exists 子查询

Exists 是否存在,exists子查询就是用来判断某些条件是否满足(跨表)exists是接在where之后,exists返回的结果只有0和1

例:查询所有的学生,前提条件是班级存在

1,确定数据源

Select *form my_student where?

2,确定条件是否满足

Exists (select * from my_class)--是否成立

mysql学习之路_联合查询与子查询的更多相关文章

  1. mysql学习之路_视图

    视图 视图:view是一种有结构的但是没有结构来源的虚拟表,虚拟表的结构来源不是自己定义的而是从对应的基表中产生(来源) 创建视图 基本语法: Create view 视图名字 as select 语 ...

  2. mysql学习之路_连接查询

    回顾 列属性:主键,自增长,唯一键. 关系:一对一,一对多,多对多 三层范式: 1NF:字段设计必须符合原子性 2NF:不存在部分依赖(没有复合主键) 3NF:不存在传递依赖(实体单独成表) 逆规范化 ...

  3. mysql学习之路_事物_存储过程_备份

    数据备份与还原 备份:将当前已有的数据保留. 还原:将已经保留的数据恢复到对应表中 为什么要做数据备份 1,防止数据丢失,被盗,误操作 2,保护数据记录 数据备份还原方式有多种:数据表备份 单表数据备 ...

  4. mysql学习之路_高级数据操作

    关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...

  5. mysql学习之路_外键

    回顾4 连接查询: 连接多张表到一起,不管记录数如何,字段数一定会增加. 分类:内连接,外连接.自然连接,交叉连接, 交叉连接:cross join (笛卡尔积) 内连接:inner join,左右两 ...

  6. mysql学习之路_字段类型与属性2

    字段属性: 主键,唯一键,自增长. 主键: Primary key 主要的键,一张表只能有一个字段能使用对应的键,用来唯一约束该字段里面的数据不能重复,称之为主见. 一张表最多只有一个主键. 增加主键 ...

  7. mysql学习之路_基础知识

                    Mysql php阶段将数据库分为三个阶 基础阶段: mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数 ...

  8. mysql学习之路_字段类型与属性

    回顾 数据库基本知识:关系型数据库与非关系型数据库 关系型数据库:安全(磁盘) 非关系型数据库:高效(内存) 关系型数据库:建立在关系模型上的数据库, 数据结构:二维表(浪费空间) 数据库操作指令:s ...

  9. mysql学习之路_乱码问题

    中文数据问题: 中文数据问题本质就说字符集问题, 计算机只识别二进制,人类识别符号:需要友谊个二进制与字符对应关系(字符集). 报错:服务器没有识别对应的四个字节. 服务器认为的数据是utf—8,一个 ...

随机推荐

  1. 【c++】c++ 11之lamba表达式

    C++ lambda表达式与函数对象 lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读.但是从本质上来讲, ...

  2. jquery实现元素高度变化页面变化

    试了几种方法包括有资料说的h5新特性,都没能满足我的需求.我的需求如下: 元素高度是动态可变的,比如可拖动teatarea元素 最后用到了指针监听事件解决了 @参考文档 $(document).mou ...

  3. linux命令学习之:cp

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一. 如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若同时指定多个文 ...

  4. git ----(2)

    Git使用40个16进制字符的SHA-1 Hash来唯一标识对象 Git的四种基本对象类型,组成了Git更高级的数据结构: blobs:      每个blob代表一个(版本的)文件,blob只包含文 ...

  5. 1到n的整数中,1出现的次数

    参考链接:https://discuss.leetcode.com/topic/18054/4-lines-o-log-n-c-java-python 1到n的整数中,1出现的次数,如11中,1出现了 ...

  6. Android TV开发 焦点控制

    转载:http://www.eoeandroid.com/thread-264177-1-1.html 最近在做一款基于Android的互联网电视客户端,开发与phone/pad差不多,但是有一个值得 ...

  7. threejs纹理

    纹理 纹理用来表现物体的细节.理论上可以将物体的每个细节建模出来,但是这样时间成本和性能成本都太高,因此,将物体的一些细节用纹理来表示. 图片纹理 图片纹理直接在物体表面应用图片.可以使用Textur ...

  8. Vue 数组 字典 template v-for 的使用

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. 转换 transform

    转换 定义: 1.转换是使元素改变形状.尺寸和位置的一种效果 2.又称为变形,即,可以向元素应用 2D 或 3D 转换,从而对元素进行旋转.缩放.移动或倾斜 3.2D转换:使元素在 X 轴和 Y 轴平 ...

  10. BZOJ1051或洛谷2341 [HAOI2006]受欢迎的牛

    BZOJ原题链接 洛谷原题链接 显然在一个强连通分量里的奶牛都可以相互喜欢,所以可以用\(tarjan\)求强连通并缩点. 要求明星奶牛必须被所有人喜欢,显然缩点后的图必须满足只有一个点没有出度,因为 ...