mysql复杂查询教程_mysql 复杂查询
聚合函數(shù)
函數(shù)是一個(gè)功能體,提供若干數(shù)據(jù),產(chǎn)出結(jié)果-餃子機(jī)
COUNT(...)數(shù)量
SUM(...) 求和
AVG(...)平均
MAX (...)最大
MIN(...) 最小
聚合查詢/分組查詢
查詢出所有員工的數(shù)量
SELECT COUNT(eid) FROM emp;
SELECT COUNT(*) FROM emp; #推薦寫(xiě)法;
查詢出工資8000以上女員工姓名性別生日按工資降序排列,取前三個(gè)人
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;
分組查詢:只能查詢分組條件和聚合函數(shù)
*查詢男女員工的平均工資,最高工資
SELECT sex,AVG(salary),MAX(salary) FROM emp ?GROUP BY sex;
查詢每個(gè)部門(mén)的員工數(shù)量,最高工資,最低工資;
SELECT deptId,COUNT(*),MAX(salary),MIN(salary) FROM emp GROUP BY deptId ;
函數(shù)補(bǔ)充
YEAR() 獲取日期中的年份
MONTH() 獲取日期中的月份
查詢出1993年出生的員工所有列
SELECT*FROM emp WHERE YEAR(birthday)=1993;
查詢5月出生的所有列
SELECT*FROM emp WHERE MONTH(birthday)=5;
子查詢
查詢出研發(fā)部員工所有的列
SELECT * FROM emp WHERE deptId=(SELECT did FROM dept WHERE dname='研發(fā)部');
查詢出比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' );
多表查詢
查詢所有員工姓名及其部門(mén)名稱;
SELECT ename,dname FROM emp,dept WHERE did=deptId;
上述多表查詢語(yǔ)法是SQL-92中的,無(wú)法查詢出沒(méi)有部門(mén)的員工,也沒(méi)法查出沒(méi)有員工的部門(mén)。
SQL-99中提出了新的多表查詢語(yǔ)法
內(nèi)連接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;
查詢結(jié)果是左側(cè)所有的記錄都顯示;
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;
查詢右側(cè)所有的記錄都顯示;
全連接FULL JOIN
顯示左側(cè)和右側(cè)所有的記錄--mysql 不支持
UNION 合并相同的項(xiàng)
UNION ALL 不合并相同的項(xiàng)
(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);
這個(gè)出來(lái)的有重復(fù)項(xiàng),是左外連接和右外連接合并的
(select ename,dname from emp left join dept on deptid=did)
UNION
(SELECT ename,dname FROM emp RIGHT OUTER JOIN dept ON deptId=did);
總結(jié)
以上是生活随笔為你收集整理的mysql复杂查询教程_mysql 复杂查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: apple pay怎么绑定支付宝
- 下一篇: 京东车抵贷利息高吗