MySQL創建和操縱表.md

21.1 創建表

創建表的方式有兩種,
1. 使用交互式創建和管理表的工具;
2. 表也可以直接使用MySQL語句操縱。

21.1.1 表創建基礎

使用CREATE TABLE,必須給出如下信息,
1. 在CREATE TABLE之後,給出新表的名稱;
2. 表列的名字和定義,用逗號分隔;
3. 表的主鍵PRIMARY KEY可以在創建表時給出;
4. 最終給出使用的數據庫類型。

CREATE TABLE customers
(
    cust_id    int    NOT NULL AUTO_INCREMENT,
    cust_name    char(50)    NOT NULL,
    cust_address    char(50)    NULL,
    cust_city    char(50)    NULL,
    cust_state    char(5)    NULL,
    cust_zip    char(10)    NULL,
    cust_country    char(50)    NULL,
    cust_contact    char(50)    NULL,
    cust_email    char(255)    NULL,
    PRIMARY KEY    (cust_id)
)    ENGINE=InnoDB;

分析,當創建新表時,若已經存在表,需要先刪除,否則會報錯。當表不存在時創建它,需要使用IF NOT EXISTS

21.1.2 使用NULL

  1. 若創建表時,不允許NULL值的列。如果強行插入,會報錯,且插入失敗。
    • 不要把NULL值和空串(兩個單引號,中間沒有字符'')混淆。空串是個有效值。

21.1.3 主鍵再介紹

     主鍵必須唯一。即每個行必須具有唯一的主鍵值。通常使用的都是單列作爲主鍵。爲創建由多個列組成的主鍵,應該以逗號分割的列表給出各列名,如下

CREATE TABLE orderitems
(
    order_num    int    NOT NULL,
    order_item    int    NOT NULL,
    prod_id        char(10)    NOT NULL,
    quantity        int    NOT NULL,
    item_price    decimal(8, 2)    NOT NULL,
    PRIMARY KEY (order_num, order_item)
)    ENGINE=InnoDB

21.1.4 使用AUTO_INCREMENT

  • 簡要說明下需要注意的地方,
    1. 覆蓋AUTO_INCREMENT。如果一個列被指定爲AUTO_INCREMENT,當想要使用特殊值,只需要賦值一個唯一值即可,後續的增量開始於手工值。
    2. 可以使用last_insert_id來獲取AUTO_INCREMENT的增量值。SELECT last_insert_id

21.1.5 指定默認值

使用默認值,需要使用DEFAULT關鍵字
- 與大多數的DBMS不同,MySQL不允許使用函數作爲默認值

21.1.6 引擎類型

MySQL打包了多個引擎。由於各自的功能和特性,爲不同的認爲選擇正確的引擎獲取良好的功能和靈活性。
1. InnoDB是一個可靠的事務處理引擎,不支持全文檢索;
2. MEMORY在功能上等同於MyIASM,但數據存儲在內存,速度很快,適合臨時表
3. MyISAM是一個性能極高的引擎,支持全文檢索
- 引擎可以混用,但是外鍵不能跨引擎。一個引擎的表不能引用具有使用不同引擎的表的外鍵。

21.2 更新表

     使用ALTER TABLE語句,但理想狀況下,不期望做更新表的動作,都在創建前進行考慮。爲使用ALTER TABLE更改表結果,必須提高一下信息,
1. 在ALTER TABLE之後給出表名稱;
2. 所做更改的列表。
如下,添加和刪除列,

ALTER TABLE vendors
ADD vend_phone CHAR(20);

ALTER TABLE vendors
DROP COLUMN vend_phone;

複製的表結果更改,需要進行手動刪除操作,
1. 用新的列布局創建一個新表;
2. 使用INSERT SELECT語句從舊錶中複製數據。如有必要,使用轉換函數和計算字段;
3. 檢驗包含數據的新表;
4. 重命名舊錶;
5. 用舊錶的名稱重命名新表;
6. 根據需要,重新創建觸發器、存儲過程、索引和外鍵。

21.3 刪除表

     刪除表的操作,使用DROP TABLE語句

DROP TABLE customer32
  • 注意,沒有撤銷操作

21.4 重命名錶

     重命名錶的操作,使用RENAME TABLE語句

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章