=[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
对于关系型数据库 MySQL 前面一节已经讲过表相关操作,如感兴趣戳此直达[关系型数据库 MySQL 表相关操作],对于已经创建好的表,虽然字段的数据类型决定了所能存储的数据类型,但是表中所存储的数据是否合法并没有进行检查...,如果没有为某个字段赋值,那么数据库系统就会自动为这个字段插入默认值。...(primary key,PK) 主键约束(PK)primary key 在创建数据库表时为某些字段加上 “PRIMARY KEY" 约束条件,则该字段可以唯一标识所有记录。...PK 约束必须满足主键字段的值唯一、非空。 主键约束相当于 唯一约束+ 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。...由于设置了AUTO_INCREMENT 约束后的字段会生成唯一的 ID,所以该字段也经常会设置成 PK 主键。
使用 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 表中批量插入数据
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
、修改用户 (revoke) 修改用户密码 alter user bjsxt identified by 123; 锁定用户和解锁定用户 a) 锁定用户 alter user bjsxt account...b) clob, 用于存放大文本信息....主键约束(primary key) 主键是用于唯一标识一条记录的字段, 必须保证既非空又唯一. 一张表中, 只能有一个主键....因此, dept 表可以被称之为主表, emp 表被称之为从表. 注意: 主表中, 只有主键或者唯一键才可以被从表参考. 从表中作为外键的列, 类型一定要和主表的被参考列相同....(alter table xxx add constraints) – 主键约束 alter table student add constraints pk_student primary key
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。
from stu; truncate table stu; truncate stu; MySQL约束 1.主键约束( key)——PK 2.自增长约束() 3.非空约束...( key)——PK 主键约束: 1.添加单列主键 2.添加多列联合主键 3.删除主键 添加单列主键 -- (方式一) -- 语法: create...primary key(eid) -- constraint pk1 可省略 ); 添加多列联合主键 -- 语法: create table 表名(...primary key(eid,name) -- constraint pk1 可省略 ); 通过修改表结构添加主键 -- 语法: create table...id int primary key auto_increment, name varchar(20) )auto_increment = 100; insert into
; //删除表 delete from 表名; //清空表中所有数据,但这张表没有删除,保留的是空表。...alter table 表名 ADD CONSTRAINT PK_表名 PRIMARY KEY(列名1,列名2) -------------------------------------------...id列添加主键 Alter table haha change id id int(10) not null auto_increment; //自增长属性 -------------...、CK、FK) --主键 constraint PK_字段 primary key(字段), --唯一约束 constraint UK_字段 unique key(字段), --默认约束 constrint...AUTO_INCREMENT自增值的初始值: mysql> CREATE TABLE 表名 (ID INT(5) PRIMARY KEY AUTO_INCREMENT)AUTO_INCREMENT=100
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。
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.
(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
customer_inf_id INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT ‘自增主键ID’, customer_id INT UNSIGNED NOT...( customer_addr_id INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT ‘自增主键ID’, customer_id INT UNSIGNED...使用分区表的注意事项 结合业务场景选择分区键,避免跨分区查询 对分区表进行查询最好在WHERE从句中包含分区键 具有主键或唯一索引的表,主键或唯一索引必须是分区键的一部分 商品实体 品牌信息表...INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘订单详情表ID’, order_id INT UNSIGNED NOT NULL COMMENT ‘订单表...TINYINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ‘主键ID’, ship_name VARCHAR(20) NOT NULL COMMENT ‘物流公司名称
MySQL查找重复数据,删除重复数据 数据库版本 Server version: 5.1.41-community-log MySQL Community Server (GPL) 例1,表中有主键(... | ijk | 147 || 20 | tpk | 963 || 22 | wer | 546 |+----+------+-----+8 rows in set (0.00 sec) 例2,表中没有主键... NOT EXISTS `noid`( `pk` VARCHAR(20) NOT NULL COMMENT \'字符串主键\', `name` VARCHAR(20) NOT NULL, `add...` VARCHAR(20) NOT NULL,PRIMARY KEY(`pk`))Engine=InnoDB;/* 测试数据,与上例一样的测试数据,只是主键变为字符串形式 */INSERT INTO `...id字段 /* 为表添加自增长的id字段 */ALTER TABLE `noid` ADD `id` INT(1) NOT NULL AUTO_INCREMENT, ADD INDEX `id`(`id
MySQL索引类型: 1、普通索引 最基本的索引,它没有任何限制,用于加速查询。 创建方法: a. ...(例如:name(11)) 3、主键索引 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。...一般是在建表的时候同时创建主键索引。 创建方法: a. ...修改表结构 ALTER TABLE test.t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id); 注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了...修改表结构 ALTER TABLE mytable ADD INDEX index_mytable_id_name (id,name); 5、全文索引 主要用来查找文本中的关键字,而不是直接与索引中的值相比较
INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '自增主键ID', customer_id INT UNSIGNED NOT NULL COMMENT '...( customer_addr_id INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '自增主键ID', customer_id INT UNSIGNED...,避免跨分区查询 对分区表进行查询最好在WHERE从句中包含分区键 具有主键或唯一索引的表,主键或唯一索引必须是分区键的一部分 商品实体 ?...INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '订单详情表ID', order_id INT UNSIGNED NOT NULL COMMENT '订单表...TINYINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', ship_name VARCHAR(20) NOT NULL COMMENT '物流公司名称
创建数据表 ---- 一对一反向关联使用率很高 附表关联主表称为反向关联,又称为相对关联(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')
主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 该字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用的...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值,一个表只能有一个主键约束.
'年级名称' )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数据库中常用的两种
默认情况下,当插入一条记录但并没有指定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的初始值,注意初始值的设置为表选项,应该放到括号外
领取专属 10元无门槛券
手把手带您无忧上云