多表查詢
MySQL不支持full join 遏匆,可以使用union連接兩條查詢語句家破,實現(xiàn)全連接(查詢并集)
例如:select * from stu1 union select * from stu2;
概念
笛卡爾積 取A涛菠,B集合所有組合情況
多表查詢 從多張表中查詢數(shù)據(jù):連接查詢&子查詢
-
連接查詢
- 內(nèi)連接 查詢集合A,B的交集數(shù)據(jù)
- 外連接
- 左外連接 查詢A表所有數(shù)據(jù)和交集部分數(shù)據(jù)
- 右外連接 查詢B表所有數(shù)據(jù)和交集部分數(shù)據(jù)
子查詢
內(nèi)連接
基本語法
-- 隱式內(nèi)連接
select 字段列表 from 表名1板甘,表名2... where 條件;
-- 顯式內(nèi)連接
select 字段列表 from 表1 [inner] join 表2 on 條件;>
為應(yīng)對不同表中字段名相同的情況同仆,在字段名前加上表名作為前綴進行引用倚舀,例如emp.id,stu.id
當表名過長時细睡,通常給表名取別名以簡化書寫
例如
select t1.id,t2.id from emp t1,stu t2 where t1.id = t2.id
外連接
基本語法
--左外連接
select 字段列表 from 表1 left [outer] join 表2 on 條件;
--右外連接
select 字段列表 from 表1 right [outer] join 表2 on 條件;
子查詢
概念 查詢中嵌套查詢谷羞,稱嵌套查詢?yōu)樽硬樵?查詢語句的條件是一條可以得出結(jié)果的查詢語句)
子查詢根據(jù)查詢結(jié)果不同 ,作用不同
-
單行單列 作為條件值溜徙,使用= != > < 等進行條件判斷
select 字段列表 from 表 where 字段名 = (子查詢);
-
多行單列 作為條件值湃缎,使用in等關(guān)鍵字進行條件判斷
select 字段列表 from 表 where 字段名 in (子查詢);
-
多行多列 作為虛擬表
select 字段列表 from (子查詢) where 條件;
事務(wù)
概念
- 數(shù)據(jù)庫的事務(wù)是一種機制,一個操作序列蠢壹,包含了一組數(shù)據(jù)庫操作命令
- 事務(wù)把所有命令作為一個整體一起向系統(tǒng)提交或撤銷操作請求嗓违,即這一組數(shù)據(jù)庫命令要么同時成功,要么同時失敗
- 事務(wù)是一個不可分割的工作邏輯單元
操作
一個事務(wù)的操作包括了 開啟事務(wù)--->(出現(xiàn)異常)回滾事務(wù)--->提交事務(wù)
基本語法
-- 開啟事務(wù)
start transaction;
或者
begin;
-- 回滾事務(wù)
rollback;
-- 提交事務(wù)
commit;
roolback和commit不能同時運行图贸,二者同時運行時蹂季,并不能理想的進入回滾的內(nèi)循環(huán)冕广,而會回滾一次后直接執(zhí)行commit
commit會讓數(shù)據(jù)被持久化的更改,即在其他窗口頁面查詢時數(shù)據(jù)也會呈現(xiàn)更改后的結(jié)果
roolback會阻止發(fā)生異常的事務(wù)繼續(xù)執(zhí)行偿洁,回滾到事務(wù)初始的狀態(tài)
事務(wù)的提交方式
--查看事務(wù)的默認提交方式
select @@autocommit;
-- 1 自動提交 0 手動提交
修改事務(wù)提交方式
set @@autocommit = 0;
事務(wù)的四大特征(A-C-I-D)
原子性(Atomicity):事務(wù)是不可分割的最小操作單位佳窑,要么同時成功,要么同時失敗
一致性(Consistency):事務(wù)完成時父能,必須使所有的數(shù)據(jù)都保持一致狀態(tài)
隔離性(Isolation):多個事物之間神凑,操作的可見性
持久性(Durability):事務(wù)一旦提交或回滾,它對數(shù)據(jù)庫中的數(shù)據(jù)的改變就是永久的