mysql約束和修改資料表
1.父表子表必須使用相同的儲存引擎,而且禁止使用臨時表。
2.資料表的儲存引擎只能為INNODB.
3.外來鍵列於參照列必須具有相似的資料型別。數字長度和是否有符號位必須相同;
字元的長度可以不同。
4.外來鍵列和參照列必須建立索引。如果外來鍵列不存在索引,mysql將自動建立索引。
外來鍵約束的參照操作:
1.CASCADE:從父表刪除或更新且自動刪除或更新子表中的匹配的行
2.SET NULL: 從父表刪除或更新行,並設定子表的外來鍵列為NULL。如果使用該
選項,必須保證子表列沒有指定NOT NULL
3.RESTRICT:拒絕對父表的刪除或更新操作。
4.NO ACTION:標準的SQL的關鍵字,在mysql中與RESTRICT相同。
表級約束和列級約束:
對一個數據列建立的約束,是列級約束,
對多個數據列建立的約束,是表級約束,
列級約束可以在列定義時宣告,也可以在列定義後宣告。
表級約束只能在列定義後宣告。
修改資料表:
1.新增單列:ALTER TABLE tb1_name ADD [COLUMN] col_name column_definition[FIRST| AFTER col_name]
2.新增多列:ALTER TABLE tb1_name ADD [COLUMN] col_name column_definition,...
3.刪除列:ALTER TABLE tb1_name DROP [COLUMN] col_name
4.新增主鍵約束:ALTER TABLE tb1_name ADD[CONSTRAINT[symbol]]
PRIMARY KEY[index_type](index_col_name,...)
5.新增唯一約束:ALTER TABLE tb1_name ADD[CONSTRAINT[symbol]]
UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
6.新增外來鍵約束:ALTER TABLE tb1_name ADD[CONSTRAINT[symbol]]
FOREIGN KEY[index_type](index_col_name,...)
reference_definition
7.新增/刪除預設約束:ALTER TABLE tb1_name ALTER[COLUMN] col_name
{AET DEFAULT literal|DROP DEFAULT}
8.刪除主鍵約束:ALTER TABLE tb1_name DROP PRIMARY KEY
9.刪除唯一約束: ALTER TABLE tb1_name DROP index_name
10.刪除外來鍵約束:ALTER TABLE tb1_name DROP FOREIGN KEY fk_symbol
11.修改列定義: ALTER TABLE tb1_name MODIFY [COLUMN] col_name
colcumn_definition [FIRST|AFTER col_name]
12.修改列的名稱:ALTER TABLE tb1_name CHANGE [COLUMN] old_col_name
new_col_name colcumn_definition [FIRST|AFTER col_name]
13.資料表更名:方法一:ALTER TABLE tb1_name RENAME new_tb2_name
方法二:RENAME TABLE tb1_name TO new_tb2_name