Mysql 自增列 主键

Mysql中假如有

ID Int auto_increment, CID varchar(36).

通常情况下都是 ID设置为主键。

假如要设置CID为主键。自增列ID必需是唯一索引。

create table Temp
(
   ID                   bigint not null auto_increment comment ‘编号‘,
   CID               varchar(36) not null,
   CreateTime           datetime not null default now() comment ‘创建时间‘,
   unique(ID),  --唯一索引
  primary key (CID) --主键
);
create index Index_CreateTime on TEMP --聚集索引
(
   CreateTime
);

  

时间: 2024-11-05 19:29:57

Mysql 自增列 主键的相关文章

mysql中InnoDB表为什么要建议用自增列做主键

InnoDB引擎表的特点 1.InnoDB引擎表是基于B+树的索引组织表(IOT) 关于B+树 (图片来源于网上) B+ 树的特点: (1)所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的; (2)不可能在非叶子结点命中; (3)非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层; 2.如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引.如果没有显式定义主键,则InnoDB会选择第一个不包含有NU

[MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键

[MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键 http://imysql.com/2014/09/14/mysql-faq-why-innodb-table-using-autoinc-int-as-pk.shtml 我们先了解下InnoDB引擎表的一些关键特征: InnoDB引擎表是基于B+树的索引组织表(IOT): 每个表都需要有一个聚集索引(clustered index): 所有的行记录都存储在B+树的叶子节点(leaf pages of the tree):

MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)

测试缘由 一个开发同事做了一个框架,里面主键是uuid,我跟他建议说mysql不要用uuid用自增主键,自增主键效率高,他说不一定高,我说innodb的索引特性导致了自增id做主键是效率最好的,为了拿实际的案例来说服他,所以准备做一个详细的测试.   作为互联网公司,一定有用户表,而且用户表UC_USER基本会有百万记录,所以在这个表基础上准测试数据来进行测试.            测试过程是目前我想到的多方位的常用的几种类型的sql进行测试,当然可能不太完善,欢迎大家留言提出更加完善的测试方

MySQL面试题之为什么要为innodb表设置自增列做主键?

为什么要为innodb表设置自增列做主键? 1.使用自增列做主键,写入顺序是自增的,和B+数叶子节点分裂顺序一致 2.表不指定自增列做主键,同时也没有可以被选为主键的唯一索引,InnoDB就会选择内置的rowid作为主键,写入顺序和rowid增长顺序一致 所以InnoDB表的数据写入顺序能和B+树索引的叶子节点顺序一致的话,这时候存取效率是最高 原文地址:https://www.cnblogs.com/FengGeBlog/p/10284284.html

MySQL自增列的步长问题

唯一索引和联合唯一 外键的变种 SQL数据行的增删改查 视图 触发器 函数 存储过程 事务 游标 动态执行SQL(防SQL注入) 1.MySQL自增列的步长问题: 1.基于会话级别(单次登陆状态下): show session variables like 'auto_inc%';    #查看自增长的默认步数,一般为1 set session auto_increment_increment=2;    #设置自增长会话步长为2 set session auto_increment_offse

mybatis插入数据后返回自增的主键id

在插入数据时候想自动返回mysql的自增的主键,需要在mapper.xml中配置下: <insert id="insert" parameterType="com.rograndec.wdzs.admin.data.wdzs.entity.ProductCategoryEntity" useGeneratedKeys="true" keyProperty="id" > insert into product_cat

Mybatis 在 insert 之后想获取自增的主键 id,但是总是返回1

记录一次傻逼的问题, 自己把自己蠢哭:Mybatis 在 insert 之后想获取自增的主键 id,但是总是返回1 错误说明: 返回的1是影响的行数,并不是自增的主键id: 想要获取自增主键id,需要通过xx.getId()方法获取,因为在mybatis中指定自增主键id封装到了对象的属性中,所以我们需要在对象中来获取 代码示例如下: <insert id="add" useGeneratedKeys="true" keyColumn="id&quo

mysql新增一列为主键

由于一次疏忽在建表的时候忘记加上主键了, 但是目前来说表里面又有数据了,所以不能删表重建,所以需要新加一列主键 然后我就新加一列,并且为auto_increment,然后设置为主键,如下: alter table ti_ares_ztfi_bukvsckks add table_id int auto_increment; alter table ti_ares_ztfi_bukvsckks add constraint ti_ares_ztfi_bukvsckks_pk primary key

sql server 怎么为一个已经存在数据的table, 添加一个自增的主键列?

情况描述 如果你符合下面的情况, 可以参考本文的解决方案 你已经有了一个DB, 并且DB中也有了不少table, 但是table最开始的时候没有设置主键. 数据存入了一部分后, 突然想到为这个table添加主键并且自增的column. 并且不想丢失这部分数据时,,, 你的db是自己建的, 但是table以及table中的数据是通过其他的db export->import过来的, 此时新的db中的import进来的table可能是没有主键的, 即使import过来的列中包含id这种列,,, 网间对