一、约束(constraint)

约束就是在表上强制执行的一种校验规则,当执行DML操作时,数据必须符合这些规则,如果不符合,将无法执行。

约束的全称:约束条件,也称之为完整性约束条件。可以保证表中数据的完整性,保证数据之间的商业逻辑。

约束条件包括:

1)非空约束 (not null),简称NN
2)唯一性约束(unique),简称UK
3)主键约束(primary),简称PK
4)外键约束(foreign key),简称FK
5)检查约束(check),简称CK                                                                                                                                                  

1、非空约束 (not null)

非空约束用于确保字段值不为null。默认情况下任何列都允许null值,但是业务逻辑可以会要求某些列不能去null值,因此使用非空约束。

建表时设置:

create 

建表后设置非空约束(ps:前提表中相应字段不能有null值)

alter 

取消非空约束

alter 

2、唯一性约束(unique)

用于保证字段或者字段的组合不出现重复值,但是允许为null值

建表时设置

create 

建表后设置

alter 

查看表中的唯一性约束名称

show 

删除唯一性约束

drop 

3、主键约束(primary)

主键约束在功能上讲,相当于非空约束和唯一性约束的组合。主键字段可以是单字段也可以是字段组合,即在主键约束下的字段不允许有null值,也不允许出现重复值。主键可以用来在表中唯一的确定一行记录。一个表中只允许建立一个主键,其他约束条件没有个数限制。

主键选取的原则

1)主键应是对系统无意义的数据,如序号
2)永远也不要更新主键,让主键除了用于唯一标识一行记录之外,再无其他用途
3)主键不应包含动态变化的数据,如时间戳
4)主键应自动生成,不要人为干预,以免使它带有除了唯一标识一行以外的意义
5)主键尽量建立在单列上

建表时创建

create 

建表后创建

alter table tableName modify colName Type primary key;
alter table tableName add constraint constraintName primary key(colName);

删除主键

alter table tableName drop primary key;

4、外键约束(foreign key)

外键约束条件定义在两张表的字段或一张表的两个字段上,用于保证相关两个字段的关系。即字段A如果设置外键约束,那么字段A的值

必须要依赖于字段B里已经存在的值,但是可以为null。而字段B要求是表中的主键约束。

字段A所在的表我们称之为从表,字段B所在的表称之为主表。如果主表中的一个值被从表依赖时,此时主表的该记录不允许被删除。

外键约束会降低数据库的性能:

如果在设置外键约束的表上频繁的进行

建表时设置

create 

建表后设置

alter 

删除外键约束

alter 

5、检查约束(check)

检查约束条件用来强制在字段上的每个值都要满足检查约束的条件。

mysql的检查约束注意事项:

1) 写法:check(条件) 。mysql在语法上通过,但是在约束条件上没有效果。其他数据库如oracle有效
2) 如果是集合性质的条件,如 gender 必须('f','m')中的某一个值,可以使用枚举来替代检查约束写法:enum('f','m')

建表时设置:

create 

建表后设置:

alter 

二、mysql的自增长"序列"

1、序列的概念

序列(sequence)是一种用来生成唯一数字值的数据库对象。序列的值通常是按递增或递减顺序自动生成,用于自动产生表中主键的值,是一种高效的获取唯一键值的途径。通常为主键服务,是一组有序的整数值,如1,2,3,4,5,.......................

2.mysql特点

mysql不支持序列机制,但是mysql的auto_increment可以达到与序列机制一样的效果。我们称之为自增长序列。

1

用法如下:

建表时设置

3、函数:last_insert_id();

作用:获取序列最后一次的值。

mysql设置自动递增_《MySQL数据库》约束条件和自增长序列相关推荐

  1. mysql 序列自增长 恢复到1_大数据教程分享MySQL数据库约束条件和自增长序列

    大数据教程分享MySQL数据库约束条件和自增长序列,一.约束(constraint) 约束就是在表上强制执行的一种校验规则,当执行DML操作时,数据必须符合这些规则,如果不符合,将无法执行. 约束的全 ...

  2. mysql 修改自动递增值_MySql数据库自动递增值问题

    ?Create TABLE test(idINT UNSIGNEDNOT NULL PrimaRY KEY AUTO_INCREMENT,usernameVARCHAR(15)NOT NULL)AUT ...

  3. mysql设置token有效期_记住我 token保存到数据库

    记住我 token保存到数据库 这里使用jpa+mysql org.springframework.boot spring-boot-starter-data-jpa mysql mysql-conn ...

  4. 【MySQL 第17章_其他数据库日志】

    第17章_其他数据库日志 1.MySQL支持的日志 1.1日志类型 1.2日志的弊端 2.慢查询日志(slow query log) 3.1问题场景 3.2 查看当前状态 3.3 启动日志 3.4 查 ...

  5. 如何让mysql的自动递增的字段重新从1开始呢?(

    数据库表自动递增字段在用过一段时间后清空,还是继续从清空后的自动编号开始. 如何才能让这个字段自动从1开始自动递增呢? 下面两个方法偶都试过,很好用: 1 清空所有数据,将自增去掉,存盘,在加上自增, ...

  6. mysql设置success信息_【原创】MySQL Cluster安装部署(Success)

    参考:http://www.cnblogs.com/zhoulf/archive/2013/01/30/2883207.html 安装要求 安装环境:centos6.3(X64) 软件名称 :mysq ...

  7. mysql设置负载均衡_如何设置mysql的负载均衡?

    MySQL作为中小型办公室都会选择的数据库系统,在安装前工作人员需要知道mysql安装前所必需的环境,今天跟大家分享下mysql的负载均衡问题. 本文将介绍MySQL的负载均衡问题,包括环境介绍,操作 ...

  8. 改变mysql的数据编码格式_修改数据库编码格式(转)

    MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8. 1.需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:&g ...

  9. mysql 设置默认值_为什么 Flink 无法实时写入 MySQL?

    作者:孙金城 摘要:本文为 Flink 生产环境应用中的疑问剖析,Flink 无法实时写入 MySQL 是初学者常见问题之一,由社区同学罗鹏程提出,Apache Flink PMC 孙金城(金竹)老师 ...

最新文章

  1. 使用trash-cli防止rm -rf 误删除带来的灾难(“事前”非“事后”)
  2. 解决ubuntu上ifconfig没有eth0/ens33且无法上网的问题
  3. SAP物料标准成本估算结果
  4. MapReduce Java API-多输入路径方式
  5. PPR data model
  6. linux快速安装mysql教程
  7. JAVA 图片压缩及png转jpg
  8. 美国计算机一年制,美国一年制硕士
  9. avr单片机c语言计算log,AVR单片机定时器初值计算公式与方法 - 单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)...
  10. web网关_配置手册
  11. 社群运营普遍存在的五个问题
  12. 关于typescript中的extends和infer以及用法
  13. Justinmind Prototyper中如何使用变量达到一些效果
  14. VL53L0X+stm32激光测距
  15. 微信扫码登陆在chrome浏览器失败
  16. 发现自己的长处,深入自己擅长的事情
  17. 十进制负数转换成二进制数的方法
  18. 求阶乘问题c语言编程,求阶乘问题
  19. 自己学习c++过程中写下的笔记,只做基础了解使用
  20. 【第三趴】uni-app页面搭建与路由配置(了解工程目录结构、学会搭建页面、配置路由并成功运行)

热门文章

  1. 转行AI成功的秘诀只有一个,那就是……
  2. 学妹靠这个学会硬件开发入职华为,今天搞到100个免费名额!
  3. 目前最常用的计算机机箱类型为_绍兴承接离心风机箱高品质
  4. python super用法
  5. L1-007 念数字
  6. tomcat源码阅读之Server和Service接口解析
  7. findbugs教程
  8. PHP - PDO 之 mysql 参数绑定
  9. 多线程下局部变量与全局变量的使用及区别
  10. CPU主频频率越高,手机运行速度就越快吗?