MySQL中pri指什么一一解析(mysql中pri是什么)

MySQL中pri指什么——一一解析

在MySQL中,经常会看到pri这个词,特别是在查看表的结构的时候。那么pri到底指什么呢?本文将一一解析。

我们先来看一个简单的表结构:

CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
eml VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);

在这个表结构中,我们可以看到PRIMARY KEY (id)这一行。这个指令的意思是告诉MySQL,把id列设为主键。而pri就是MySQL用来表示主键的缩写。在这个表结构中,id列既是主键,又是自增长的。这意味着,MySQL会自动为这一列的每个新记录分配一个唯一的、大于前一个记录的整数值。在这个表结构中,id是我们最常用的主键。

除了pri外,MySQL还有很多其他的键类型。较常见的包括索引键、外键和唯一键。

索引键

索引键是通过在指定列上创建索引来提高查询性能的形式。当我们通过索引键查询表中的记录时,MySQL利用索引来快速定位需要的数据。例如,我们可以在users表的name和eml列上创建索引:

CREATE INDEX name ON users (name);
CREATE INDEX eml ON users (eml);

这样一来,当我们在查询users表时,MySQL会首先使用索引来快速定位相应的记录。在这个例子中,我们可以使用以下查询来查找eml为“john@example.com”的记录:

SELECT * FROM users WHERE eml = 'john@example.com';

MySQL会使用eml索引来快速找到这条记录。这比在整个表中搜索eml列要快得多。

外键

外键是一种关系型数据库约束,用于保持表之间的关联。一个外键是一个表中的一列,其取值必须是另一张表的主键值。例如,我们可以在users表中创建一个外键,将其关联到roles表中的role_id列:

CREATE TABLE roles (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
eml VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
role_id INT(11) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (role_id) REFERENCES roles(id)
);

在这个例子中,我们将users表中的role_id列设置为一个外键。我们还将它映射到roles表中的主键列id。这样一来,在插入users表时,我们必须确保每个role_id值都存在于roles表中的id列中。如果我们尝试将一个不存在的值插入到users表中的role_id列中,MySQL会抛出一个错误。

唯一键

唯一键是一种基于列级别的约束,用于确保表中的每行都具有唯一的值。与主键不同,唯一键允许NULL值。例如,我们可以在users表中为eml列创建唯一键:

CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
eml VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (eml)
);

在这个例子中,我们为eml列创建了唯一键。这意味着,我们无法向users表中插入两个相同的eml值。如果我们尝试这样做,MySQL会抛出一个错误。

以上就是MySQL中常用的键类型,其中pri是主键的缩写。在设计数据表时,我们应该根据实际需求来考虑哪些列需要成为主键,哪些需要成为唯一键,以及哪些需要成为索引键。这样可以使我们的数据库能够更快、更准确地查询数据。

参考文献:

1. MySQL官方文档http://dev.mysql.com/doc/

2. 《MySQL权威指南》(第2版), Daniel D.K.Book,多布·库利姆诺夫,比尔·肯特,西蒙·简尼斯,杰伊·皮泽尔,简·洛西,约翰·罗素,本·思德尔.中国电力出版社.2008.


数据运维技术 » MySQL中pri指什么一一解析(mysql中pri是什么)