DML語句 Select基本語法 Select * from tablename;*指代所有列名的快捷方式 Select 列名1,列名2...列名n from tablename; Select 選擇列名 from tbname where 表達式; 簡單查詢,基本格式: Select 列名1,列名 ...
DML語句
Select基本語法
Select * from tablename;*指代所有列名的快捷方式
Select 列名1,列名2...列名n from tablename;
Select 選擇列名 from tbname where 表達式;
簡單查詢,基本格式:
Select 列名1,列名2....
From 表1,表2.....
Where 條件表達式
Group by 分組
Having 分組條件
Order by 列名
Limit num;
選擇列
- distinct 關鍵字去重,去除重覆數據,緊挨著select
select distinct dept_id from s_emp;
- 簡單的算術運算:
+ - * / mod() abs() round()等
2.字元串相關聯函數
Concat,lower,upper
select concat(first_name,' ',last_name) from s_emp;
3.重命名,起別名
格式:select 列名1 as 別名1,列名2 as 別名2 from 表:
select id as d_id from s_emp;
4.對null的顯示處理
Ifnull(列名,指定顯示值)
5.時間函數
Date_format(curdate(),%Y %M %D %h:%i:%s);
按照指定格式輸出時間信息:
Subdate(curdate(),days) 往前數days
Adddate(curdate(),30) 往後退30天
Subtime(curtime(),10) 往前推10秒
Addtime(curtime(),10) 往後退10秒
Where 條件
表達式組成:(列名,操作符,數值) and|or|&&|||(列名 操作符 數值)
- 算數操作符:
!=,<> 不等於
= 判斷是否等於
<=> 判斷是否相等:針對於null
2.邏輯操作符:
- 列名 between 數值 and 數值:select * from s_emp salsry between 500 and 1000;
- .列名 not between 數值1 and 數值2:(無窮小,值1或值2到無窮大)
- In(值1,值2,.....)在指定範圍內:select id,salary from s_emp where salary in(750,1400,1550);
- Not in(值1,值2,.....)在指定範圍外:select count(*) from s_customer where salaes_rep_id not in(11,12) or sales_rep_id <=> null;
- is null; is not null;
- Like 模糊匹配:通配符%匹配0個或多個,_匹配一個,\轉義符;如果是完全匹配建議用“=”效率更高
- 邏輯連接符:&& and || or,不支持短路求值
例如:找部門編號41,工資大於1000元或者部門編號42,工資小於2000元的員工基本信息;
Select id,dept_id,salary from s_emp where (dept_id=41 and salary>1000) or (dept_id=42 && salary<2000);
Group by 分組顯示
組函數:使用方法:寫在having後面
- count(*) 計算個數
- Sum()求和
- Avg()平均值
- Max()最大值
- Min()最小值
Having 子句
用於過濾和篩選;分組前使用where進行過濾,分組後使用having進行過濾。
Order by排序
asc升序(預設) desc 降序
使用方法:sql語句最後+order by 列名
也可以多欄位排序:order by 列名[asc] ; 列名[desc]
Limit
限制行數,條數
Limit 數字值
子查詢
一個select語句的結果,作為另一個select語句的條件:
子查詢:查詢結果是主查詢的對象(from)
多表查詢
使用連接的方式,進行多表查詢
等值連接
- 等值連接,肯定有表與表之間的關聯關係(主鍵,外鍵,其他用戶定義形式);
- 通過列名進行連接,列名和列名最好是相同數據類型。
外鏈接
等值連接(內連接),inner join 獲取交集外鏈接分為三種:
左外連接
右外連接
全連接