寫在前面:博主是一隻通過實戰開發歷練後投身培訓事業的「小山豬」,暱稱取自動畫片《獅子王》中的「彭彭」,老是以樂觀、積極的心態對待周邊的事物。本人的技術路線從Java全棧工程師一路奔向大數據開發、數據挖掘領域,現在終有小成,願將昔日所獲與你們交流一二,但願對學習路上的你有所助益。同時,博主也想經過這次嘗試打造一個完善的技術圖書館,任何與文章技術點有關的異常、錯誤、注意事項均會在末尾列出,歡迎你們經過各類方式提供素材。數據庫
-
對於文章中出現的任何錯誤請你們批評指出,必定及時修改。微信
-
有任何想要討論和學習的問題可聯繫我:zhuyc@vip.163.com。學習
-
發佈文章的風格因專欄而異,均自成體系,不足之處請你們指正。測試
數據庫單表查詢 - 簡單篩選查詢
本文關鍵字:數據庫、數據查詢語言、DQL大數據
以前咱們已經瞭解了SQL語言的分類,能夠劃分爲:DDL(數據定義語言)、DML(數據操縱語言)、DQL(數據查詢語言)、DCL(數據控制語言)、TPL(事務處理語言)、CCL(指針控制語言),本文將介紹DQL。1、單表查詢
單表查詢指的是所須要查詢的數據都包含在一個表中,咱們只須要對一張表進行操做就能夠完成查詢,屬於比較簡單的查詢。本文使用的測試數據表結構以下:動畫
1. 語法結構
在進行查詢時,須要用到的主要關鍵字包括:SELECT、FROM、WHERE。spa
-
SELECT:指定要查詢的列,會直接影響結果表的列的個數.net
-
FROM:指定要查詢的表3d
-
WHERE:[可選],在須要進行數據篩選時使用,用於引導查詢條件指針
在使用表名和列名時,爲了防止和關鍵字衝突,可使用反引號,語法結構以下:
SELECT `列名`,`列名`,... FROM `表名` WHERE 查詢條件;
2. 全字段查詢
全字段查詢表明直接查詢出表中全部的列,咱們能夠直接用*
號表明,會按照定義數據表時指定的字段順序,順次羅列出數據表的全部列,咱們也能夠手動寫出每一個列的名稱來進行順序的調整。
SELECT * FROM student;
3. 部分列查詢
部分列查詢指的是隻須要顯示錶中的某幾列,此時須要羅列出每一個列的名稱,用逗號隔開,所聲明的列的名稱必須與表中已經定義的列名相同。
SELECT S_no,S_name,S_sex FROM Student;
4. 別稱的使用
若是在進行數據查詢時,咱們想要自定義結果表所顯示的列名(表頭),可使用AS關鍵字(多數狀況下可省略)。同時,別稱還能方便的代替表名或某些表達式(避免重複計算)。
SELECT S_no AS `學號`,S_name AS `姓名`,S_sex AS `性別` FROM Student;
2、簡單篩選
若是說SELECT後面的字段個數影響了查詢結果的列,那麼數據篩選(或稱條件查詢)就會影響到查詢結果的行,有不少不符合條件的數據會被過濾掉。在進行數據篩選時,會直接用某個列的列名來作爲參照,該列下的每一個數據都會和給定的條件進行比較,若是知足就會被取出,在進行比較時必定要注意數據類型的匹配。
1. 簡單運算符
最簡單的運算符其實就是和是否相等,是否大於或小於相關的符號:
-
等於(=)
SELECT S_no AS `學號`,S_name AS `姓名`,S_sex AS `性別` FROM Student WHERE S_sex = '男';
-
不等於(<>)
SELECT S_no AS `學號`,S_name AS `姓名`,S_sex AS `性別` FROM Student WHERE S_sex <> '男';
-
大於
SELECT * FROM Choice
WHERE Score > 80;
-
小於
SELECT * FROM Choice
WHERE Score > 80;
-
小於等於
SELECT * FROM Course
WHERE Course_score <= 5;
-
大於等於
SELECT * FROM Course
WHERE Course_score >= 3;
2. 範圍查詢
若是咱們須要查找的數據在某一個區間內,而且兩邊都是閉區間,這個時候可使用BETWEEN
xxx AND
xxx。
SELECT * FROM Course WHERE Course_score BETWEEN 5 AND 8;
3. 空值判斷
在數據庫中存在一個特殊的數據類型,用於標記未存入任何數據,用NULL表示。須要注意的是空字符串並不等同於NULL。
-
IS NULL:爲空判斷
SELECT * FROM Choice WHERE Score IS NULL;
-
IS NOT NULL:非空判斷
SELECT * FROM Choice WHERE Score IS NOT NULL;
4. 模糊查詢
在有些時候咱們只模糊記得數據的部分信息,或在商城中須要作根據部分名稱來查詢商品的功能,這個時候據須要使用LIKE
關鍵字。使用LIKE時,須要和通配符一同使用,常常與LIKE搭配的通配符以下:
-
%:任意個數的任意字符,包括0個字符
-
_:任意的單個字符
SELECT * FROM Teacher
WHERE T_name LIKE '王%';
SELECT * FROM Teacher
WHERE T_name LIKE '%一%';
5. 去重查詢
在進行數據查詢時,若是某一列存在重複的數據,而咱們只須要知道都有哪些數據出現過,這個時候就可使用去重,將重複的數據過濾掉。須要注意的是:去重查詢至關因而一種查詢模式,與具體的列無關。默認查詢時,在SELECT關鍵字省略了ALL
,意爲全量數據查詢模式,在使用DISTINCT
時要緊跟SELECT關鍵字。
-
查詢單列
若是隻查詢一列的數據,獲得的就是這一列去重後的結果:
SELECT DISTINCT Course_no FROM Choice;
-
查詢多列
若是查詢的列有多個,將會顯示這兩個列的惟一組合,也就是說若是單獨看某一列數據,頗有可能會有重複數據,但這些列的數據的組合必定是惟一的。
SELECT DISTINCT Course_no,S_no FROM Choice;
6. 多值匹配
若是想要表達某個值多是一組值中的一個,這樣的邏輯,可使用關鍵字IN
。在IN以後使用一對括號,其中羅列多個值,若是列中的數據在這些值中出現,則表明匹配。
SELECT S_no,Class_no,S_name,S_sex FROM Student WHERE Class_no IN ('js0001','js0002');
3、條件運算
1. AND
在WHERE中可使用AND鏈接兩個條件,表明同時成立。
2. OR
在WHERE中可使用OR鏈接兩個條件,表明成立其一即取出數據。
3. NOT
在WHERE中可使用NOT(條件)來表達反向的邏輯。
本文分享自微信公衆號 - 微光點亮星辰(SandTower)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。