聯合分組
# 數據來源:單標emp
# 聯合分組:按多個字段綜合結果進行分組
# 按 area與port組合后的結果進行分組,只有組合后的結果還一致,才認為是一組
select group_concat(name),area,port from emp group by area,port;
子查詢
insert into 表 select 子查詢 # 增
delete from 表 條件是select子查詢(表不能與delete表相同) # 刪
select 字段 from 表 條件是select子查詢 # 查
update 表 set 字段=值 條件是select子查詢(表不能與update表相同) # 改
all與any:區間修飾條件
語法規則
where id in (1, 2, 3) -->id是1或2或3
where id not in (1, 2, 3) --> id不是1,2,3
where salary < all(3, 6, 9) --> salary必須小於所有情況(小於最小)
where salary > all(3, 6, 9) --> salary必須大於所有情況(大於最大)
where salary < any(3, 6, 9) --> salary只要小於一種情況(小於最大)
where salary > any(3, 6, 9) --> salary只要大於一種情況(大於最小)
視圖
'''
1. 視圖是存在內存中的臨時表
2. 視圖的創建依賴select語句,所以就是select語句操作的結果形成的表
3. 視圖支持對數據的增刪改查
4. 視圖不允許對視圖表的字段做修改
5. 視圖不僅支持創建,也支持更新與刪除
'''
# 語法
# 創建視圖
mysql> create view 視圖名[(別名們)] as select 語句;
# 創建或替換視圖
mysql> create or replace 視圖名[(別名們)] as select 語句;
mysql> alter 視圖名[(別名們)] as select 語句;
# 刪除視圖
mysql> drop view 視圖名;
視圖的增刪改
# 視圖的增刪改操作可以直接映射給真實表(本質就是對真實表進行操作)
# 操作視圖,會影響真實表,反之也會影響
視圖
# 事務:通常一些業務需要多條sql參與,參與的sql會形成一個執行整體,這個整體就叫做事務。
# 事務 - 就是保護多條執行的sql語句
'''
事務的四大特性
1.原子性:事務是一組不可分割的單位,要么同時成功,要么同時不成功
2.一致性:事務前后的數據完整性應該保持一致(數據庫的完整性:如果數據庫在某一時間點下,所有的數據都符合所有的約束,則稱數據庫為完整的狀態)
3.隔離性:事務的隔離性是指多個用戶並發訪問數據時,一個用戶的事務不能被其他用戶的事務所干擾,多個並發事務之間數據要相互隔離
4.持久性:持久性是指一個事務一旦被提交,它對數據的改變就是永久性的,接下來即使數據庫發生故障也不應該對其有任務影響
'''
# 開啟事務
begin;
# 提交事務
commit;
# 事務回滾
rollback;
pymysql:python操作mysql
import pymysql
# pymysql連接數據庫的必要參數:主機、端口、用戶名、密碼、數據庫
# pymysql不能提供創建數據庫的服務,需要提前創建數據庫
'''
1.建立數據庫連接對象conn
2.通過conn創建操作sql的游標對象
3.編寫sql交給cursor執行
4.如果是查詢,通過cursor對象獲取結果
5.操作完畢,關閉端口操作與連接
'''
索引
# 索引就是鍵 - key
'''
1.鍵是添加給數據庫表的字段的
2.給表創建鍵后,該表不僅會形成表結構、表數據,還有鍵的B+結構圖
3.鍵的結構圖是需要維護的,在數據完成增、刪、改操作時,只有影響到有鍵的字段,結構圖都要維護一次,所以創建鍵以后一定會降低增、刪、改的效率
4.鍵可以極大的加快查詢速度
5.建立鍵的方式:主鍵、外鍵、唯一鍵、index
'''