標籤:sql 查詢 基本
day03 基本的查詢sql語句
一、概述:
學習MySQL資料庫中一定要學會sql的查詢功能,說白了,使用資料庫就是儲存資料,查詢資料,使用這些資料的一個過程。只有查看了才知道我們是否儲存成功,是否可以直接使用這些資料。
二、具體的sql
1、查詢資料庫的基本文法:
select 需要查詢的欄位名和內容 from 指定相關的表名 where 查詢時所需要的條件 group by 如何對結果分組 order by 如何對結果瓶排序 having 查詢時滿足的第二個條件 limit 限定查詢輸出的結果
(一):單表查詢
1、查詢所有欄位
select * from 表名;
2、查詢指定欄位
select 欄位名 from 表名;
3、查詢指定資料
select * from 表名 where 條件;
4、帶“in”關鍵字的查詢
select * from 表名 where 條件 [not] IN(元素1,...元素n); 譯:not:是一個選擇性參數,加上not表示不在集合內滿足條件 元素:表示集合中的元素,各元素之間用逗號分開
5、帶“Between And”的範圍查詢
select * from 表名 where 條件 [not] between 取值1 and 取值2; 譯:not:是一個選擇性參數,表示不在指定範圍內滿足條件 取值1:表示範圍的起始值 取值2:表示範圍的終止值
6、帶“like”的字元匹配查詢【實現模糊查詢】
like字元來實現模糊查詢,一般在我們網頁的搜尋、檢索等部分就要使用到模糊查詢 而使用的兩種萬用字元:“%”和“_”兩個。 “%”:可以匹配一個或多個字元,可以代表任意長的字串 “_”:只匹配一個字元,如m_n;以m開頭,n結尾的3個字元 select * from 表名 where 條件 like ‘%a’; 譯:查詢這個表中包含a字元的所有資料。
7、帶“And”的多條件查詢
select * from 表名 where 條件1 and 條件2; 譯:使用and關鍵字串連多個條件
8、帶“Or”的多條件查詢
select * from 表名 where 條件1 or 條件2; 譯:只要滿足條件的其中之一都會被查詢到
9、使用“distinct”關鍵字取消重複的資料
select distinct 欄位名 from 表名; 譯:取消查詢結果中重複的記錄行
10、使用“order by”關鍵字排序
select * from 表名 order by [asc][desc]; 譯:order by:是指使用什麼方式來排序 asc:是指“升序”排序 desc:是指“降序”排序
11、使用“group by”關鍵字分組
select 欄位1,欄位2,... from 表名 group by 某個欄位1或欄位2分組查; 同時還可以多個欄位進行分組
12、使用“limit”限制查詢結果的數量
select * from order by asc limit 3; 譯:查詢的結果顯示前3條記錄
(二)彙總函式查詢
1、使用“count()”函數
select count(*) from 表名; 譯,統計表中所有的記錄
2、使用“sum()”函數
select sum(row) from 表名; 譯:求出表中行的總數。
3、使用“avg()”函數
select avg(row) from 表名; 譯:求出表中行的一個平均值
4、使用“max()”函數
select max(row) from 表名; 譯:查詢表中row欄位的最大值
5、使用“min()”函數
select min(row) from 表名; 譯:查詢表中row欄位的最小值
(三)串連查詢
1、內串連查詢
select 欄位1,欄位2,欄位3 from 表名1,表名2 where 表名1.欄位1=表名2.欄位2; 實現表與表之間的串連查詢就是要確定兩張表中都有相同的欄位名。
2、外串連查詢
外串連與內串連不同,外串連時指使用“outer join”關鍵字將兩張表串連起來。
分為左外串連“left join”、右外串連“right join”、全串連3種類型
文法:
select 欄位名稱 from 表名1 left/right join 表名2 on 表名1.欄位1=表名2.欄位2;
2.1、左外串連“left join”
左外串連:是指將左表的所有資料分別於右表的每一條資料進行串連組合,返回的結果除內串連的資料外,還包括左表中不符合的資料,並在右表的相應列中添加null值。
select 欄位名稱 from 表名1 left join 表名2 on 表名1.欄位1=表名2.欄位2;
2.2、右外串連“right join”
右外串連是指將右表中的所有資料分別於左表中的每一條資料進行串連組合,返回的結果除內串連的資料外,還包括右表中不符合的條件的資料,並在左表的相應列中添加null值。
select 欄位名稱 from 表名1 right join 表名2 on 表名1.欄位1=表名2.欄位2;
2.3、交叉串連“cross join”:笛卡爾積
select * from 表1 cross join 表2
(四)子查詢
子查詢:就是select查詢是另一個查詢的附屬。什麼是附屬關係,就是一個查詢語句查詢出來的結果是為第二個查詢的一個條件或一個基礎、前提等、只有當它查詢出來以後才能夠查詢出第二個的結果。
1、帶“in”關鍵字的子查詢
使用in運算子是可以檢測結果集中是否存在某個特定的值,如果檢測成功就執行外部查詢語句。
select * from 表名1 where 欄位1 in(select 欄位1 from 表名2); 譯:查詢表1的所有記錄,但是欄位1必須要在表2中出現過。
2、帶比較子的子查詢
子查詢使用運算子是比較平凡的,包括“=、!=、> 、< 、>=、<=”
3、帶“exists”關鍵字的子查詢
使用exists關鍵字時,內層查詢語句不返回查詢的記錄,而是返回的是一個真假值。
select * from 表名1 where exists (select * from 表名2 where 欄位名); 譯:使用子查詢查詢表2中對否存在某個限定條件的資料,如果有,執行外層的查詢資料, 如果沒有,就只執行內層的查詢資料
4、帶“any”關鍵字的字查詢
使用any關鍵字是指只要滿足其中任意一個條件,就可以通過改條件來執行外層的查詢語句。
5、帶“all”關鍵字的子查詢
使用all關鍵字是指內層的查詢語句都必須要滿足所有的條件,使用all關鍵字時,只有滿足內層查詢的所有條件才能夠執行外層查詢。
(五)合并查詢結果
合并查詢結果是將多個select語句查詢的結果合并在一個。
1、使用“union”關鍵字
select * from 表1 union select * from 表2;
使用union關鍵字是將查詢出來的結果合并在一個,然後去除相同的、重複的記錄。
2、使用“union all”關鍵字
select * from 表1 union all select * from 表2;
使用union all關鍵字只是將結果合并在一個,不取消重複的記錄。
(六)定義表和欄位的別名
1、定義表的別名
select * from 表名1 a where a . 欄位1; 譯、定義的這個 a 就是表的別名,可以減少寫表名的時間。
2、定義欄位的別名
基本形式:欄位名 [AS] 別名
select 欄位1 as A ,欄位2 as B from 表名;
(七)使用Regex查詢
基本形式:欄位名 regexp ‘匹配方式’
1、模式字元
| 模式字元 |
含 義 |
| ^ |
匹配以特定字元或字串開頭的記錄 |
| $ |
匹配以特定字元或字串結尾的記錄 |
| . |
匹配字串的任意一個字元,包括斷行符號和換行 |
| [] |
匹配字元集合中的任意一個字元 |
| [^ ] |
匹配除字元集合以外的任意一個字元 |
| s1|s2|s3 |
匹配其中任意一個字元 |
| * |
匹配多個該符號之前的字元,包括1和0個 |
| 字串{N} |
匹配字串出現N次 |
| + |
匹配多個該字元之前的字元,包括1個 |
| 字串{M,N} |
匹配字串出現至少M次,最多N次 |
本文出自 “孤獨一夜” 部落格,轉載請與作者聯絡!
基本的查詢sql語句