按timestamp查询_04. 复杂查询
1. 视图
- what
表中存放的是实际数据,视图中存放的是sql查询语句,使用视图时,会运行视图里的sql查询语句创建出的一张临时表
- how
-- 创建
create view `视图名称`(<列名1>,<列名2>...) as
<select 查询语句>;create view `按性别汇总`(`性别`,`人数`) as
select `性别`, count(*)
from student
group by `性别`;-- 展示
select `性别`,`人数`
from `按性别汇总`;
- Function
- 频繁使用的sql
- 数据自动更新到最新数据
- 节省存放数据的空间
- 注意事项
- 避免往视图里插入视图或是数据
2. 子查询
- what
- 嵌套查询,类似临时表
- how
- in
- any,必须和比较运算符一起
- all,必须和比较运算符一起
- Function
- 偶尔使用(对比视图)
- 注意事项
- all得的是一个集合,不能
a>3*all(b)
而是a/3>all(b)
- 避免使用多层嵌套,性能,复杂
- 练习
-- 找出每个课程里成绩最低的学号
select `score`, `std_no`
from score
where `score` in (select min(`score`)from scoregroup by `coure_no`
);-- 哪些学生的成绩比课程0002的全部成绩里任意一个高
select `score`, `std_no`
from score
where `score` > any(select `score`from scorewhere `coure_no`=0002
);
3. 标量子查询
- what
- 子查询返回一行一列
- Function
- 偶尔使用查询单一值
in, any, all, between
- 练习
select 学号, 成绩
from score
where 成绩 > (select avg(成绩)from score
);
4. 关联子查询
-- 查找出每个课程中大于对应课程平均成绩的学生
select 学号, 课程号, 成绩
from score as s1
where 成绩 > (select avg(成绩)from score as s2where s1.课程号 = s2.课程号group by 课程号
);
- function
- 关联条件
- 偶尔使用,在每个组比较
5. 函数
- 算术函数
- round 四舍五入
- abs 绝对值
- mod 求余数
- 字符串函数
- length 长度
- lower 小写
- upper 大写
- concat 字符串拼接
- replace 字符串替换
- substring 字符串截取
- 日期函数
- current_date 当前日期
- current_time 当前时间
- current_timestamp 当前日期和时间
- year、month、day
- dayname 日期对应的星期几
6. SQLZOO SELECT_within_SELECT_Tutorial
-- 1.列出符合条件的国家名称,条件:国家认可大于俄罗斯(Russia)的人口
select name
from world
where population > (select population from world where name = 'Russia'
);-- 2.列出欧洲每个国家中人均GDP要高于英国(United Kingdom)
select name
from world
where continent = 'Europe' and gdp/population > (select gdp/population from worldwhere name='United Kingdom'
);-- 3.在阿根廷(Argentina)和澳大利亞(Australia)所在的洲份中的国家有哪些?
-- 查找出国家名称和洲名称,并按国家名称排序
select name, continent
from world
where continent in (select continent from worldwhere name='Argentina' or name='Australia'
) order by name;-- 4.查找符合下面条件的国家名称和人口:国家的人口比加拿大(Canada)的多,但比波兰(Poland)的少
select name, population
from world
where population between(select population from worldwhere name='Canada')+1
and (select population from worldwhere name='Poland')-1;-- 5.德国(Germany)在欧洲(Europe)國家的人口最多。奧地利(Austria)拥有德国总人口的11%。
-- 查找欧洲的国家名称和每个国家的人口,其中人口以德国人口的百分比来显示人口数
select name, concat(round(population*100/(select population from world where name='Germany')), '%') AS population
from world
where continent = 'Europe';-- 6.哪些国家的GDP比欧洲(Europe)的全部国家都要高呢?
-- (有些国家的记录中,GDP是空值NULL,没有填入资料)
select name
from world
where gdp > all(select gdp from worldwhere continent = 'Europe' and gdp > 0
);-- 7.在每一个州中找出最大面积的国家,查找出洲, 国家名字,面积。
-- (有些国家的记录中,面积是空值NULL,没有填入资料)
select continent, name, area
from world as x
where area >= all(select area from world as ywhere y.continent=x.continent and area>0
);-- 8.列出洲份名称和国家名称,其中每个洲只取出一个国家(条件:该国家排序在这个洲的首位)
select continent, name
from world as x
where name <= all(select name from world as ywhere y.continent=x.continent
);-- 9.找出符合条件的洲和国家名称,条件:该洲中的全部国家人口都有少于或等于 25000000 人口)
select name, continent, population
from world as x
where 25000000 >= all(select population from world as ywhere y.continent=x.continent
);-- 10.有些国家的人口是同洲份的所有其他国的3倍或以上。列出这些国家的名称和洲
select name, continent
from world as x
where population > all(select 3*population from world as ywhere y.continent=x.continent and x.name <> y.name
);
按timestamp查询_04. 复杂查询相关推荐
- 01.query的分类-条件查询和组合查询
文章目录 1. es单个条件查询和组合查询 2.query和filter context 1. query context 2. filter context 3.使用样例 1. es单个条件查询和组 ...
- hibernate查询缓存_Hibernate查询缓存如何工作
hibernate查询缓存 介绍 现在,我已经介绍了实体和集合缓存,现在该研究查询缓存的工作原理了. 查询缓存与实体严格相关,它在搜索条件和满足该特定查询过滤器的实体之间绘制关联. 像其他Hibern ...
- MySQL 排序、分页查询、聚合查询
文章目录 1. 排序 2. 分页查询 3. 聚合查询 3.1 分组聚合 GROUP BY 练习 LeetCode 176. 第二高的薪水 练习 LeetCode 177. 第N高的薪水 练习 Leet ...
- MySQL基础——数据库和SQL概述\MySQL基本使用\DQL语言学习\条件查询\排序查询\常见函数\分组查询\连接查询\子查询\分页查询\联合查询
本文详细讲解了MySQL中DQL语言,也就是数据查询语句的使用.全文3w余字,是对学习MySQL知识的整理总结,因为篇幅较长,MySQL基础知识余下部分发表在余下博客中 DML语言学习\插入数据\删除 ...
- (19)一篇掌握MySQL数据库基础下 基本操作(外键约束、建表原则、多表查询、子查询)
MySQL数据库基础下 一.修改表--添加外键约束 二.多表之间的建表原则 1.建数据库原则:通常情况下,一个项目/应用建一个数据库 2.多表之间的表原则: (1)一对多:分类和商品 (一个分类对应多 ...
- db2嵌套查询效率_嵌套查询与连接查询的性能
嵌套查询与连接查询的性能:连接查询一般较快:子查询很难被优化.(当然和DB优化有关,也可能子查询比连接查询快)其实不能一概而论的~~ 不过,问了下DBA同学,他建议是能用join的,尽量不要用嵌套查询 ...
- mysql 嵌套查询性能_MySQL数据库之嵌套查询与连接查询的性能详解
本文主要向大家介绍了MySQL数据库之嵌套查询与连接查询的性能详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 嵌套查询与连接查询的性能:连接查询一般较快:子查询很难被优化. ...
- Mysql索引介绍及使用注意事项,limit分页查询,慢查询分析
Mysql索引介绍及使用注意事项,limit分页查询,慢查询分析 本文将从以下十二个方面进行介绍: 一.索引概念介绍 二.索引类型FULLTEXT,HASH,BTREE,RTREE有什么功能和性能上的 ...
- php mysql查询日期,mysql查询日期的方法
mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添 ...
- mysql 查询今天_mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句
mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添 ...
最新文章
- 简单介绍Lua中三种循环语句的使用
- 【每日学习Mybatis中基础】trim标签使用
- nedc和epa续航里程什么意思_为何特斯拉的锂电池行驶里程至今仍无人超越?
- V2EX › 郁闷于Python GUI开发,有没有好的框架啊?
- 第一次认识SharePoint...
- mysql使用小技巧_MySQL使用小技巧
- 如何把ajax改成同步请求,如何将Ajax请求从异步改为同步
- 数据分析和数据挖掘的理论研究必要性
- python 访问网站 json_python爬虫用selenium访问一个网址返回的是个json字符串,怎么获取这个json字符串?...
- 在指定命令下打开命令提示符的几种方式
- C#空值和null判断
- CICD详解(二)——Jenkins持续集成原理
- PGIS 天地图主题颜色背景修改 图片 filter 蓝色 HTML CSS IMG filter 颜色矩阵在线计算 RGBA转换 SVG feColorMatrix
- 3D点云处理:点云曲率-主曲率/高斯曲率/平均曲率
- .NET连接IMB DB2数据库的一些问题及最终完美解决方案!
- java mp3文件合并,java怎么实现mp3合并
- jquery中addClass()和removeClass()方法
- java 微信时间戳转换工具_微信小程序实现时间戳格式转换
- (xxx.dll)处(位于xxx.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000003F 时发生访问冲突。已解决。
- pytorch应用之——纸币识别(一)
热门文章
- Android 应用程序模块: 应用, 任务, 进程, 和线程
- 书摘---创业36条军规6:管理的九个问题
- Linux标准化:避免重蹈UNIX的覆辙
- Windows10如何安装windows terminal
- 使用ln命令创建软引用(相对路径与绝对路径)
- ntpdate 时间同步
- windows 不安装jdk 运行 jar_详解Windows系统安装运行Mongodb服务(推荐)
- 透明loading_四步搞定小菊花 Loading 动画
- Springboot中拦截器的使用
- Java学习笔记之设计模式(3)抽象工厂模式