首页
学习
活动
专区
圈层
工具
发布

从MySQL主键为何单调递增说起

应该总是定义主键 虽然并非总需主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主键,以便以后的数据操纵和管理。...表中的任何列都可以作为主键,只要它满足以下主键值规则条件: 任两行不具相同的主键值 每行都必须具有一个主键值(主键列不允许NULL) 这里的规则是MySQL本身强制实施的。...除MySQL强制实施的规则外,还应该坚持的最佳实践: 不更新主键列中的值 不重用主键列的值 不在主键列中使用可能会更改的值 例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其 名字时...外键 在一个表中存在的另一个表的主键称此表的外键 主键的选择 数据库中的每一条记录都需要有一个唯一的标识,依据数据库第二范式,数据库中每一个表中都需要有一个唯一的主键,其他数据元素和主键一一对应。...因此,我更倾向于使用生成的ID作为数据库的主键。不单单是因为它的唯一性,更是因为一旦生成就不会变更,可以随意引用。

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

    MYSQL:WARN: Establishing SSL connection without servers identity verification is not recommended.

    WARN: Establishing SSL connection without server's identity verification is not recommended....According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default...是Mysql数据库的SSL连接问题,提示警告不建议使用没有带服务器身份验证的SSL连接,是在MYSQL5.5.45+, 5.6.26+ and 5.7.6+版本中才有的这个问题。...解决办法在警告中已经说明了: 1.在数据库连接的url中添加useSSL=false; 2.url中添加useSSL=true,并且提供服务器的验证证书。...如果只是做一个测试的话,没必要搞证书那么麻烦啦,在连接后添加一个useSSL=false即可,例如: jdbc:mysql://localhost:3306/test?

    2.5K30

    数据结构(ER数据库)设计规范 原

    表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。...[type] 表示数据库表的类型,分为: r:行数据表。 l:列数据表。 g:分组数据表。 [name] 用来表示表的作用名称,由于mysql默认对大小写不敏感,采用下划线命名法。...mysql中要求单表唯一。 逻辑主键是与数据库无关的非业务意义的主键,用于对行数据的唯一性进行标识。在单数据库系统中,通常不需要逻辑主键,而在分布式系统中,逻辑主键的意义重大。...所以最大效率的保证b+树主键和索引数据进入的递增性对于数据库的性能有决定性作用(b+树越扁平,效率越高)。...传统中间解决方案 基于Mysql目前也可以自动生成UUID,所以有一种中间解决方案是在分布式系统的数据库中物理主键使用Mysql的自增Sequence,逻辑主键使用UUID,所有的ER关联都使用UUID

    1.9K30

    SQL CREATE INDEX 语句- 提高数据库检索效率的关键步骤

    索引用于比其他方式更快地从数据库中检索数据。用户无法看到索引,它们只是用于加速搜索/查询。 注意: 使用索引更新表比不使用索引更新表需要更多的时间(因为索引也需要更新)。...因此,请检查您的数据库中创建索引的语法。...MySQL 语法 以下 SQL 语句在 "Persons" 表中定义了 "Personid" 列为自动递增主键字段: CREATE TABLE Persons ( Personid int NOT...); MS SQL Server 使用 IDENTITY 关键字执行自动递增功能。...在上面的示例中,IDENTITY 的起始值为 1,每插入一条新记录它就会递增 1。 提示: 要指定 "Personid" 列应从值 10 开始递增 5,请将其更改为 IDENTITY(10,5)。

    2.3K10

    IGNORE,REPLACE,ON DUPLICATE KEY UPDATE在避免重复插入记录时存在的问题及最佳实践

    需要替换为具体的数据库名): select auto_increment from information_schema.tables where table_schema='database_name...通过执行如下sql可以看出当前使用的是哪种策略: select @@innodb_autoinc_lock_mode; 本文执行结果如下: 实际上,innodb_autoinc_lock_mode值为1是数据库的默认策略...这意味着,当innodb_autoinc_lock_mode=0时,只有插入成功之后,auto_increment值才会递增,插入失败不会递增。...还有一种可行的方案,即不使用数据库的自增主键,转而使用自定义的唯一键来做主键。...此外,参考博客中提到,MySQL在指定主键(id )进行插入的时候,如果这个id大于表的自增值,那么MySQL会把表的自增值修改为这个id值并加1,但是如果我们把主键更新成更大的值,MySQL并不会把表的自增值修改为更新后的值

    4.1K23

    mysql学习笔记(四)约束与索引

    /90087125 identity是sqlServer的语法,mysql不支持identity Identity是标识值,在SQL Server中,有ID列,ID属性,ID值,ID列的值等术语。...Identity属性是指在创建Table时,为列指定的Identity属性,其语法是:column_name type IDENTITY [ (seed , increment) ],Identity属性有两个参数...ID列是由系统自动赋值的,在赋值时,系统根据该表的ID值,自动插入递增的,唯一的数值,同时ID值根据Increment自动递增。...ID值有自动递增的特性,当语句执行失败或事务回滚时,ID值不会回滚,这会导致ID列的值不连续。...show index from 数据库名.数据表名;可以全面的查看索引信息。 约束在mysql中也可用Index指代 不用填写约束名,且默认约束名就为列名

    3.1K00

    MySQL数据库(一):安装MySQL数据库

    安装环境: 操作系统版本:RHEL 6.5 安装版本:MYSQL 5.1 升级版本:MYSQL 5.6 一、简述MYSQL 1.什么是数据库?...DB DataBase :数据库 依照某种数据模型进行组织并存放到存储器的数据集合 DBMS DataBase Manager System :数据库管理系统 用来操作和管理数据库的大型服务软件...DBS DataBase System :数据库系统 即DB+DBMS指带有数据库并整合了数据库管理软件的计算机系统 2.E-R数据模型 3.常见数据库软件服务商 甲骨文:MYSQL...[确定] 6.登陆mysql并查询当前数据库 [root@svr5 mysql]# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost...需要注意的是这里的root用户不是Linux系统的root用户,而是mysql数据库的管理员root。

    29.6K80

    MySQL与SqlServer的区别「建议收藏」

    MySQL与SqlServer的区别 目前最流行的两种后台数据库即为Mysql 和 SQL Server。...服务器要少一些相关的数据库; MySQL也缺乏一些存储程序的功能,比如MyISAM引擎联支持交换功能; 性能方面 MySQL: 纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM...) sql语句上的变形 数据定义、主键约束 Mysql定义数据库和主键: create database name; 创建数据库 use databasename; 选择数据库 drop database...mySql的主键自动增加是用auto_increment字段,默认地,AUTO_INCREMENT 的开始值是 1,每条新纪录递增 1 sqlServer的自动增加则是identity字段....,或则是写成P_id int primary key identity (1,1), ) 要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10)

    8.3K50

    【MySQL】数据库介绍以及MySQL数据库

    目录 数据库介绍 数据库概述 数据表 MySql数据库 MySql安装 登录MySQL数据库 ​​​​​​​SQLyog(MySQL图形化开发工具) 数据库介绍 数据库概述 什么是数据库(DB:DataBase...数据库的保护、维护 通信 数据库与数据库管理系统的关系 常见的数据库管理系统 MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。...SQLite : 嵌入式的小型数据库,应用在手机端。 上课会学:MYSQL 这里使用MySQL数据库。MySQL中可以有多个数据库,数据库是真正存储数据的地方。...表记录与java类对象的对应关系 数据库跟数据表的关系:一个数据库中可以有若干张表 MySql数据库​​​​​​​ MySql安装 安装 参考MySQL安装图解.doc 安装后,MySQL会以windows...也可以在DOS窗口,通过命令完成MySQL服务的启动和停止(必须以管理运行cmd命令窗口) 登录MySQL数据库 MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root

    30.1K21

    MySQL数据库介绍——初始数据库MySQL

    写在前面: 哈喽大家好我是网络豆云计算运维人员,本系列文章主要给大家讲解MySQL数据库的一些操作,从入门到精通,本文讲解的是MySQL数据库的认识。和我一起进入数据库的世界吧!...一.数据库基础知识 Mysql是⼀个开放源代码的数据库管理系统(DBMS) ,它是由 Mysql AB 公司开发、发布并⽀持的。...Mysql 是⼀个跨平台的开源关系数据库管理系统,⼴泛地应⽤ 在 Internet 上的中⼩型⽹站公司开发中。 数据库是由⼀批 数据 构成的 有序 的 集合 。...mysql> CREATE TABLE student -> ( -> student_id INT UNSIGNED, -> name VARCHAR(30), -> sex CHAR(1),...现在只是定义了⼀张表格,但并没有任何数据,接下来这条 SQL 声明语 句,将在 student 表中插⼊⼀条记录: mysql> INSERT INTO student(student_id,name

    6.8K10

    【Mysql】Mysql数据库基础

    2.数据库操作 2.1显示当前所有的数据库 SHOW DATABASES; 具体SQL语句操作: information_schema数据库是MySQL服务器的数据字典(保存所有数据表和库的结构信息...) performance_schema数据库是MySQL服务器的性能字典(保存全局变量等的设置) mysql 主要负责MySQL服务器自己需要使用的控制和管理信息(用户的权限关系等) sys是系统数据库...,包括了存储过程,自定义函数等信息 切记:这4个数据库是MySQL安装时自动创建的,建议不要随意的删除和修改这些数据库,避免造成服务器故障。...在创建数据库时,我们要指定字符集,这时我们一般指定utf8字符集,它可以包含非常多语言。而MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。...mysql中不存在字符;所以可以用‘’或“”表示字符串。 3.3 日期类型 为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型。

    5.2K10

    MySQL数据库基础(二):MySQL数据库介绍

    MySQL数据库介绍 一、MySQL介绍 MySQL是一个关系型数据库管理系统,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System...,关系数据库管理系统) 应用软件,它是由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品,MySQL 是最流行的关系型数据库管理系统中的一个。...二、MySQL的特点 MySQL是开源的,所以你不需要支付额外的费用。 MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 MySQL使用标准的SQL数据语言形式。...MySQL Workbench(GUITOOL):一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。...四、MySQL数据库下载与安装 1、下载 MySQL是开源免费的,可以直接去官网下载最新版MySQL,下载地址如下: 下载地址:MySQL :: Download MySQL Community Server

    4K11

    MySQL数据库基础(二):MySQL数据库介绍

    ​MySQL数据库介绍一、MySQL介绍MySQL是一个关系型数据库管理系统,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System...,关系数据库管理系统) 应用软件,它是由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品,MySQL 是最流行的关系型数据库管理系统中的一个。...二、MySQL的特点MySQL是开源的,所以你不需要支付额外的费用。MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。MySQL使用标准的SQL数据语言形式。...MySQL Workbench(GUITOOL):一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。...四、MySQL数据库下载与安装1、下载MySQL是开源免费的,可以直接去官网下载最新版MySQL,下载地址如下:下载地址:MySQL :: Download MySQL Community Server

    4.5K21
    领券