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. 复杂查询相关推荐

  1. 01.query的分类-条件查询和组合查询

    文章目录 1. es单个条件查询和组合查询 2.query和filter context 1. query context 2. filter context 3.使用样例 1. es单个条件查询和组 ...

  2. hibernate查询缓存_Hibernate查询缓存如何工作

    hibernate查询缓存 介绍 现在,我已经介绍了实体和集合缓存,现在该研究查询缓存的工作原理了. 查询缓存与实体严格相关,它在搜索条件和满足该特定查询过滤器的实体之间绘制关联. 像其他Hibern ...

  3. MySQL 排序、分页查询、聚合查询

    文章目录 1. 排序 2. 分页查询 3. 聚合查询 3.1 分组聚合 GROUP BY 练习 LeetCode 176. 第二高的薪水 练习 LeetCode 177. 第N高的薪水 练习 Leet ...

  4. MySQL基础——数据库和SQL概述\MySQL基本使用\DQL语言学习\条件查询\排序查询\常见函数\分组查询\连接查询\子查询\分页查询\联合查询

    本文详细讲解了MySQL中DQL语言,也就是数据查询语句的使用.全文3w余字,是对学习MySQL知识的整理总结,因为篇幅较长,MySQL基础知识余下部分发表在余下博客中 DML语言学习\插入数据\删除 ...

  5. (19)一篇掌握MySQL数据库基础下 基本操作(外键约束、建表原则、多表查询、子查询)

    MySQL数据库基础下 一.修改表--添加外键约束 二.多表之间的建表原则 1.建数据库原则:通常情况下,一个项目/应用建一个数据库 2.多表之间的表原则: (1)一对多:分类和商品 (一个分类对应多 ...

  6. db2嵌套查询效率_嵌套查询与连接查询的性能

    嵌套查询与连接查询的性能:连接查询一般较快:子查询很难被优化.(当然和DB优化有关,也可能子查询比连接查询快)其实不能一概而论的~~ 不过,问了下DBA同学,他建议是能用join的,尽量不要用嵌套查询 ...

  7. mysql 嵌套查询性能_MySQL数据库之嵌套查询与连接查询的性能详解

    本文主要向大家介绍了MySQL数据库之嵌套查询与连接查询的性能详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 嵌套查询与连接查询的性能:连接查询一般较快:子查询很难被优化. ...

  8. Mysql索引介绍及使用注意事项,limit分页查询,慢查询分析

    Mysql索引介绍及使用注意事项,limit分页查询,慢查询分析 本文将从以下十二个方面进行介绍: 一.索引概念介绍 二.索引类型FULLTEXT,HASH,BTREE,RTREE有什么功能和性能上的 ...

  9. php mysql查询日期,​mysql查询日期的方法

    mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添 ...

  10. mysql 查询今天_mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句

    mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添 ...

最新文章

  1. 简单介绍Lua中三种循环语句的使用
  2. 【每日学习Mybatis中基础】trim标签使用
  3. nedc和epa续航里程什么意思_为何特斯拉的锂电池行驶里程至今仍无人超越?
  4. V2EX › 郁闷于Python GUI开发,有没有好的框架啊?
  5. 第一次认识SharePoint...
  6. mysql使用小技巧_MySQL使用小技巧
  7. 如何把ajax改成同步请求,如何将Ajax请求从异步改为同步
  8. 数据分析和数据挖掘的理论研究必要性
  9. python 访问网站 json_python爬虫用selenium访问一个网址返回的是个json字符串,怎么获取这个json字符串?...
  10. 在指定命令下打开命令提示符的几种方式
  11. C#空值和null判断
  12. CICD详解(二)——Jenkins持续集成原理
  13. PGIS 天地图主题颜色背景修改 图片 filter 蓝色 HTML CSS IMG filter 颜色矩阵在线计算 RGBA转换 SVG  feColorMatrix
  14. 3D点云处理:点云曲率-主曲率/高斯曲率/平均曲率
  15. .NET连接IMB DB2数据库的一些问题及最终完美解决方案!
  16. java mp3文件合并,java怎么实现mp3合并
  17. jquery中addClass()和removeClass()方法
  18. java 微信时间戳转换工具_微信小程序实现时间戳格式转换
  19. (xxx.dll)处(位于xxx.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000003F 时发生访问冲突。已解决。
  20. pytorch应用之——纸币识别(一)

热门文章

  1. Android 应用程序模块: 应用, 任务, 进程, 和线程
  2. 书摘---创业36条军规6:管理的九个问题
  3. Linux标准化:避免重蹈UNIX的覆辙
  4. Windows10如何安装windows terminal
  5. 使用ln命令创建软引用(相对路径与绝对路径)
  6. ntpdate 时间同步
  7. windows 不安装jdk 运行 jar_详解Windows系统安装运行Mongodb服务(推荐)
  8. 透明loading_四步搞定小菊花 Loading 动画
  9. Springboot中拦截器的使用
  10. Java学习笔记之设计模式(3)抽象工厂模式