SQL专栏

SQL数据库基础知识汇总

SQL数据库高级知识汇总

自增长列的作用

自增长列会在新记录插入表中时生成一个唯一的数字。

我们通常希望在每次插入新记录时自动创建主键字段的值。

我们可以在表中创建一个自动增量字段。

MySQL中的自增长列

MySQL中的自增长是关键字Auto-increment,通常作为主键

以下SQL语句将 "Persons" 表中的“ID”列定义为自动递增(auto-increment)主键字段:

CREATE TABLE Persons

(

ID int NOT NULL AUTO_INCREMENT,

姓名 varchar(255) NOT NULL,

地址 varchar(255),

城市 varchar(255),

省份 varchar(255),

PRIMARY KEY (ID)

)

MySQL使用AUTO_INREMENT关键字来执行自动增量( auto-increment )任务。

默认情况下,AUTO_INREMENT的起始值为1,每个新记录增加1。

比如我们往Persons表中插入一条记录

INSERT INTO Persons(姓名,地址,城市,省份)

VALUES ('张三','花城大道12号','广州市','广东省')

注意上面插入语句我们没有插入ID,因为它可以自动补充。我们看一下插入后的结果

可以看到系统自动为我们补充上了一个为1的ID。

若要以其他值开始AUTO_INREMENT序列,请使用以下SQL语法:

ALTER TABLE Persons AUTO_INCREMENT=100

要在 "Persons" 表中插入新记录,我们不需要为"ID"栏指定值(自动添加唯一值):

INSERT INTO Persons (姓名,地址,城市,省份)

VALUES ('李四','花城大道22号','广州市','广东省')

我们可以看一下结果

上面的SQL语句在 "Persons" 表中插入一个新记录。“ID”栏将得到唯一值100,因为我们刚才把它的起始值改成了100,所以系统ID默认从100开始。

SQL Server中的自增长列

以下SQL语句将 "Persons" 表中的“ID”列定义为自动递增主键字段:

CREATE TABLE Persons

(

ID int IDENTITY(1,1),

姓名 varchar(255) NOT NULL,

地址 varchar(255),

城市 varchar(255),

省份 varchar(255)

)

MS SQL Server使用IDENTITY关键字执行自动增量任务。

在上面的示例中,IDENTITY的起始值为1,每个新记录增量为1。

比如我们往Persons表中插入一条记录

INSERT INTO Persons(姓名,地址,城市,省份)

VALUES ('王五','江夏路23号','武汉市','湖北省')

注意上面插入语句我们没有插入ID,因为它可以自动补充。我们看一下插入后的结果

如果我们指定“ID”列以10开头,并递增5,将标识( identity )更改为IDENTITY(10,5),请使用如下SQL进行修改:

ALTER TABLE Persons DROP COLUMN ID

ALTER TABLE Persons ADD ID INT IDENTITY(10,5)

这里是将ID列先删除再重新赋值,我们插入一条数据

INSERT INTO Persons(姓名,地址,城市,省份)

VALUES ('赵六','北京路23号','上海市','上海市')

我们看下结果:

此外如果只是修改起始值,而不修改步长,我们可以使用下面比较简便的SQL进行修改:

DBCC CHECKIDENT('table_name',RESEED,init_value)

我们将上面的Persons的起始ID再改成30

DBCC CHECKIDENT('Persons',RESEED,30)

修改后再插入两条数据进去,

INSERT INTO Persons(姓名,地址,城市,省份)

VALUES ('宋一','北京路26号','上海市','上海市')

INSERT INTO Persons(姓名,地址,城市,省份)

VALUES ('刘二','北京路29号','上海市','上海市')

我们看下结果:

从上面可以看出起始值已经被重置了,但是它不会以重置的起始值开始赋值,而是以它后面一个开始。

Oracle中的自增长列

您必须使用序列( sequence )对象(该对象生成数字序列)创建自动增量字段。

使用以下CREATSEQUENT语法:

CREATE SEQUENCE seq_person

MINVALUE 1

START WITH 1

INCREMENT BY 1

CACHE 10

上面的代码创建了一个名为seq_pean的序列( sequence) 对象,它以1开头,以1递增。此对象缓存10个值以提高性能。缓存选项指定要存储多少序列值以提高访问速度。

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

INSERT INTO Persons (ID,姓名,城市)

VALUES (seq_person.nextval,'张三','上海市')

相比其他数据库,Oracle这里需要指明ID的值,就是seq_person.nextval,每当插入新的数据它就会在上一条的基础上自动增长。

批注

自增长列在每个数据库中基本都会使用到,用途一般是作为主键,让系统自动给它赋值,但是也要注意自增长列是有上限的,当数据量达到上限后会停止增长,这个时候就需要重置当前的自增长列了。

mysql自动增长 sql,SQL基础知识V2——自增长列相关推荐

  1. SQL数据库基础知识-巩固篇一

    SQL数据库基础知识-巩固篇<一>... 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用了> MySQL-57 D ...

  2. SQL数据库基础知识巩固

    SQL数据库基础知识 数据库,又称"电子化的文件柜",是"按照数据结构来组织.存储和管理数据的仓库",是一个长期存储在计算机内的.有组织的.可共享的.统一管理的 ...

  3. SQL注入基础知识总结

    SQL注入-基础知识总结 1.注释符 1.1.Mysql中注释符有三种 1.2.总结 2.information_schema库 2.1.了解information_schema库 2.2.常用注入语 ...

  4. SQL Server基础知识概念要点详细讲解

    SQL Server基础知识概念要点详细讲解 目录 基础概念 1.网状模型数据库 2.层次模型数据库 3.关系模型数据库 知识点实例总结 基础概念 SQL语言中,between and表示包括两边参数 ...

  5. SQL入门基础知识详解

    ////// 导读:科学技术的快速发展正在改变我们的社会,也在不经意间改变着未来人们的职业规划.据媒体预测,数据分析将是未来最重要的工作技能之一.或许不久的将来,一家企业中80%的岗位,都需要数据分析 ...

  6. 数据分析必备——SQL入门基础知识

    数据说·梦想季 一直很喜欢一句话:山鸟与鱼不同路,从此山水不相逢.意思就是如果你现在不够优秀,即使遇见了,也不配拥有-...努力是唯一的方向! // 导读:科学技术的快速发展正在改变我们的社会,也在不 ...

  7. convert.todatetime指定日期格式_SQL基础知识V2——常用日期函数

    点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 日期函数是数据库中经常需要使用到的,本期将常用的几个日期函数给小伙伴做详细的介绍. G ...

  8. Power BI基础知识——转换表和列

    点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 转换 Power BI的转换主要是针对行列做一些编辑,包括分组,转置,反转行,计数,数 ...

  9. mysql 立方根函数_PostgreSQL基础知识之SQL操作符实践指南

    前言 操作符是数据库具有的运算特性,对文本字符和一些标签字符的处理,使用操作符可以简化SQL代码,同时也可以节省开发时间和提高开发效率. 比较操作符 在PostgreSQL中,所有的数据类型都可以使用 ...

最新文章

  1. python获取数据库列名_python sqlite3 查询操作及获取对应查询结果的列名
  2. html如何调整背景图片大小_如何快速调整证件照背景色和大小!(简单快速)...
  3. 【CodeForces - 195A】Let's Watch Football (追及问题,模拟)
  4. linux路由内核实现分析(二)---FIB相关数据结构(4)
  5. [BZOJ1007][HNOI2008]水平可见直线 计算几何
  6. 如何查看K/3数据库表及字段详细信息
  7. plsql32位链接64位oracle,32位PLSQL_Developer连接oracle11g_64位
  8. HTML期末大作业~学生个人博客静态页面模板(HTML+CSS+JavaScript)
  9. 微信小程序地图和百度地图定位位置不一样
  10. 用LM350制作简单可调电源
  11. OneDrive免费5T云盘空间
  12. 安卓开发之Intent使用介绍(显式Intent和隐式Intent)
  13. Allegro PCB Designer 16.6打开brd文件空白的方法
  14. web高德地图路线规划(多条)
  15. 用css解决Unigui在IE系列浏览器中字体变小的问题
  16. ggplot 绘制热图
  17. UTF-8到Unicode的编码转换
  18. 李永乐复习全书高等数学 第五章 多元函数微分学
  19. 百度离在线语音合成的快速集成
  20. 属性重命名 @SerializedName

热门文章

  1. SqlCommand使用实例
  2. 第2-4-8章 规则引擎Drools实战(1)-个人所得税计算器
  3. 微信小程序引入ECharts,并自定义动态修改表内参数配置
  4. 三维旋转矩阵_三维旋转矩阵与旋转向量
  5. Panda白话 - Synchronized底层同步机制
  6. 微信支付先享后付java实现(持续更新中)
  7. 原创|韭菜的自我修养!
  8. 二、八、十、十六进制互相转换大全
  9. JDBC,反射,Maven相关学习笔记
  10. 【数据结构】17-二叉排序树(BST)