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
      );

  • 列级约束
    • 对一个数据列建立的约束
    • 列级约束可以在列定义时声明,也可以在列定义后声明;
    • 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]...
时间: 2024-10-08 09:19:10

MySQL(三) —— 约束以及修改数据表的相关文章

MySQL数据库基础(二)(约束以及修改数据表)(持续更新中)

一,约束以及修改数据表 约束的作用?1.约束保证数据的完整性.一致性:2.约束分为表级约束.列级约束:3.约束类型包括:NOT NULL(非空约束).PRIMARY KEY(主键约束).UNIQUE KEY(唯一约束).DEFAULT(默认约束).FOREIGN KEY(外键约束): 列级约束:只针对某一个字段:表级约束:针对两个或两个以上的字段: 1.外键约束的要求解析 外键约束作用:1.保持数据一致性.完整性:2.实现一对一或一对多关系:(这是也把MySQL称之为"关系型"数据库的

MySQL学习笔记 约束以及修改数据表

*** 约束保证数据的完整性和一致性 *** 约束分为表级约束和列级约束 *** 约束类型包括: NOT NULL(非空约束) PRIMARY KEY(主键约束) UNIQUE KEY(唯一约束) DEFAULT(默认约束) FOREIGN KEY(外键约束) 1.外键约束的要求解析 *** 父表和子表必须使用相同的存储引擎,而且禁止使用临时表. *** 数据表的存储引擎只能为InnoDB. *** 外键列和参照列必须具有相似的数据类型.其中数字的长度或是否有符号位必须相同:而字符的长度则可以不

MySQL学习11:修改数据表(一)

修改数据表包括添加列.删除列.添加约束.删除约束,修改列定义和修改数据表名称,后面的两个我们使用时 一定要谨慎,尽量不使用. 下面就来一个一个单独介绍怎么修改数据表: 一添加数据表中的列 (1)添加单列 MySQL数据库的数据表中添加单列的语法格式为: ALTER TABLE table_name ADD [COLUMN] col_name columns_definition [FIRST | AFTER col_name]; 例子: SHOW COLUMNS FROM users1; ALT

约束以及修改数据表

先创建一个数据表 再创建一张数据表,让其属性pid参照上一个provinces数据表的id 主要代码为:FOREIGN KEY (pid) REFERENCES provinces(id) 查看province以及users的表索引,就可以看到两个约束,一个是主键id另一个就是pid 接下来了解外键约束的参照操作 CASCAD:从父表删除或更新且自动删除或更新子表中匹配的行 SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL.如果使用该选项,必须保证子表列没有指定NOT NUL

mysql开启远程登陆(修改数据表和授权两种方法)

一.确认防火墙没有阻止3306端口(一般服务器默认会屏蔽掉) windows防火墙例外设置方法 控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 新建规则"新建出站规则向导",在向导的第一步,选择要创建的防火墙规则类型,选择第二个"端口". windows防火墙添加端口方法 windows的防火墙做了比较大升级 设置已经分为入站和出站.控制面板\所有控制面板项\Windows 防火墙 进入 入站规则设置第一步

MySQL学习12:修改数据表(二)

我们接着上一篇的添加约束的操作讲述. 三添加约束 (3)添加外键约束 ALTER TABLE table_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] [index_type] (index_col_name,...) references_definition; 例子: ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces (id); SHOW COLUMNS

mysql修改数据表名

在使用mysql时,经常遇到表名不符合规范或标准,但是表里已经有大量的数据了,如何保留数据,只更改表名呢? 可以通过建一个相同的表结构的表,把原来的数据导入到新表中,但是这样视乎很麻烦. 能否简单使用一个SQL语句就搞定呢?当然可以,mysql5.0下我们使用这样的SQL语句就可以了. ALTER  TABLE table_name RENAME TO new_table_name 例如 ALTER  TABLE admin_user RENAME TO a_user mysql修改数据表名

MySQL学习笔记_4_MySQL创建数据表(下)

 MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines; #查看MySQL所支持的存储引擎storageengine 3. showvariables like 'table_type'; #查看默认数据表类型 MyISAM和InnoDB最常用的存储引擎[表类型] 4.指定表类型[使用哪一个存储引擎]: createtable ...() eng

修改数据表——添加删除列

修改数据表的操作,无非就是列的增加.列的删除.约束的增加和约束的删除. 修改数据表 一.添加单列的语法结构 ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name] 例如:在users表中添加一个age列,如果没有指定这个列的位置,那么它将位于所有列的最下边.如下图. FIRST的意思,将你写的这一列,放在最前头. AFTER的意思,将你写的这一列,放在指定列的后面. 若省略FIRST和