MySQL 多表設計 關聯查詢

2021-10-16 22:02:28 字數 1945 閱讀 5422

關聯查詢

外連線右外連線

交叉連線

q : 為什麼需要多表關聯?

a : 資料冗餘 —> 拆分

其中****還可以拆分

學號姓名

性別****

100tom

男拆分為不可分解的原子值後

學號姓名

性別手機號

郵箱100

tom男

[email protected]

訂單編號

數量商品編號

商品名稱

單價金額

1000

22020

手機2000

4000

拆分為下面倆張表

訂單編號

數量金額

商品編號

1000

24000

2020

商品編號

商品名稱

單價2020

手機2000

1 建表的時候之間加外來鍵

create table score(

cid int not null auto_increment primary key,

score int,

sid int,

constraint 約束名 foreign key(sid) references student(sid)

);2.建完表之後加

alter table 表名 add [constraint 約束名] foreign key(外來鍵列) references 關聯表(主鍵);

3.刪除外來鍵

alter table 表名 drop foreign key 外來鍵約束名

當主表中沒有對應的記錄時,不能將記錄新增到從表

不能更改主表中的值而導致從表中的記錄孤立

從表存在與主表對應的記錄,不能從主表中刪除該行

刪除主表前,先刪從表

含義: 又稱多表查詢,當查詢的字段來自於多個表時,就會用到連線查詢

笛卡爾乘積現象:表1有m行,表2有n行,結果=m*n

求兩張表的交集

在連線中使用等號(=)操作就是等值連線。

select t_student.t_student_id,t_student_name,t_student_*** from t_student inner join t_grade on t_student_id = t_grade_id

主要用除了等號之外的操作符,比如:<>、>、=、<=、like、in、between…and。

select t_student.t_student_id,t_student_name,t_student_*** from t_student inner join t_grade on t_grade_id>2

自己連線自己

select t1.name,t2.name from t_area as t1 inner join t_area as t2 on t1.pid = t2.id

語法select 結果 from 表1 left join 表2 on 表1.column1 = 表2.column2

查詢的是左邊+兩表交集

select 結果 from 表1 right join 表2 on 表1.column1 = 表2.column2

查詢的是右表+兩表交集

可以理解為笛卡爾積現象

MySQL 多表關聯查詢

對多張具有一定關係的表中的資料進行查詢。直接查詢 select from emp,dept 關聯查詢 查詢多張表中都有的資料 select from emp,dept where emp.dept id dept.id 子查詢子查詢通俗來講,就是查詢中有查詢。1 單行子查詢 查詢結果為單個 sele...

多表關聯查詢

表別名 多個表之間存在同名的列,則必須使用表明來限制列的引用 內連線 自連線 內連線就是關聯的兩張或多張表中,根據關聯條件,顯示所有匹配的記錄,匹配不上的,不顯示 自連線,就是把一張表取兩個別名,當做兩張表來使用,自己和自己關聯。select columns list from table name...

JPA多表關聯查詢

作用 就是實現使用乙個實體類物件操作或者查詢多個表的資料。回顧 配置多表聯絡查詢必須有兩個步驟 1.在實體類裡面建立表與表之間的關係。2.配置關聯關係,jpa使用註解配置 需求 指定oid查詢客戶的資訊 公司資訊 同時也查詢關聯的聯絡人資訊 配置步驟 通過客戶找聯絡人,所以再customer實體類配...