🎯 本文專欄:MySQL深入淺出
🚀 作者主頁:小度愛學習
select查詢語句
在開發中,查詢語句是使用最多,也是CRUD中,復雜度最高的sql語句。
查詢的語法結構
select *|字段1 [, 字段2 ……] from 表名稱 [, 表名稱2……] [where 條件]
[group by 字段 [having 分組后的篩選]]
[order by 字段 [desc|asc] [字段2 [desc|asc] ……]]
[limit 分頁]
簡單的sql查詢
-- 查詢所有數據
select * from t_user;-- 查詢需要的字段信息
select id, name, password from t_user;
-- 查詢一個字段,一個等值條件
select name from t_user where id = 1;select 字段列表
from 表名稱
where 條件/*等值查詢
*/
select password from t_user where name="小度";
select * from t_user where age = 21;
alter table t_user add birthday datetime default now();
select * from t_user where birthday='2025-04-13 20:52:12';
select語句中的特殊情況:
對數值型數據列、變量、常量可以使用算數操作符創建表達式(+ - * /)
對日期型數據列、變量、常量可以使用部分算數操作符創建表達式(+ -)
運算符不僅可以在列和常量之間進行運算,也可以在多列之間進行運算。
select name,age*10 from t_user;
+----------+--------+
| name | age*10 |
+----------+--------+
| 小度 | 210 |
| 小度3 | 170 |
| 小度4 | 190 |
| 張三 | 190 |
| xiaodu | 190 |
| 小嘟 | 170 |
| 小嘟2 | 170 |
| xiaoxiao | NULL |
| ls | NULL |
| zs | NULL |
+----------+--------+
10 rows in set (0.00 sec)補充:+ 說明
-- MySQL的+默認只有一個功能:運算符
SELECT 100+80; # 結果為180
SELECT '123'+80; # 只要其中一個為數值,則試圖將字符型轉換成數值,轉換成功做預算,結果為203
SELECT 'abc'+80; # 轉換不成功,則字符型數值為0,結果為80
SELECT 'This'+'is'; # 轉換不成功,結果為0
SELECT 'This'+'30is'; # 猜測下這個結果是多少?依舊是30
SELECT NULL+80; # 只要其中一個為NULL,則結果為NULL
等值判斷
條件中,出現了相等值的判斷,一般采用=
進行判斷。
=
判斷兩次的值是否相等is
判斷空nullis not null
來判斷不為空<=>
可以判斷null或者普通值
不等判斷
!=
不等于<>
也是不等于
邏輯運算符
邏輯運算符是多條件關聯的一種方式。
與或非
- and
- or
- not
注意:在sql中,如果要提升條件的運行順序,或者提高條件的優先級別,則需要使用括號來提升。
查詢時的別名使用
查詢時,將結果的顯示字段,使用一個其他名稱來代替,就是別名。
mysql> select count(*) from t_user;
+----------+
| count(*) |
+----------+
| 10 |
+----------+
1 row in set (0.01 sec)mysql> select count(*) as c from t_user;
+----+
| c |
+----+
| 10 |
+----+
1 row in set (0.00 sec)mysql> select count(*) as 總人數 from t_user;
+--------+
| 總人數 |
+--------+
| 10 |
+--------+
1 row in set (0.00 sec)mysql> select count(*) 總人數 from t_user;
+--------+
| 總人數 |
+--------+
| 10 |
+--------+
1 row in set (0.00 sec)
常見的條件查詢
使用WHERE子句限定返回的記錄
WHERE子句在FROM 子句后SELECT[DISTINCT] {*, column [alias], ...}FROM table–[WHEREcondition(s)];WHERE中的字符串和日期值
字符串和日期要用單引號擴起來
字符串是大小寫敏感的,日期值是格式敏感的select name,age,password from t_user where name='xiaodu';WHERE中比較運算符:select name,age,password from t_user where age<25;其他比較運算符
使用BETWEEN運算符顯示某一值域范圍的記錄select name,age,password from t_user where age between 20 and 25; SELECTlast_name, salary使用IN運算符使用IN運算符獲得匹配列表值的記錄select id,name,age,password from t_user where id in (5,6,7);使用LIKE運算符使用LIKE運算符執行模糊查詢查詢條件可包含文字字符或數字(%) 可表示零或多個字符( _ ) 可表示一個字符SELECT nameFROM t_userWHERE name LIKE '小%';使用IS NULL運算符查詢包含空值的記錄select id,name,age from t_user where age is null;邏輯運算符使用AND運算符AND需要所有條件都滿足. select * from t_user where age=19 and password='123456';使用OR運算符OR只要兩個條件滿足一個就可以 select * from t_user where age=19 or password='123456';使用NOT運算符NOT是取反的意思select * from t_user where age not in(19);使用正則表達式:REGEXP<列名> regexp '正則表達式'select * from t_user where age regexp '^1';