日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

每日一课 | 通过查询条件实现数据过滤-01

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每日一课 | 通过查询条件实现数据过滤-01 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

05.

數據過濾-查詢條件

大家好,我是小C,上期給大家分享——使用 SELECT 語句初步探索數據

本期分享內容:通過查詢條件實現數據過濾-01

本期小C邀請的是董旭陽老師(資深數據庫架構師)為我們分享《SQL從入門到精通》專欄。

S? Q? L

通過查詢條件實現數據過濾

上一篇我們介紹了基本的查詢語句,學習了如何使用 SELECT 和 FROM 查詢表中的數據。

不過,在實際應用中通常并不需要返回表中的全部數據,而只需要找出滿足某些條件的結果。比如,某個部門中的員工或者某個產品最近幾天的銷售情況。在 SQL 中,可以通過查詢條件實現數據的過濾。

查詢條件

在 SQL 語句中,使用關鍵字 WHERE 指定查詢的過濾條件。以下語句只返回姓名為“劉備”的員工信息:

SELECT?*FROM?employeeWHERE?emp_name = '劉備';

其中,WHERE 位于 FROM 之后,用于指定一個或者多個過濾條件;只有滿足條件的數據才會返回,其他數據將被忽略。該語句執行的結果如下:

在 SQL 中,WHERE 子句也被稱為謂詞(Predicate)。

這種通過查詢條件過濾數據的操作在關系運算中被稱為選擇(Selection)。它是針對表進行的水平選擇,保留滿足條件的行用于生成新的表。以下是選擇操作的示意圖:

在查詢條件中,使用最多的就是數據的比較運算。

比較運算符

比較運算符可以比較兩個數值的大小,包括字符、數字以及日期類型的數據。下表列出了 SQL 中的各種比較運算符:

運算符

描述

示例

=

等于

WHERE emp_id = 1

!=?或者?<>

不等于

WHERE sex != '男'

>

大于

WHERE salary > 10000

>=

大于等于

WHERE hire_date >= DATE '2018-01-01'

<

小于

WHERE bonus < 15000

<=

小于等于

WHERE dept_id <= 2

BETWEEN

位于范圍之內

WHERE salary BETWEEN 10000 AND 15000

IN

屬于列表之中

WHERE emp_name IN ('劉備', '關羽', '張飛')

Oracle 中 ^= 運算符也表示不等于。

這些運算符的作用都比較好理解。我們來看一個日期數據的比較操作,假設想要知道哪些員工在 2018 年 1 月 1 日之后入職,可以使用以下查詢:

-- 適用于 Oracle、MySQL 以及 PostgreSQL SELECT?emp_name, hire_dateFROM?employeeWHERE?hire_date >= DATE?'2018-01-01';

其中,DATE '2018-01-01'定義了一個日期類型的常量值。對于 SQL Server,指定日期時可以直接使用字符串字面值表示:

-- 適用于 SQL Server、MySQL 以及 PostgreSQL SELECT?emp_name, hire_dateFROM?employeeWHERE?hire_date >= '2018-01-01';

以上兩個查詢語句的結果如下:

除了我們常見的比較運算符之外,SQL 還提供了兩個特殊的比較運算符:BETWEEN 和 IN。

BETWEEN 運算符

如果想要查找一個范圍內的數據,可以使用 BETWEEN 運算符。以下示例查詢月薪位于 10000 到 15000 之間的員工:

SELECT?emp_name, salaryFROM?employeeWHERE?salary BETWEEN?10000?AND?15000;

該語句的結果如下:

需要注意的是,BETWEEN 包含了兩端的值(10000 和 15000)。

IN 運算符

IN 運算符可以用于查找列表中的值。以下示例查詢姓名為“劉備”、“關羽”或者“張飛”的員工:

SELECT?emp_id, emp_nameFROM?employeeWHERE?emp_name IN?('劉備', '關羽', '張飛');

?該查詢的結果如下:

只要匹配列表中的任何一個值,都會返回結果。IN 運算符還有一個常見的用途就是子查詢的結果匹配,我們將會在第 15 篇中進行介紹。

空值判斷

空值(NULL)是 SQL 中的一個特殊值,代表了缺失或者未知的數據。與其他編程語言(例如 Java)不同,SQL 中判斷一個值是否為空不能使用等于或者不等于。例如,以下查詢嘗試找出沒有上級領導(manager 字段為空)的員工:

-- 空值判斷的錯誤示例 SELECT?emp_name, managerFROM?employeeWHERE?manager = NULL;

該語句沒有返回任何結果,但確實存在這樣的數據。這個錯誤的原因在于將一個值與一個未知的值進行數學比較,結果仍然未知;即使是將兩個空值進行比較,結果也是未知。以下運算的結果均為未知,用于查詢條件的話不會返回任何結果:

NULL?= 5; NULL?= NULL; NULL?!= NULL;

那么,如何判斷某個值是否為空值呢?在 SQL 中需要使用兩個特殊的運算符:

expression IS NULL; expression IS NOT NULL;

如果表達式 expression 的值為空,IS NULL 返回真,IS NOT NULL 返回假;如果表達式的值不為空,IS NULL 返回假,IS NOT NULL 返回真。因此,查找沒有上級領導的員工應該使用以下語句:

SELECT?emp_name, managerFROM?employeeWHERE?manager IS?NULL; emp_name|manager| --------|-------| 劉備 |[NULL] |

“劉備”是公司的最高領導,他沒有上級領導。

如果僅僅能夠指定單個過濾條件,就無法滿足復雜的查詢需求;為此,SQL 引入了用于構建復雜條件的邏輯運算符。

今日內容有get嗎,歡迎各位留言討論!

下期預告:通過查詢條件實現數據過濾(完結篇)

以上專欄均來自CSDN GitChat專欄《SQL從入門到精通》,作者董旭陽,專欄詳情可識別下方二維碼查看哦!

了解更多詳情

可識別下方二維碼

總結

以上是生活随笔為你收集整理的每日一课 | 通过查询条件实现数据过滤-01的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。