MySQL联合主键

Posted 程序员时倾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL联合主键相关的知识,希望对你有一定的参考价值。

DROP DATABASE ks;
CREATE DATABASE db1;
USE db1;
/***
 主键:primary key
 在一张表中唯一确定一组数据,因此一张表只有一个主键
 主键约束的字段默认具有unique约束,not unll;
 构成主键的可以是一个字段也可以是多个字段
***/

CREATE TABLE kecbiao (
 
 kcname VARCHAR(20) NOT NULL,
 keteach VARCHAR(20) ,
 kcstart DATE NOT NULL,
 kcend DATE NOT NULL COMMENT'结课时间',
 kctype ENUM ('必修','选修') NOT NULL,
 kcks TINYINT UNSIGNED NOT NULL COMMENT'总课时',
 kcxf TINYINT UNSIGNED NOT NULL COMMENT'学分'
)

/*
 1.添加主键
 直接字段后加约束primar key
 
*/

ALTER TABLE kecbiao ADD kc INT PRIMARY KEY;
/*
 给已有的表添加主键
*/
ALTER TABLE kecbiao DROP PRIMARY KEY;
ALTER TABLE kecbiao MODIFY kc INT PRIMARY KEY;
ALTER TABLE kecbiao ADD PRIMARY KEY('kcid');
ALTER TABLE kecbiao DROP

DROP TABLE kecbiao;

CREATE TABLE xubiao(
 xu_name VARCHAR(10),
 xu_xh ENUM('男','女'),
 xu_xh VARCHAR(10) PRIMARY KEY,
 xu_bj VARCHAR(10),
 xu_zy VARCHAR(15),
 xu_lx TINYINT UNSIGNED
);
USE DATABASE db1;
-- 联合主键: 复合主键。由两个的字段共同构成主键
CREATE TABLE xkb(
 kc_id INT UNSIGNED NOT NULL,
 stuid INT UNSIGNED NOT NULL,
 score DOUBLE UNSIGNED,
 PRIMARY KEY(kc_id,stuid)
);

mysql表中一个表中可以有多个主键吗?

主键只能有一个。

但是,如果你想用多个‘唯一索引’(unique index),是可以有多个的。

主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

所谓的一张表多个主键,我们称之为联合主键。

可以由多个列形成联合主键,但是主键只能有一个

参考技术A

数据库中的每张表只能有一个主键,不可能有多个主键。

主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

所谓的一张表多个主键,我们称之为联合主键。

注:联合主键:就是用多个字段一起作为一张表的主键。

创建联合主键:

1、GUI中同时选中多列,点击设置为主键。


2、sql语句将多列设置为主键:


方法一:在建表时就写出

Create Table 表名 (字段名1 Int Not Null,
                   字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),
                    字段名3…………
                    字段名N………… )


方法二:在建表后更改

ALTER TABLE 表名 WITH NOCHECK ADD 
CONSTRAINT [PK_表名] PRIMARY KEY  NONCLUSTERED 
(
  [字段名1],
  [字段名2]
)

参考技术B 不能,主键只能有一个。
但是,如果你想用多个‘唯一索引’(unique index),是可以有多个的。
参考技术C

外键需要主键或者该列定义的是UNIQUE 方式,所以按照上面的表方式,除非teachers162中Teacher_ID 在整张表中是唯一的,那么可以建立UNIQUE方式。
如果不是上面情况,建议拆表teachers162,建立一张teachers信息表,teachers和课程的关系表两张表。

以上是关于MySQL联合主键的主要内容,如果未能解决你的问题,请参考以下文章

mysql的联合主键与复合主键区别

MySQL联合主键

mysql 查重复的数据(主键除外)

mysql 主键索引,联合索引,单列索引使用场景

MySQL联合主键

mysql中的键和索引