資料庫表的主外來鍵

2022-11-27 07:57:39 字數 2836 閱讀 7648

主鍵

主鍵(primary key):全稱叫做“主鍵約束”,可以是一列或者多列組合,其值可以唯一標識這條資料。

所以主鍵唯一性,不可以為空。

建立主鍵:

建立表的時候建立主鍵

create  table  food(id int primary key,name char(32));
建立主鍵,並且自增長

(就是插入資料時可不指定主鍵欄位,一般都為id int型別)

缺陷:如果刪除之前的資料,不會自動填充補全數字,如把id=3的資料從表中刪除12

45這樣的,中間3會沒有,空的

create table food(id int primary key auto_increment,name char(32));

新增主鍵:

在已經存在的表當中新增主鍵(欄位是已經存在的欄位)

alter table food add primary key (id);

alter table food add primary key auto_increment (id); 由於版本 問題,當前命令不會報錯,但是無法將主鍵設定自增長。導致新增的 資料主鍵為0

修改為自增長:modify

alter table food modify id int auto_increment primary eky;

新增實際上是將一個已經存在的欄位修改為主鍵

**刪除主鍵:**

alter table food drop primary key ;

刪除主鍵只是刪除了主鍵型別,並沒有刪除欄位

如果主鍵設定自增長,先通過修改語句去掉自增長,然後在刪除主鍵。

alter table food modify id int; 去掉自增長

alter table food drop primary key ; 刪除主鍵

外來鍵外來鍵:(foreign key):全稱叫做“外來鍵約束”,主要用來約束一對多關係, 一對多關係當中,多表當中用外來鍵來關聯一表當中的主鍵欄位。

create table parent(id int primary key auto_increment,name char(32));

create table child(

id int primary key auto_increment,

name char(32),

p_id int,

foreign key(p_id) references parent(id)

);

1、必須先有外來鍵欄位,再設定外來鍵

2、一表必須先建立出來,最好有主鍵;

3、外來鍵欄位的資料必須一表對應欄位(主鍵)有的資料。

多對多關係中,需在關係表建立時設定多個外來鍵,對應相應表中的主鍵欄位

多對多關係中:

專業:

課程:

關係:

建立多對多關係:

建立專業表

create table major(id int primary key auto_increment,name char(32));
建立課程表

create table course(id int primary key auto_increment,name char(32));
建立關係表

create table major_course(

id int primary key auto_increment, 設定主鍵

major_id int, 設定和專業關聯的欄位

course_id int, 設定和課程關聯的欄位

foreign key(major_id) references major(id), 使用major_id和major表的 id欄位進行外來鍵關聯

foreign key(course_id) references course(id)使用course_id和course表 的id欄位進行外來鍵關聯

);

清除oracl中有主外來鍵關聯的表中的部分資料。

1.禁用主外來鍵 begin for c in select alter table table name disable constraint constraint name as v sql from user constraints where constraint type r loop e...

通過觸發器實現兩張有主外來鍵關係的表的資料插入問題

表 t users,t user except work,其中t users中的主鍵id和t user except work中的外來鍵都為數列sequence users.currval的自增長數列。注意 序列有以下兩個屬性 currval 返回序列當前值 nextval 返回當前序列值增加一個步...