<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
書接上文,今天學習查詢的進階操作,包括函數、分組、分頁、子查詢和表連線。內容比較實用,建議收藏或者訂閱專欄方便學習和複習。
表中有多少行,就會有多少行的結果
select
之後,from
之前 或作為篩選條件1.concat(…,列名,…,列名)
用來拼接多列的值
例如:以firstname+lastname的形式顯示所有員工的姓名
select concat(first_name,last_name) as 全名 from employees
2.mod(值1,值2)
求值1和值2的取餘結果 ,相當於數學運算中的 %(值1%值2)
select mod(10,3) from dual
注: dual
為虛擬表,作用為使當前SQL符合語法規範,不寫時會做自動填充
3.length(列名|資料)
獲取長度
查詢所有firstname長度>6的員工資訊
select * from employees where length(first_name)>6
4.now() | sysdate()
獲取系統當前時間
select now() select SYSDATE() select now() from dual
2、多行函數(組函數)
1.sum(列名)
求某一列的總和
2.avg(列名)
求某一列的平均值
3.max(列名)
求某一列的最大值
4.min(列名)
求某一列的最小值
5.count(列名)
求某一列值的個數(非空)
範例:
-- 組函數操作salary select SUM(salary) 總和,AVG(salary) 平均值,MAX(salary) 最大值,min(salary) 最小值,COUNT(salary) 非空值的數量 from employees -- 計算表中績效列不為空的員工數量 select COUNT(commission_pct) from employees -- 求表中的行數 select COUNT(*) from employees select COUNT(employee_id) from employees
在MySQL中一個組就是一個操作單位
1.簡單分組
select 列名 from 表名 group by 列名
以部門為單位求每個部門的平均薪資
select department_id,AVG(salary) 平均薪資 from employees group by department_id
2.where + 分組
-- 查詢部門id為10、20、30的部門的平均薪資、 select department_id,AVG(salary) 平均薪資 from employees where department_id in(10,20,30) -- 先篩選 GROUP BY department_id -- 後分組查詢
3.having + 分組
select department_id,AVG(salary) 平均薪資 from employees group by department_id -- 先分組 having department_id in(10,20,30) -- 後篩選
4.分組中 where 和 having 的區別
1.limit:用來限制顯示的查詢結果條數,通常用於分頁查詢
select 列名 from 表名 limit 顯示的起始下標,顯示條數
查詢所有員工資料的前十條
select * from employees limit 0,10 select * from employees limit 10 下標為0時可以省略
下標為0時可以省略
查詢的執行順序:
語法順序 執行順序 select 5 from 1 where 2 group by 3 having 4 order by 6 limit 7
1.1、單值子查詢
巢狀的子SQL只會返回一行一列的結果
-- 查詢員工id為100的員工的部門id select department_id from employees where employee_id=100 -- 子查詢::查詢員工id為100的員工所在的部門資訊 select * from departments where department_id=(select department_id from employees where employee_id=100)
1.2、多值子查詢 巢狀的子SQL會返回多個結果
--查詢firstname中包含s的員工所在的部門資訊 select * from departments where department_id in(select department_id from employees where first_name like '%s%')
將子SQL的查詢結果臨時看做一張表進行後續操作
-- 獲取薪資最高的前十個員工的平均薪資 -- 先獲取薪資最高的前十名員工的薪資 select salary from employees ORDER BY salary desc LIMIT 10 -- 子查詢:再根據子SQL的查詢結果臨時通過別名構建一張資料表進行查詢 select avg(salary) from (select salary from employees ORDER BY salary desc LIMIT 10) as e
表連線的前提:
語法:
select 表1.列名,表2.列名,... from 表1 inner join 表2 on 連線條件
inner
可省語法:
select 表1.列名,表2.列名,... from 表1(左表) left outer join 表2(右表) on 連線條件
outer
可省left
和right
的不同,位置不同,通常用左外連線-- 查詢所有的員工資訊及符合連線條件的部門資訊 select e.*,d.* from employees e LEFT JOIN departments d ON e.department_id=d.department_id
全外連線:
查詢語句1 union
查詢語句2
-- 內連線 select e.*,d.* from employees e inner join departments d on e.department_id=d.department_id union -- 對內連線和左連線的查詢結果進行合併 -- 左連線 select e.*,d.* from employees e LEFT JOIN departments d ON e.department_id=d.department_id
union
會對合並結果進行去重union all
不會對結果去重實際開發中,使用頻率較高的是內連線和左外連線
具體使用:
表中的某兩個欄位之間存在關聯關係
-- 查詢:員工id、員工姓名-firstname、直接領導的id、直接領導的姓名 select e1.employee_id 員工id,e1.first_name 員工姓名,e2.employee_id 領導id,e2.first_name 領導姓名 from employees e1 LEFT JOIN employees e2-- e1代表獲取員工資訊的表,e2代表獲取領導資訊的表 ON e1.manager_id=e2.employee_id -- 把兩個有關聯關係的欄位作為連線條件
判斷同一欄位,作為連線條件
-- 查詢工資相同的員工資訊 select e1.employee_id 員工1的id,e1.salary 員工1的工資,e2.employee_id 員工2的id,e2.salary 員工2的工資 from employees e1 LEFT JOIN employees e2 on e1.salary=e2.salary -- 連線條件 where e1.employee_id<e2.employee_id -- 防止判斷的雙方是同一個人,並去重
到此這篇關於MySQL查詢進階從函數到表連線的使用的文章就介紹到這了,更多相關MySQL函數表連線內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45