mysql学习之路_联合查询与子查询
联合查询
联合查询:将多次查询(多条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学习之路_联合查询与子查询的更多相关文章
- mysql学习之路_视图
视图 视图:view是一种有结构的但是没有结构来源的虚拟表,虚拟表的结构来源不是自己定义的而是从对应的基表中产生(来源) 创建视图 基本语法: Create view 视图名字 as select 语 ...
- mysql学习之路_连接查询
回顾 列属性:主键,自增长,唯一键. 关系:一对一,一对多,多对多 三层范式: 1NF:字段设计必须符合原子性 2NF:不存在部分依赖(没有复合主键) 3NF:不存在传递依赖(实体单独成表) 逆规范化 ...
- mysql学习之路_事物_存储过程_备份
数据备份与还原 备份:将当前已有的数据保留. 还原:将已经保留的数据恢复到对应表中 为什么要做数据备份 1,防止数据丢失,被盗,误操作 2,保护数据记录 数据备份还原方式有多种:数据表备份 单表数据备 ...
- mysql学习之路_高级数据操作
关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...
- mysql学习之路_外键
回顾4 连接查询: 连接多张表到一起,不管记录数如何,字段数一定会增加. 分类:内连接,外连接.自然连接,交叉连接, 交叉连接:cross join (笛卡尔积) 内连接:inner join,左右两 ...
- mysql学习之路_字段类型与属性2
字段属性: 主键,唯一键,自增长. 主键: Primary key 主要的键,一张表只能有一个字段能使用对应的键,用来唯一约束该字段里面的数据不能重复,称之为主见. 一张表最多只有一个主键. 增加主键 ...
- mysql学习之路_基础知识
Mysql php阶段将数据库分为三个阶 基础阶段: mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数 ...
- mysql学习之路_字段类型与属性
回顾 数据库基本知识:关系型数据库与非关系型数据库 关系型数据库:安全(磁盘) 非关系型数据库:高效(内存) 关系型数据库:建立在关系模型上的数据库, 数据结构:二维表(浪费空间) 数据库操作指令:s ...
- mysql学习之路_乱码问题
中文数据问题: 中文数据问题本质就说字符集问题, 计算机只识别二进制,人类识别符号:需要友谊个二进制与字符对应关系(字符集). 报错:服务器没有识别对应的四个字节. 服务器认为的数据是utf—8,一个 ...
随机推荐
- ubuntu系列-安装google浏览器
转载:http://www.linuxidc.com/Linux/2013-10/91857.htm 对于刚刚开始使用Ubuntu并想安装谷歌Chrome浏览器的新用户来说,本文所介绍的方法是最快捷的 ...
- [Z]Spring Data JPA 之 一对一,一对多,多对多 关系映射
一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...
- 详解Cookie纪要
参考文档链接:http://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651552892&idx=1&sn=126a1d32 ...
- python 面向对象编程 之 单例模式
单例模式三种实现方式: 单例模式:单例模式是解决系统资源浪费的一种方案,是指一个类实例化后可以多次使用此对象. 单例模式应用场景:数据库操作.日志.后台打印 # settings.py# Host=' ...
- 使用java5的注解和Sping/AspectJ的AOP 来实现Memcached的缓存
使用java5的注解和Sping/AspectJ的AOP 来实现Memcached的缓存 今天要介绍的是Simple-Spring-Memcached,它封装了对MemCached的调用,使MemCa ...
- nginx与php-fpm原理
一.正向代理与反向代理 1.正向代理:访问google.com google.com vpn需要FQ才能访问 vpn 对于我们来说是可以感知到的(我们连接vpn),但对于google服务器是不知道 ...
- angular2.0学习笔记5.关于组件
1.组件文件应在/src/app文件夹下 2.组件文件命名应遵循小写中线形式,每个单词之间用中线分隔,并且以.component.ts结尾. 如:HeroDetailComponent类应该放在her ...
- 使用spec文件语法创建一个rpm
How to create an RPM package/zh-hk < How to create an RPM package 此页面包含 Packaging:ScriptletSnippe ...
- iOS.Crash.OniOS8.WhenCall[popToRootViewController]
系统iOS 8.x, ARC. CrashCase: 在UIViewController中有一个类型为UIScrollView的实例变量scrollView, 点击UIViewController中的 ...
- Ubuntu 双网卡设置
闲话不多说,直接正题 因为chinanet信号不强,所以买了个usb无线网卡,平常又要做开发,要连着开发板,不知怎么回事,一旦自带无线网卡连上内网的无线路由,就不能访问外网了. 网上搜了好久,终于查到 ...