1. 程式人生 > >SQL 基本表(TABLE)

SQL 基本表(TABLE)

  1. 基本表的建立
CREATE TABLE <表名> (<列名><資料型別>[列級完整性約束條件]
                    [,<列名><資料型別>[列級完整性約束條件]] 
		    ...
		    [,<表級完整性約束條件>]);

例:

--學生表
create table Student
		(Sno char(9) primary key,--主碼
		Sname char(20) unique,--唯一
		Ssex char(2),
		Sage smallint,
		Sdept char(20)
		);
--課程表
create table Course
		(Cno char(4) primary key,
		Cname char(40) not null,--非空
		Cpno char(4),
		Ccredit smallint,
		foreign key (Cpno) references Course(Cno)--表級完整性約束條件,Cpno是外碼,被參照表是Course中的Cno列
		);
--選課表
create table SC
		(Sno char(9),
		Cno char(4),
		Grade smallint,
		primary key(Sno,Cno),--Sno和Cno都是主碼
		foreign key(Sno) references Student(Sno),--表級完整性約束條件,Sno是外碼,被參照表是Student中的Sno列
		foreign key(Cno) references Course(Cno)--表級完整性約束條件,Cno是外碼,被參照表是Course中的Cno列
		);

其中,主碼只有一個時,直接在後面直接加上primary key,而大於一個時,使用表級完整性約束條件primary key( , )

  1. 基本表的修改
ALTER TABLE<表名>
[ADD [COLUME]<新列名><資料型別>[完整性約束]]
[ADD<表級完整性約束>]
[DROP [COLUME]<列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性約束名>[RESTRICT|CASCADE]]
[ALTER COLUME<列名><資料型別>];

例:

--向學生表(Student)中新增型別為日期型的“入學時間”列
alter table Student add S_entrance date;

--將年齡的資料型別由字元型改為整數
alter table Student alter column Sage int;

--增加課程名稱必須取謂一致的約束條件
alter table Student add unique(Cname);
  1. 刪除基本表
DROP TABLE<表名>[RESTRICT|CASCADE]

其中,CASCADE(級聯)表示刪除該表時,相關依賴的比如檢視等,都將被刪除。
RESTRICT(限制)表示如果該表已經被其他表約束(FOREIGN KEY),則不能被刪除。

例:

drop table Student cascade;--出錯,因為Student已經被表SC引用

Student已經被表SC引用,只有SC表刪除之後,才能刪除表Student