Oracle入門教程:創建表和約束
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢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中的外鍵約束定義。