基本的查詢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 表名;
(七)使用正則表達式查詢
基本形式:字段名 regexp ‘匹配方式’
1、模式字符
模式字符 | 含 義 |
^ | 匹配以特定字符或字符串開頭的記錄 |
$ | 匹配以特定字符或字符串結尾的記錄 |
. | 匹配字符串的任意一個字符,包括回車和換行 |
[] | 匹配字符集合中的任意一個字符 |
[^ ] | 匹配除字符集合以外的任意一個字符 |
s1|s2|s3 | 匹配其中任意一個字符 |
* | 匹配多個該符號之前的字符,包括1和0個 |
字符串{N} | 匹配字符串出現N次 |
+ | 匹配多個該字符之前的字符,包括1個 |
字符串{M,N} | 匹配字符串出現至少M次,最多N次 |
本文出自 “孤獨一夜” 博客,轉載請與作者聯系!
基本的查詢sql語句