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
下一篇 2015-05-07

相關推薦

  • 馬哥教育網絡班20期+第二周課程練習

    Table of Contents 1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 目錄管理 文件管理 2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。 腳本返回值 命令或路徑補全和展開 3、請使用命令行展開功能來完成以下練習: (1)、創建/tmp目錄下的:a_c, a_d, b_c, b (2…

    Linux干貨 2016-06-23
  • 學習宣言

    別人笑我太瘋癲,我笑他人看不穿。不見五陵豪杰墓,無花無酒鋤作田。

    Linux干貨 2016-10-24
  • 馬哥教育網絡班21期+第2周課程練習

    一、Linux文件管理類命令匯總 1、文件的復制命令:cp 復制命令:cp     cp [OPTION]… [-T] SOURCE DEST     cp [OPTION]… SOURCE… DI…

    Linux干貨 2016-07-29
  • 第一周作業

    一、描述計算機的組成及其功能 計算機是由處運算器,控制器,儲存器,輸入輸出設備組成 運算器:執行各種計算和邏輯運算操作 控制器:完成協調和指揮整個計算機系統的操作 儲存器:暫時存儲或者長期存儲數據 輸入設備:向計算機輸入數據和信息的設備 輸出設備:計算機硬件系統的終端設備 二、按系列羅列Linux的發行版,并描述不同發行版之間的聯系和區別 Linux發行版=…

    Linux干貨 2016-12-05
  • 自我介紹

    個人簡介     基本信息:     何秋雨,男,安徽人,22歲,初中學歷 工作經驗:     目前就職于南京的一家互聯網公司做Java Web 開發,大概有一年半的工作經驗。工作內容包括前端和Java后端兩個部分。 個人愛好:   &nb…

    Linux干貨 2016-08-08
  • 計算機組成及Linux基礎

    計算機組成及Linux基礎

    Linux干貨 2018-03-04
欧美性久久久久