MySQL 入門(五)—— 表的建立、修改和刪除

來源:互聯網
上載者:User

標籤:

表是DB儲存資料的基本單位,一個表包含若干個欄位或記錄。表的操作包括建立、修改和刪除。

1、建立表

建立表即在已存在的資料庫中創立新表。在使用USE語句選擇具體資料庫後,可以使用它SQL語句建立表

其中,屬性名稱指表中欄位的名稱,資料類型即對應欄位的資料類型,完整性條件約束條件指對應欄位的某些特殊約束條件。
MySQL中基本的完整性條件約束條件有

1.1 設定表的主鍵

主鍵是表的一個特殊欄位,該欄位能唯一地表示該表中的每條資訊,即主鍵如同表中記錄的身份證。主鍵的主要目的在於協助MySQL以最快的速度尋找表中的某一條資訊。主鍵必須按滿足唯一性,表中任意提兩條記錄的主鍵欄位的值不可相同,主鍵的值為非空值。主鍵可以是單一的欄位也可以是多個欄位的組合。
對於單欄位主鍵只要在建立表時使用下屬語句即可

屬性名稱 資料類型 PRIMARY KEY

對於多欄位主鍵,要在屬性定義完後統一設定主鍵,如

即用stu_id和course_id兩個欄位組合來唯一確定一條記錄。

1.2 設定表的外鍵

如果欄位a是表A的屬性,且依賴於表B的主鍵,那麼,稱表B為父表,表A為子表,a為表A的外鍵。通過欄位a將父表B和子表A建立了關聯關係,即外鍵的作用在於建立該表與其父表的關聯關係。當父表中刪除某條資訊時,子表中與之對應的資訊也必須有相應的改變,來保證資訊的完整性。
在建立表時的設定外鍵的基本文法為

其中,外鍵別名指外鍵的代號,屬性一列表指子表中設定的外鍵,屬性二列表指父表的主鍵,而表名指父表的名稱。如

注意,子表的外部索引鍵關聯的必須是父表的主鍵,且資料類型必須一致。

1.3 設定表的非空約束

非空性指欄位的值不可為空值NULL。基本文法為

屬性名稱 資料類型 NOT NULL

當在有非空約束的欄位上插入的記錄對應該欄位的值為空白時,系統將儲存並不接受此次插入。

1.4 設定表的唯一性限制式

唯一性是指所有記錄中該欄位的值不可重複出現。基本文法為

屬性名稱 資料類型 UNIQUE

1.5 設定表的屬性值自動增加

AUTO_INCREMENT是MySQL資料庫中的一個特殊約束條件,主要用於為表中插入的新紀錄自動產生唯一的ID。基本文法為

屬性名稱 資料類型 AUTO_INCREMENT

一個表只能有一個欄位使用該約束,且該欄位必須為主鍵的一部分,該欄位可以是任何整數類型。預設情況下,該欄位的值從1開始自增。如果第一條記錄設定了該欄位的初值,則後續新增加的記錄就從初值開始自增。

1.6 設定表的屬性的預設值

對於設定了預設值的欄位,在新插入記錄時如果沒有為這個欄位賦值,則系統自動為其賦予此預設值。基本文法為

屬性名稱 資料類型 DEFAULT 預設值

2、查看錶結構

查看錶結構指查看DB中已存在的表的定義,包括DESCRIBE語句和SHOW CREATE TABLE語句。

2.1 DESCRIBE語句

可查看錶的基本定義,包括欄位名、欄位資料類型、是否為主外鍵、預設值和額外資訊。
基本文法為

DESCRIBE 表名;

2.2 SHOW CREATE TABLE語句

可查看錶的詳細定義,包括欄位名、欄位資料類型、完整性條件約束條件等定義時的資訊,以及預設的儲存引擎和字元編碼。同樣可用\G結尾代替;使得顯示結果更美觀。

3、修改表

修改表是指修改資料庫中已存在的表的定義。
通過Alter Table語句來修改表,包括修改表名、修改欄位資料類型、修改欄位名、增加欄位、刪除欄位、修改欄位的排列位置、更改預設儲存引擎和刪除表的外鍵約束等。

3.1 修改表名

文法為

ALTER TABLE 舊錶名 RENAME [TO] 新表名;

其中To是選擇性參數,其是否在語句中出現不會影響語句的執行。

3.2 修改欄位名

基本文法為

ALTER TABLE 表名 Change 舊屬性名稱 新屬性名稱 新資料類型;

如果只修改欄位名不修改欄位資料類型,則保持新資料類型與原來一致即可。

3.3 修改欄位的資料類型

基本文法為

ALTER TABLE 表名 MODIFY 屬性名稱 新資料類型;

3.4 增加欄位

基本文法為

ALTER TABLE 表名 ADD 屬性名稱1 資料類型 [完整性條件約束條件] [FIRST | AFTER 屬性名稱2];

其中FIRST為選擇性參數,用於將新增欄位設定為表的第一個欄位,AFTER屬性名稱2也為選擇性參數,使用者將新增欄位放到屬性名稱2後面,如果這兩個選擇性參數都不選,新增欄位將預設放到表的最後一個欄位。
實際上,對於一個資料表而言,其中欄位的排列順序對錶不會有什麼影響,只是對於建立的人來說,將有某種直接或間接聯絡的欄位放在一起,便於理解這個表的結構。

3.5 增加欄位

基本文法為

ALTER TABLE 表名 DROP 屬性名稱;

3.6 修改欄位的排列位置

基本文法為

ALTER TABLE 表名 MODIFY 屬性名稱1 資料類型 FIRST | AFTER 屬性名稱2;

3.7 更改表的儲存引擎

基本文法為

ALTER TABLE 表名 ENGINE=新儲存引擎名;

如果一個表中已經存在了很多資料,最好不要輕易更改其儲存引擎。

3.8 刪除表的外鍵約束

即斷開表與其父表之間的關聯關係基本文法為

ALTER TABLE 表名 DROP FOREIGN KEY 外鍵別名;

4、刪除表

刪除表會刪除表中的所有資料,由於建立表時可能存在外鍵約束,一些表成為了與之關聯的表的父表,要刪除這些父表,情況比較複雜。

4.1 刪除沒有被關聯的普通表

基本文法為

DROP TABLE 表名;

4.2 刪除被關聯的父表

此時由於有外鍵依賴於該表,用4.1的刪除文法會報錯。
刪除此類父表一般有兩種方法:直接先將與之關聯的子表刪除再刪父表,或者先刪除子表的外鍵約束再刪父表,一般我們採取第二種方法。

MySQL 入門(五)—— 表的建立、修改和刪除

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.