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

2021-10-21 06:26:28 字數 4260 閱讀 1527

外來鍵就是從來幫助我們建立表與表之間關係的

foreign key

表與表只有四種關係

一對多關係

多對多關係

一對一關係

多對一關係

sql語句建立表關係

1. 一對多表關係 外來鍵字段建在多的一方

2. 在建立表的時候 一定要先建被關聯表

3. 在錄入資料的時候 也必須先錄入被關聯表

create table dep(

idint primary key auto_increment,

dep_name char(16)

, dep_desc char(32)

);insert into dep(dep_name,dep_desc) values(

'sb教學部'

,'教書育人'),

('***'

,'多人外交'),

('nb技術部'

,'技術能力有限');

create table emp(

idint primary key auto_increment,

name char(16)

, gender enum(

'male'

,'female'

,'others'

) default 'male'

, dep_id int

, foreign key(dep_id) references dep(id)

);insert into emp(name,dep_id) values(

'jason',2

),('egon',1

),('tank',1

),('kevin',3

);#修改emp裡面的dep_id欄位或者dep表裡的id欄位

update dep setid=

200 where id=2

;#不行,外來鍵限制

#刪除dep表裡的資料

delete from dep;

#不行#可行的修改和刪除的方法:

#1.先刪除教學部對應的員工資料,再刪除部門

操作太過繁瑣

#2.真正做到資料之間有關係

同步更新,刪除

引出概念

#級聯更新,級聯刪除

create table dep(

idint primary key auto_increment,

dep_name char(16)

, dep_desc char(32)

);insert into dep(dep_name,dep_desc) values(

'sb教學部'

,'教書育人'),

('***'

,'多人外交'),

('nb技術部'

,'技術能力有限');

create table emp(

idint primary key auto_increment,

name char(16)

, gender enum(

'male'

,'female'

,'others'

) default 'male'

, dep_id int

, foreign key(dep_id) references dep(

id)

on update cascade #同步更新

on delete cascade #同步刪除);

insert into emp(name,dep_id) values(

'jason',2

),('egon',1

),('tank',1

),('kevin',3

);update dep id

=200 where id=2

;delete from dep where id=1

;

圖書與作者

針對多對多字段表關係 不能再兩張原有的表中建立外來鍵

需要你單獨開設一張 專門用來儲存兩張表之間的資料關係

create table book(

idint primary key auto_increment,

title varchar(32)

, price int);

create table author(

idint primary key auto_increment,

name varchar(32)

, age int);

create table book2author(

idint primary key auto_increment,

author_id int

, book_id int

, foreign key(author_id) references author(id)

on update cascade

on delete cascade,

foreign key(book_id) references book(id)

on update cascade

on delete cascade);

insert into book(title,price) values(

'jpm'

,6699),

('lzzy'

,9966),

('tpt'

,6666);

insert into author(name,age) values(

'jason',18

),('egon',73

);insert into book2author(author_id,book_id) values(1,

1),(

1,2)

,(2,

3);#當直接刪除author裡面的作者的時候

#中間表對應的資料也變化

delete from author where id=1

;

一對一外來鍵字段建在任意一方都可以,推薦建在查詢頻率高的表中

create table authordetail(

idint primary key auto_increment,

phone int

, addr varchar(64)

);create table author(

idint primary key auto_increment,

name varchar(32)

, age int

, authordetail_id int unique,

foreign key(authordetail_id) references authordetail(id)

on update cascade

on delete cascade

);

表關係的建立需要用到foreign key

一對多 外來鍵字段建在多的一方

多對多 自己開設第三張儲存

一對一 建在任意一張都可以,但是推薦你建在查詢頻率較高的表中

#mysql 對大小寫不敏感

#1修改表名

alter table 表名 rename 新錶名;

#2增加字段

alter table 表名 add 欄位名 字段型別(寬度) 約束條件;

#預設最後

alter table 表名 add 欄位名 字段型別(寬度) 約束條件 first;

#新增在最前面

alter table 表名 add 欄位名 字段型別(寬度) 約束條件 after 欄位名;

#跟在誰的後面

#3刪除字段

alter table 表名 drop 欄位名;

#4修改字段

alter table 表名 modify 欄位名 字段型別(寬度) 約束條件;

alter table 表名 change 舊欄位名 新欄位名 字段型別(寬度) 約束條件;

#sql語句的結果其實也是一張虛擬表

create table 新錶 select *

from 舊表;

#不能複製主鍵外來鍵索引,只複製表結構和資料

表與表之間的關係

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

表與表之間的關係筆記

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

sqlserver進行表與表之間的複製

1.資料庫之間。右擊資料庫選擇匯入資料,選擇需要匯入的表或者輸入sql語句進行匯入。可以實現不同或者相同資料庫之間互相匯入資料。select from test4 where 1 2,僅僅匯入表的結構 select from test4 匯入全部資料。2.sql語句實現。如 select into ...