primarykey怎么用效果好?内行人分享实用技巧!

吉云

今儿个,咱来聊聊数据库里头那个“主键(primary key)”的事儿。这玩意儿,说白,就像咱每个人的身份证号一样,得是独一份儿的,不能跟别人重。

捣鼓前的准备

没啥特别准备的,我就在我那台破电脑上装个 MySQL 数据库,版本号是 8.0 的。然后,我还装个叫 Navicat 的工具,方便我连上数据库,敲敲命令啥的。

primarykey怎么用效果好?内行人分享实用技巧!

开始上手

我琢磨着,这主键到底咋用?想来想去,还是得动手试试。

于是我打开 Navicat,连上我那个 MySQL 数据库,然后新建一张表,叫“学生表”,里头有“学号”、“姓名”、“年龄”这些个字段。

重点来!我得给这张表设个主键。我想想,用“学号”当主键最合适,毕竟每个学生的学号肯定不一样嘛

我在创建表的时候,就这么写:


CREATE TABLE 学生表 (

学号 VARCHAR(20) PRIMARY KEY,

姓名 VARCHAR(50),

年龄 INT

瞧见没,我在“学号”那个字段后面加个“PRIMARY KEY”,这就告诉 MySQL,“学号”是这张表的主键。

鼓捣过程中遇到的那些坑

捣鼓过程中,我也不是一帆风顺的。我曾经试过,想往表里插两条学号一样的数据,结果 MySQL 直接报错,说啥“主键冲突”。这我就明白,主键这玩意儿,还真是严格,保证数据的唯一性。

我还试过,想把主键字段的值改成 NULL,结果也是不行。MySQL 又报错,说主键不能是 NULL 值。看来,主键不仅要唯一,还得有值,不能空着。

组合拳——联合主键

后来我又琢磨起一个事儿。要是遇到一种情况,一个字段没法唯一确定一条记录,咋办?

比方说,有个“选课表”,里头有“学号”和“课程号”两个字段。一个学生可以选多门课,一门课也可以被多个学生选。这时候,单用“学号”或“课程号”当主键都不行。

这时候,就得用上“联合主键”。说白,就是把多个字段组合起来,一起当主键。

我创建“选课表”的时候,就这么写:


CREATE TABLE 选课表 (

学号 VARCHAR(20),

课程号 VARCHAR(20),

PRIMARY KEY (学号, 课程号)

看到没,我把“PRIMARY KEY”放到然后用括号把“学号”和“课程号”括起来,这就表示它俩一起组成这张表的主键。

这么一来,只有当“学号”和“课程号”都一样的时候,MySQL 才会认为这是重复的数据,不让插进去。这样既保证数据的唯一性,又能满足实际需求。

一点小感悟

这回捣鼓主键的经历,让我对数据库的设计有更深的理解。主键这玩意儿,看似简单,还挺重要的。它不仅能保证数据的唯一性,还能加快查询速度,毕竟数据库可以根据主键快速定位到某一条记录。以后设计数据库的时候,可得好好琢磨琢磨,怎么选主键才最合适!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]