sql语句怎么实现数据递增

sql语句怎么实现数据递增,第1张

以sqlserver为例,按照你的要求,先有如下一张表,里面有相关的数据,所以可以采用alter

table表名

add

列名

类型

约束。。

如下:

create

table

test(

name

varchar(10),

sex

char(1),

profession

varchar(15)

)

alter

table

test

add

id

int

identity

check(id>1

and

id<9999)

其中

identity

说明是自增

但是,正常情况下,一张表是有主键约束的,你添加id是不是要重新设置约束呢,关于这点,可以先alter

table

drop

constraint

约束名。。然后再

alter

table

test

add

id

int

identity

check(id>1

and

id<9999)

添加主键约束。。具体的 *** 作可以参考相关数据库的帮助文档

truncate table_name;

//记住使用 truncate table_name 清空的表是无法找回数据的,truncate table_name;是直接删除所有数据,自增重置

delect from table_name

//一行一行删除数据,新建数据会从上次删除的最大ID自增

这个就是两种删除的不同

谢谢

好久没玩了,也不知道说的对不对。说说自己的理解,互相学习学习。

1为什么需要全部控制文件的备份文件,只靠全部数据文件恢复表空间不行吗?

下面是一个假设的例子

上午9点,数据库正常,备份数据库

上午10点,错误删除了一个表空间

上午11点,发现错误删除了,需要恢复

这里 9点的时候,控制文件中,记录了你每个数据文件的信息。

10点的时候,误删了表空间,导致一个或多个数据文件,被删除掉,同时 控制文件中,不再记录该文件的信息。

11点的时候,你要恢复那个误删的表空间,那就必须要 定位到9点的那个时候的控制文件。 因为9点的时候,控制文件中记录了 每个表空间,由多少个数据文件组成,以及数据文件都叫啥名字

如果你只有一堆数据文件的话,Oracle 没法自动的识别这些文件,原来是属于哪一个表空间的。

2假如该例子不完全数据库恢复之后,那么是恢复到数据库之前的一个时间,尽然这样的话,那么的用来恢

复的控制文件和数据文件的SCN是往后推移的,那是不是日志文件和系统改变的SCN是往前的呢?SCN是否

可以往前。 或者是我对不完全数据库恢复还没有理解,请大家帮我解决下!!

SCN = SYSTEM CHANGE NUMBER

就是当数据库 COMMIT 之后,这个 SCN 会不断地从小到大递增。

还是前面那个例子

上午9点,数据库正常,备份数据库 假如这个时候数据库 SCN = 500

上午10点,错误删除了一个表空间 假如这个时候数据库 SCN = 600

上午11点,发现错误删除了,需要恢复 假如这个时候数据库 SCN = 700

那么上面的这种情况下,你需要把数据库恢复到删除表空间的前一个 SCN 之前, 也就是 SCN = 599 的情况下。

以下是总结的mysql的常用语句,欢迎指正和补充~

一、创建库,删除库,使用库

1创建数据库:create database 库名;

2删除数据库:drop database 库名;

3使用数据库:use 库名;

二、创建数据表

1创建表语句:create table 表名(字段名1 字段类型 字段约束,字段2 字段类型 字段约束);

2创建与现有表一样字段的新表:create table 表名 like 已有表名;

3将查询结果创建新表:create table 表名 select from 现有表 where(查询语句);

三、查看表结构,查看建表语句,删除表

1查看表结构:desc 表名;

2查看建表语句:show create table 表名;

3删除表:drop table 表名;

四、修改表结构

1对数据表重命名:alter table 表名 rename 新表名;

2增加字段:alter table 表名 add 字段名 字段类型 字段约束; (PS:可用first/after函数调整字段位置)

3删除字段:alter table 表名 drop 字段名;

4修改字段类型及约束:alter table 表名 modify 字段名 新类型 新约束;(PS:如不加新约束,会将建表时的约束清空,主键、外键、唯一约束除外)

5修改字段名称:alter table 表名 change 字段名 新字段名 新字段类型 新约束条件;

6修改数据库引擎:alter table 表名 engine=;(PS:主要有InnoDB和MyISAM,InnoDB对经常修改表数据友好,MyISAM对经常查询表友好)

7增加主键:alter table 表名 add primary key(字段名);

8删除主键:alter table 表名 drop primary key;

9增加外键:alter table 表名 add constraint 外键名 foreign kek(字段名) references 主表(主键);

10删除外键:alter table 表名 drop foreign key 外键名;

11删除唯一约束:alter table 表名 drop index 字段名;

12设置自动增长的初始位置:alter table 表名 auto_increment=n;

五、向表中插入数据

1向表指定字段插入多条数据:insert into 表名(字段1,字段2) values(数据1,数据2),(数据1,数据2),(数据1,数据2),(数据1,数据2);

2将查询结果插入表:insert into 表名 select 字段名 from 表名(查询语句);

3加载外部数据到表:Load data local infile ‘数据路径’Into table 表名 Fields terminated by ‘分隔符’Ignored 1 lines;

六、更新表数据、删除表数据

1更改满足条件的字段数据:update 表名 set 字段计算1,字段计算2 where 条件;

2删除满足条件的数据:delele from 表名 where 条件;

3删除所有数据:方式一:delete from 表名; 方式二:truncate table 表名; 方式一会逐条进行删除,速度较慢,方式二直接删除,速度快;另外对自增字段,方式一不能重置自增字段的初始位置,方式二可以重置自增字段的其实位置;

思路:

1、首先搞清楚所有表的主外键关系

2、取消全部表的主键自增标识列,方便你后续的直接修改ID

例如:

exec sp_configure 'allow updates',1

reconfigure with override

GO

----取消标识列标记

update syscolumns set colstat = 0 where id = object_id('表名') and colstat = 1

GO

----恢复标识列标记

update syscolumns set colstat = 1 where id = object_id('表名') and name = '标识列名称'

3、写个SQL脚本,修改ID,在修改的时候,一并更新全部表里的此ID值

例如:

declare @old_id as int,@new_id as int

select @old_id=12,@new_id=123

update 表名1 set id=@new_id where id=@old_id

update 表名2 set id=@new_id where id=@old_id

update 表名3 set id=@new_id where id=@old_id

update 表名n set id=@new_id where id=@old_id

以上就是关于sql语句怎么实现数据递增全部的内容,包括:sql语句怎么实现数据递增、mysql数据库清空表后,自动增长的列怎么从1开始、oracle 中不完全数据库恢复的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10158072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存