• MySQL(三) —— 约束以及修改数据表


    约束:

     1. 约束保证数据的完整性和一致性;

     2. 约束分为表级约束和列级约束;

     3. 约束类型包括:NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT, FOREIGN KEY

    •  外键约束
      • 父表和子表必须使用相同的存储引擎,而且禁止使用临时表;
      • 数据库的存储引擎只能为InnoDB;
      • 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同;
      • 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
    • 外键约束的参照操作
      • CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行;
      • SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL;
      • RESTRICT:拒绝对父表的删除或更新操作;
      • NO ACTION:标准的SQL关键字。
      • CREATE TABLE USERS (
        id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREAMENT,
        username VARCHAR(10) NOT NULL,
        pid SMALLINT UNSIGNED,
        FOREIGN KEY(pid) REFERENCES provinces (id) ON DELETE CASCADE
        );
        View Code
    • 列级约束
      • 对一个数据列建立的约束
      • 列级约束可以在列定义时声明,也可以在列定义后声明;
      • NOT NULL, DEFAULT只存在列级约束;
    • 表级约束
      • 对多个数据列建立的约束;
      • 表级约束只能在列定义后声明;

     4. 修改数据表

    • 添加单列
    • ALTER TABLE tbl_name ADD [COLUMN] col_name
      column_definition [FIRST | AFTER col_name]
    • ALTER TABLE users ADD age SMALLINT UNSIGNED DEFAULT 10 AFTER username;
    • 添加多列
    • 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 DROP PRIMARY KEY;
    • //删除唯一约束
      ALTER TABLE tbl_name DROP {INDEX | KEY} index_name
      
      //删除外键约束
      ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
      (通过SHOW CREATE TABLE tbl_name查看fk_symbol)
    • 修改列定义和更改表名称
    • //修改列定义
      ALTER TABLE tbl_name MODIFY [COLUMN] col_name
      column_definition [FIRST | 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]...
  • 相关阅读:
    使用Power Query从Web页面获取图像到Power BI报告中
    视频 |【2019】Power BI 8月产品功能更新讲解
    【2019】微软Power BI 每月功能更新系列——Power BI 8月版本功能完整解读
    视频 |【2019】Power BI 7月产品功能更新讲解
    2019 年 BI 平台 Top 14
    2016 黑客必备的Android应用都有哪些?
    J2EE完全手册(二)
    JavaBean ,Enterprise Bean(EJB), 三种Bean, 以及POJO
    J2EE完全手册(一)
    J2EE简介
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/5423115.html
Copyright © 2020-2023  润新知