一口气说出4种主流数据库ID自增长,面试官懵了

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 一口气说出4种主流数据库ID自增长,面试官懵了

自增长ID的实现主要依赖数据库的设置,需要先在数据表中创建对应的自增ID字段。


具体创建方式每种数据库可能会有区别,本文将简单介绍几种常见数据库的自增id设置方式。


⛳️ 1.SQL Server


e681caf931054a6db0c886212d5c5a4a.png


🌈 1.1 图形化界面创建


假设在 SQL Server 数据库中存在下面一张数据表,

我们需要将其 ID 列实现自增长,就可以在列属性中设置是标识,修改标识增量和标识种子,


✨ ✨✨ ✨✨ ✨ 如下图:

7932995c8fa54d3884600bb48e10cec4.png


🌈 1.2 SQL语句创建


也可以使用 SQL 语句来创建,identity(1,1)指定 ID 由 1 开始,每次增长 1.


create table jeames(


id int identity(1,1) primary key,

kh varchar(20)

)


⛳️ 2.MySQL



f0dea3d173be4eee9bc7ac0ad4c2ab81.png


🌈 2.1 auto_increment自增ID


基于数据库的auto_increment自增ID来实现


b7b16c29afad4bfa84c29efd2683d145.png


##表中插入数据

mysql> insert into TEST_ID(value) VALUES (‘IT’);

mysql> insert into TEST_ID(value) VALUES ('CSDN);

mysql> insert into TEST_ID(value) VALUES ('IT);


e8ce0271d79b4254a1d35e33f69e8e70.png


🌈 2.2 修改自动增长起始值


mysql> alter table TEST_ID AUTO_INCREMENT=100

mysql> insert into TEST_ID(value) VALUES (‘001’);

mysql> insert into TEST_ID(value) VALUES (‘002’);


a794122320ab4da7b4e809263c124541.png


⛳️ 3.Oracle


在 Oracle 数据库中,提供了序列的功能,可以通过 Oracle 的序列及触发器,实现主键的自增长。


🌈 3.1 创建序列


CREATE SEQUENCE seq_name

INCREMENT BY 1

START WITH 1

NOMAXVALUE

NOCYCLE

CACHE 10;

6be477a71b6a43edbc54565b128ba887.png

🌈 3.2 创建触发器


##创建表

create table jem_db(id int,name varchar(30));



##创建触发器

CREATE OR REPLACE TRIGGER TRG_name

BEFORE INSERT ON jem_db

FOR EACH ROW

BEGIN

SELECT seq_name.nextval INTO :new.ID FROM dual ;

END;

73d18d9e99e94257a2f35dde872893b4.png


##插入数据验证

insert into jem_db (name) values(‘IT邦德’);

insert into jem_db (name) values(‘CSDN’);

insert into jem_db (name) values(‘热搜榜’);

select * from jem_db;


0892aabf388847f59c36f0c1f7fafd05.png


⛳️ 4.postgreSQL



PostgreSQL 使用序列来标识字段的自增长

CREATE TABLE runoob

(

id serial NOT NULL,

alttext text,

imgurl text

)

SMALLSERIAL、SERIAL 和 BIGSERIAL 范围:


6c9051c84d17447e80c6f7d98ab9744c.png


✨ ✨✨ ✨✨ ✨ 实例


假定我们要创建一张 COMPANY 表,并创建下面几个字段:


🐴🐴 第一步:登陆PG


2a5061d09ec74f7abd827e6781cbc75e.png


🐴🐴 第二步:创建表


CREATE TABLE COMPANY(

ID SERIAL PRIMARY KEY,

NAME TEXT NOT NULL,

AGE INT NOT NULL,

ADDRESS CHAR(50),

SALARY REAL

);


c6b2a54fb1d8435e85fec8431d65c88a.png


🐴🐴 第三步:现在往表中插入几条记录



INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( ‘Paul’, 32, ‘California’, 20000.00 );

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES (‘Allen’, 25, ‘Texas’, 15000.00 );

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES (‘Teddy’, 23, ‘Norway’, 20000.00 );

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( ‘Mark’, 25, 'Rich-Mond ', 65000.00 );

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( ‘David’, 27, ‘Texas’, 85000.00 );

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( ‘Kim’, 22, ‘South-Hall’, 45000.00 );

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( ‘James’, 24, ‘Houston’, 10000.00 );


28607711502f44e384db1e8fab9014f1.png


🐴🐴 查看 COMPANY 表的记录如下

df348eed93c641d4b13c9c53dcb51082.png


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
存储 分布式计算 大数据
HBase分布式数据库关键技术与实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析了HBase的核心技术,包括数据模型、分布式架构、访问模式和一致性保证,并探讨了其实战应用,如大规模数据存储、实时数据分析及与Hadoop、Spark集成。同时,分享了面试经验,对比了HBase与其他数据库的差异,提出了应对挑战的解决方案,展望了HBase的未来趋势。通过Java API代码示例,帮助读者巩固理解。全面了解和掌握HBase,能为面试和实际工作中的大数据处理提供坚实基础。
61 3
|
18天前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
82 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
18天前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
294 0
|
18天前
|
NoSQL 安全 Unix
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(中)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
23 0
|
18天前
|
存储 NoSQL Redis
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群(下)
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群
233 1
|
18天前
|
监控 NoSQL Redis
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群(上)
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群
281 0
|
18天前
|
存储 NoSQL 调度
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(下)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
18 0
|
18天前
|
存储 NoSQL API
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(上)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
26 1
|
18天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
351 9
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
18天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
42 6