主鍵
主鍵(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 返回當前序列值增加一個步...