MySQL學習12:修改資料表(二)

來源:互聯網
上載者:User

標籤:

        我們接著上一篇的添加約束的操作講述。

        三添加約束        (3)添加外鍵約束

        ALTER TABLE table_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] [index_type] 

(index_col_name,...) references_definition;

        例子:

        ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);

        SHOW COLUMNS FROM users2;


        (4)添加預設約束        ALTER TABLE table_name ALTER [COLUMN] col_name {SET DEFAULT literal} ;

        例子:

        首先添加一列要做為預設約束的欄位:

        ALTER TABLE users2 ADD age TINYINT UNSIGNED NOT NULL;

        SHOW COLUMNS FROM users2;


        添加預設約束age欄位為預設值為15:

        ALTER TABLE users2  ALTER age SET DEFAULT 15;

        SHOW COLUMNS FROM users2;


        四刪除約束        (1)刪除主鍵約束

        刪除主鍵約束文法格式(由於一張資料表只有一個主鍵,因此不用加上列明):

        ALTER TABLE table_name DROP PRIMARY KEY;

        例子:

        ALTER TABLE users2  DROP PRIMARY KEY;

        SHOW COLUMNS FROM users2;


        (2)刪除唯一約束

        刪除唯一約束的文法格式(一張資料表可以有多個唯一約束):

        ALTER TABLE table_name DROP {INDEX|KEY} index_name;

        例子:

        先來查看有索引的欄位名稱,找到唯一限制欄位:

        SHOW INDEXES FROM users2\G;


        ALTER TABLE users2  DROP INDEX username;

        SHOW COLUMNS FROM users2;


        (3)刪除外鍵約束        ALTER TABLE table_name DROP FOREIGN KEY fk_symbol;

        例子:

        先來查看外鍵約束:

        SHOW CREATE TABLE users2;


        由此知道外鍵約束的名稱為users2_ibfk_1,因此可以刪除外鍵約束:

        ALTER TABLE users2 DROP REIGN KEY users2_ibfk_1;

        SHOW CREATE TABLE users2;


        (4)刪除預設約束

        刪除預設約束的文法格式為:

        ALTER TABLE table_name ALTER [COLUMN] col_name {DROP DEFAULT};

        例子:

        ALTER TABLE users2  ALTER age DROP DEFAULT;

        SHOW COLUMNS FROM users2;


        五修改列定義和更名資料表        (1)修改列定義

        修改列定義文法格式:

        ALTER TABLE table_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name];

        例子:

        1)如果我們看到資料表的id欄位並沒有在第一列,要是改到第一列需要這樣做:

        SHOW COLUMNS FROM users2;

        ALTER TABLE users2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;

        SHOW COLUMNS FROM users2;


        2)我們也可以修改欄位的資料類型:

        SHOW COLUMNS FROM users2;

        ALTER TABLE users2 MODIFY id TINYINT UNSIGNED NOT NULL FIRST;

        SHOW COLUMNS FROM users2;


        大資料類型改到小資料類型會造成資料的丟失。謹慎使用改變資料類型。因此這就需要我們在進行資料庫設計的

時候一定要事先設計好欄位的資料類型,避免不必要的麻煩。

        (2)修改列名稱

        修改列名稱的文法格式:

        ALTER TABLE table_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST |

 AFTER col_name];

        例子:修改列名稱和列的資料類型

        SHOW COLUMNS FROM users2;
        ALTER TABLE users2 CHANGE pid p_id TINYINT UNSIGNED NOT NULL;

        SHOW COLUMNS FROM users2;

        (3)修改資料表名稱

        修改資料表名稱的方式有兩種:

        方法1:

        ALTER TABLE table_name RENAME [TO|AS] new_table_name;

        方法2:

        RENAME TABLE table_name TO new_table_name [,table_name2 To new_table_name2] ...;

        例子:

        SHOW TABLES;

        ALTER TABLE users2 RENAME users3;

        SHOW TABLES;


        我們再來使用另一種方法修改資料表名稱:

        RENAME TABLE users3 TO users2;

        SHOW TABLES;


        我們應該盡量少使用修改列定義和資料表名稱,可能導致視圖或預存程序不能使用。

        總結:

        修改資料表

        針對欄位的操作:添加/刪除欄位、修改列定義,修改列名稱等。

        針對約束的操作:添加/刪除各種約束。

        針對資料表的操作:資料表更名(兩種方式)。



MySQL學習12:修改資料表(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.