mysql 高级查询总结_MySQL高级查询总结
(一)模糊查询
- 1、-like:
mysql> select name as "姓名" from score where name like '张%';
+--------+
| 姓名|
+--------+
| 张三|
| 张玉洁|
| 张三|
| 张三|
| 张三|
| 张玉洁|
| 张玉洁|
| 张玉洁|
+--------+
8 rows in set
2、is null
mysql> select name as "姓名" from score where name is null;
Empty set
3、between
mysql> select name , score from score where score between 80 and 100;
+--------+-------+
| name | score |
+--------+-------+
| 张玉洁| 98 |
| 张三| 86 |
| 张三| 97 |
| 张玉洁| 98 |
| 李一| 80 |
+--------+-------+
5 rows in set
4、in
mysql> select name,score from score where score in (97,98);
+--------+-------+
| name | score |
+--------+-------+
| 张玉洁| 98 |
| 张三| 97 |
| 张玉洁| 98 |
+--------+-------+
3 rows in set
(二)聚合函数
1、sum()
mysql> select sum(score) as "李一总成绩" from score where name="李一";
+------------+
| 李一总成绩|
+------------+
| 223 |
+------------+
1 row in set
2、avg()
mysql> select avg(score) as "李一平均成绩" from score where name="李一";
+--------------+
| 李一平均成绩|
+--------------+
| 74.3333 |
+--------------+
1 row in set
3.max() min()
mysql> select max(score) from score;
+------------+
| max(score) |
+------------+
| 98 |
+------------+
1 row in set
4.count()
mysql> select count(score) as "大于70分的成绩个数" from score where score > 70;
+--------------------+
| 大于70分的成绩个数|
+--------------------+
| 6 |
+--------------------+
1 row in set
(三)分组查询:
mysql> select name,avg(score),courseName from score group by name,courseName;
+--------+------------+------------+
| name | avg(score) | courseName |
+--------+------------+------------+
| 张三| 97.0000 |数学|
| 张三| 67.0000 |英语|
| 张三| 60.0000 |语文|
| 张玉洁| 43.0000 |数学|
| 张玉洁| 98.0000 |英语|
| 张玉洁| 98.0000 |语文|
| 李一| 80.0000 |数学|
| 李一| 66.0000 |英语|
| 李一| 77.0000 |语文|
+--------+------------+------------+
mysql> select name,avg(score),courseName from score group by name,courseName having count(courseName)>1;
+--------+------------+------------+
| name | avg(score) | courseName |
+--------+------------+------------+
| 张三| 60.0000 |语文|
| 张玉洁| 43.0000 |数学|
+--------+------------+------------+
2 rows in set
分组查询总结:
1.WHERE子句从数据源中去掉不符合其搜索条件的数据
2.GROUP BY子句搜集数据行到各个组中
3.统计函数为各个组计算统计值
4.HAVING子句去掉不符合其组搜索条件的各组数据行
5使用GROUP BY时,select后面出现的内容要么为聚合函数,要么为group by后面出现的内容
(四)多表链接查询:
1.内连接:
(1)用inner join 但这种方法不常用 常用第二种;
mysql> select username,starname from users as u inner join star as s on u.starid=s.starid;
+----------+----------+
| username | starname |
+----------+----------+
| 张一|白羊座|
| 李二|金牛座|
| 王三|双子座|
| 张四|巨蟹座|
| 李五|狮子座|
| 张八|处女座|
| 王九|天秤座|
| 张言|天蝎座|
| 李志|射手座|
| 王月|水瓶座|
| 张欣|双鱼座|
+----------+----------+
11 rows in set
(2)from where
select username,starname from users as u,star s where u.starid=s.starid;
+----------+----------+
| username | starname |
+----------+----------+
| 张一|白羊座|
| 李二|金牛座|
| 王三|双子座|
| 张四|巨蟹座|
| 李五|狮子座|
| 张八|处女座|
| 王九|天秤座|
| 张言|天蝎座|
| 李志|射手座|
| 王月|水瓶座|
| 张欣|双鱼座|
+----------+----------+
11 rows in set
2.外连接:
(1)左连接,返回左表的所有数据以及右表对应的数据。 Left join
mysql> select starname,username from users as u left join star s on u.starid=s.starid;
+----------+----------+
| starname | username |
+----------+----------+
| 白羊座|张一|
| 金牛座|李二|
| 双子座|王三|
| 巨蟹座|张四|
| 狮子座|李五|
| 处女座|张八|
| 天秤座|王九|
| 天蝎座|张言|
| 射手座|李志|
| 水瓶座|王月|
| 双鱼座|张欣|
+----------+----------+
11 rows in set
(2)右连接,返回右表的所有数据以及左表相对应的数据。Right join
(五)子查询
在某些特定的业务需求下,当进行查询的时候,需要的条件是另外一个 select语句的结果,这个时候,就要用到子查询。
用于子查询的关键字主要包括 in、not in、=、!=、exists、not exists……
1. 比较运算符 >
mysql> select username,height from users where height >(select height from users where username="张四");
+----------+--------+
| username | height |
+----------+--------+
| 李二| 155 |
| 王三| 160 |
| 李五| 160 |
| 张八| 168 |
| 王九| 170 |
| 张言| 176 |
| 李志| 180 |
| 王月| 176 |
| 张欣| 180 |
+----------+--------+
9 rows in set
2. 子查询 in
mysql> select starid,username,height from users where starid in(select starid from users where height>170);
+--------+----------+--------+
| starid | username | height |
+--------+----------+--------+
| 8 | 张言| 176 |
| 9 | 李志| 180 |
| 11 | 王月| 176 |
| 12 | 张欣| 180 |
+--------+----------+--------+
4 rows in set
3. Exists
(1)mysql> select starname from star where exists(select * from star where starid=13);
Empty set
(2) mysql> select starname from star where exists(select * from star where starid<13);
+----------+
| starname |
+----------+
| 白羊座|
| 金牛座|
| 双子座|
| 巨蟹座|
| 狮子座|
| 处女座|
| 天秤座|
| 天蝎座|
| 射手座|
| 摩羯座|
| 水瓶座|
| 双鱼座|
+----------+
12 rows in set
Exists()括号内为真 则前面的语句执行,为假则前面的语句不执行;EXISTS也可以作为WHERE语句的子查询,但一般都能用IN子查询替换。
4. not exists
与exists刚好是反的。
5. mysql> select sum(avg_score) from(select avg(score) as avg_score from score group by name) as t1;
+----------------+
| sum(avg_score) |
+----------------+
| 215.8333 |
+----------------+
1 row in set
mysql>
mysql 高级查询总结_MySQL高级查询总结相关推荐
- MySQL第九章索引_MySQL高级(索引优化+慢查询定位)
一.先谈谈事务 1. ACID特性 1.1 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用: 1.2 一致性: 执行事务前后,数据库从一个一致性状态转换 ...
- mysql高级查询 二_MySQL高级查询(二)
EXISTS 和NOT EXISTS子查询 EXISTS子查询 语法: SELECT --- FROM 表名 WHERE EXISTS (子查询); 例: SELECT `studentNo` AS ...
- mysql 高级查询词_Mysql高级查询语句
Exists子查询 Exists的特点 1.在执行create或drop语句前,可以使用exists语句来判断数据库对象是否存在,返回值是true或false drop table if exists ...
- mysql 慢日志 作用_MySQL慢查询日志的作用和开启
前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...
- mysql 查询重写_mysql 学习 - 查询重写规则
条件化简 我们编写的查询语句的搜索条件本质上是一个表达式,这些表达式可能比较繁杂,或者不能高效的执行,MySQL的查询优化器会为我们简化这些表达式. 移除不必要的括号 有时候表达式里有许多无用的括号, ...
- mysql 前30秒_mysql – 简单查询需要15-30秒
以下查询非常简单.它从消息表中选择最后20条记录,以便在分页方案中使用.第一次运行此查询时,需要15到30秒.后续运行只需不到一秒钟(我预计会涉及一些缓存).我试图确定为什么第一次这么长时间. 这是查 ...
- mysql慢查询单位_MySQL慢查询
MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句.具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢 ...
- mysql or中有空查询慢_MySQL 慢查询日志
1.定义 2.相关参数 2.开启 3.原因 4.慢查询日志工具mysqldumpslow 1.定义 作用:用来记录在MySQL中响应时间超过阀值的语句. 2.相关参数 mysql> show v ...
- mysql 关联查询慢_mysql慢查询语句分析总结
我们经常会接触到MySQL,也经常会遇到一些MySQL的性能问题.我们可以借助慢查询日志和explain命令初步分析出SQL语句存在的性能问题 通过SHOW FULL PROCESSLIST查看问题 ...
最新文章
- FT(Fourier Transform)在滤波上的应用
- php关机启动不了,win10关机关不掉怎么办
- 链表问题7——判断一个链表是否为回文结构
- 为啥led灯用一年后暗了很多_嫌原车的卤素“蜡烛灯”太暗,想换掉,该选氙气灯还是LED灯?...
- MonogoDb学习笔记
- centos安装后两个启动项、_久违的更新—黑苹果的简易安装
- 更新yum源并重建缓存
- APP安全环节缺失,手游运营商怎样应对APP破解困境
- react 导航条选中颜色_调整安卓手机的颜色以更好地查看一切
- ps怎么对比原图快捷键_PS裁剪几大构图法
- Could not find artifact org.olap4j:olap4j:pom:0.9.7.309-JS-3 in alimaven
- vs怎么把文字超链接_怎么拥有自己设计的简单个人网站(超细节)
- Linux下安装lingo教程-centos6 64位
- 智慧树工业机器人测试答案_智慧树_工业机器人技术基础_答案章节单元测试答案...
- pdf阅读神器推荐——PDF-XChange Editor V8
- 职高学计算机可以考的大学名单,职高可以考的大学有哪些
- C语言程序设计-鸡兔同笼问题
- 图片对象(lv_img_t)的应用
- java 虚拟机(JVM)
- linux生命游戏实现,模拟生命——Conway生命游戏python实现(详细注释笔记)
热门文章
- export PATHONPATH的用法
- 阿里云Linux服务器部署Mysql,JDK以及Tomcat教程
- MIMO-UNet学习
- 根据当前日期获取本周、本月、本季度相关日期
- 树莓派清华镜像源“stretch”更换为“buster”,解决tensorflow、h5py安装包下载报错问题
- Docker(9) 安装Oracle18c
- No.1_NABCD模型分析
- android 呼吸灯,十三种呼吸灯交互触控体验_手机_手机Android频道-中关村在线
- 一个技术总监的个人综合评估,希望对大家能有所帮助(转)
- 【计算机组成原理】计算机系统结构笔记:合集