10. MySQL基礎-02條件查詢、排序查詢
2. 條件查詢
- 語法
select 查詢列表 from 表名 where 篩選條件;
-
分類
-
按條件表示式篩選
簡單的條件運算子:> < = != <> >= <=
-
按邏輯表示式篩選
邏輯運算子: &&,||,!; and,or ,not
-
模糊查詢:like,between and, in
一般和萬用字元配合使用;
萬用字元:
% 任意多個字元包括0個字元
_ 任意單個字元
-
-
like:
-
查詢姓名中包含a的資訊
select * from student where name like ‘%a%’;
-
查詢員工名第三個為字元為h,第五個字元也是 h的姓名與年齡
select name,age from student where name like ‘ __h_h’
-
查詢姓名第二個字為_的資訊
select name from student where name like ‘_$ _%’ DSCAPE $
DSCAPE轉移欄位(上例中$可以改為任何字元)
-
-
between and
-
使用between and 可以提高語句簡介度
-
包含臨界值
-
兩個臨界值不能交換順序
-
select * from student where age>=10 and age<=12 相當於 select * from student where age between 10 and 12
-
-
in
-
使用in 可以提高語句簡介度
-
in列表的值必須型別一致
-
select name,class from student where class=‘一班’ or class=‘二班’ or class=‘三班’;
-
相當於 select name,class from student where class in(‘一班’,‘二班’,‘三班’);
-
-
if null
-
<>,=不能去判斷null的值
-
is null 和is not null可以判斷null的值
select name,awards(獎項) from student where is null;
select name,awards from student where is not null; 有獎項
-
-
安全等於<=>
-
既可以判斷是否為空又可以判斷普通值
select name,awards(獎項) from student where <=> null; 沒有獎項
-
可讀性比較差,不建議使用
-
3. 排序查詢
- 語法:
- SELECT 查詢列表 FROM 表 【篩選條件】 order by 【asc|desc】
- 特點:
- asc代表的是升序,desc代表的是降序,如果不寫,預設是升序
- 案例1(查詢學生資訊,要求英語成績從低到高):
- SELECT * FROM student ORDER BY english(英語成績) desc;
- 案例2(查詢學生資訊,年齡大於18,按入學時間升序)【篩選條件排序】
- SELECT * FROM student WHERE age>18 ORDER BY inschool(入學時間) asc;
- 案例3【按表示式排序】
- SELECT * ,(English+ifnull(fujia,0)) as 總成績 FROM student ORDER BY (English+ifnull(fujia,0));
- 案例4【按別名名稱排序】
- SELECT * ,(English+ifnull(fujia,0)) as 總成績 FROM student ORDER BY 總成績;
- 案例5【按姓名長度顯示學生姓名和成績】
- SELECT length(name) as 位元組長度,name FROM sutdent ORDER BY length(name) DESC;
- 案例6(查詢學生資訊,先按語文成績降序,再按年齡升序)【按多個欄位排序
- SELECT * FROM student ORDER BY Chinese desc,age asc;