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 |