外來鍵就是從來幫助我們建立表與表之間關係的
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 ...