约束:

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]...

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

  1. MYSQL中约束及修改数据表

    MYSQL中约束及修改数据表 28:约束约束保证数据的完整性和一致性约束分为表级约束和列级约束约束类型包括:    NOT NULL(非空约束)    PRIMARY KEY(主键约束)    UNI ...

  2. mysql之约束以及修改数据表

    数据约束的分类: ———————————————————————————————————————————————————— 外键约束的要求解析: //在my文件中的这句话代表着搜索引擎,如果不是的就需 ...

  3. MySQL数据库基础(二)(约束以及修改数据表)

    一,约束以及修改数据表 约束的作用?1.约束保证数据的完整性.一致性:2.约束分为表级约束.列级约束:3.约束类型包括:NOT NULL(非空约束).PRIMARY KEY(主键约束).UNIQUE ...

  4. MySQL基础(二)(约束以及修改数据表)

    一,约束以及修改数据表 约束的作用?1.约束保证数据的完整性.一致性:2.约束分为表级约束.列级约束:3.约束类型包括:NOT NULL(非空约束).PRIMARY KEY(主键约束).UNIQUE ...

  5. MySQL约束和修改数据表知识集结

    一.约束 划分标准:功能.数据列的数目 功能: (1)NOT NULL(非空约束) (2)PRIMARY KEY(主键约束) (3)UNIQUE(唯一约束) (4)DEFAULT(默认约束) (5)F ...

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

    一.确认防火墙没有阻止3306端口(一般服务器默认会屏蔽掉) windows防火墙例外设置方法 控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 ...

  7. MySQL--3约束和修改数据表总结

  8. 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据

    创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名   数据类型    是否为空   自动排序/默认值  主键/外键/唯一键, 列名   数据类型 ...

  9. MySQL修改数据表存储引擎的3种方法介绍

    这篇文章主要介绍了MySQL修改数据表存储引擎的3种方法介绍,分别是直接修改.导出导入.创建插入3种方法, 可以参考下   MySQL作为最常用的数据库,经常遇到各种各样的问题.今天要说的就是表存储引 ...

随机推荐

  1. 创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备

    一.包管理工具及CentOS的yum 1.包管理工具如何发现可以用的包 包管理工具依赖一系列软件源,工具下载源的信息存储在配置文件中,其位置随某包管理工具不同而变化 使用yum的RedHat/Cent ...

  2. Yii框架,在页面输出执行sql语句,方便调试

    1.下载yiidebugtb,并且放入到 application.extensions.yiidebugtb 目录 2.修改main.php,加入如下代码: 'log'=>array( 'cla ...

  3. Yii2.0 查询(CRUD)

    yii2使用中的一些基本的增删改查操作.以用户为例说明: User::find()->all();    //返回所有用户数据:   User::findOne($id);   //返回 主键 ...

  4. ionic入门之AngularJS扩展基本布局

    目录: 标题栏 : ion-header-bar 页脚栏 : ion-footer-bar header/footer : 样式及内容 内容区 : ion-content 滚动框 : ion-scro ...

  5. Openstack的error僵尸实例的解决办法

    在我们对集群环境进行各种调整的情况下,很容易产生一些僵尸实例. 僵尸实例主要是没有该主机,但是在dashboard上,数据库中存在,解决办法网络上有的人给出了繁杂的修改数据库的方法,其实按照下面的命令 ...

  6. Java字符串排列算法

    Java字符串排列算法 题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多取到16个 共有多少种组合方式? 比如:取1个球可以构成的组合有 A B C D E 共5种,取2个球可以构成的组 ...

  7. 28、Oracle(四)用户权限控制

    一)用户Oracle中的用户分为二大类1)Oracle数据库服务器创建时,由系统自动创建的用户,叫系统用户,如sys.2)利用系统用户创建的用户,叫普通用户,如scott,hr,c##tiger,zh ...

  8. Java获取当前第几周【转】

    本文copy自:http://swxzqsd.blog.sohu.com/156208509.html 作者:camelcanoe String today = "2010-01-11&qu ...

  9. ACM第四站————最小生成树(克鲁斯卡尔算法)

    都是生成最小生成树,库鲁斯卡尔算法与普里姆算法的不同之处在于——库鲁斯卡尔算法的思想是以边为主,找权值最小的边生成最小生成树. 主要在于构建边集数组,然后不断寻找最小的边. 同样的题目:最小生成树 题 ...

  10. 温故而知新 clone

    浅复制(浅克隆) 被复制对象所有变量都含有与原来对象的相同值,对象中对其他对象的引用仍然指向原来的对象,换言之,复制对象只复制考虑的对象,而不复制所引用的对象.继承自java.lang.Object类 ...