完整性约束条件主要有:primary key(主键), auto_increment(自增长), poreign key(外键), not null(非空), unique key(唯一), default(默认值)

一、primary key:

  设置主键的作用:作为一条数据的唯一标识,像每个人的身份证一样。

  1)一般加在无意义的字段上,如 id

  2)标主键字段的要求:值不重复且值具有唯一性。主键不能为空

  3)可以设置“单字段主键”和“多字段主键(复合主键)”,用多个字段确定唯一性

  4)primary书写时可省略

#设置单字段主键
create TABLE if not EXISTS student(
id int PRIMARY key, #设置主键
name varcahr()
)engine=innodb charset = utf8; #设置多字段段主键
create TABLE if not EXISTS timez(
id int auto_increment,
atime year,
card char(18),
primary key(id,card) #将id与card同时设置为主键,设置后的结构图如下所示:
)engine=innodb charset = utf8; desc timez; #用此3命令查看表结构

注意点:当设置复合主键时,如设置2个字段为主键,可以允许2个字段中的某一个值可以与其他值重复,但是不可以2个值均重复,插入值进行验证:

insert into timez values("",'','');
insert into timez values("1",'2000','11111111111111112'); #均可添加值成功

二、auto_increment:

  1)通过设置主键进行自增长,默认从1开始,每次+1

  2)一个表中只能有1个自增长字段,而且自增长的字段一定配合主键使用,也就是说“被标识为自增长的字段,一定是主键,但是主键不一定是自增长的”自增长只对整数类、整数列有效,对字符串无意义

#新建数据库
create TABLE if not EXISTS timea(
id int PRIMARY key auto_increment, #将id设置为主键,并且为自增长
atime year
)engine=innodb charset = utf8; #向数据库插入值,验证auto_increment
insert into timea values(1,'2000'); #向timea表中自己给定自增长列的值为1
insert into timea(atime ) values('2000'); #直接插入atime的值,id自动填充值为2
insert into timea values(null,'2000'); #用null也可以,id自动填充3
insert into timea values(default,'2000'); #用default也可以,id自动填充4 #已创建的表,修改自增长开始的值
alter table timea auto_increment=9; #重新设定了自增长的值,则再次插入数据时,id的值为9,依次插入时+1 #开始创建表时,自定义 自增长开始的值
create TABLE if not EXISTS timea(
id int PRIMARY key auto_increment, #将id设置为主键,并且为自增长
atime year
)engine=innodb auto_increment=8 charset = utf8; #创建表时手动设定了自增长的值为8,则插入数据时,id的值不从1开始,而是8,依次插入时+1
#向timea表中自己给定自增长列的值为1

MYSQL—— 完整性约束条件中primary key、auto_increment使用总结!的更多相关文章

  1. [MySQL数据库之表的约束条件:primary key、auto_increment、not null与default、unique、foreign key:表与表之间建立关联]

    [MySQL数据库之表的约束条件:primary key.auto_increment.not null与default.unique.foreign key:表与表之间建立关联] 表的约束条件 约束 ...

  2. MYSQL - JSON串中查找key对应的值

    1.建表 -- 建表 drop table if exists ta_product2; CREATE TABLE ta_product2( id int primary key auto_incre ...

  3. SQLite中的自增关键字:AUTO_INCREMENT、INTEGER PRIMARY KEY与AUTOINCREMENT

    1.SQLite不支持关键字AUTO_INCREMENT 1)AUTO_INCREMENT不生效的问题 SQL语句: CREATE TABLE todo (     id INTEGER AUTO_I ...

  4. 【MySQL】完整性约束条件与设计范式

    完整性约束条件 概念: 对表中的数据进行限定,保证数据的正确性.有效性和完整性. 分类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign ...

  5. 关于主键(PRIMARY KEY)和自增(AUTO_INCREMENT)结合使用的知识点

    1.主键(PRIMARY KEY)和自增(AUTO_INCREMENT)同时使用两种写法:    a.主键(PRIMARY KEY)和自增(AUTO_INCREMENT)分两行写        创建一 ...

  6. 字符编码,存储引擎,MySQL字段类型,MySQL字段约束条件

    字符编码 查看MySQL默认编码命令:\s """ 如果是5.X系列 显示的编码有多种 latin1 gbk 如果是8.X系列 显示的统一是utf8mb4 utf8mb4 ...

  7. mysql在ubuntu中的操作笔记(详)

    1.安装mysql客户端流程: -  登录navicat官网下载 -  将压缩包拷贝ubuntu中进行解压,解压命令:tar zxvf navicat.tar.gz -  进入解压目录,运行命令./s ...

  8. MySQL字段约束条件、字段类型、存储引擎、配置文件

    字符编码与配置文件 # 查看MySQL默认字符编码 \s ''' 如果是5.X系列 显示的编码有很多种 Latin1 gbk 如果是8.X系列 显示的统一是utf8mb4 utf8mb4是utf8优化 ...

  9. MySQL 并行复制演进及 MySQL 8.0 中基于 WriteSet 的优化

    MySQL 8.0 可以说是MySQL发展历史上里程碑式的一个版本,包括了多个重大更新,目前 Generally Available 版本已经已经发布,正式版本即将发布,在此将介绍8.0版本中引入的一 ...

随机推荐

  1. Failed building wheel for scandir 解决方案

    unbuntu 16.04 运行 pip install jupyter --upgrade 的时候出现了下面的错误 Failed building wheel for scandir Running ...

  2. 在MinGW下编译ffmpeg

    因为需要使用ffmpeg的相关库和执行文件,所以需要编译最新的ffmpeg代码.为了能在编译成Windows native执行程序(需要在.net中调用该执行程序),这里我们使用MinGW. 1,安装 ...

  3. Jmeter——HTTP协议的接口压力测试环境搭建

     文章版权由作者小小小丝和博客园共有,若转载请于明显处标明出处:http://rpc.cnblogs.com/metaweblog/xxxs JDK 是整个Java的核心,包括了Java运行环境.Ja ...

  4. jenkins构建基于gradle的springboot项目CI采坑(采用jar方式部署)

    试了一堆插件,最后用的还是 publish over SSH jenkins基本配置不多说了,就是配置一下git仓储,配置一下gradle执行命令 clean bootRepackage 之后执行Se ...

  5. 第四次作业之jieba库的应用

    #!/usr/bin/python# -*- coding:utf-8 -*- import imp,sys imp.reload(sys)from matplotlib.font_manager i ...

  6. cnblog 模板 SimpleMemory 个性化设置代码备份

    /页面顶部作者名/ blogTitle h1 { font-size: 50px; margin-top: 0px; } /页面简介/ blogTitle h2 { letter-spacing: 1 ...

  7. Java IO流对象、多线程

    Input(读) Output(写)操作 File类 import java.io.File; 将操作系统中的文件.目录(文件夹).路径.封装成File对象 提供方法,操作系统中的内容.File与系统 ...

  8. ABP+AdminLTE+Bootstrap Table aspnetboilerplate 学习

    http://www.cnblogs.com/anyushengcms/p/7325126.html https://github.com/aspnetboilerplate/aspnetboiler ...

  9. Java线程池中submit() 和 execute()方法的区别

    两个方法都可以向线程池提交任务, execute()方法的返回类型是void,它定义在Executor接口中, 而submit()方法可以返回持有计算结果的Future对象,它定义在ExecutorS ...

  10. PAT1081:Rational Sum

    1081. Rational Sum (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given N ...