數(shù)據(jù)庫探索之旅——操作基本表三步曲

目錄

  1. 第一步:創(chuàng)建(定義)基本表
    1.1 選擇數(shù)據(jù)庫
    1.2 語法格式
    1.3 建表實例
  2. 第二步:修改基本表
    2.1 語法格式
    2.2 改表實例
  3. 第三步:刪除基本表
    3.1 語法格式
    3.2 刪表實例

1. 第一步:創(chuàng)建(定義)基本表

1.1 選擇數(shù)據(jù)庫

在要對某個數(shù)據(jù)庫進行表的操作前,我們需要先選定它。語法格式為:
USE 數(shù)據(jù)庫名
這次我們對 practice 這個數(shù)據(jù)庫進行操作

USE practice

1.2 語法格式

在表的定義式,需要定義表名,該表中的列(列名、數(shù)據(jù)類型、約束條件)。
其語法格式如下:

CREATE TABLE <表名> (
<列名1> <數(shù)據(jù)類型> [ <列級完整性約束>]
[, <列名2> <數(shù)據(jù)類型> [ <列級完整性約束>] ]
[, ...n]
[, 表級完整性約束條件] [, ...n]
)

一點說明:

  1. 格式中的 [] (方括號)表示其中內(nèi)容可以根據(jù)具體情況決定是否選用。在命令輸入時,不要輸入方括號。
  2. 格式中 的<> (尖括號)表示其中內(nèi)容為實際語義,內(nèi)容以實際名稱或參數(shù)輸入,為必選內(nèi)容。在命令輸入時,不要輸入尖括號。
  3. 格式中的 () (小括號)是語句的組成部分,一定要輸入。
  4. 格式中的[,...n] 指示前面的項可以循環(huán)n次,具體值由逗號分隔。
  5. 同一個數(shù)據(jù)庫中不允許出現(xiàn)同名的表。
  6. 列名又稱為字段名、屬性名,表示基本表的各個屬性,同一個表中不允許出現(xiàn)同名的列。
  7. 數(shù)據(jù)類型是列允許存放的數(shù)據(jù)的類型。
  8. 約束條件用以分為列級和表級,用以做某些約束。

1.3 建表實例

我們建立一個基本表 Student ,其中包括屬性學號(Sno),姓名(Sname),性別(Sex),出生時間(SBirthDay),專業(yè)(Sdept),同時對這些屬性建立完整性約束條件。

定義 Sno 為主碼;Sex 只可取值 'F'、'M' ;對 Sname和Sex建立唯一性索引,確保統(tǒng)一性別學生沒有重名。代碼如下:

CREATE TABLE Student(
    Sno CHAR(10) PRIMARY KEY,
    Sname VARCHAR(5) NOT NULL,
    Sex CHAR(1) NOT NULL CHECK(Sex='F' OR Sex='M'),
    SBirthDay DATE ,
    Sdept VARCHAR(15),
    CONSTRAINT S_UINO UNIQUE(Sname,Sno)
    )

從 Student 表的數(shù)據(jù)字典可以看出表的列名,數(shù)據(jù)類型,是否允許為空,但不可以看見完整性約束條件。


數(shù)據(jù)字典

2. 第二步:修改基本表

基本表在使用的過程中需要根據(jù)需求做出改變,這些改變包括增加列、刪除列、重命名列和表、增加完整性約束條件、刪除完整性約束條件等。修改基本表也可以叫做基本表的維護

2.1 語法格式

ALTER TABLE <表名>
[ ADD <新列名> <數(shù)據(jù)類型> [完整性約束條件] ]
[ DROP <完整性約束條件> ]
[ ALTER <列名> <數(shù)據(jù)類型> ]

有以上語法格式可分為三種操作方式:ADD、DROP、ALTER

ADD方式 可用于新增完整性約束條件,列定義同 CREATE TABLE 語句中的列定義方式相同。其語法格式為:

ALTER TABLE <表名> ADD <列定義> | <完整性約束定義>

使用此方式增加列時自動填充NULL,因為在新增列是不能同時為列加入數(shù)據(jù),所以不能將新增加的列定義為NOT NULL

DROP 方式 可以用于刪除指定的完整性約束條件或指定的,語法格式為:

ALTER TABLE <表名> DROP <完整性約束名> | <COLUMN <列名>>

在刪除列時,如果列具有如下特征則不能刪除

  1. 用于 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 約束;
  2. 用于索引
  3. 與 DEFAULE 定義管理或綁定到某一默認對象;
  4. 綁定到規(guī)則
  5. 用作表的全文鍵
  6. 已注冊支持全文

ALTER 方式 用于修改某些列的數(shù)據(jù)類型,語法如下:

ALTER TABLE <> ALTER COLUMN <列名> <新數(shù)據(jù)類型>

以上是ADD、DROP、ALTER 方式的一些基本使用方式,還有更加強大的功能等著大家去發(fā)現(xiàn)。

至于表和列的重命名需要用到存儲過程 “sp_rename”。
重命名表的格式如下:

EXEC sp_rename '原表名' ,'新表名'

重命名列的格式如下:

EXEC sp_rename '表名.原列名' ,'新列名','COLUMN'

2.2 改表實例

【實例 1 】向表 Student 中插入一列 Sadr,數(shù)據(jù)類型為 varchar(50)

ALTER TABLE Student  ADD Sadr varchar(50)

【實例 2 】向表 Student 中 SBirthDay 增加CHECK約束,使其出生年份至少在 10 年以前。

ALTER TABLE Student 
ADD CONSTRAINT SBirthDay_CHE 
CHECK (YEAR(SBirthDay)<YEAR(GETDATE())-10)

【實例 3 】刪除 Student 表中的表級完整性條件 S_UINO 。

ALTER TABLE Student DROP S_UINO

【實例 4 】將列 Sname 原數(shù)據(jù)類型 VARCHAR(5) 改為 VARCHAR(8)

ALTER TABLE Student ALTER COLUMN Sname VARCHAR(8)

【實例 5 】將列 Sadr 重命名為 Address

EXEC sp_rename 'Student.Sadr','Address','COLUMN'

【實例 6 】將表 Student 重命名為 S_Student

EXEC sp_rename 'Student','S_Student'

3. 第三步:刪除基本表

當不需再要某個表,或某個表出現(xiàn)不明錯誤無法改正,需要刪除重建時,需要用到刪除命令 DROP TABLE。刪除表時,該表中的所有屬性,完整性約束,索引,權(quán)限范圍,觸發(fā)器等都會被刪除。PROCEDURE 顯示刪除。

通過 DROP TABLE 刪除表時,存在以下限制和約束。

  1. 不能刪除被 FOREIGN KEY 約束引用的表。必須先刪除引用 FOREIGN KEY 的約束或引用表。如果要在同一個DROP TABLE 語句中刪除引用表以及包含主鍵的表,則必須先列出引用表。
  2. 刪除表時,標的規(guī)則或默認值將被解除綁定,與該表關(guān)聯(lián)的任何約束或觸發(fā)器會被自動刪除。如果要重新創(chuàng)建表,則必須重新綁定相應的規(guī)則和默認值,重新創(chuàng)建某些觸發(fā)器,并添加所有必須的約束。
  3. 如果刪除的表中包含帶有 FILESTREAM 屬性的 varbinary(max) 列,則不會刪除在文件系統(tǒng)中存儲的任何數(shù)據(jù)。
  4. 不應在同一個批處理中對同一個表執(zhí)行 DROP TABLE 和 CREATE TABLE ,否則可能出現(xiàn)意外錯誤。
  5. 任何引用已刪除表或存儲過程時都必須使用 DROP VIEW 或 DROP PROCEDURE 顯示刪除,以便刪除對該表的引用。

3.1 語法格式

DROP TABLE <表名>

3.2 刪表實例

刪除基本表 S_Student

DROP TABLE S_Student
以往的文章

數(shù)據(jù)庫探索之旅——初識數(shù)據(jù)庫
數(shù)據(jù)庫探索之旅——數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)——連接數(shù)據(jù)庫
數(shù)據(jù)庫管理系統(tǒng)——對數(shù)據(jù)庫的簡單操作
數(shù)據(jù)庫管理系統(tǒng)——數(shù)據(jù)類型
數(shù)據(jù)庫管理系統(tǒng)——完整性約束條件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容