MySQL/MariaDB DML操作之Select

前言

上文我們已經講解了MySQL/MariaDB的基礎知識和DDL相關操作,接下來我們來說一下MySQL/MariaDB的DML操作,因select查詢較復雜也較重要,所以本文主要是對select查詢的詳解。

DML操作

DML.jpg

DML之select

投影查詢

select col_name,[col_name1,...] from table_name;

select * from table_name ;#顯示全表
遍歷整張數據表,但對系統資源消耗較大,再進行大數據量的查詢時,禁止使用這類操作

條件查詢

select col_name,[col_name1,...] from table_name where where_definition
#條件比較操作符
=    #等值比較
<=>  #等值比較,包括與NULL的安全比較
<>或!=  #不等值比較
<,<=,>,>=  #其它比較符
IN  #指定范圍內值的存在性測試
BETWEEN … AND …  #在某取值范圍內
IS NULL  #是否為空值
IS NOT NULL  #是否為非空
LIKE  #可使用通配符:%, _
RLIKE或REGEXP  #可使用正則表達式的模式
#邏輯操作符
AND 
OR
NOT

 聚合查詢

AVG():平均值 
SUM():總和
MAX():最大值
MIN():最小值
COUNT():記錄總數

子句修飾符

GROUP BY #對符合條件的結果進行分組
HAVING: 對聚合查詢的結果做過濾
ORDER BY col1[,col2] {ASC|DESC} #排序
LIMIT [Offset,]count #限制輸出行數

select執行流程

FROM --> WHERE --> GROUP BY --> HAVING --> ORDER BY --> SELECT --> LIMIT

連接查詢

事先將兩張或多張表執行相應的join操作,而后根據join結果做查詢

CROSS JOIN:笛卡爾積,交叉連接
select * from tab1,tab2; 
INNER JOIN:內連接
#等值連接
select * from tab1 inner join tab2 on tab1.col_name = tab2.col_name
OUTER JOIN:外連接
LEFT OUTER JOIN:左外連接
select s.name as student,t.name as teacher from students as s lift join teachers as t 
on s.TeacherID = t.TID;  
RIGHT OUTER JOIN:右外連接    
select s.name as student,t.name as teacher from students as s right join teachers as t
on s.TeacherID = t.TID;    
NATURAL JOIN:自然連接,等值連接
select tab1.col_name,tab2.col_name from tab1,tab2 where tab1.col_name = tab2.col_name;

子查詢

基于某查詢語句的結果再次進行的查詢

用于where子句的子查詢

①用于比較表達式中的子查詢
要求子查詢只能返回單個結果				
select Name,Age from students where Age > (select AVG(Age) from students);
②用于in中的子查詢
判斷是否存在于指定的列表中
select Name from students where StuID in (select TID from teschers);
③用于exists中子查詢

用于from中的子查詢

select alias.col,... from (select statement) as alias where clause

select s.Name from (select * from students where Age > 20) as s where s.Name like 's%';

注:MySQL/MariaDB在子查詢優化方面并不成熟,所以盡量避免使用子查詢

聯合查詢

將兩外或多個返回值字段相同的查詢的結果合并輸出

select statement union select statement

select Name,Age from teachers where Age>=40 union select Name,Age from students where Age>=40;

select實戰

表結構

1.jpg

2.jpg

以ClassID分組,顯示每班的同學的人數

3.jpg

以Gender分組,顯示其年齡之和

4.jpg

以ClassID分組,顯示其平均年齡大于25的班級

5.jpg

以Gender分組,顯示各組中年齡大于25的學員的年齡之和

6.jpg

顯示前5位同學的姓名、課程及成績

7.jpg

顯示其成績高于80的同學的名稱及課程

8.jpg

求前8位同學每位同學自己兩門課的平均成績,并按降序排列

9.jpg

顯示每門課程課程名稱及學習了這門課的同學的個數

10.jpg

顯示其年齡大于平均年齡的同學的名字

11.jpg

統計各班級中年齡大于全校同學平均年齡的人數

12.jpg

The end

好了,select查詢就先說到這里了,看起來select就這么點東西,其實要真正用好并不容易,所以小伙伴們多加練習吧,后續文章還會繼續講解MySQL/MariaDB系列的知識,有興趣的可繼續關注哦。以上僅為個人學習整理,如有錯漏,大神勿噴~~~

原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/4064

(0)
書生書生
上一篇 2015-05-07 09:30
下一篇 2015-05-07 09:41

相關推薦

  • 走向了一條不歸路 – – 開始

    前言:很高興在這里認識大家,跟大家一起學習一起進步。  基礎知識 1.計算機系統的組成 2.計算機的體系結構 3.存儲網絡 DAS–直接連接存儲   (數據塊)   存儲設備與主機的緊密相連       1.管理成本較低,實施簡單   &…

    2017-07-16
  • Linux文件查找及壓縮常用知識總結

    一、文件查找 1.locate命令: locate KEYWORD 常用選項:     -i 執行區分大小寫的搜索     -n  N只列舉前N個匹配項目 查詢系統上預建的文件索引數據庫在:/var/lib/mlocate/mlocate.…

    Linux干貨 2016-08-18
  • sed編輯器

    sed: Stream EDitor, 行編輯器;  用法: sed [option]… ‘script’ inputfile… script: ‘地址命令‘  常用選項: -n:不輸出模式中的內容至屏幕; -e: 多點編輯; -f /PATH/TO/SCRIPT_F…

    Linux干貨 2015-07-06
  • linux 中條件測試判斷

    文件條件測試判斷:   -e 文件存在   -a 文件存在   這個選項的效果與-e相同. 但是它已經被"棄用"了, 并且不鼓勵使用.   -f 表示這個文件是一個一般文件(并不是目錄或者設備 文件)   -s 文件大小不為零   -d 表示這是一個目錄   -b 表示…

    Linux干貨 2017-02-02
  • Linux 第六天: (08月03日) Linux權限管理

    Linux 第六天: (08月03日) Linux權限管理         chown USER:GROUP FILE 變更文件或目錄所屬主chown -R 遞歸chown –reference=<> 參考 chgrp GROUP DIR(or FILE) 變更文件或目錄所屬組   &…

    Linux干貨 2016-08-08
  • echo命令的簡單用法和實例

        在CentOS 6.8版本下,通過實例的形式,展現選項和參數的靈活運用,可以簡明的了解echo的用法。 一、語法:echo [SHORT-OPTION]… [STRING]…?。籩cho [選項]…[參數]       作用:將需要的內容輸出到終端或者其他文件。 二、實例和選項參數的用法: (1)文本…

    Linux干貨 2017-03-27
欧美性久久久久