MySQL数据库8(九)列属性之主键、自增长

主键

顾名思义,主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性

创建主键

随表创建

系统提供了两种增加主键的方式:

1、直接在需要当做主键的字段之后,增加primary key属性来确定主键

2、在所有字段之后增加primary key选项:primary key(字段信息)

表后增加

基本语法:alter table 表名 add primary key(字段);

查看主键

方案1: 查看表结构

方案2:查看表的创建语句

删除主键

基本语法:alter table 表名 drop primary key;

复合主键

主键约束

主键一旦增加,那么对对应的字段数据有要求:

1、当前字段对应的数据不能为空。

2、当前字段对应的数据不能有任何重复

主键分类

主键分类采用的是主键所对应的字段的业务意义分类:

业务主键:主键所在的字段,具有业务意义(学生ID,课程ID)

逻辑主键:自然增长的整型(应用广泛)

自增长

自动增长:auto increment,当给定某个字段的属性之后,该列的数据在没有提供确定数据的时候,系统会根据之前已经存在的数据进行自动增加后,填充数据

通常自动增长用于逻辑主键

原理

自动增长的原理:

1、在系统中有维护一组数据,用来保存当前使用了自动增长属性的字段,记住当前对应的数据值,在给定一个指定的步长。

2、当用户进行数据插入的时候,如果没有给定值,系统在原始值上加上步长变成新的数据

3、自动增长的触发:给定属性的字段没有提供值

4、自动增长只适用于数值

使用自动增长

基本语法:在字段之后增加一个属性 auto_increment;

插入数据:触发自动增长,不能给定具体值(可以给null)

修改自动增长

1、查看自增长:自增长一旦触发使用后,会自动地在表选项中增加一个选项(一张表最多只能拥有一个自增长)

2、表选项可以通过修改表结构来实现

基本语法:alter table 表名 auto_increment = 值;

删除和增加自动增长

删除自增长:就是在字段属性之后不再保留auto_increment,当用户修改自增长所在字段时,如果没有看到auto_increment属性,系统会自动清除该自增长。

删除自增长:alter table my_auto modify id int;

增加自增长:alter table my_auto modify id int auto_increment;

初始设置

在系统中,有一组变量用来维护自增长的初始值和步长

查看:show variables like ‘auto_increment%’;

修改自增长步长和初始值:

set auto_increment_increment = 值;

set auto_increment_offset = 值;

细节问题

1、一张表中只有一个自增长,:自增长会上升到表选项中。

2、如果数据插入中没有触发自增长(给定了数据),那么自增长不会表现,用户指定数据之后,自增长不参与,但是自增长默默根据当前用户设定的值初始化下一个值。

3、自增长在修改的时候,值可以较大,但是不能比当前已有的自增长字段的值小。

原文地址:https://www.cnblogs.com/sun-yanglu/p/9581691.html

时间: 2024-10-28 10:18:37

MySQL数据库8(九)列属性之主键、自增长的相关文章

史上最简单的 MySQL 教程(十四)「列属性 之 主键」

主键 主键:primary key,表中主要的键,每张表只能有一个字段(复合主键,可以多个字段)使用此属性,用来唯一的约束该字段里面的数据,不能重复. 增加主键 在 SQL 操作中,有 3 种方法可以给表增加主键,分别为: 第 1 种:在创建表的时候,直接在字段之后,添加primary key关键字 -- 增加主键 create table my_pri1( name varchar(20) not null comment '姓名', number char(10) primary key c

mysql数据库基础(2)索引、主键、复合主键、外键

增.删.改.查 加""表示为普通字符 mysql> insert into  t9 values("NULL",21,"game,flim"); +++++++++++++++++++++++++++++++ 添加新字段 mysql> alter table  t4 add age int(2) default 19;        //默认在最后面 mysql> alter table  t4 add mail char(50

mysql字符串类型、列属性及外键

字符串类型 Char 和varchar 在定义char 跟varchar时,都需要设置长度. 语法: char(M); 最大长度为255 varchar(M); 最大长度为65532 不同编码长度不同 GBK最大为:32767 utf8最大为:21845 M为长度! 两者区别: Char的M是固定的,即使输入的字符长度小于M值,该字符长度也会被定义为M值: 效率更快,使用一些固定字符长度的时候可以使用,例:电话号码.身份证号码等! Varchar的M是范围性值,只要不超过M,输入的值长度为多少即

Oracle 数据库中序列结合触发器实现主键自增长

一.数据表名称为T_OFFICE,其主键为PID(number类型) 二.首先为数据表的PID字段创建序列 序列名称:S_T_OFFICE_PID 序列详细内容: 三.创建相应的触发器 触发器名称:T_OFFICETRIGER 触发器具体内容: create or replace TRIGGERHYMGS_INDUSTRY_FQ6.T_OFFICETRIGER BEFORE INSERT ON HYMGS_INDUSTRY_FQ6.T_OFFICE FOR EACH ROW BEGINselec

数据库模型设计——关系的实现,主键的设计

一.关系的实现 在实体关系模型中,我们知道有三种关系:一对一.一对多.多对多.这只是概念上的关系,但是在真实的关系数据库中,我们只有外键,并没有这三种关系,那么我们就来说一说在关系数据库管理系统中,怎么实现这三种关系. 一对多 这里先讲解一对多,因为这个关系最简单.一对多和多对一是一回事,所以就不再提多对一这个词.一对多的概念是一个对象A会对应多个对象B,而从B的角度看,一个对象B只会对于一个对象A.比如说班级和学生就是一对多关系.一个班级对应多个学生,一个学生只会对于一个班级. 一对多的关系之

Mysql,SqlServer,Oracle主键自动增长的设置

1.把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如:   customers(id  auto_increment    , name (  customers(name)  id  customers; 以上sql语句先创建了customers表,然后插入两条记录,在插入时仅仅设定了name字段的值.最后查询表中id字段,查询结果为: 由此可见,一旦把id设为auto_increment类型,mys

设计表的时候,对于自增列做逻辑主键使用的一点思考

本文出处:http://www.cnblogs.com/wy123/p/7581380.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 关于自增列 自增列作为数据库的一个特性之一,在MSSQL和MySQL以及Oracle中都被支持.之前在网上发现一个类似的问题,是关于MySQL的:“为什么InnoDB表最好要有自增列做主键?”自增列作为一项特性,(可能)会应用到表的设计方面,不管是在那种数据库平台下.抛开具

浅谈Hibernate中映射集合属性以及主键和外键

首先说明一下什么叫主键以及外键. 主键和外键是对于数据库来说的,数据库的表才有主键外键的说法. 主键:主键是指标识某个表中唯一且非空的一条记录行的列,这个列中的值不允许有重复的值,用于确定一个表中的一条记录,实际上主键就是告诉别人:这个数据列是唯一的. 外键:引用另外一个表中的主键,在当前表中不一定为唯一的,但是在被引用表中一般唯一.对于关系型数据库来说(比如MySQL)外键是联系数据表之间的唯一方式,主要目的是控制存储在外键表中的数据. 建立外键的前提:本表的列必须与外键类型相同(外键必须是外

通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的.我们在单元测试的时候用到了 dbUnit ,dbUnit 可以帮助我们在测试前把数据库的测试数据准备好,然后我们就利用现成的数据库环境测试,测试完成后需将数据库中的所有数据清除(为了不影响其他的单元测试),然后接着下一个测试.虽然已经