1 sql語句基礎
sql(結構化查詢語言)分爲兩個部分:DML,DDL
- DML 數據操作語言(查詢和更新指令)
指令 | 含義 |
---|---|
select | 獲取數據 |
update | 更新數據 |
delete | 刪除數據 |
insert | 插入數據 |
- DDL 數據定義語言(create / alter / drop)
創建/修改/刪除 database/table
創建/刪除 index
2 聚合函數
聚合函數 count 配合 group by / having
mysql聚合函數如:count(), max(), min(), sum()等
group by 將數據庫的數據用’by’後面接的規則進行分組
having是分組(group by)後的篩選條件;
where則是在分組前篩選
select
activity_name, count(*) as count
from
draw_relation_record
GROUP BY
activity_name
HAVING
count(activity_name) > 4
- select 與 group by配合使用時
在有group by操作中,select後面接的結果集字段只有兩種:要麼就只有group by後出現的字段,要麼就是group by後出現的字段+聚合函數的組合 - select 的內容除固定字段外,還有聚合函數時,需用group by
- 常用的五種聚合函數:min()求列中最小數值,max()求列中最大數值,avg()求平均值,sum()求列中字段對應數值的總和,count()求列的總條數
3 join連接
sql中的連接查詢有三種方式:內連接,外連接,交叉連接
連接方式 | 場景 |
---|---|
inner join | 有效連接,兩張表中都有的數據 |
left join | 有左顯示 |
right join | 有右顯示 |
full join | 全連接,兩張表的所有數據 |
cross join | 兩個表進行N*M的組合, 笛卡爾積 |
如:
select Person.FirstName, Person.LastName, Address.City, Address.state
From Person
Left join Address
on Person.PersonId=Address.PersonId
- on 和 where的區別
如果查詢條件查詢後才join連接,應該把查詢條件放在ON後面;
如果要連接完畢後才篩選,應該把條件放在where後面