【mysql】主键的概念作用及特点 您所在的位置:网站首页 数据库自动增长列和主键标识列的区别 【mysql】主键的概念作用及特点

【mysql】主键的概念作用及特点

2024-07-09 14:27| 来源: 网络整理| 查看: 265

概念 :

主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。

主键是单表的概念

作用:

1)保证实体的完整性; 2)加快数据库的操作速度 3)在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。 4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

特点:

1)一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。 2)主键的值不可重复,也不可为空(NULL)。

3)主键值不能被重用

提示:虽然并不总是需要主键,但是多数数据库设计者都会保证他们创建的每个表具有一个主键,以便以后的数据库的操作和管理。

主键&复合主键&联合主键 主键

我们一般常说的主键就是单字段主键,我先看下主键的语法:

PRIMARY KEY [字段名] 复合主键

复合主键和联合主键一般是一个意思,就是指这个主键是由一张表中多个字段组成的,语法格式如下::

PRIMARY KEY [字段1,字段2,…,字段n]

比如,设置学生选课数据表时,使用学生编号做主键还是用课程编号做主键呢?如果用学生编号做主键,那么一个学生就只能选择一门课程。如果用课程编号做主键,那么一门课程只能有一个学生来选。显然,这两种情况都是不符合实际情况的。

实际上设计学生选课表,要限定的是一个学生只能选择同一课程一次。因此,学生编号和课程编号可以放在一起共同作为主键,这也就是联合主键了。

DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `studentId` varchar(32) NOT NULL COMMENT '学号', `studentName` varchar(32) NOT NULL COMMENT '姓名', `studentGender` varchar(32) NOT NULL COMMENT '性别', `studentAge` int DEFAULT NULL COMMENT '年龄', PRIMARY KEY (`studentId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生信息表'; DROP TABLE IF EXISTS `student_course`; CREATE TABLE `course` ( `courseId` varchar(32) NOT NULL COMMENT '课程id', `courseName` varchar(32) NOT NULL COMMENT '课程名称', `courseCredit` varchar(32) NOT NULL COMMENT '课程学分', PRIMARY KEY (`courseId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='课程信息表'; DROP TABLE IF EXISTS `student_course`; CREATE TABLE `student_course` ( `studentId` varchar(32) NOT NULL COMMENT '学号', `courseId` varchar(32) NOT NULL COMMENT '课程id', PRIMARY KEY (`studentId`,`courseId` ) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生选课表';

有的文章把联合主键理解成2张表的关联,比如把选课表看成是学生表和课程表之间的关联,事实是不准确的,因为选课表就是一张表而已,语法也是单表的语法,不存在多表的主键语法(类似外键那样的多表间带约束的语法)

删除主键约束

当一个表中不需要主键约束时,就需要从表中将其删除。删除主键约束的方法要比创建主键约束容易的多。

ALTER TABLE student DROP PRIMARY KEY;

由于主键约束在一个表中只能有一个,因此不需要指定主键名就可以删除一个表中的主键约束。

如果主键不存在或已经被删除,再次尝试删除会报错: 在这里插入图片描述

参考 《主键的概念作用及特点》 《MySQL主键(PRIMARY KEY)》



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有