大数据教程分享MySQL数据库约束条件和自增长序列,一、约束(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 table tName(colName1 Type not null,....);

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

alter table tableName modify colName type not null;

取消非空约束

alter table tableName modify colName type null;

2、唯一性约束(unique)

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

建表时设置

create table tableName(colName1 Type1 unique,........ );

建表后设置

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

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

show keys from tableName;

删除唯一性约束

drop index uniqueName on tableName;

3、主键约束(primary)

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

主键选取的原则

1)主键应是对系统无意义的数据,如序号

2)永远也不要更新主键,让主键除了用于唯一标识一行记录之外,再无其他用途

3)主键不应包含动态变化的数据,如时间戳

4)主键应自动生成,不要人为干预,以免使它带有除了唯一标识一行以外的意义

5)主键尽量建立在单列上

建表时创建

create table tableName(colName1 Type1 primary key,........);

建表后创建

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所在的表称之为主表。如果主表中的一个值被从表依赖时,此时主表的该记录不允许被删除。

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

如果在设置外键约束的表上频繁的进行DML操作,那么每次DML操作都会检查主表,产生额外的开销。再一个就是,外键约束会确定主从表的先后生成顺序,有时会影响业务逻辑。因此,外键约束要看需求而定,要慎用。

建表时设置

create table tableName(empno int primary key,ename varchar(20) not null,mgr int,constraint fk_name foreign key(mgr) references tableName(empno));-------------------mgr是字段A,empno是字段B,字段B必须有主键约束

建表后设置

alter table tableName1 add constraint FK_name foreign key(字段A) references tableName2(字段B);

删除外键约束

alter table tableName drop foreign key fk_name

5、检查约束(check)

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

mysql的检查约束注意事项:

1) 写法:check(条件) 。mysql在语法上通过,但是在约束条件上没有效果。其他数据库如oracle有效

2) 如果是集合性质的条件,如 gender 必须('f','m')中的某一个值,可以使用枚举来替代检查约束

写法:enum('f','m')

建表时设置:

create table tableName(name varchar(20) not null,age int check(age >0 and age <20),---语法通过,但是约束条件无效gender enum('f','m')---------集合性质的写法,此法有效);

建表后设置:

alter table tableName add CONSTRAINT enum_age check(age>18);---其他数据库约束条件有效,mysql无效alter table tableName modify gender enum('f','m','n');--mysql有效

二、mysql的自增长"序列"

1、序列的概念

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

2.mysql特点

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

1)auto_increment 关键字,用来对有主键约束的字段做自增操作。2)自增长序列默认从1开始3)自增长序列的步数为14)可以设置起始数字

用法如下:

建表时设置1:create table tname(tid int primary key auto_increment,

......

);建表时设置1: create table tname(

tid int primary key auto_increment) auto_increment=100;建表后设置:alter table tableName auto_increment=100;取消自增长:alter table tablenName change colName colName Type unsigned not null;

3、函数:last_insert_id();

作用:获取序列最后一次的值。select last_insert_id();

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

  1. 好程序员大数据教程分享之Hadoop优缺点

    好程序员大数据教程分享之Hadoop优缺点,大数据成为时代主流,开启时代的大门,全球43亿部电话.20亿位互联网用户每秒都在不断地产生大量数据,人们发送短信给朋友.上传视频.用手机拍照.更新社交网站的 ...

  2. mysql insert表名前不写字段_云计算教程分享Mysql技术知识点

    云计算教程分享Mysql技术知识点,首先来讲一下Mysql语句精进 安装数据库,然后导入tigerfive.sql. sql见文档结尾部分 MySQL示例数据库模式由以下表组成: - customer ...

  3. 好程序员大数据教程分享超详细大数据学习路线

    随着信息产业的迅猛发展,大数据应用逐渐落地,行业人才需求量逐年扩大.大数据成为目前最具前景的高薪行业之一,大数据分析工程师.大数据开发工程师等大数据人才也成为市场紧缺型人才,薪资一涨再涨. 很多人想要 ...

  4. 大数据迁移——Python+MySQL

    大数据迁移--Python+MySQL 引言 方法一:数据库复制 --最糟糕 方法二:数据库转存--最蜗牛 方法三:数据库备份--最尬速 方法四:内存操作Python+MySQL--最火箭 引言 最近 ...

  5. python解析json文件写入数据库_Python3实现将本地JSON大数据文件写入MySQL数据库的方法...

    本文实例讲述了Python3实现将本地JSON大数据文件写入MySQL数据库的方法.分享给大家供大家参考,具体如下: 最近导师给了一个yelp上的评论数据,数据量达到3.55个G,如果进行分析时直接使 ...

  6. 一篇入门物联网大数据:TDengine时序数据库

    目录 一.大数据时代 二.TDengine设计思想 三.CAP理论和TDengine的特性 1.CAP理论 2.TDengine特性 四.数据模型 1.数据特点 2.超级表和表 3.数据查询 a. 单 ...

  7. 【学习笔记】尚硅谷Hadoop大数据教程笔记

    本文是尚硅谷Hadoop教程的学习笔记,由于个人的需要,只致力于搞清楚Hadoop是什么,它可以解决什么问题,以及它的原理是什么.至于具体怎么安装.使用和编写代码不在我考虑的范围内. 一.Hadoop ...

  8. 大数据时代的新型数据库 — 图数据库 Neo4j 的应用

    概览 微云数聚(北京)科技有限公司是一家实力雄厚的大数据技术公司,由移动互联网技术专家团队.大数据专业团队和建模博士团队组成.微云数聚专注于研究图数据库技术及其应用,是世界领先的图数据库Neo4j在中 ...

  9. 好程序员大数据培训分享大数据概述

    好程序员大数据培训分享大数据概述一,大数据时代的悄然来临,让信息技术的发展发生了巨大变化,并深刻影响着社会生产和人民生活的方方面面.每个国家都高度重视大数据技术的研究和产业发展,纷纷把大数据上升为国家 ...

最新文章

  1. linux脚本开机挂载,案例七:shell实现开机自动挂载本地YUM仓库程序
  2. 内网击穿之 HTTP 穿透:网站没上线?如何让全世界的人都可以访问你本地的网站?
  3. python 绘制简易折线图
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的粮店粮食库存管理系统
  5. 705. 设计哈希集合
  6. python 字节字符串_Python字符串转换为字节,字节转换为字符串
  7. 修正oracle错误,oracle数据库菜鸟教程 [数据库中一个常见错误信息诊断与修正]
  8. Word VBA-标题设置
  9. 计算机变异指标可以,变异系数公式_在EXCEL中怎样计算样本标准差和变异系数
  10. 大数据在推荐系统中的作用
  11. C#计算一年有多少周
  12. 饿了么客户端透明代理 Samaritan详细介绍
  13. 小红书流量红利词「0基础」实操手册
  14. 米家Zigbee系列传感器软件设计总结
  15. 以太坊手续费详细分析
  16. 微信公众号自定义菜单添加emoji表情图标
  17. 设定rosmaster的IP随电脑IP变化,自动设置ROS_MASTER_URI
  18. 在App Store和Google Play上推广应用程序
  19. 德州学院计算机系吧,任传成(计算机系)老师 - 德州学院 - 院校大全
  20. Android学习之运用多媒体

热门文章

  1. Microsoft VS Code绿色版及备份制作
  2. 小米手机程序开机自启动
  3. 一种为上而生的网络服务:内容存储网络CSN
  4. PHP 图像加入文字水印的自动换行解决方案(支持中文)
  5. R语言ETL工程:创建字段(mutate)
  6. 推荐系统和搜索引擎的关系达观陈运文
  7. 2020低压电工实操考试视频及低压电工在线考试
  8. 自己动手用C++写的图像处理软件(不调用外部包)
  9. 仙剑奇侠传4打淮南王黑屏死机问题的解决之道
  10. 2023年华中杯数学建模B题小学数学应用题相似性度量及难度评估解题全过程文档及程序