本文講解了使用SQL語言創(chuàng)建基本表的方法,以及使用SQL修改基本表和刪除基本表的方法。
首先說一下什么是基本表,本身獨立存在的表稱為基本表,在SQL語言中一個關(guān)系唯一對應(yīng)一個基本表。基本表的定義指建立基本關(guān)系模式,而變更則是指對數(shù)據(jù)庫中已存在的基本表進(jìn)行刪除與修改。
1、基本表的定義
SQL使用CREATE TABLE語句來定義基本表,其語句格式為:
CREATE TABLE [<數(shù)據(jù)庫名>.]<表名>
(<列名> 數(shù)據(jù)類型 [缺省值] [NOT NULL / NULL]
[,<列名> 數(shù)據(jù)類型 [缺省值] [NOT NULL / NULL]]......
[,UNIQUE (列名[,列名]......)]
[,PRIMARY KEY(列名)]
[,F(xiàn)OREIGN KEY(列名[,列名]......)REFERENCE <表名>(列名[,列名]
......)]
[,CHECK(條件)] [其它參數(shù)])
其中,〈數(shù)據(jù)庫名〉.]指出將新建立的表存放于該數(shù)據(jù)庫中; 新建的表由兩部分組成:其一為表和一組列名,其二是實際存放的數(shù)據(jù)(即可在定義表的同時,直接存放數(shù)據(jù)到表中);
列名為用戶自定義的易于理解的名稱,列名中不能使用空ge;數(shù)據(jù)類型為上面所介紹的幾種標(biāo)準(zhǔn)數(shù)據(jù)類型;
[NOT NULL/NULL]指出該列是否允許存放空值,SQL語言支持空值的概念,所謂空值是"不知道"或"無意義"的值,值得注意的是數(shù)據(jù)"0"和空ge都不是空值,系統(tǒng)一般默認(rèn)允許為空值,所以當(dāng)不允許為空值時,必須明確使用NOT NULL;
[,UNIQUE]將列按照其規(guī)定的順序進(jìn)行排列,如不指定排列順序,則按列的定義順序排列;
[PRIMARY KEY]用于指定表的主鍵(即關(guān)系中的主屬性),實體完整性約束條件規(guī)定:主鍵必須是唯一的,非空的;
[,F(xiàn)OREIGN KEY (列名[,列名]......) REFERENCE<表名>(列名[,列名] ......)]是用于指定外鍵參照完整性約束條件,F(xiàn)OREIGN KEY指定相關(guān)列為外鍵,其參照對象為另外一個表的指定列,即使用REFERENCE引入的外表中的列,當(dāng)不指定外表列名時,系統(tǒng)將默認(rèn)其列名與參照鍵的列名相同,要注意的是:使用外鍵時必須使用參照,另外數(shù)據(jù)的外鍵參照完整性約束條件規(guī)定:外鍵的值要么與相對應(yīng)的主鍵相同,要么為空值(具體由實現(xiàn)系統(tǒng)不同而異)
[,CHECK]用于使用指定條件對存入表中的數(shù)據(jù)進(jìn)行檢查,以確定其合法性,提高數(shù)據(jù)的安全性。
例1:要建立一個學(xué)生情況表(student)
CREATE TABLE student //創(chuàng)建基本表student
(st_class CHAR(8), // 定義列st_class班級,數(shù)據(jù)類型為8位定長字符串
st_no CHAR(10) NOT NULL, //定義列st_no學(xué)號,類型為10位定長字符串,非空
st_name CHAR(8) NOT NULL, //定義列st_name姓名,類型為8位定長字符串,非空
st_sex CHAR(2), //定義列st_sex性別,類型為2位定長字符串
st_age SMALLINT, //定義列st_age年齡,類型為短整型
PRIMARY KEY (st_no) //定義st_no學(xué)號為主鍵。
)
例2:要建立課程設(shè)置表(subject)
CREATE TABLE subject --創(chuàng)建基本表subject
(su_no CHAR(4) NOT NULL, --定義列su_no課號,類型為4位定長字符串,非空
su_subject CHAR(20) NOT NULL,--定義列su_subject課程名,類型為20位定長字符 串,非空
su_credit INTEGER, --定義列su_credit學(xué)分,類型為長整數(shù)
su_period INTEGER, --定義列su_period學(xué)時,類型為長整數(shù)
su_preno CHAR(4), --定義列su_preno先修課號,類型為4位定長字符串
PRIMARY KEY(su_no) --定義su_no課號為主鍵。
)
例3:要建立學(xué)生選課表(score)
CREATE TABLE score --創(chuàng)建基本表score
(st_no CHAR(10), --定義列st_no學(xué)號,類型為10位定長字符串
su_no CHAR(4), --定義列su_no課號,類型為4位定長字符串
sc_score INTEGER NULL,--定義列sc_score,類型為長整形,可以為空值
FOREIGN KEY (st_no) REFERENCE student(st_no ),
--從表student中引入?yún)⒄胀怄Ist_no,以確保本表與表student的關(guān)聯(lián)與同步
FOREIGN KEY (suno) REFERENCE subject(su_no)
--//從表subject中引入?yún)⒄胀怄Isu_no,以確保本表與表subject的關(guān)聯(lián)與同步
)
2、基本表的刪除
如果確認(rèn)基本表不再需要,可以使用DROP TABLE語句將其刪除,這樣表的結(jié)構(gòu)及存儲在表中的內(nèi)容全部刪除。其語句格式為:
DROP TABLE[<數(shù)據(jù)庫名>.]表名
例如:將上面建立的表都刪除
DROP TABLE student,subject,score
3、基本表的修改
可以根據(jù)實際需要對表的定義進(jìn)行修改,修改基本表的SQL語句是ALTER TABLE ,其語句格式如下:
ALTER TABLE [<數(shù)據(jù)庫名>.]表名
ADD (<列名> 數(shù)據(jù)類型 [缺省值] [NOT NULL / NULL]
[,<列名> 數(shù)據(jù)類型[缺省值][NOT NULL / NULL]]......
[,UNIQUE (列名[,列名]......)]
[,PRIMARY KEY(列名)]
[,F(xiàn)OREIGN KEY(列名[,列名]......) REFERENCE <表名>(列名[,列名] ......)]
[,CHECK(條件)][其它參數(shù)])
例如:在基本表student中加入列stborn出生日期,數(shù)據(jù)類型為DATE,且不能為空值
ALTER TABLE student ADD (stborn DATE NOT NULL)
刪除屬性的語句格式為:
ALTER TABLE [<數(shù)據(jù)庫名>.]表名 DROP
( <列名> 數(shù)據(jù)類型 [缺省值][NOT NULL / NULL]
[,<列名> 數(shù)據(jù)類型 [缺省值][NOT NULL / NULL]]......)
例如:將基本表student中的列st_age刪除
ALTER TABLE student DROP (st_age)
以上對使用SQL定義、修改和刪除基本表的方法進(jìn)行了介紹。實際很簡單,只要不斷地練習(xí)和琢磨,你還可以定義出更加復(fù)雜的基本表。
新聞熱點
疑難解答