精华内容
下载资源
问答
  • mysql设置多个主键

    万次阅读 2019-01-29 11:17:48
    user表,身份证号码要唯一,手机号码,邮箱要唯一,实现方式: 表结构不用动。一个主键Id 加索引实现  如图类型设置索引类型为Unique 唯一 选择栏位,命个名就行。索引方式btree 就好。ok啦~...

    user表,身份证号码要唯一,手机号码,邮箱要唯一,实现方式:

    表结构不用动。一个主键Id   加索引实现

     如图类型设置索引类型为Unique  唯一   选择栏位,命个名就行。索引方式btree 就好。ok啦~

    展开全文
  • mysql中的多主键

    万次阅读 2019-07-05 17:40:28
    最近在学习mysql的时候发现关于多主键的一问题。 google中的一结果得到说 主键 就是unique 和 not null的结合,但经过试验之后发现,在细节上,二者是有差异的。 假设这样一情况: 一用户表,用户ID和...

    mysql中的多主键

    2013年11月10日 23:57:54 DevonLiu02 阅读数 2274

    最近在学习mysql的时候发现关于多主键的一个问题。
    google中的一个结果得到说 主键 就是unique 和 not null的结合,但经过试验之后发现,在细节上,二者是有差异的。

    假设这样一个情况:
    一个用户表,用户ID和用户名都是唯一的。
    也就是说,一个ID只能出现一次,用户名也是只能出现一次,那么这个时候可能的建表语句就是这样:

     

     
    1. CREATE TABLE `user` (

    2. `userid` SMALLINT UNSIGNED AUTO_INCREMENT,

    3. `username` CHAR(16) NOT NULL,

    4. `password` char(40) NOT NULL,

    5. PRIMARY KEY (`userid`, `username`)

    6. );

    但是实际上,这样建出来的表不能实现我们的需求
    插入以下数据将会是正常的
      

    idusername
    1mike
    2mike
    2alice


     




    数据中可以看到, 表中同时存在了2个同样的id和2个同样的username 这并不是我们想要的
    这种主键称为 联合主键, 联合主键就是由1个以上的字段构成的唯一标识.

    这种主键通常用在多对多的关系表中, 例如

    一位老师可以教多门课程, 一门课程可以由多个老师来授课. 那么这种情况就可以考虑使用联合主键,  设置 PRIMARY KEY (course_id, teach_id) 这样就可以保证数据不会冗余。在这种情况下插入相同的(course_id, teach_id) 将会出错

     

    course_idteach_id
    11
    12
    21
    11 (错误)

     

       





    那么回到一开始的问题,要怎样确保userid和username都唯一?

    建表语句如下

     

     
    1. CREATE TABLE `user` (

    2. `userid` SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

    3. `username` CHAR(16) NOT NULL,

    4. `password` char(40) NOT NULL,

    5. UNIQUE(`username`)

    6. );



    使用 unique语句来确保username的唯一性, 这样同时也保证了userid唯一性
    小结: mysql中没有多主键,只有联合主键。也就是说不能够同时存在多个独立的primary key,但可以有多个unique.

    展开全文
  • 1.创建主键语法 ALTER TABLE table_name ADD CONSTRAINT pk_name ...使用组合主键 如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式 ①创建时:create table sc ( student
  • MySQL索引之主键索引

    2020-12-15 16:43:01
    主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。 在MySQL中,InnoDB数据表的主键设计我们...
  • mysql 实现主键之外的多个字段自增

    千次阅读 2020-04-16 11:36:40
    k 2 19 l 2 20 j 通过sql实现编号自动增加,序号也是自动增加,一编号下有20序号,id是主键 尝试使用触发器 create trigger my_trigger before insert on test.test for each row begin set new.`编号`=(select...

    如下表格:

    id编号序号姓名
     11a
     12b
     1...v
     1...c
     1...s
     119f
     120g
     21g
     22h
     2...j
     2...k
     219l
     220j

    通过sql实现编号自动增加,序号也是自动增加,一个编号下有20个序号,id是主键

    尝试使用触发器

    create trigger my_trigger 
    before insert on test.test 
    for each row 
    begin 
     set new.`编号`=(select if(`序号`=20,`编号`+1,`编号`) as `编号` from test.test where id=(select max(id) from test.test));
     set new.`序号`=(select if(`序号`=20,1,`序号`+1) as `序号` from test.test where id=(select max(id) from test.test));
    end

     

    展开全文
  • mysql解决重复主键 ON DUPLICATE KEY UPDATE

    千次阅读 2020-01-02 14:14:40
    解决问题: 插入操作的主键重复问题。 解决方案: 利用ON DUPLICATE KEY UPDATE对数据库中已有的重复数据进行修改操作。 注意点: 只能进行修改操作 必须进行修改操作 对一次插入操作中的所有重复记录都会造成修改 ...

    解决问题: 插入操作的主键重复问题。

    解决方案: 利用ON DUPLICATE KEY UPDATE对数据库中已有的重复数据进行修改操作。

    注意点:

    • 只能进行修改操作
    • 必须进行修改操作
    • 对一次插入操作中的所有重复记录都会造成修改

    记忆易错点

    插入前后对于重复的主键记录始终只有一条,修改的是原数据库中的那条记录

    example

    1. 建表
      在这里插入图片描述
    2. 手动插入测试数据
      在这里插入图片描述
    3. 书写SQL语句与执行结果展示
      a. 正常的插入语句
      INSERT INTO test(name,created) VALUES(‘赵六’,‘2020-01-01’)
      在这里插入图片描述
      b. 插入重复主键记录
      INSERT INTO test(id,name,created) VALUES(1,‘钱七’,‘2020-01-01’)
      在这里插入图片描述
      可以看到上方SQL执行明显报错了,主键重复错误
      c. 使用ON DUPLICATE KEY UPDATE
      INSERT INTO test(id,name,created) VALUES(1,‘钱七’,‘2020-01-01’) ON DUPLICATE KEY UPDATE name = ‘博博’
      在这里插入图片描述
      在这里插入图片描述
      看一看到插入的重复主键记录失败,数据库原来id为1的那条记录的name值发生了改变
      d. 最后再看一下同时多个id重复的情况
      INSERT INTO test(id,name,created) VALUES(1,‘徐八’,‘2020-01-01’),(2,‘孙九’,‘2020-03-03’) ON DUPLICATE KEY UPDATE name = ‘覆盖’
      在这里插入图片描述
    展开全文
  • 而且有一神奇的现象(注意光标),鼠标单击两重复字段的上面那个时,是这样子的: ![图片说明](https://img-ask.csdn.net/upload/201801/22/1516624085_804989.png) 但是我点击下面那个时,却是这样的: ![图片...
  • MySQL获取自增主键Id

    千次阅读 2020-02-11 16:37:52
    mysql和oracle插入的时候有一很大的区别是,oracle通过获取序列的方式得到主键mysql本身有一列可以做自增长字段,mysql在插入一条数据后,如何能获得到这自增id的值呢? 方法1:使用last_insert_id mysql...
  • mysql 联合主键的作用 索引的作用

    千次阅读 2018-05-03 17:03:49
    用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。 可以这么理解,比如,你的订单表里有很字段,一般情况只要有个订单号bill_no做主键就可以了,但是,现在要求可能会有补 充订单,使用...
  • mysql设置联合主键

    千次阅读 2019-12-13 12:28:51
    用2个字段(或者多个字段组合)来确定一条记录,说明:这2个字段可以分别重复,但不能两个同时重复。 设置: 新建查询输入如下语句: alter table tb_name add primary key (字段1,字段2,字段3); 运行后效果: ...
  • MySql:复合主键与联合主键

    千次阅读 2019-10-22 17:44:00
    复合主键:数据库表的主键由两及以上的字段组成。 CREATE TABLE `asm_device_config_info` ( `asmModel` varchar(32) NOT NULL COMMENT '自助机型号', `deviceType` varchar(32) NOT NULL COMMENT '外设类型',...
  • Mysql 联合主键的查询速度

    千次阅读 2016-06-14 15:11:00
    mysql表中用a,b做联合主键,那么where条件中a的查询走索引,速度快,b的查询不走索引,速度慢。   论证: 先创建表 CREATE TABLE `ab` ( `a` int NOT NULL , `b` varchar(255) NOT ...
  • 问题:Mysql使用联合主键时,每个主键字段都能使用索引吗? 对于这个问题,很多mysql的初学者都是搞不清楚的,今天作者做了一个实验,来验证这个问题,防止在应用环境中不当的使用索引,导致mysql性能下降。 实验...
  • mysql实现主键不重复

    千次阅读 2019-11-05 14:53:10
    同一数据库中有两张表,里面字段都是一样,只是因为存的数据要区分开。但是主键不能重复。具体实现如下: 新建数据库 mytest 新建user表和admin表 CREATE TABLE `user` ( `user_id` INT(11) NOT NULL, `user_...
  • mysql> CREATE TABLE course ( -> course_NO INT PRIMARY KEY -> );Query OK, 0 rows affected (0.19 sec)mysql>mysql> CREATE TABLE teacher ( -> teacher_ID INT PRIMARY KEY -> );Query OK, 0
  • MySQL常用数据类型 整数类型 实数类型 字符类型 日期类型 整数类型 TINYINT SMALLINT MEDIUMINT INT BIGINT 占用空间 占用字节 有符号位表示范围 无符号位表示范围 TINYINT 1字节 -128~127 0~255 ...
  • mysql的复合主键创建及删除

    万次阅读 2019-06-19 21:22:26
    摘要: mysql的联合主键:用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数。...
  • Mysql 列形成主键(复合主键

    千次阅读 2017-07-27 14:13:58
    所谓的复合主键 就是指你表的主键含有一以上的字段组成  比如  create table test  (   name varchar(19),   id number,   value varchar(10),   primary key (name,id)  )  上面的name和...
  • mysql建表,主键,等

    万次阅读 2018-04-23 20:31:49
    1、最简单的:CREATE TABLE t1( id int not null, name ...2、带主键的:a:CREATE TABLE t1( id int not null primary key, name char(20));b:复合主键CREATE TABLE t1( id int not null, name char(20), ...
  • mysql分区与主键问题

    千次阅读 2019-09-10 17:25:38
    mysql规定 作为分区的字段必须是...又假如我项目特殊,以用户生日数据为主,生日有单独的表,所针对的用户从20岁-60岁,每阶段的数据都特别,而id是自增的,id经常作为查询条件进行查找。所以我要实现按生日分区...
  • mysql的联合主键与复合主键区别

    千次阅读 2018-10-30 15:53:50
    复合主键就是指你表的主键含有一以上的字段组成 。 例如; create table test ( name varchar(19), id number, value varchar(10), primary key (id,name) ) 上面的id和name字段组合起来就是你test表的复合主键 ...
  • (相当于一次执行条语句)的方式去批量插入,使用MERGE如果主键冲突则执行update语句 <insert id="save" parameterType="List" > begin <foreach collection="...
  • MySQL如何添加主键(PRIMARY KEY)

    千次阅读 2020-07-02 21:37:55
    简单来说主键的作用就是确定数据的唯一性,假如我给员工的id添加了主键约束,那么这id永远不可能重复,所以才可以确定同一人的身份,复合主键的意思就是定义两列来确定身份的不会重复性,假如我给sex和name...
  • MySQL查询之 联合主键

    千次阅读 2020-03-05 14:04:17
    我们知道MySQL的主键是一个非空的,且唯一的键,如果我们需要两个或者多个呢 create table stu( id int, name varchar(20), score int, primary key(id, name) ); 这样我们创建了一个有两个主键的表 我们来插入...
  • mysql中创建主键的三种方式 方式一 给uid设置主键 CREATE TABLE user( uid INT PRIMARY KEY, uname VARCHAR(10), address VARCHAR(20) ) 方式二 给uid设置主键 CREATE TABLE user( uid ...
  • 首先给出官方文档...一直有一误区,insert into xxTable (field1,field2,......) values( v1,v2,....)on duplicate key update fileld1 = v1,field2=v2 ; 每次up...
  • MySQL 字符串主键和整型主键分析

    千次阅读 2018-09-26 14:22:34
     工作中需要把UUID的主键改成整型自增的主键,改成自增主键之后会提升很,但是没有测试。 测试一: root@localhost : test 11:32:17>show create table test\G; *************************** 1. row **...
  • !... 请问一下account list表中的acc_id和acc_bankNum设置为联合主键,怎么将该表acc_bankNum和user list中的acc_bankNum设置为外键 ...(是不是联合主键不能单独一设置成外键,那么怎么才能设置?还是根本不可以???)
  • MySQL:自增主键VS非自增主键

    千次阅读 2020-05-29 09:22:36
    由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有索引页得中间某个位置,此时MySQL不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉,此时又要从磁盘上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 213,803
精华内容 85,521
关键字:

mysql多个主键

mysql 订阅