MySQL(三) —— 約束以及修改資料表

來源:互聯網
上載者:User

標籤:

約束:

 1. 約束保證資料的完整性和一致性;

 2. 約束分為表級約束和資料行層級條件約束;

 3. 約束類型包括:NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT, FOREIGN KEY

  •  外鍵約束
    • 父表和子表必須使用相同的儲存引擎,而且禁止使用暫存資料表;
    • 資料庫的儲存引擎只能為InnoDB;
    • 外鍵列和參照列必須具有相似的資料類型。其中數位長度或是否有符號位必須相同;而字元的長度則可以不同;
    • 外鍵列和參照列必須建立索引。如果外鍵列不存在索引的話,MySQL將自動建立索引。
  • 外鍵約束的參照操作
    • CASCADE:從父表刪除或更新且自動刪除或更新子表中匹配的行;
    • SET NULL:從父表刪除或更新行,並設定子表中的外鍵列為NULL。如果使用該選項,必須保證子表列沒有指定NOT NULL;
    • RESTRICT:拒絕對父表的刪除或更新操作;
    • NO ACTION:標準的SQL關鍵字。
    • CREATE TABLE USERS (id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREAMENT,username VARCHAR(10) NOT NULL,pid SMALLINT UNSIGNED,FOREIGN KEY(pid) REFERENCES provinces (id) ON DELETE CASCADE);
      View Code
  • 資料行層級條件約束
    • 對一個資料列建立的約束
    • 資料行層級條件約束可以在列定義時聲明,也可以在列定義後聲明;
    • NOT NULL, DEFAULT只存在資料行層級條件約束;
  • 表級約束
    • 對多個資料列建立的約束;
    • 表級約束只能在列定義後聲明;

 4. 修改資料表

  • 添加單列
  • ALTER TABLE tbl_name ADD [COLUMN] col_namecolumn_definition [FIRST | AFTER col_name]

     

  • ALTER TABLE users ADD age SMALLINT UNSIGNED DEFAULT 10 AFTER username;

     

  • 添加多列
  • ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition, ...)

     

  • 刪除一列
  • ALTER TABLE tbl_name DROP [COLUMN] col_name

     

  • 添加主鍵約束
  • ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]]PRIMARY KEY [index_type] (index_col_name, ...)

     

     

  • 刪除主鍵約束
  • ALTER TABLE tbl_name DROP PRIMARY KEY;

     

  • //刪除唯一約束ALTER TABLE tbl_name DROP {INDEX | KEY} index_name//刪除外鍵約束ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol(通過SHOW CREATE TABLE tbl_name查看fk_symbol)

     

  • 修改列定義和更改表名稱
  • //修改列定義ALTER TABLE tbl_name MODIFY [COLUMN] col_namecolumn_definition [FIRST | AFTER col_name]//修改列名稱ALTER TABLE tbl_name CHANGE [COLUMN] old_col_namenew_col_name column_definition [FIRST|AFTER col_name]//修改資料表的名稱//法一:ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name//法二:RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2]...

     

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.