完整性约束条件主要有: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. iBATIS 深入分析

    深入分析 iBATIS 框架之系统架构与映射原理 分类: IBATIS2010-11-24 03:32 547人阅读 评论(1) 收藏 举报 ibatis框架sql数据库jdbcjava 本文转至ht ...

  2. 公司内网搭建代理DNS使用内网域名代替ip地址

    企业场景 一般在企业内部,开发.测试以及预生产都会有一套供开发以及测试人员使用的网络环境.运维人员会为每套环境的相关项目配置单独的Tomcat,然后开放一个端口,以 IP+Port 的形式访问.然而随 ...

  3. flash 视频 死机(转贴)

    http://zhidao.baidu.com/question/120464366 打开有关flash的网站就定屏死机 打开flash的网站经常定屏死机,打开酷狗,看土豆网遇到旁边那些广告也一样死机 ...

  4. Wooden Sticks -HZNU寒假集训

    Wooden Sticks There is a pile of n wooden sticks. The length and weight of each stick are known in a ...

  5. echarts实现中国地图数据展示

    在项目中运用到图形展示数据太常见了,echarts是一款使用率非常高的插件工具,很多大平台都是使用echarts: 一般运用到条形.折线.扇形图,今天说一说在中国地图上展示各地数据: 首先要准备中国地 ...

  6. L1正则化比L2正则化更易获得稀疏解的原因

    我们知道L1正则化和L2正则化都可以用于降低过拟合的风险,但是L1正则化还会带来一个额外的好处:它比L2正则化更容易获得稀疏解,也就是说它求得的w权重向量具有更少的非零分量. 为了理解这一点我们看一个 ...

  7. 从数据库读取数据并动态生成easyui tree构结

    一. 数据库表结构 二.从后台读取数据库生成easyui tree结构的树 1.TreeNode树结点类(每个结点都包含easyui tree 的基本属性信息) import java.io.Seri ...

  8. Python函数化编程整理

    1.映射函数 items=[1,2,3,4,5] def inc(x): return x+1 list(map(inc,items)) [2, 3, 4, 5, 6] >>> a ...

  9. Python的logging日志

    日志级别:critical > error > warning > info > debug,notset级别越高打印的日志越少,反之亦然,即debug : 打印全部的日志(n ...

  10. iOS xcode9 framework静态库的创建以及xib和图片的使用记录

    来到了新公司,要开发的第一个项目据说可能要封成framework,可是我从来没自己做过framework呀!顿时开始发愤图强,赶紧恶补了起来.但是还是遇到了一些乱七八糟的情况,所以写个随笔记下来. 1 ...