主鍵與外來鍵的運用

2021-09-02 10:18:35 字數 2275 閱讀 2056

今天,因為專案有3張表,而且3張表之間,都有關聯,我又重溫習了乙個主鍵與外來鍵的運用:

--刪掉表

drop table dept

drop table emp

--建立dept表,

create table dept(deptno int primary key,dname nvarchar(30),loc nvarchar(30))

--這裡是dept(deptno)主鍵指向外來鍵emp(deptno),沒有聯級刪除與更新

create table emp(empno int primary key

,ename nvarchar(30),

job nvarchar(30),

mgr int,

hiredate datetime,

sal numeric(10,2),

comm numeric(10,2),

deptno int foreign key references dept(deptno));

--以後為建立表時,並建立聯級關係

create table emp(empno int primary key

,ename nvarchar(30),

job nvarchar(30),

mgr int,

hiredate datetime,

sal numeric(10,2),

comm numeric(10,2),

--聯級刪除

deptno int foreign key references dept(deptno) on delete cascade);

--聯級更新

--deptno int foreign key references dept(deptno) on update cascade);

--如果是建立表時,沒有建立聯級關係,可以再增加

create table emp(empno int primary key

,ename nvarchar(30),

job nvarchar(30),

mgr int,

hiredate datetime,

sal numeric(10,2),

comm numeric(10,2),

deptno int);

--這段語句就是增加聯級的刪除與更新

alter table emp add constraint fk_deptno foreign key (deptno) references dept(deptno) on update cascade on delete cascade

[color=red]以上的操作都是在sql server 2000中進行的,以下部分是插入與刪掉的資料,本人已經操作過沒有問題,就不上傳了。

[/color]

insert into dept values(10,'grtu','newke')

insert into dept values(20,'sl','shengchang')

insert into emp(empno,ename,job,mgr,hiredate,sal,deptno)values

(103,'dengping','cleck',9,'1985-9-12',1300.00,10)

insert into emp(empno,ename,job,mgr,hiredate,sal,deptno)values

(106,'milik','cleck',9,'1985-9-12',1300.00,30)--deptno這時為30時,就違反了主鍵定義,因為30不存在,這就是外來鍵指向主鍵的運用

insert into emp(empno,ename,job,mgr,hiredate,sal,deptno)values

(105,'lichong','ipqc',93,'1990-2-22',1400.00,10)

insert into emp(empno,ename,job,mgr,hiredate,sal,deptno)values

(104,'lichong','ipqc',93,'1990-2-22',1400.00,20)

select * from emp

select * from dept

delete from emp where empno= '105';

--聯級刪除

delete from dept where deptno= '10';

--聯級更新

update dept set deptno=11 where deptno =10;

主鍵與外來鍵

一 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中 某乙個屬性組 注意是組 能唯一標識一條記錄 該屬性組就可以成為乙個主鍵 比如 學生表 學號,姓名,性別,班級 其中每個學生的 學號是唯一的,學號就是乙個主鍵 課程表 課程編號 課程名,學分 其中課程編號 是唯一的,課程編號 就是...

Mysql 主鍵與外來鍵

這的pri和mul的含義是什麼意思呢?1.如果key是空的,那麼該列值的可以重複,表示該列沒有索引,或者是乙個非唯一的復合索引的非前導列 2.如果key是pri,那麼該列是主鍵的組成部分 3.如果key是uni,那麼該列是乙個唯一值索引的第一列 前導列 並別不能含有空值 null 4.如果key是m...

Sql 主鍵與外來鍵

三張表 s s sname,gender,age c c cname,tname sc sc s c grade s 為學生號 主鍵 sname為學生姓名,c 為課程號 主鍵 cname為課程名,tname為老師姓名,sc中使用外來鍵關聯 請編寫sql語句完成下列操作 1.將 oracle 成績最高...