SQL 如何使用自增

SQL 如何使用自增

在这篇SQL文章中,您将学习如何在结构化查询语言(SQL)、MySQL、Oracle和Microsft Access中使用自增。

自增是SQL中的一个概念,它在将新行输入到表中时自动生成该字段的唯一数字。这个功能通常用于主键字段,我们需要为每个记录创建一个唯一值。

如果我们在整数列中使用自增概念,并将第一个元组的值插入为1,那么第二个元组的值将自动生成为2。

SQL数据库系统允许用户定义起始值和增量值。

SQL中自增的语法

CREATE TABLE Table_Name
(
Column_Name_1 Datatype IDENTITY (Starting_Value, Increment_Value) PRIMARY KEY, 
Column_Name_2 Datatype (Size_of_Column_2),
Column_Name_3 Datatype (Size_of_Column_3),
.......,
Column_Name_N Datatype (Size_of_Column_N)
);

在上面的语法中,我们必须使用IDENTITY关键字,在SQL中执行自动递增的概念。

如果你想在SQL表中使用自动递增的概念,你必须写下面的CREATE TABLE查询:

CREATE TABLE Student_Records
(
Student_ID INT IDENTITY(201, 1) PRIMARY KEY, 
Student_Name Varchar(100),
Student_Age INT,
Student_Subject Varchar(50),
Student_Obtained_Marks INT NOT NULL
);

在这个查询中,我们创建了一个包含五列的Student_Records表。在Student_ID列中的IDENTITY关键字会自动生成新学生记录的唯一ID。

因此,我们不需要在INSERT查询中指定Student_ID的值,因为它会自动插入。

以下查询将学生的记录插入上述表中。

INSERT INTO Student_Records (Student_Name, Student_Age, Student_Subject, Student_Obtained_Marks) VALUES (Arun, 22, Maths, 89);
INSERT INTO Student_Records (Student_Name, Student_Age, Student_Subject, Student_Obtained_Marks) VALUES (Maish, 23, Physics, 92);
INSERT INTO Student_Records (Student_Name, Student_Age, Student_Subject, Student_Obtained_Marks) VALUES (Piyush, 20, English, 76);
INSERT INTO Student_Records (Student_Name, Student_Age, Student_Subject, Student_Obtained_Marks) VALUES (Yashit, 21, Maths, 81); 

以下查询显示上述表中的记录结果:

SELECT * FROM Student_Records;

输出:

Student_ID Student_Name Student_Age Student_Subject Student_Obtained_Marks
101 Arun 22 Maths 89
102 Maish 23 Physics 92
103 Piyush 20 English 76
104 Yashit 21 Maths 81

Ms-Access中自动递增的语法

CREATE TABLE Table_Name
(
Column_Name_1 Datatype AUTOINCREMENT PRIMARY KEY, 
Column_Name_2 Datatype (Size_of_Column_2),
Column_Name_3 Datatype (Size_of_Column_3),
.......,
Column_Name_N Datatype (Size_of_Column_N)
);

在该语法中,我们使用了AUTOINCREMENT关键字,它执行自增概念。MS-Access中没有针对自增操作的起始值和增量值。默认情况下,它以1开始,并将每条新记录的值增加1。

如果您想在Ms-Access的表中使用自增概念,您必须编写以下CREATE TABLE语句:

CREATE TABLE Teacher_Records
(
Teacher_ID INT AUTOINCREMENT PRIMARY KEY, 
Teacher_Name Varchar(100),
Teacher_Age,
Teacher_Subject Varchar(50),
);

为了将新记录插入到Teacher_Records表中,我们不需要定义Teacher_ID的值,因为唯一值会自动插入。

以下查询将教师的记录插入到Teacher_Records表中:

INSERT INTO Teacher_Records (Teacher_Name, Teacher_Age, Teacher_Subject) VALUES (Amya, 35, Maths);

Oracle中的自增语法

与其他数据库相比,Oracle的语法较为棘手。

CREATE SEQUENCE Name_of_Sequence
MINVALUE 1
START WITH Starting_Value
INCREMENT BY Increment_Value
CACHE 10;

在Oracle语法中,我们可以通过创建序列对象来实现自增概念。

如果您想在Oracle表中使用自增概念,您必须编写以下Oracle语句:

CREATE SEQUENCE Sequence_Students
MINVALUE 1
START WITH 1001
INCREMENT BY 3
CACHE 20;

在此查询中,我们创建了一个以1001为起始值,以3递增的Sequence对象。由于缓存将其值定义为20, Sequence_Students 对象只能存储20个值。

假设我们想要将新记录插入上述Student_Record表中,那么我们将需要定义nextval函数,该函数可以访问Sequence_Students的下一个值。

以下Oracle查询将在Student_Records表中插入学生记录:

INSERT INTO Student_Records (Student_ID Student_Name, Student_Age, Student_Subject, Student_Obtained_Marks) VALUES ( Sequence_Students.nextval, Ram, 20, chemistry, 99);
Student_ID Student_Name Student_Age Student_Subject Student_Obtained_Marks
1001 Ram 20 Chemistry 99

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程