约束以及修改数据表
约束
1,约束保证数据的完整行和一致性。
2,约束分为表级约束和列级约束。
3,约束类型包括:
NOT NULL(非空约束)
PRIMARY KEY(主键约束)
UNIQUE KEY (唯一约束)
DEFAULT (默认约束)
FOREIGN KEY (外键约束)
外键约束的要求
1,父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2,数据表的存储引擎必须为INNODB
配置文件 default-storage-engine=INNODB
3,外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同。
4,外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引。
外键约束语句:
FOREIGN KEY(子表列名) REFERENCES 父表名(父表列名)
外键约束的参照操作
1,CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行
举例:FOREIGN KEY(列名) REFERENCES 父表名(父列名) ON DELETE CASCADE
2,SET NULL: 从父表删除货更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL。
3,RESTRICT: 拒绝对父表的删除或更新操作。
4,NO ACTION: 标准SQL关键字,在MySQL中与RESTRICT相同
添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名) ;
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY[index_type](index_col_name,...)
删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY;
添加外键约束
ALTER TABLE 表名 ADD FOREIGN KEY(外键列) references 父表名(参照列);
删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY `外键名`;
添加唯一约束
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX | KEY]
[index_name] [index_type] (index_col+name,...)
添加/删除默认约束
ALTER TABLE tbl_name ALTER[COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
修改字段数据类型
ALTER TABLE `Mierx`.`jt` CHANGE `时间` `时间` DATETIME NULL;
删除索引
ALTER TABLE 表名 DROP INDEX 索引名
普通索引创建
1,ALTER TABLE 表名 ADD INDEX 索引名(列名)
2,CREATE INDEX 索引名 ON 表名(列名)
3,创建表的时候指定索引,