1.整体说明
(1)讨论重点内容
    not null 与default
    unique:表中该值唯一,不能有重复值
    primary
    auto_increment
    foreign key
(2)约束条件与数据类型的宽度一致,都是可选参数
(3)作用:用于保证数据的完整性和一致性。
(4)主要分为如下:

PRIMARY KEY (PK)    #标识该字段为该表的主键,可以唯一的标识记录
    FOREIGN KEY (FK)    #标识该字段为该表的外键
    NOT NULL    #标识该字段不能为空
    UNIQUE KEY (UK)    #标识该字段的值是唯一的
    AUTO_INCREMENT    #标识该字段的值自动增长(整数类型,而且为主键)
    DEFAULT    #为该字段设置默认值

UNSIGNED #无符号
    ZEROFILL #使用0填充
(5)其他说明如下:
    #1. 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值
    #2. 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值
    sex enum('male','female') not null default 'male'

#必须为正值(无符号) 不允许为空 默认是20
    age int unsigned NOT NULL default 20
    # 3. 是否是key
    主键 primary key
    外键 foreign key
    索引 (index,unique...)

2.not null 与default
(1)默认值可以为空。
(2)设置not null时,插入值时不能为空。
(3)设置id字段有默认值后,则无论id字段是null还是not null,都可以插入空,插入空值时默认填入default指定的默认值。

3.unique:唯一
(1)包括单列唯一、多列唯一以及联合唯一。
    create table user4(
        id int unique,
        name char(20)
    );

create table user4(
        id int,
        name char(20),
        unique(id)
    );
(2)单列唯一
    create table user4(
        id int unique,
        name char(20)
    );
(3)多列唯一
     多列都不相同才可以插入,只要有一列相同都不能插入
    create table user5(
        id int unique,
        name char(20),
        ip char(30)unique
    );

(4)联合唯一
    只要有一列不同 都可以插入。
    create table user6(
        id int,
        name char(20),
        ip char(30),
        unique(id,ip)
    );

4.primary key
在MySQL的一个表中只有唯一的一个主键,不能有多列主键,但可以有复合主键

一个表中可以:

单列做主键
多列做主键(复合主键)

5.auto_increment
(1)不指定ID,则自动增长
(2)指定ID则按照指定的ID增长
(3)对于自增的字段,在用delete删除后,再插入值,该字段仍按照删除前的位置继续增长

6.foreign key

create table emp(
    id int primary key,
    name varchar(20) not null,
    age int not null,
    dep_id int,
    constraint fk_dep foreign key(dep_id) references dep(id)
    on delete cascade #同步删除
    on update cascade #同步更新
);

05-MySQL的完整性约束的更多相关文章

  1. MySQL表完整性约束

    =======MySQL表完整性约束====== 目录: 一.介绍 二.not null 与 default 三.unique 四.primary key 五.auto_increment 六.for ...

  2. mysql之完整性约束

    主要内容 not null 与 default unique primary auto_increment foreign key 约束条件作用:用于保证数据的完整性和一致性 主要分为 PRIMARY ...

  3. 【MySQL】完整性约束

    " 目录 not null default unique 单列唯一 联合唯一 primary key 单列主键 复合主键 auto_increment 步长与偏移量 foreign key ...

  4. Java面试05|MySQL及InnoDB引擎

    1.InnoDB引擎索引 InnoDB支持的索引有以下几种: (1)哈希索引 (2)全文索引 (1)B+树索引 又可以分为聚集索引与辅助索引 索引的创建可以在CREATE TABLE语句中进行,也可以 ...

  5. Web开发相关笔记 #05# MySQL中文无法匹配

    2018-06-02 在 Class.forName 的时候记得先尝试 import 一下. 2018-06-04 1.JDBC SELECT 查询,中文条件查不出东西,可能是字符编码问题: Stri ...

  6. MySQL数据库----完整性约束

    一.介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...

  7. 05: MySQL高级查询

    MySQL其他篇 目录: 参考网站 1.1 GROUP BY分组使用 1.2 mysql中NOW(),CURDATE(),CURTIME()的使用 1.3 DATEDIFF() 函数 1.4 DATE ...

  8. mysql数据类型 完整性约束 054

    创建用户和授权用户权限: # .创建用户: # 指定ip .109的fgf用户登录 '; # 指定ip .开头的fgf用户登录 '; # 指定任何ip的fgf用户登录 '; # .删除用户 drop ...

  9. MySQL -表完整性约束(Day41)

    阅读目录 一.介绍 二.not null 与 default 三.unique 四.primary key 五.auto_increment 六.foreign key 七. 总结 一 介绍 回到顶部 ...

  10. hadoop生态搭建(3节点)-05.mysql配置_单节点

    # ==================================================================node1 # ======================== ...

随机推荐

  1. Scala & IntelliJ IDEA:环境搭建、helloworld

      --------------------- 前言 --------------------- 项目关系,希望用Spark GraphX做数据分析及图像展示,但前提是得回spark:spark是基于 ...

  2. java学习笔记(6)——序列化

    一.序列化与基本类型序列化 1,将类型int转换为4byte,或将其它数据类型(如long->8byte)的过程, 即将数据转换为n个byte序列叫序列化(数据->n byte) 如:0x ...

  3. Opencv中SVM样本训练、归类流程及实现

    支持向量机(SVM)中最核心的是什么?个人理解就是前4个字--"支持向量",一旦在两类或多累样本集中定位到某些特定的点作为支持向量,就可以依据这些支持向量计算出来分类超平面,再依据 ...

  4. C#进程创建监控

    关于c#进程创建监控的文章大多都是“遍历一次进程用if去判断存在或否”这样的方法,我觉得体验不是很好.这几天写的一个软件正好需要实时监控进程创建的模块,在网上找到了很不错的方法,整理一下分享出来给大家 ...

  5. JScript运行批处理命令的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 有时需要在JScript调用批处理命令,因为这样可以将二者的优势结合起来.今天发现调用WScript.Shell对象的 ...

  6. 淘宝平台进行数据的实时传输: TimeTunnel介绍

    在班级工作中遇到似业务场景中的实时流传输数据的访问,所以,淘宝实时数据仓库这个人做了一些研究和了解. 本文介绍的业务场景和淘宝的设计TimeTunnel工具,从淘宝数据仓库团队沟通过程中的图像文字si ...

  7. VS中发布并调试IIS程序(非附加进程!!!)

    筒子们,你们不觉得发布到IIS再附加进程太烦了么???看了看网上全是这种方法,这不科学!VS已经提供了更好的方式了,少年们! 流程 1.打开你的IIS,创建一个站点示例中,我创建了一个端口号为5002 ...

  8. nodejs timer block-timer timer-ease

    https://www.npmjs.org/package/block-timer https://www.npmjs.org/package/timer-ease 来自为知笔记(Wiz)

  9. golang生成c-shared so供c语言或者golang调用到例子

    1.golang生成c-shared类型到so 建立文件夹hello,创建main.go文件,内容如下 package main import "C" func main() {} ...

  10. SqlServer 更改复制代理配置文件参数及两种冲突策略设置

    原文:SqlServer 更改复制代理配置文件参数及两种冲突策略设置 由于经常需要同步测试并更改代理配置文件属性,所以总结成脚本,方便测试. 可更新订阅的冲突策略有两种情况:一是在发布中冲突,即订阅数 ...