SQL 基本表(TABLE)
阿新 • • 發佈:2019-01-03
- 基本表的建立
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( , )
- 基本表的修改
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);
- 刪除基本表
DROP TABLE<表名>[RESTRICT|CASCADE]
其中,CASCADE(級聯)表示刪除該表時,相關依賴的比如檢視等,都將被刪除。
RESTRICT(限制)表示如果該表已經被其他表約束(FOREIGN KEY),則不能被刪除。
例:
drop table Student cascade;--出錯,因為Student已經被表SC引用
Student已經被表SC引用,只有SC表刪除之後,才能刪除表Student