一,帶關系運算子的查詢
在 SELECT 陳述句中可以使用 WHERE 子句指定查詢條件,從而查詢出篩選后的結果,語法格式如下:
SELECT 欄位名1, 欄位名2 , .... FROM 表名 WHERE 條件運算式;
在以上語法中,欄位名1,欄位名2等表示需要查詢的欄位名稱,條件運算式過濾篩選資料的條件,MySQL 提供了一系列關系運算子,這些運算子可以作為條件運算式過濾資料,
關系運算子
| 關系運算子 | 含義 |
|---|---|
| = | 等于 |
| != | 不等于 |
| <> | 不等于 |
| < | 小于 |
| <= | 小于等于 |
| > | 大于 |
| >= | 大于等于 |
注意:“!=”和“<>”都表示不等于,有個別資料庫不支持“!=”,因此建議使用“<>”,
在 stu 表中查詢所有性別為女的學生資訊,
SELECT * FROM STU WHERE gender='female';

gender 欄位為字串型別,直接在查詢條件的字串上使用單引號即可,
然后查詢 sid 為 S-1008 的學生姓名:
SELECT sname FROM stu WHERE sid='S-1008';

查詢年齡大于等于21的學生的資訊,
SELECT * FROM stu WHERE age>=21;

整數型別不同于字串型別,不需要單引號,
二,帶 AND 關鍵字的查詢
在使用 SELECT 查詢資料時,有時不是簡單的一個查詢條件,而是多個查詢條件才可以過濾查詢到正確的資料,在 MySQL 中可以使用 AND 關鍵字連接查詢條件,具體語法如下:
SELECT 欄位名1, 欄位名2, .... FROM 表名 WHERE 條件運算式1 AND 條件運算式2 ....;
在以上語法中,欄位名1,欄位名2等表示需要查詢的欄位名稱,在 WHERE 子句中可以寫多個條件運算式,運算式之間用 AND 連接,
查詢年齡大于 20 歲 的男生資訊,
SELECT * FROM stu WHERE age>20 AND gender='male';

接著查詢 sid 不等于 S_1007 且年齡大于等于20歲的男生的姓名,
SELECT sname FROM stu WHERE sid!='S_1007' AND age>=20 AND gender='male';

三,帶 OR 關鍵字的查詢
在過濾時要滿足所以查詢條件,MySQL 還提供了 OR 關鍵字,使用 OR 也可以連接多個查詢條件,但是在過濾時只要滿足其中一個查詢條件即可,具體語法如下:
SELECT 欄位名1, 欄位名2, ..... FROM 表名 WHERE 條件運算式1 OR 條件運算式2 ....;
查詢學號為 S_1002 或者姓名為 sunQi 的學生的資訊,
SELECT * FROM stu WHERE sid='S_1002' OR sname='sunQi';

接著查詢學號為 S_1005 或者姓名為 zhaoLiu 并且年齡小于24歲的學生的資訊,
SELECT * FROM stu WHERE sid='S_1005' OR sname='zhaoLiu' AND age<24;

四,帶 IN 或 NOT IN 關鍵字的查詢
MySQL 提供了 IN 或 NOT IN 來判斷某個欄位是否在指定集合中,如果不滿足條件,則資料會被過濾掉,具體語法格式如下:
SELECT 欄位名1, 欄位名2, .... FROM 表名 WHERE 欄位名 IN(NOT IN) (元素1, 元素2, ....);
在以上語法中,欄位名1,欄位名2等表示需要查詢的欄位名稱,WHERE 子句中的欄位名表示需要過濾的欄位,NOT 是可選的,表示不在集合范圍中,元素1,元素2是集合中的元素,
查詢學號為 S_1001, S_1002, S_1003 的學生的資訊,
SELECT * FROM stu WHERE sid IN('S_1001','S_1002','S_1003');

接著查詢年齡不為 18,20,22和25的學生的資訊,
SELECT * FROM stu WHERE age NOT IN(18,20,22,25);

五,帶 IS NULL 或 IS NOT NULL 關鍵字的查詢
在資料表中可能存在空值,空值與0不同,也不同于空字串,在 MySQL 中使用 IS NULL 或 IS NOT NULL 關鍵字判斷是否為空值,具體語法格式如下:
SELECT 欄位名1, 欄位名2, ....FROM 表名 WHERE 欄位名 IS (NOT) NULL;
在以上語法中,欄位名1,欄位名2等表示需要查詢的欄位名稱,WHERE 子句中的欄位名表示需要過濾的欄位,NOT 是可選的,使用 NOT 關鍵字可以判斷不為 NULL,
查詢年齡為 NULL 的學生的資訊,
SELECT * FROM stu WHERE age IS NULL;

查詢性別不為 NULL 的學生的資訊,
SELECT * FROM stu WHERE gender IS NOT NULL;

六,帶 BETWEEN AND 關鍵字的查詢
BETWEEN AND 關鍵字用于判斷某個欄位的值是否在指定范圍內,若不在指定范圍內,則會被過濾掉,具體語法格式如下:
SELECT 欄位名1, 欄位名2, ..... FROM 表名 WHERE 欄位名 (NOT)BETWEEN 值1 AND 值2;
在以上語法中,欄位名1,欄位名2等表示需要查詢的欄位名稱,WHERE 子句中的欄位名表示需要過濾的欄位,NOT 是可選的,使用 NOT 表示不在指定范圍內,值1和值2表示范圍,其中值1為范圍的起始值,值2為范圍的結束值,
查詢年齡在23~25歲的學生的資訊,
SELECT * FROM stu WHERE age BETWEEN 23 AND 25;

查詢年齡不在23~25歲的學生的資訊,
SELECT * FROM stu WHERE age NOT BETWEEN 23 AND 25;

六,帶 LIKE 關鍵字的查詢
資料庫在某些情況下需要進行模糊查詢,例如查詢名字中帶有某個字母的學生,具體語法如下:
SELECT 欄位名1, 欄位名2, ....FROM 表名 WHERE 欄位名 (NOT)LIKE '匹配字串';
在以上語法中,欄位名1,欄位名2等表示需要查詢的欄位名稱,WHERE 子句中的欄位名表示需要過濾的欄位,NOT 是可選的,使用 NOT 則表示查詢與字串不匹配的值,‘匹配字串’用來指定要匹配的字串,這個字串可以是一個普通的字串,也可以是包含百分號(%)和下劃線(_)的通配符字串,其中百分號表示任意0~n個字符,下劃線表示任意一個字符,
查詢姓名由5個字母構成的學生的資訊,
SELECT * FROM stu WHERE sname LIKE'_____';
注意:一個下劃線代表一個字符,

接著查詢姓名由5個字母構成,并且第5個字母為 i 的學生的資訊,
SELECT * FROM stu WHERE sname LIKE'____i';

查詢姓名以 z 開頭的學生的資訊,
SELECT * FROM stu WHERE sname LIKE'z%';
注意:%可以代表任意數量的字符,

查詢姓名中第二個字母為 i 的學生的資訊,
SELECT * FROM stu WHERE sname LIKE'_i%';

接著查詢姓名中包含 a 字母的學生的資訊,
SELECT * FROM stu WHERE sname LIKE'%a%';

用百分號代替前面或者后面都有的任意字符,
七,帶 DISTINCT 關鍵字的查詢
MySQL 提供了 DISTINCT 關鍵字用于去除重復資料,例如查詢科目的種類,對于這樣的需求顯然不希望看到重復的科目,因此需要去除重復的資料,具體語法格式如下:
SELECT DISTINCT 欄位名 FROM 表名;
查詢所有員工的月薪,并且去除重復,
SELECT DISTINCT sal FROM emp;


查詢結果顯示了所有員工的月薪,并且沒有重復的資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/78843.html
標籤:其他
上一篇:react字串匹配關鍵字高亮
