mysql约束和修改数据表

FOREIGN KEY(外键约束)要求:
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

你可能感兴趣的:(数据库)