约束类型 包括;
NOT NULL(非空约束)
PRIMARY KEY(主键约束,只能有一个)
UNIQUE KEY (唯一约束,可以有多个)
DEFAULT (默认约束)
FOREGIN KEY(外键约束)
其中外键列和参照了必须具有相似的数据类型,其中数字长度或是否有符号位都必须相同,字符长度可以不同,
------------外键约束的参照操作------------
CASCADE 为父表删除或更新 且自动删除或更新子表中匹配的行,
SET NULL 为父表删除或更新行,并设置子表的外键列为NULL,此时必须保证子表没有指定NOT NULL;
RESTRICT 拒绝对父表更新或删除操作;
NO ACTION 标准的aql语句,在mysql中与RESTRICT 相同;
添加主键约束:ALTER TABLE table_namae ADD [CONSTRAINT[主键名字]] PRIMARY KEY [INDEX_TYPE] (INDEX_COL_NAME)
比如:ALTER TABLE user ADD constraint PRIMARY KEY (id);
添加唯一约束:ALTER TABLE table_namae ADD [CONSTRAINT[唯一约束名字]] UNIQUE (INDEX_NAME) 比如:ALTER TABLE user ADD constraint PRIMARY KEY (id);
删除主键约束:ALTER TABLE table_namae DROP PRIMARY KEY;
删除唯一约束:ALTER TABLE 表名称 DROP {INDEX|KEY} 约束的名称 ;(show indexs from 表查看唯一字段的约束名称然后删除)
修改列定义:
ALTTER TABLE tablename CHANGE [COLUMN] old_col_name colum_defineition----[FIRST|AFTER col_name]
例如:ALTER TABLE EMP CHANGE age age1 int(4);ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST |AFTER col_name];
eg:
ALTER TABLE users2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;
注意;change 和 modify 都可以修改表的定义,不同的是 change需要写两次列名,不方便,但是change的优点是可以修改名称但是modify不能。