约束

  • 1.约束保证数据的完整性和一致性。
  • 2.约束分为表级约束和列级约束。
  • 3.约束类型包括:
    NOT NULL(非空约束)
    PRIMARY KEY(主键约束)
    UNIQUE KEY(唯一约束)
    DEFAULT(默认约束)
    FOREIGN KEY(外键约束)

    外键约束

保证数据一致性,完整性。
实现一对一或一对多关系。

  • 外键约束的要求

1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2.数据表的存储引擎只能为InnoDB。
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

  • 编辑数据表的默认存储引擎

MySQL配置文件

1
default-storage-engine=INNODB
  • 外键约束的参照操作
参考操作 说明
CASCADE 从父表删除或更新且自动删除或更新子表中匹配的行
SET NULL 从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
RESTRICT 拒绝对父表的删除或更新操作
NO ACTION 标准SQL的关键字,在MySQL中与RESTRICT相同
  • 表级约束与列级约束

对一个数据列建立的约束,称为列级约束。
对多个数据列建立的约束,称为表级约束。
列级约束既可以在列定义时声明,也可以在列定义后声明。
表级约束只能在列定义后声明。

  • 修改数据表

添加单列

1
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]

添加多列

1
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)

删除列

1
ALTER TABLE tbl_name DROP [COLUMN] col_name

对某张表执行多个动作,如删除多列

1
ALTER TABLE tbl_name DROP [COLUMN] col_name, DROP [COLUMN] col_name

添加主键约束

1
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY [index_type] (index_col_name,...)

添加唯一约束

1
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)

添加外键约束

1
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_name] (index_col_name) REFERENCES tbl_name (col_namme)

添加或删除默认约束

1
ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal|DROP DEFAULT}

删除主键约束

1
ALTER TABLE tbl_name DROP PRIMARY KEY

删除唯一约束

1
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name

删除外键约束

1
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol

修改列定义

1
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]

修改列名称

1
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

修改表名

1
2
ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
RENAME TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2]...

评论