多表間的關係
新增外來鍵
alter table 表 add [constraint] [外來鍵名稱] foreign key(字段) references 表(字段);
或者alter table 表 add foreign key(列) references 表(列);
eg:給商品表新增外來鍵
alter table t_product add foreign key(cno) references t_category(cid);
刪除外來鍵
alter table 表 drop foreign key 外來鍵名稱;
外來鍵的級聯
在修改和刪除主表的主鍵時,同時更新或刪除副表的外鍵值,稱為級聯操作
on update cascade – 級聯更新,主鍵發生更新時,外來鍵也會更新
on delete cascade – 級聯刪除,主鍵發生刪除時,外來鍵也會刪除
交叉查詢
select a.列,a.列,b.列,b.列 from a,b ;
select a.,b. from a,b ;
–或者select * from a,b;
內連線查詢
隱式內連線
隱式裡面是沒有inner關鍵字的
select [字段,字段,字段][*] from a,b where 連線條件 (a表裡面的主鍵 = b表裡面的外來鍵)
顯示內連線
顯示裡面是有inner關鍵字的
select [字段,字段,字段][*] from a [inner] join b on 連線條件 [ where 其它條件]
外連線
左外連線
以join左邊的表為主表,展示主表的所有資料,根據條件查詢連線右邊表的資料,若滿足條件則展示,若不滿足則以null顯示.
可以理解為:在內連線的基礎上保證左邊表的資料全部顯示
select 字段 from a left [outer] join b on 條件
右外連線
以join右邊的表為主表,展示右邊表的所有資料,根據條件查詢join左邊表的資料,若滿足則展示,若不滿足則以null顯示
可以理解為:在內連線的基礎上保證右邊表的資料全部顯示
select 字段 from a right [outer] join b on 條件
子查詢
select 查詢字段 from 表 where 列 =(子查詢);
子查詢結果是單例多行,結果集類似於乙個陣列,父查詢使用in運算子
select 查詢字段 from 表 where 列 in (子查詢);
子查詢的結果是多行多列的情況
select 查詢字段 from (子查詢) 表別名 where 條件;
事務
事務的作用
保證一組操作全部成功或者失敗
手動開啟乙個事務
- 方式一: 手動開啟事務的方式 【掌握】
start transaction;開啟事務
commit;提交
rollback;回滾
- 方式二: 設定mysql中的自動提交的引數【了解】
檢視mysql中事務是否自動提交
show variables like '%commit%';
設定自動提交的引數為off
set autocommit = 0;-- 0:off 1:on
資料的備份和還原
備份格式
mysqldump -u使用者名稱 -p密碼 資料庫 > 檔案的路徑
還原格式
source 匯入檔案的路徑;
注意:還原的時候需要先登入mysql,並選中對應的資料庫
資料庫多表查詢SQL語句
最近在做 進銷存業務系統 作為專案組成員的一部分,我負責統計查詢,簡單說就是多表查詢,網上有很多,但是很明確的卻沒有,所以讓我這個初學者了費,最終還是搞出來了,在這裡也和大家共享一下成果和其中出現的問題,高手可繞道,不求點讚,只為方便大家。下面開始 我一共建了4個表,分別是supplier purc...
多表查詢資料庫
在專案中建立資料庫的時候,我們經常會進行多表查詢。資料庫中建立乙個表應該與乙個實體類相對應。乙個實體物件應該與一條記錄相對應。資料庫是一種結構化的查詢語言,資料庫語言是非過程化的,寫一句就可以執行一句。進行建表的時候,如果是一對多的關係,應該在多的一方建立乙個字段。該字段為少的一方的id。進行建表的...
資料庫多表查詢
笛卡爾積 select from emp,dept select from emp cross join dept 內連線 inner join 內連線把兩個表連線成乙個表 稱為第三個表 在這個表中僅包含那些滿足連線條件的記錄行 select from emp,dept where emp.dept...