首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL

=[innodb] charset=utf8; 属性说明 名称 说明 primary key 代表主键,唯一不重复 auto_increment 代表当前键自增,保证当前的字段的类型为数值型,一般情况下主键设置自增...有外键的表是子表,没有外键的表是主表,一般情况下主表的数据信息会相对于少于子表(这不是绝对的)。主要还是看有没有关联字段(外键)。 设置主外键关系是在子表上进行设置....primary key auto_increment not null, ) 2) 建表时没有指定主键,后期来进行添加 //PK_主键名 为主键索引取一个名称 语法:alter...table 表名 add constraint PK_主键名 primary key 表名(主键字段名); 案例:alter table student add constraint PK_GRADE_ID...primary key student(studentno) 外键(两表之间逻辑关联,降低数据冗余): 外键的创建两种方式: 1) 第一种建表时没有指定,后期进行添加 语法: alter table

18120

关系型数据库 MySQL 常见的几种约束

对于关系型数据库 MySQL 前面一节已经讲过表相关操作,如感兴趣戳此直达[关系型数据库 MySQL 表相关操作],对于已经创建好的表,虽然字段的数据类型决定了所能存储的数据类型,但是表中所存储的数据是否合法并没有进行检查...,如果没有为某个字段赋值,那么数据库系统就会自动为这个字段插入默认值。...(primary key,PK) 主键约束(PK)primary key 在创建数据库表时为某些字段加上 “PRIMARY KEY" 约束条件,则该字段可以唯一标识所有记录。...PK 约束必须满足主键字段的值唯一、非空。 主键约束相当于 唯一约束+ 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。...由于设置了AUTO_INCREMENT 约束后的字段会生成唯一的 ID,所以该字段也经常会设置成 PK 主键。

2.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 的自增主键一定是连续

    使用 insert into test_pk values(null, 1, 1) 插入一行数据,再执行 show create table 命令来看一下表的结构定义: 上述表的结构定义存放在后缀名为...但如果马上重启 MySQL 实例,重启后这个表的 AUTO_INCREMENT 就会变成 1。也就是说,MySQL 重启可能会修改一个表的 AUTO_INCREMENT 的值。...我们来分析下这个 insert 语句的执行流程: 执行器调用 InnoDB 引擎接口准备插入一行记录 (null,1,1); InnoDB 发现用户没有指定自增 id 的值,则获取表 test_pk 当前的自增值...没有把表的自增值改回去呢?...举个例子,假设我们现在这个表有下面这些数据: 我们创建一个和当前表 test_pk 有相同结构定义的表 test_pk2: 然后使用 insert...select 往 teset_pk2 表中批量插入数据

    3.8K10

    MySQL自增主键id重启后重复使用问题解析

    AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 随着业务数据的增长,...MySQL表的主键ID也会不断增大。...四、原理解析 MySQL的自增主键id重启后为什么没有重复使用呢?...五、自增主键优化策略 针对自增主键id,我们还可以通过以下措施进行优化: 定期使用OPTIMIZE TABLE重建表,回收删除记录的自增id 通过设置更大的自增步长,使id增长缓慢 分表分库后,控制每个表的自增...idIncrement,避免单表过大 vivo_tmp_xxx临时表可用于生成id,避免影响线上表自增值六、总结MySQL的自增主键id在重启后不会重复使用已经删除的id,这是由其自动保存并恢复auto_increment

    1.3K10

    13. Django 2.1.7 模型类 - 字段类型

    server = models.ForeignKey('ServerInfo',on_delete=models.CASCADE, default=None) 对于模型类的字段类型,还有很多字段类型没有在这两个模型体现出现...在官方文档中,关于字段类型的描述非常多,如下: 模型字段的定义属性 django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列...默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。 注意:pk是主键的别名,若主键名为id2,那么pk是id2的别名。...TextField:大文本字段,一般超过4000个字符时使用。 IntegerField:整数。...unique:如果为True, 这个字段在表中必须有唯一值,默认值是False。

    1.2K10

    Django 2.1.7 模型类 - 字段类型

    server = models.ForeignKey('ServerInfo',on_delete=models.CASCADE, default=None) 对于模型类的字段类型,还有很多字段类型没有在这两个模型体现出现...在官方文档中,关于字段类型的描述非常多,如下: 模型字段的定义属性 django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列...默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。 注意:pk是主键的别名,若主键名为id2,那么pk是id2的别名。...TextField:大文本字段,一般超过4000个字符时使用。 IntegerField:整数。...unique:如果为True, 这个字段在表中必须有唯一值,默认值是False。

    1.7K30

    数据库演习-Class2 基础操作

    3.表最后一个设定没有符号 原则问题: #原则1:语句不能依赖上下文,这样有就删除再创建,没有就创建。...#原则2:删除时先删除外键所在的表中该元素,再删除主键所在表, #原则3:创建时先创建主键所在表 2.1 创建数据库 drop database if exists dlut002; create database...使用数据库,后面的操作都在该数据库里面运行: use dlut002 ; 2.2 创建表: Create table 表名 #原则2:删除时先删除外键所在的表中该元素,再删除主键所在表, 下面例子中要删除学生...-叫映射表 在这个例子中,映射表三个属性:编号,学号,教工号 映射表里面挑的属性,主键和外键,主键独一无二区分(编号),学号教工号这样的叫外键 上面的关系:ER图, 实体:矩形 虚体:椭圆形 #注意写表的语法...#设定主键后,编译器默认主键不能为空,可以为null。注意:主键还不能重复。 )comment '学生表'; sid是行名字,当行号每多一行,自动增长sid。 数据表字段的设计: #1.

    34520

    数据库演习-Class2 基础操作

    3.表最后一个设定没有符号 原则问题: #原则1:语句不能依赖上下文,这样有就删除再创建,没有就创建。...#原则2:删除时先删除外键所在的表中该元素,再删除主键所在表, #原则3:创建时先创建主键所在表 2.1 创建数据库 drop database if exists dlut002; create database...使用数据库,后面的操作都在该数据库里面运行: use dlut002 ; 2.2 创建表: Create table 表名 #原则2:删除时先删除外键所在的表中该元素,再删除主键所在表, 下面例子中要删除学生...-叫映射表 在这个例子中,映射表三个属性:编号,学号,教工号 映射表里面挑的属性,主键和外键,主键独一无二区分(编号),学号教工号这样的叫外键 上面的关系:ER图, 实体:矩形 虚体:椭圆形 #注意写表的语法...#设定主键后,编译器默认主键不能为空,可以为null。注意:主键还不能重复。 )comment '学生表'; sid是行名字,当行号每多一行,自动增长sid。 数据表字段的设计: #1.

    30620

    linux 之mysql——约束(constraint)详解

    (primary key)PK 表设计时一定要有主键 1、主键涉及术语 主键约束 主键字段 主键值 2、以上三种术语关系 表中的某个字段添加主键约束后,该字段为主键字段,主键字段中出现的每一个数据都称为主键值...主键约束除了可以做到”not null unique”之外,还会默认添加”索引——index” 4、一张表应该有主键字段,如果没有,表示该表无效 主键值:是当前行数据的唯一标识、是当前行数据的身份证号...,专门用来自动生成主键值,主键值不用用户维护,自动生成,自增数从1开始,以1递增(auto_increment)  mysql> create table t_user( -> id int(10...单一外键:给一个字段添加外键约束 复合外键:给多个字段联合添加一个外键约束 4、一张表可以有多个外键字段(与主键不同)  建立两个表,学生表,和班级表 学生表(添加单一外键) sno(pk)...cno(pk) cname 100 1 200 2 为了保证学生表中的classno字段中的数据必须来自于班级表中的cno字段中的数据,有必要给学生表中的classno

    2.5K30

    TP6.0 一对一模型关联 belongsTo 相对关联(反向关联)

    创建数据表 ---- 一对一反向关联使用率很高 附表关联主表称为反向关联,又称为相对关联(tp官方手册这样叫) -- 分类表 CREATE TABLE `category` ( `id` int(10...) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', `name` varchar(255) DEFAULT NULL COMMENT '分类名称', `...sort` int(11) DEFAULT NULL COMMENT '分类排序', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT...* app\model\Category 关联的模型类名(分类表模型) * * 第二个参数 * category_id 外键字段,默认的外键名规则是关联模型名+_id(文章表外键字段) * * 第三个参数...* id 关联模型主键,默认是关联模型的 $pk 值(分类表主键字段) */ return $this->belongsTo(Category::class, 'category_id', 'id')

    1.1K30

    数据库主键和外键

    主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 该字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用的...Mysql和Oracle创建主键: 1、MySQL create table user_test (id int auto_increment primary key not null,...primary key (id) ); 修改时:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名),前提是原先没有设置主键。...UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的....PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束.

    2.4K20

    MySQL基本语句

    '年级名称' )COMMENT='年级表'; 添加主键的语法 ALTER TABLE 表名 ADD CONSTRAINT 主键名          PRIMARY KEY 表名(主键字段); --...给年级表中id设置成主键 ALTER TABLE grade ADD CONSTRAINT pk_grade_gradeID PRIMARY KEY(gradeID); 创建成绩表 CREATE TABLE...主表中没有数据! 从表无法创建!    02.可不可以删除年级表2年级或者1年级???      不能删除!因为从表中还有关联数据!    03.如果我们非得删除年级 怎么办??      ...先把从表中的关联数据删除 ,之后再删除主表中的数据! 联合主键     将多列设置成主键!...-- 给成绩表设置联合主键 ALTER TABLE result ADD PRIMARY KEY  pk_result (studentno,subjectno,examdate);   mysql数据库中常用的两种

    5K70

    MySQL(数据类型和完整约束)

    默认情况下,当插入一条记录但并没有指定TIMESTAMP这个列值时,MySQL会把TIMESTAMP列设为当前的时间。...BLOB主要存储图片、音频信息等,而TEXT只能存储纯文本文件,应分清二者存储的关系。...完整约束 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 分类及详解 PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN...primary key(id); #创建主键并为其命名pk_name mysql> desc department3; +---------+--------------+------+-----+...ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 #也可以创建表时指定auto_increment的初始值,注意初始值的设置为表选项,应该放到括号外

    98320
    领券