數據庫單表查詢 - 簡單篩選查詢(附測試數據)

寫在前面:博主是一只經過實戰開發歷練後投身培訓事業的“小山豬”,暱稱取自動畫片《獅子王》中的“彭彭”,總是以樂觀、積極的心態對待周邊的事物。本人的技術路線從Java全棧工程師一路奔向大數據開發、數據挖掘領域,如今終有小成,願將昔日所獲與大家交流一二,希望對學習路上的你有所助益。同時,博主也想通過此次嘗試打造一個完善的技術圖書館,任何與文章技術點有關的異常、錯誤、注意事項均會在末尾列出,歡迎大家通過各種方式提供素材。

  • 對於文章中出現的任何錯誤請大家批評指出,一定及時修改。
  • 有任何想要討論和學習的問題可聯繫我:[email protected]
  • 發佈文章的風格因專欄而異,均自成體系,不足之處請大家指正。

數據庫單表查詢 - 簡單篩選查詢(附測試數據)

本文關鍵字:數據庫、數據查詢語言、DQL


之前我們已經瞭解了SQL語言的分類,可以劃分爲:DDL(數據定義語言)、DML(數據操縱語言)、DQL(數據查詢語言)、DCL(數據控制語言)、TPL(事務處理語言)、CCL(指針控制語言),本文將介紹DQL。
注:測試數據發佈時爲0積分免費下載,如果積分自動增長可聯繫博主

一、單表查詢

單表查詢指的是所需要查詢的數據都包含在一個表中,我們只需要對一張表進行操作就可以完成查詢,屬於比較簡單的查詢。本文使用的測試數據表結構如下:

1. 語法結構

在進行查詢時,需要用到的主要關鍵字包括:SELECT、FROM、WHERE。

  • SELECT:指定要查詢的列,會直接影響結果表的列的個數
  • FROM:指定要查詢的表
  • 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;

二、簡單篩選

如果說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');

三、條件運算

1. AND

在WHERE中可以使用AND連接兩個條件,代表同時成立。

2. OR

在WHERE中可以使用OR連接兩個條件,代表成立其一即取出數據。

3. NOT

在WHERE中可以使用NOT(條件)來表達反向的邏輯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章