Git ssh 上傳大檔案
阿新 • • 發佈:2020-12-28
子查詢
巢狀查詢,查詢條件裡面嵌套了小的查詢
select 欄位 from 表名 where 查詢條件(select 欄位 from 表名 where 查詢條件) 例: 查詢1班叫張三的學員的java語言的成績 java語言在課程表(kcb)裡,學號,姓名在學生表(xsb)裡,成績在成績表(cjb)裡 select cj from cjb where xh = (select xh from xsb where bj= '1班' and xm = '張三') and kch = (select kch from kcb where kcm = 'java語言')
關聯查詢
笛卡爾積運算:
select * from xsb,cjb;
select * from xsb cross join cjb;
當xsb有11行8列,cjb有12行3列
聯合的表有(11*12)行,(8+3)列
通過相同的欄位做過濾
select 欄位 from 表1,表2 where 表1.相同欄位=表2.相同欄位
例:
select * from xsb,cjb where xsb.xh=cjb.xh
注:
做笛卡爾積運算,將多張表連線成一張更大的表,但會產生許多沒有意義的資料,可通過多張表中相同的欄位來過濾垃圾資料
只要跟了兩張表,即表明要做笛卡爾積運算,產生的額垃圾資料,需要通過關聯條件來消除,,如關聯條件外還有其他條件,用and聯接。
只返回滿足關聯條件的資料
左外聯接:
left join
除返回滿足關聯條件的結果外,還將左邊的表完整的展示出來,右邊的表不滿足關聯條件的欄位補空值(null)
select *
from xsb left join cjb
on (xsb.xh = cjb.xh)
將xsb完全展示出來
右外聯接:
right join
除返回滿足關聯條件的結果外,還將右邊的表完整的展示出來,左邊的表不滿足關聯條件的欄位補空值(null)
select *
from xsb right join cjb
on (xsb.xh = cjb.xh)
將cjb完全展示出來
全外聯接:
full join (mysql不支援,可用union集合操作來實現)
select *
from xsb left join cjb
on (xsb.xh = cjb.xh)
union
select *
from xsb right join cjb
on (xsb.xh = cjb.xh);
將左外聯接和右外聯接做集合運算
三表關聯例項:
select 欄位
from 表1,表2,表3
where表1.相同欄位1 = 表2.相同欄位1
and 表2.相同欄位2= 表3.相同欄位2
例:
select * from xsb,cjb,kcb
where xsb.xh = cjb.xh
and cjb.kch = kcb.kch
事務
一組DML操作,只允許同時成功或者同時失敗
事務的程式碼實現:
開啟事務:start transaction
事務提交:commit
事務回滾:rollback
例:a給b轉賬500
start transaction;
update 表名 set money = money-500 where name='a';
update 表名 set money = money +500 where name= 'b';
--rollback
commit;
注:
mysql預設事務都是自動提交的,即執行mysql語句之後馬上commit,如不想自動提交,可使用start transaction來顯示開始事務