写点什么

SQL CREATE INDEX 语句 - 提高数据库检索效率的关键步骤

作者:小万哥
  • 2023-12-07
    广东
  • 本文字数:2204 字

    阅读完需:约 7 分钟

SQL CREATE INDEX 语句- 提高数据库检索效率的关键步骤

SQL CREATE INDEX 语句

SQL CREATE INDEX 语句用于在表中创建索引。


索引用于比其他方式更快地从数据库中检索数据。用户无法看到索引,它们只是用于加速搜索/查询。


注意: 使用索引更新表比不使用索引更新表需要更多的时间(因为索引也需要更新)。因此,只在经常进行搜索的列上创建索引。

CREATE INDEX 语法

在表上创建索引。允许重复值:


CREATE INDEX index_nameON table_name (column1, column2, ...);
复制代码


创建唯一索引的语法如下:


CREATE UNIQUE INDEX index_nameON table_name (column1, column2, ...);
复制代码


注意: 创建索引的语法在不同的数据库中有所不同。因此,请检查您的数据库中创建索引的语法。

CREATE INDEX 示例

下面的 SQL 语句在 "Persons" 表的 "LastName" 列上创建一个名为 "idx_lastname" 的索引:


CREATE INDEX idx_lastnameON Persons (LastName);
复制代码


如果要在多列的组合上创建索引,可以在括号内列出列名,用逗号分隔:


CREATE INDEX idx_pnameON Persons (LastName, FirstName);
复制代码

DROP INDEX 语句

DROP INDEX 语句用于删除表中的索引。

MS Access:

DROP INDEX index_name ON table_name;
复制代码

SQL Server:

DROP INDEX table_name.index_name;
复制代码

DB2/Oracle:

DROP INDEX index_name;
复制代码

MySQL:

ALTER TABLE table_nameDROP INDEX index_name;
复制代码


通过这些 SQL 语句,您可以在数据库中创建索引,提高数据检索的效率。如果索引不再需要,也可以使用 DROP INDEX 语句将其删除。

SQL AUTO INCREMENT 字段

AUTO INCREMENT 允许在将新记录插入表时自动生成唯一编号。通常,这是我们希望每次插入新记录时自动创建的主键字段。

MySQL 语法

以下 SQL 语句在 "Persons" 表中定义了 "Personid" 列为自动递增主键字段:


CREATE TABLE Persons (    Personid int NOT NULL AUTO_INCREMENT,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int,    PRIMARY KEY (Personid));
复制代码


MySQL 使用 AUTO_INCREMENT 关键字来执行自动递增功能。默认情况下,AUTO_INCREMENT 的起始值为 1,每插入一条新记录它就会递增 1。


要让 AUTO_INCREMENT 序列从另一个值开始,请使用以下 SQL 语句:


ALTER TABLE Persons AUTO_INCREMENT=100;
复制代码


要将新记录插入 "Persons" 表中,我们将无需为 "Personid" 列指定值(将自动添加唯一值):


INSERT INTO Persons (FirstName, LastName)VALUES ('Lars', 'Monsen');
复制代码


上面的 SQL 语句将在 "Persons" 表中插入一条新记录。 "Personid" 列将被分配一个唯一值。 "FirstName" 列将设置为 "Lars",而 "LastName" 列将设置为 "Monsen"。

SQL Server 语法

以下 SQL 语句在 "Persons" 表中定义了 "Personid" 列为自动递增主键字段:


CREATE TABLE Persons (    Personid int IDENTITY(1,1) PRIMARY KEY,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int);
复制代码


MS SQL Server 使用 IDENTITY 关键字执行自动递增功能。在上面的示例中,IDENTITY 的起始值为 1,每插入一条新记录它就会递增 1。


提示: 要指定 "Personid" 列应从值 10 开始递增 5,请将其更改为 IDENTITY(10,5)


要将新记录插入 "Persons" 表中,我们将无需为 "Personid" 列指定值(将自动添加唯一值):


INSERT INTO Persons (FirstName, LastName)VALUES ('Lars', 'Monsen');
复制代码


上面的 SQL 语句将在 "Persons" 表中插入一条新记录。 "Personid" 列将被分配一个唯一值。 "FirstName" 列将设置为 "Lars",而 "LastName" 列将设置为 "Monsen"。

Access 语法

以下 SQL 语句在 "Persons" 表中定义了 "Personid" 列为自动递增主键字段:


CREATE TABLE Persons (    Personid AUTOINCREMENT PRIMARY KEY,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int);
复制代码


MS Access 使用 AUTOINCREMENT 关键字执行自动递增功能。默认情况下,AUTOINCREMENT 的起始值为 1,每插入一条新记录它就会递增 1。


提示: 要指定 "Personid" 列应从值 10 开始递增 5,请将 AUTOINCREMENT 更改为 AUTOINCREMENT(10,5)


要将新记录插入 "Persons" 表中,我们将无需为 "Personid" 列指定值(将自动添加唯一值):


INSERT INTO Persons (FirstName, LastName)VALUES ('Lars', 'Monsen');
复制代码


上面的 SQL 语句将在 "Persons" 表中插入一条新记录。 "Personid" 列将被分配一个唯一值。 "FirstName" 列将设置为 "Lars",而 "LastName" 列将设置为 "Monsen"。

Oracle 语法

在 Oracle 中,代码会复杂一些。您将不得不使用序列对象,此对象生成一个数字序列,来创建一个自动递增字段。


使用以下 CREATE SEQUENCE 语法:


CREATE SEQUENCE seq_personMINVALUE 1START WITH 1INCREMENT BY 1CACHE 10;
复制代码


上面的代码创建了一个名为 seq_person 的序列对象,从 1 开始递增 1。 它还将缓存最多 10 个值以提高性能。 缓存选项指定了将存储在内存中以加快访问速度的多少个序列值。


要将新记录插入 "Persons" 表中,我们必须使用 nextval 函数,此函数从 seq_person 序列检索下一个值:


INSERT INTO Persons (Personid, FirstName, LastName)VALUES (seq_person.nextval, 'Lars', 'Monsen');
复制代码


上面的 SQL 语句将在 "Persons" 表中插入一条新记录。 "Personid" 列将被分配 seq_person 序列的下一个数字。 "FirstName" 列

最后

为了方便其他设备和平台的小伙伴观看往期文章:


微信公众号搜索:Let us Coding,关注后即可获取最新文章推送


看完如果觉得有帮助,欢迎 点赞、收藏、关注

发布于: 刚刚阅读数: 5
用户头像

小万哥

关注

代码如人生 2023-02-09 加入

编程爱好者

评论

发布
暂无评论
SQL CREATE INDEX 语句- 提高数据库检索效率的关键步骤_MySQL_小万哥_InfoQ写作社区