5.MySQL约束以及修改数据表

约束

  1. 约束保证数据的完整性和一致性
  2. 约束分为表级约束和列级约束
  3. 约束类型包括:
    1. NOT NULL
    2. PRIMARY KEY
    3. UNIQUE KEY
    4. DEFAULT
    5. FOREIGN KEY

外键约束

  • FOREIGN KEY
  • 保持数据一致性,完整性
  • 实现一对一或一对多关系
5.MySQL约束以及修改数据表_第1张图片
外键约束
CREATE TABLE province(
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    pname VARCHAR(20) NOT NULL
);

CREATE TABLE users(
    id  SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(30) NOT NULL,
    pid SMALLINT UNSIGNED,
    FOREIGN KEY(pid) REFERENCES province(id)
);
5.MySQL约束以及修改数据表_第2张图片
外键
CREATE TABLE users2(
    id  SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(30) NOT NULL,
    pid SMALLINT UNSIGNED,
    FOREIGN KEY(pid) REFERENCES province(id) ON DELETE CASCADE
);

表级约束与列级约束

对一个数据列建立的约束,成为列级约束。NOT NULL等。

对多个数据列建立的约束,成为表级约束。PRIMARY KEY等。

列级约束既可以在列定义时声明,也可以在列定义后声明。

表级约束只能在列定义后声明。

修改数据表

添加单列

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

添加多列

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

删除列

ALTER TABLE tbl_name DROP [COLUMN] col_name

添加主键约束

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

添加唯一约束

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

添加外键约束

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) reference_definition

添加/删除默认约束

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

删除主键约束

ALTER TABLE tbl_name DROP PRIMARY KEY

删除唯一约束

ALTER TABLE tbl_name DROP {INDEX|KEY} index_name

删除外键约束

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol

修改列定义

ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRT | AFTER col_name]

修改列名称

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

修改表名称

  • 方法一
ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
  • 方法二
RENAME TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2]...

你可能感兴趣的:(5.MySQL约束以及修改数据表)