Oracle入門教程:創建表和約束,Oracle創建表同SQL Server一樣,使用CREATE TABLE命令來完成。創建約束則使用如下命令:
語法格式:ALTER TABLE命令
ALTER TABLE 表名 ADD CONSTRAINT 約束名 約束內容。 |
不論創建表還是約束,與SQL Server基本相同,注意:在Oracle中default是一個值,而SQL Server中default是一個約束,因此Oracle的default設置可以在建表的時候創建。
案例1:創建一個學生信息(INFOS)表和約束
代碼演示:Oracle創建表和約束
CREATE TABLE INFOS ( STUID VARCHAR2(7) NOT NULL, --學號 學號=‘S’+班號+2位序號 STUNAME VARCHAR2(10) NOT NULL, --姓名 GENDER VARCHAR2(2) NOT NULL, --性別 AGE NUMBER(2) NOT NULL, --年齡 SEAT NUMBER(2) NOT NULL, --座號 ENROLLDATE DATE, --入學時間 STUADDRESS VARCHAR2(50) DEFAULT '地址不詳', --住址 CLASSNO VARCHAR2(4) NOT NULL --班號 班號=學期序號+班級序號 ) / ① ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) ② / ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER = '男' OR GENDER = '女') ③ / ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT CHECK(SEAT >=0 AND SEAT <=50) ④ / ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE CHECK(AGE >=0 AND AGE<=100) ⑤ / ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO CHECK((CLASSNO >='1001' AND CLASSNO<='1999') OR (CLASSNO >='2001' AND CLASSNO<='2999')) ⑥ / ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME) ⑦ / |
代碼解析:
① 在Oracle代碼中,“/”執行緩存區中的語句,由於緩衝區中只存儲一條剛剛保存過語句,由於每條語句沒有用分號結尾,只是保存在緩衝區,因此每條語句後面都有單獨一行“/”。
② 創建一個主鍵約束。
③ 與 ④ ⑤ ⑥ ⑦一起創建各種check約束。其中⑦是唯一約束,表示該列值是唯一的,列中的值不能重複。
Oracle中創建外鍵約束與SQL Server相同。比如:現有成績表定義如下:
案例2:創建一個成績表(SCORES)表和約束
代碼演示:Oracle創建表和約束
CREATE TABLE SCORES ( ID NUMBER , --ID ① TERM VARCHAR2(2), --學期 S1或S2 STUID VARCHAR2(7) NOT NULL, --學號 EXAMNO VARCHAR2(7) NOT NULL, --考號 E+班號+序號 WRITTENSCORE NUMBER(4,1) NOT NULL, --筆試成績 LABSCORE NUMBER(4,1) NOT NULL --機試成績 ) ALTER TABLE SCORES ADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = 'S1' OR TERM ='S2') / ALTER TABLE SCORES ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID) ② / |
代碼解析:
① SQL Server中可以使用identify創建自動增長列,但是Oracle中的自動增長需要藉助序列(Sequence)完成,在後面章節中講解。
② Oracle中的外鍵約束定義。
來源:CUUG官網