- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表数据
- SQL - 约束
- SQL 查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - 更新查询
- SQL - 删除查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接 vs 右连接
- SQL - UNION vs JOIN
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 组合键
- SQL - 备选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - CHECK 约束
- SQL - DEFAULT 约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - 自动递增
SQL 自动递增用于自动将唯一的顺序值添加到表的列中。
我们通常在创建表时为列定义自动递增。当我们将新记录插入表中时,唯一值将添加到这些记录中。
当我们在表列上使用自动递增时,无需向该列插入 NOT NULL 值。如果我们提供此类值,它们将覆盖唯一标识,并且递增将仅在 NULL 值(如果有)上继续;导致数据模糊。
不同的 RDBMS 以不同的方式支持自动递增功能。
MySQL 中的自动递增
在 MySQL 中,您可以使用名为 AUTO_INCREMENT 的属性将自动递增功能添加到表的列。
默认情况下,当我们在列上定义 AUTO_INCREMENT 属性时,唯一值从“1”生成;对于我们输入表中的每个新记录,列中的值将递增 1。因此,插入的第一条记录的值为 1,第二条记录的值为 2,依此类推。
语法
以下是将 AUTO_INCREMENT 属性添加到 MySQL 表列的语法:
CREATE TABLE table_name( column1 datatype AUTO_INCREMENT, column2 datatype, column3 datatype, ..... columnN datatype );
示例
在查询中,我们创建一个名为 CUSTOMERS 的表,并将 AUTO_INCREMENT 添加到名为 ID 的列:
CREATE TABLE CUSTOMERS( ID INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2) );
现在,让我们使用 INSERT 语句将值插入 CUSTOMERS 表:
INSERT INTO CUSTOMERS (NAME, AGE, ADDRESS, SALARY) VALUES ("Ramesh", 32, "Ahmedabad", 2000.00), ("Khilan", 25, "Delhi", 1500.00), ("Kaushik", 23, "Kota", 2000.00), ("Chaitali", 25, "Mumbai", 6500.00);
验证
要验证这一点,您需要使用 SELECT 查询检索 CUSTOMERS 的内容,如下所示:
SELECT * FROM CUSTOMERS;
输出
以下是上述查询的输出,您可以在此处观察到 ID 值是自动生成的:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
现有列上的 AUTO_INCREMENT
MySQL 还允许您使用 ALTER TABLE 语句在现有表上实现 AUTO_INCREMENT 属性。
以下查询从 CUSTOMERS 表 CUSTOMERS 中的 ID 值 5 开始递增:
ALTER TABLE CUSTOMERS AUTO_INCREMENT = 100;
现在,让我们插入更多记录以查看 ID 值是否自动递增。
INSERT INTO CUSTOMERS(NAME, AGE, ADDRESS, SALARY) VALUES ("Hardik", 27, "Bhopal", 8500.00), ("Komal", 22, "MP", 4500.00), ("Muffy", 24, "Indore", 10000.00);
要查看上述表数据,我们使用以下 SELECT 查询:
SELECT * FROM CUSTOMERS;
输出
以下显示了上述查询的输出。它显示了自动递增的作用。我们得到新插入记录的 ID 值从 100 开始。
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
100 | Hardik | 27 | Bhopal | 8500.00 |
101 | Komal | 22 | Hyderabad | 4500.00 |
102 | Muffy | 24 | Indore | 10000.00 |
SQL Server 中的自动递增
在 SQL Server 中,没有直接命令/查询来执行自动递增。相反,我们使用 IDENTITY() 属性。此属性的工作方式类似于 MySQL 中的 AUTO_INCREMENT 属性。它自动生成唯一的顺序编号,并且主要用于 PRIMARY KEY 约束。
语法
以下是 SQL Server 中 IDENTITY() 属性的基本语法:
CREATE TABLE table_name ( column1 datatype IDENTITY [(seed, increment)], column2 datatype, column3 datatype, ..... columnN datatype );
此属性接受两个参数。下面描述了这些参数
- seed:它设置自动递增列的起始值。
- increment:它指定每增加一行值增加多少。
示例
在以下示例中,我们在名为 CUSTOMERS 的表的 ID 列上使用 IDENTITY() 属性:
CREATE TABLE CUSTOMERS( ID INT PRIMARY KEY IDENTITY(1,1), NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2) );
创建表后,我们使用以下查询插入一些记录:
INSERT INTO CUSTOMERS(NAME, AGE, ADDRESS, SALARY) VALUES ('Ramesh', 32, 'Ahmedabad', 2000.00), ('Khilan', 25, 'Delhi', 1500.00), ('Kaushik', 23, 'Kota', 2000.00), ('Chaitali', 25, 'Mumbai', 6500.00);
要查看表数据,我们使用以下 SELECT 查询:
SELECT * FROM CUSTOMERS;
输出
以下是上述查询的输出,其中 ID 值是自动生成的:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |