以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',1reconfigure 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 intselect @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 中不完全数据库恢复的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)