约束:

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. Ubentu搭建nfs服务器

    搭建nfs服务    功能:完成在线调试程序,远程挂载,在线调试    NFS(Network FileSystem,网络文件系统)是由SUN公司发展,并于1984年推出的技术,用于不同机器,不同操作 ...

  2. TP主从服务器配置

    在config.php文件中,设置‘DB_DEPLOY_TYPE’=>1,‘DB_HOST’=>‘localhost,192.168.0.1,192.168.0.23’,各个主机之间用逗号 ...

  3. error CS0007: Unexpected common language runtime initialization error -- '没有注册类别 '

    Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]"Inst ...

  4. DIV怎样能够垂直居中

    这里只说固定宽高的情况: 1.Top:50%; 2.margin-top:-(height/2); 就这样. 不过很好奇有没有v-align之类的属性可以直接实现.

  5. Tomcat内存溢出解决办法

    使用Java程序从数据库中查询大量的数据时出现异常:java.lang.OutOfMemoryError: Java heap space在JVM中如果98%的时间是用于GC且可用的 Heap siz ...

  6. python编码:gbk编码与解码

    从RF输入的中文会进行unicode编码:u'\u6587\u4ef6\u5230\u8fbe\u6210\u529f' 从orc数据库查询到的中文会进行gbk编码得到ASCII:'\xce\xc4\ ...

  7. iptables的四表五链

    iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables.真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构. iptables包含4个表, ...

  8. centos7.1-64bit延时截屏

    centos自带了截屏的软件,而且还能延时截屏. 在桌面左上角的应用程序菜单里: “应用程序”->“工具”->“截图” 设定延时秒数,点击“截图”按钮,开始截图. 完.

  9. POJ 3903:Stock Exchange(裸LIS + 二分优化)

    http://poj.org/problem?id=3903 Stock Exchange Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  10. mysql5.5.x升级到mysql5.6.x

    大概步骤是: 把配置文件添加:skip-grant-tables参数,把basedir升级成新版本,启动mysql,执行命令:mysql_upgrade升级一下字典信息,然后flush privile ...