sql學習第一天--比較運算符、邏輯運算符(and、or、not)、多條件in、排除not in、范圍between and、空is null、模糊查詢like、排序order by、限制行數limit


1.比較運算符:比較運算符用於比較運算,判斷邏輯是否成立。

比較運算符的使用方式如下:

A operator B

其中 operator 是比較運算符,用於對 A 和 B 進行比較運算。

 

常用的比較運算符有 =(等於) 、!=(不等於)、 <>(不等於)、<(小於)、<=(小於等於)、>(大於)、>=(大於等於),其中 != 和 <> 在特殊情況下用法是不同的。

 

比較運算符常常與 WHERE 在一起使用。WHERE 用於邏輯判斷,WHERE 后面寫判斷的條件,滿足條件的語句會被篩選出來。

 

WHERE 比較運算符的使用方式如下:

WHERE A operator B

練習:查詢超過 20 歲的教師。select * from teachers where age > 20;

 

2.邏輯運算符:AND、OR、NOT

①  使用AND連接多條件:

使用 SQL 中的邏輯運算符 AND 可以將 WHERE 子句中將兩個或兩個以上的條件結合起來,其結果是滿足 AND 連接的所有條件的數據。

語法:

SELECT `column_name`

FROM `table_name`

WHERE condition1 AND condition2;

其中:condition 為設置的條件,最后返回的結果應為滿足 condition1 和 condition2 的數據。

練習題:查詢課程表 courses 中課程創建時間 created_at 在 '2020-01-01' (包括) 到 '2020-05-01' (不包括) 之間的所有課程名稱和課程創建時間。

 

 

②  使用OR連接多條件:

使用 SQL 中的邏輯運算符 OR只要記錄滿足任意一個條件,就會被查詢出來。

語法:

SELECT `column_name`

FROM `table_name`

WHERE condition1 or condition2;

其中:condition1 和 condition2 為設置的條件,最后返回的結果應滿足 condition1 或 condition2 的數據。

練習題:從 courses 表中,選取課程名為 'Web' 或者 'Big Data' 的課程信息。

 

 

③  使用 NOT 過濾不滿足條件的數據

使用 SQL 中的邏輯運算符 NOT 可以過濾掉 WHERE 子句中不滿足條件的結果集。

語法:

SELECT `column_name`

FROM `table_name`

WHERE NOT `condition`;

其中:condition 為設置的條件,最后返回的結果應不滿足 condition 。

練習題:查詢課程表 courses 中,教師 id teacher_id 不為 3,且學生人數 student_count 超過 800 的所有課程。

select * from courses where not (teacher_id = 3 or student_count <= 800)

 

 

3.特殊條件

 

使用 IN 查詢多條件

當需要查詢單個表條件過多時,就會用多個 'OR' 連接或者嵌套,這會比較麻煩,可以用 'IN' 更方便的解決這一問題。

示例代碼:

SELECT *

FROM `table_name`

WHERE `column_name` IN `value`;

練習題:查詢課程表 courses 中開課日期為 2021-01-01 或者 2021-01-03 的所有課程信息。

select * from courses where created_at in ('2021-01-01','2021-01-03')

 

使用 NOT IN 排除:

示例代碼:

SELECT *

FROM `table_name`

WHERE `column_name` NOT IN value;

練習題:查詢課程表 courses 中所有教師 id teacher_id 不為 1 或 3 的所有課程。

select name  from courses where teacher_id not in (1,3)

 

使用 BETWEEN AND 查詢兩值間的數據范圍

BETWEEN AND 會選取介於兩個值之間的數據范圍。這些值可以是數值、文本或者日期。

注:在不同的數據庫中,BETWEEN 操作符會產生不同的結果!

在某些數據庫中,BETWEEN 選取介於兩個值之間但不包括兩個測試值的字段。

在某些數據庫中,BETWEEN 選取介於兩個值之間且包括兩個測試值的字段。

在某些數據庫中,BETWEEN 選取介於兩個值之間且包括第一個測試值但不包括最后一個測試值的字段。

因此,需檢查數據庫是如何處理 BETWEEN 操作符!

示例代碼:

SELECT *

FROM `table_name`

WHERE `column_name` BETWEEN `value` AND `value`;

練習題:查詢課程表 courses 中學生數量在 50 到 55 之間的所有課程信息。

select * from courses where student_count between '50' and '55'

 

使用 IS NULL 查詢空數據

NULL 值代表遺漏的未知數據。默認的,表的列可以存放 NULL 值。

如果表中的某個列是可選的,那么可以在不向該列添加值的情況下插入新記錄或更新已有的記錄。這意味着該字段將以 NULL 值保存。

NULL 用作未知的或不適用的值的占位符。

注:無法比較 NULL 和 0;它們是不等價的。

無法使用比較運算符來測試 NULL 值,比如 =、!= 或 <>。

必須使用 IS NULL 和 IS NOT NULL操作符。

示例代碼:

SELECT *

FROM `table_name`

WHERE `column_name` IS NULL;

練習題:查詢教師表 teachers 中,國籍為 'CN' 或 'JP' 且 email 信息不為空的所有教師信息。

select *from teachers where country in ('CN','JP') and email  is not null

 

使用 LIKE 模糊查詢

BETWEEN AND 和比較運算符時不是直接對文本的操作,使用 LIKE 更准確規范得解決文本比較問題。

LIKE 比較類似我們平時用到的模糊搜索。

示例代碼

SELECT *

FROM `table_name`

WHERE `column_name` LIKE  `value`;

對於SQL 中的通配符有以下類型:

通配符

描述

%

替代 0 個或多個字符

-

替代一個字符

[charlist]

字符列中的任何單一字符

[!charlist]

不在字符列中的任何單一字符

 

練習題:查詢教師表 teachers 中,所有使用 qq 郵箱的教師名字和郵箱。

select name,email from teachers where email like '%@qq.com'

 

4.ORDER BY 與LIMIT

 

使用 ORDER BY 對數據進行排序

 

ORDER BY 關鍵字用於對結果集按照一個列或者多個列進行排序,其具有 ASC(升序)和 DESC(降序)兩個關鍵字,且默認按照升序排列。

ASC :按升序排列,ORDER BY 默認按照升序對記錄進行排序,因此升序的關鍵字 ASC 可以省去不寫。

DESC:按降序排列,如果需要按照降序對記錄進行排序,可以使用 DESC 關鍵字。

基本語法

SELECT `column_name`, `column_name`

FROM `table_name`

ORDER BY `column_name`, `column_name` ASC|DESC;

練習題:查詢教師表 teachers 中教師年齡 age 的唯一值,並將結果進行升序排序。

select distinct age from teachers order by age

//需要取age的不重復數據

 

使用 LIMIT 限制輸出行數

LIMIT 子句用於 SELECT 中,對輸出結果集的行數進行約束,LIMIT 接收2個參數 offset 和 count,兩個參數都是整型數字,但通常只用一個。

基本語法

SELECT `column_name`, `column_name`

FROM `table_name`

LIMIT `offset` , `count`;

注:offset :是返回集的初始標注,起始點是0,不是1哦

count :制定返回的數量

練習題:查詢課程表 course 中學生人數 student_count 最少的三門課程信息。

select * from courses order by student_count limit 3

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM