1. not null 与 default

not null : 不可空

default : 默认值

例: create table t1(id int not null default 2);

2. unique

unique : 唯一属性

例: create table t1(name varchar(20) unique);

​ create table t1(name varchar(20), constraint uk_name unique(name));

联合唯一:

create table t1(name varchar(20),host varchar(15), unique(name,host));

3. primary key

primary key : 主键,字段不为空切唯一

主键 primary key是 innodb存储引擎组织数据的依据,innodb称之为索引组织表,一张表中必须有且只有一个主键。

create table t1(id int primary key);

4. auto_increment

auto_increment: 自增属性,默认起始位置为1,步长也为1.

create table t1(id int primary key auto_increment);

5. foreign key

foreign key : 外键,标明表和表之间的关系,表和表之间的关系:一对一,多对一,多对多

  1. 一对多

    部门表是被关联表,员工表是关联表,创建表的时候应该先创建部门表(被关联表),再创建员工表(关联表)

    create table dep(id int primary key auto_increment,
    dep_name char(10),);
    create table emp(id int primary key auto_increment,
    name char(10),
    dep_id int,
    foreign key(dep_id) references dep(id)
    on update cascade on delete cascade);
    # 加入on update cascade on delete cascade语句可以使员工表中的数据跟着部门数据的改动而变动

    插入数据时,先插入部门数据(被关联表),再插入员工数据(关联表)

  2. 多对多

    先创建作者表和书表,然后创建第三张表,用两个外键字段关联作者表和书表.

    create table author(id int primary key auto_increment,
    name char(20));
    create table book(id int primary key auto_increment,
    bname char(20));
    insert into author(name) values('liky'),('小虎');
    insert into book(bname) values('book1'),('book2');
    create table author_book(id int primary key auto_increment,
    author_id int,
    book_id int,
    foreign key(author_id) references author(id) on update cascade on delete cascade,
    foreign key(book_id) references book(id) on update cascade on delete cascade);
    insert into author_book(author_id,book_id) values(1,2),(2,2);
  3. 一对一

    学生表(student)和客户表(customer),把学生表(关联表)的外键字段设置成唯一属性.

    create table student(
    id int primary key,
    name char(10),
    cid int unique,
    foreign key(cid) references customer(id)
    );
  4. 删除或修改被关联字段

    场景: book表和publish表为多对一关系,book表的pid字段外键关联到了publish表的id字段

1.查看外键关系名称:
show create table book;
2.删除外键关系
alter table book drop foreign key book_ibfk_1(外键名称);
3.删除字段
alter table publish drop id(字段名称);
4.添加字段
alter table pulish add id(字段名称) int(数据类型) primary key auto_increment(约束条件);
5.创建表完成之后,添加外键关系
alter table book add foreign key(pid) references publish(id); 创建外键时指定外键名称:
create table t1(id int,
pid int,
constraint fk_t1_publish foreign key(pid) references publish(id));
创建表完成之后,添加外键关系
alter table book add constraint fk_t1_publish foreign key(pid) references publish(id);
  1. 外键约束的三种约束模式(都是针对父表的约束):
1.district严格约束(默认):父表不能删除或者更新已经被子表数据引用的记录
2.cascade级联模式:父表的操作,对应的子表关联的数据也跟着操作
constraint fk_t1_publish foreign key(pid) references publish(id) on delete cascade on update cascade;
3.set null置空模式:被关联字段删除时,关联它的字段数据会置空成null
注意:删除置空的前提条件是外键字段允许为空,不然外键会创建失败.

MySQL数据库~~~~ 完整性约束的更多相关文章

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

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

  2. mysql 数据库引擎

    一.数据库引擎 数据库引擎是用于存储.处理和保护数据的核心服务.利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求. 使用数据库引擎创建用于联机事务处理或 ...

  3. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  4. MySQL数据库基本命令-1

    第一章:数据库概述1.数据(data) 数据库(DB) 数据库管理系统(DBMS) 数据库系统(DBS)2.数据库管理系统提供的功能: (1)数据定义语言:DDL (2)数据操作语言:DML 基本的数 ...

  5. MySQL数据库对象-索引

    1. 概述2. 索引分类2.1 不同索引的概念2.1.1 普通索引2.1.2 唯一索引2.1.3 全文索引2.1.4 多列索引3. 索引操作3.1 普通索引3.1.1 创建表时创建普通索引3.1.2 ...

  6. MySQL数据库之part1

    一.初始数据库 链接:http://www.cnblogs.com/linhaifeng/articles/7126847.html 一.MySQL介绍 1.MySQL是什么 MySQL是一个关系型数 ...

  7. mySql 数据库设计原则

    mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...

  8. MySQL数据库应用 从入门到精通 学习笔记

    以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...

  9. 超全面的JavaWeb笔记day15<mysql数据库>

    1.数据库的概述 2.SQL 3.DDL 4.DML 5.DCL 6.DQL MySQL 数据库 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优 ...

  10. MySQL数据库实验:任务一 创建数据库和表

    目录 任务一 创建数据库和表 [实训目的与要求] [实训原理] [实训步骤] 一.熟悉MySQL环境 二.利用MySQL命令行窗口创建数据库及表 三.利用界面工具创建数据库及表 任务一 创建数据库和表 ...

随机推荐

  1. javascript数据类型和类型转换

    一  数据类型 1)typeof 查看数据类型 1.number 数字 取值范围:正无穷 - 负无穷.NaN 正无穷:Number.POSITIVE_INFINITY 负无穷:Number.NEGAT ...

  2. cs5642 v3摄像头拍照效果

    4个摄像头拍照效果 配置的是ov5642_960p_RAW 测试图片分别如下:

  3. BGA256芯片植球全过程体验(原创)

    今天工具到位,迫不亟待,需要对手上的BGA256的FPGA芯片进行植球, 该芯片买来的时候是有球的,只是在焊接后,由于电路板故障或焊接问题,需要拆下来芯片,导致球损失,需要重新植球. 一般植球都是将所 ...

  4. unittest自动化测试框架

    目录 框架的概念 Unittest单元测试框架 常用的assert语句 unittest创建测试代码的方式: unittest构建测试套件(测试用例集合): unittest忽略测试用例: 运行测试集 ...

  5. 函数计算: 让小程序开发进入 Serverless 时代

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 吴天龙(木吴 ...

  6. 【CentOS7】开发环境配置

    [CentOS7]开发环境配置 目录 ===================================================================== 1.安装openjdk ...

  7. servlet的三大作用域对象和jsp的九大内置对象及其四大作用域对象

    servlet的三大作用域对象: request(HttpServletRequest) session(HttpSession): application(ServletContext):tomca ...

  8. 建议2:注意Javascript数据类型的特殊性---(1)防止浮点数溢出

    1.防止浮点数溢出 二级制的浮点数不能正确地处理十进制的小数,因此 0.1+0.2不等于0.3 num = 0.1+0.2; //0.30000000000000004 这是JavaScript中经常 ...

  9. 记Linux下一次乱码事件

    近来需要对着教程敲代码,但是之前在Windows上的压缩包在Linux解压后发生了乱码,主要是文件内乱码,文件名还是正常的.搜索“Linux rar解压乱码“试了一圈也没解决.不过到是发现了winra ...

  10. SAP QA32试图做UD,系统报错-工厂 BTYC中的 QM 基选设置需要维护

    SAP QA32 试图做UD,系统报错 - 工厂 BTYC 中的 QM 基选设置需要维护 - 检验批 10000062593,试图做使用决策,系统报错, 工厂 BTYC 中的 QM 基选设置需要维护 ...