ORACLE--外鍵約束練習

一、第一個oracle練習

建表,外鍵約束。

---學生表----

create table STUDENT(
sno NUMBER(4) PRIMARY KEY,
sname VARCHAR2(10),
age NUMBER(4)
);

---班級表---
create table CLASS(
ClassId NUMBER(4) PRIMARY KEY,
cname VARCHAR2(10),
sno NUMBER(4)
);

---成績表-----
create table GRADE(
GRANO NUMBER(4) PRIMARY KEY,
grade NUMBER(10),
sno NUMBER(4) UNIQUE

);

--建立外鍵關係
alter table GRADE add constraint fk_GRADE_SNO foreign key(sno) references STUDENT(sno); 

--往學生表加數據
select * from STUDENT;
INSERT INTO STUDENT VALUES (1801,'mark',17);
INSERT INTO STUDENT VALUES (1802,'jack',15);
INSERT INTO STUDENT VALUES (1803,'lily',16);
INSERT INTO STUDENT VALUES (1804,'roy',15);
INSERT INTO STUDENT VALUES (1805,'karry',16);
INSERT INTO STUDENT VALUES (1806,'lay',17);

--往成績表加數據
select * from GRADE;
INSERT INTO GRADE VALUES (11,77,1801);
INSERT INTO GRADE VALUES (12,87,1802);
INSERT INTO GRADE VALUES (13,90,1803);
INSERT INTO GRADE VALUES (14,85,1804);
INSERT INTO GRADE VALUES (15,58,1805);
INSERT INTO GRADE VALUES (16,72,1806);

 --查詢
select * from GRADE for update;
 
 --刪除表
drop table GRADE;

 --刪除外鍵約束
ALTER TABLE GRADE drop constraint fk_GRADE_SNO;

二、約束語法

約束放置在表中,有以下五種約束:

       NOT NULL          非空約束C     指定的列不允許爲空值
       UNIQUE             唯一約束U     指定的列中沒有重複值,或該表中每一個值或者每一組值都將是唯一的
       PRIMARY KEY       主鍵約束P     唯一的標識出表的每一行,且不允許空值值,一個表只能有一個主鍵約束
       FOREIGN KEY       外鍵約束R     一個表中的列引用了其它表中的列,使得存在依賴關係,可以指向引用自身的列
       CHECK              條件約束C     指定該列是否滿足某個條件

約束命名規則
       如果不指定約束名Oracle server 自動按照SYS_Cn 的格式指定約束名,也可手動指定,
       推薦的約束命名是:約束類型_表名_列名。
       NN:NOT NULL          非空約束,比如nn_emp_sal
       UK:UNIQUE KEY         唯一約束
       PK:PRIMARY KEY       主鍵約束
       FK:FOREIGN KEY       外鍵約束
       CK:CHECK             條件約束

三、外鍵約束

外鍵約束是用來維護從表和主表的引用完整性的,所以外鍵約束要涉及兩個表。

           FOREIGN KEY: 在表級指定子表中的列
           REFERENCES: 標示在父表中的列
           ON DELETE CASCADE: 當父表中的列被刪除時,子表中相對應的列也被刪除
           ON DELETE SET NULL: 子表中相應的列置空

語法:

alter table 表1-表名 
add constraint 外鍵名稱 foreign key (要設爲外鍵的列名) 
references 表2-表名(與哪個表有關聯) (表2中該列列名);

外鍵名:(一般外鍵名稱爲”fK_數據表_字段”)

例如:

alter table GRADE add constraint fk_GRADE_SNO foreign key(sno) references STUDENT(sno);

GRADE是主表   constraint 是約束   fk_GRADE_SNO是外鍵約束名 foreign key(sno) 中sno是GRADE的外鍵字段。

STUDENT(sno)是外鍵表和字段

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章