論表與表之間的關係 半連線改寫

2022-05-27 09:21:12 字數 2774 閱讀 1274

昨天聽了落落的課,講到了表與表之間的關係。

以下是我的測試案例:

select *

from departments d

where d.department_id in (select e.department_id from employees e);

查詢表departments(department_id)與表employees(department_id)之間的關係

select

count(*),department_id from departments group

by department_id;

count(*)

department_id110

120130

140150

160170

180190

1100

1110

1120

1130

1140

1150

1160

1170

1180

1190

1200

1210

1220

1230

1240

1250

1260

1270

select

count(*),department_id from employees group

by department_id;

count(*)

department_id

6100630

13902

201702

11045

5034801

405601

10

所以可以得知表departments(department_id)與表employees(department_id)之間關係為1 : n

所以以上sql可以等價改寫成以下形式:

select d.*

from departments d,(select department_id from employees e group

by department_id) c

where d.department_id=c.department_id

select *

from employees e

where e.department_id in (select d.department_id from departments d);

由案例1可以得知:

表employees(department_id)與表departments(department_id)之間的關係為n:1

所以以上sql可以等價改寫成以下形式:

select e.*

from employees e, departments d

where e.department_id = d.department_id

建立以下表,並插入資料:

create

table emp_test as

select * from employees ;

insert

into emp_test select * from emp_test;

...重複插入至3000多條資料後

commit;

create

table dept_test as

select * from departments;

insert

into dept_test select * from dept_test;

...重複插入至1700多條資料後

commit;

現在對以下sql改寫:

select count(*)

from emp_test e

where e.department_id in (select d.department_id from dept_test d);

count(*)

-------

3392

由以上建表時語句可以得知,

表emp_test (department_id)與表dept_test (department_id)之間的關係為n:n

錯誤改寫:

select count(*)

from emp_test e, dept_test d

where e.department_id = d.department_id;

count(*)

-------

434176

正確改寫:

select count(*)

from emp_test e,

(select department_id from dept_test d group by d.department_id) c

where e.department_id = c.department_id;

count(*)

-------

3392

表與表之間的關係

最近領導一直在提 表之間關聯 資料的身份證 之類的我聽不懂的名詞 今天就總結一下,表之間的關係 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組 注意是組 能唯一標識一條記錄,該屬性組就可以成為乙個主鍵 比如 學生表 學號,姓名,性別,班級 其中每個學生的學號是唯一的,...

表與表之間的關係筆記

表與表之間的關係 一 一對多和多對多 1.一對多建表原則 1 在從表 多方 建立乙個字段,字段作為外來鍵指向一的一方的主鍵 2 例項 分類和商品,乙個分類對應多個商品,乙個商品只能屬於某乙個分類,部門和員工,乙個部門可以有多個員工,乙個員工只能屬於某乙個部門 3 alter table 從表 pro...

表與表之間的關係,修改表,複製表

外來鍵就是從來幫助我們建立表與表之間關係的 foreign key表與表只有四種關係 一對多關係 多對多關係 一對一關係 多對一關係sql語句建立表關係 1.一對多表關係 外來鍵字段建在多的一方 2.在建立表的時候 一定要先建被關聯表 3.在錄入資料的時候 也必須先錄入被關聯表 create tab...