mysql约束以及修改数据表

时间:2021-08-15 04:43:27

约束类型 包括;

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不能。