mysql复杂查询教程_mysql 复杂查询
聚合函数
函数是一个功能体,提供若干数据,产出结果-饺子机
COUNT(...)数量
SUM(...) 求和
AVG(...)平均
MAX (...)最大
MIN(...) 最小
聚合查询/分组查询
查询出所有员工的数量
SELECT COUNT(eid) FROM emp;
SELECT COUNT(*) FROM emp; #推荐写法;
查询出工资8000以上女员工姓名性别生日按工资降序排列,取前三个人
SELECT ename,sex,birthday,salary FROM emp WHERE salary >8000 AND sex=0
ORDER BY salary DESC
LIMIT 0,3;
查询所有员工的工资总和
SELECT SUM(salary) FROM emp;
查询所有员工的平均工资
SELECT SUM(salary)/COUNT(*) FROM emp;
SELECT AVG(salary) FROM emp;
查询男员工工资最高的
SELECT ename,MAX(salary) FROM emp WHERE sex=1;
查询出年龄最大的员工
SELECT MIN(birthday),ename FROM emp;
分组查询:只能查询分组条件和聚合函数
*查询男女员工的平均工资,最高工资
SELECT sex,AVG(salary),MAX(salary) FROM emp GROUP BY sex;
查询每个部门的员工数量,最高工资,最低工资;
SELECT deptId,COUNT(*),MAX(salary),MIN(salary) FROM emp GROUP BY deptId ;
函数补充
YEAR() 获取日期中的年份
MONTH() 获取日期中的月份
查询出1993年出生的员工所有列
SELECT*FROM emp WHERE YEAR(birthday)=1993;
查询5月出生的所有列
SELECT*FROM emp WHERE MONTH(birthday)=5;
子查询
查询出研发部员工所有的列
SELECT * FROM emp WHERE deptId=(SELECT did FROM dept WHERE dname='研发部');
查询出比tom工资高的员工有哪些;
SELECT * FROM emp WHERE salary>(SELECT salary FROM emp WHERE ename='tom');
查询出和TOM同一年的员工
SELECT*FROM emp WHERE YEAR(birthday)=(SELECT YEAR(birthday) FROM emp WHERE ename='tom' );
多表查询
查询所有员工姓名及其部门名称;
SELECT ename,dname FROM emp,dept WHERE did=deptId;
上述多表查询语法是SQL-92中的,无法查询出没有部门的员工,也没法查出没有员工的部门。
SQL-99中提出了新的多表查询语法
内连接INNER JOIN ...ON
SELECT ename,dname FROM emp INNER JOIN dept ON deptId=did;
左外连接LEFT OUTER JOIN ..ON
SELECT ename,dname FROM emp LEFT OUTER JOIN dept ON deptId= did;
查询结果是左侧所有的记录都显示;
OUTER 可以省略
SELECT ename,dname FROM emp LEFT JOIN dept ON deptId =did;
右外连接RIGHT OUTER JOIN...ON
SELECT ename,dname FROM emp RIGHT OUTER JOIN dept ON deptId=did;
查询右侧所有的记录都显示;
全连接FULL JOIN
显示左侧和右侧所有的记录--mysql 不支持
UNION 合并相同的项
UNION ALL 不合并相同的项
(select ename,dname from emp left join dept on deptid=did)
UNION ALL
(SELECT ename,dname FROM emp RIGHT OUTER JOIN dept ON deptId=did);
这个出来的有重复项,是左外连接和右外连接合并的
(select ename,dname from emp left join dept on deptid=did)
UNION
(SELECT ename,dname FROM emp RIGHT OUTER JOIN dept ON deptId=did);
mysql复杂查询教程_mysql 复杂查询相关推荐
- mysql高级查询教程_MYSQL高级查询
实际开发中,经常需要对某些数据进行统计,比如,统计某个字段的最大值.最小值.平均值等. MySQL中,提供了一些函数来实现这些功能 聚合函数 COUNT()--返回某列的行数 SUM()--返回某列值 ...
- centos得mysql安装教程_Centos下Mysql安装图文教程_MySQL
Mysql是比较常用的数据库,日常开发中也是采用地比较多.工欲善其事必先利其器,本文特地来讲解下如何在centos(其他linux发行版类似)下安装Mysql.首先准备的材料:Mysql,我这里采用的 ...
- 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查看问题 ...
- mysql两个表查询修改_MySQL:查询、修改(二)
干货: 使用SELECT查询的基本语句SELECT * FROM 可以查询一个表的所有行和所有列的数据.SELECT查询的结果是一个二维表. 使用SELECT *表示查询表的所有列,使用SELECT ...
最新文章
- idea里自动创建构造函数
- IBM科学家实现存储器重大突破
- 【树莓派】给树莓派安装中文输入法Fcitx及Google拼音输入法
- JDBC粗略学习( 阿巴阿巴阿巴阿巴)
- 一网打尽软件测试面试必问的所有Web测试点,你不知道的这都有!
- 【PL/SQL】 使用游标
- gitlab 删除分支_idea gitlab 分支 pull、push 实践笔记
- matlab线检测,车道线检测(matlab)
- Python科学计算系列2—不等式和不等式组
- SDU-nachos安装及初步编译
- latex表格手把手超详细教程(table, tabular, multirow, multicolumn)
- PSP2000下实现完美截屏
- 迷宫问题(MAZE)
- 我的世界饮水系统服务器,MC水瓶 - 找服玩|Minecraft服务器列表
- 用Leangoo管理用户故事
- 大一上课设——贪吃蛇(链表 + easyx)
- Windows 11 已修复 AMD CPU 性能问题
- 草履虫纳米机器人_草履虫大小的“微型机器人”或许能在人体组织中自由穿梭...
- 【天池】金融风控贷款违约预测task5
- Tableau实战 公司投资分析
热门文章
- pythonsuper函数_怎么使用python super函数调用父类
- 她穿着由自己17封拒稿信做成的裙子,通过了博士论文答辩!
- 网友的有趣发现:冬天里,欧洲古建筑上的雕像都好像“生病了”
- 最年轻图灵奖女性得主:谁说女的数学都比男的差
- 现代中国第一位数学博士是谁?
- 如何利用python语言实现对象数组
- 二维码提升对比度文献调研(3)--A Low-Complexity Algorithm for Contrast Enhancement of Digital Images
- Java 回调 (Callback) 接口学习使用
- web通讯录之登录注册界面
- 用C++11的std::async代替线程的创建