access数据库自动编号问题 我明明设置的自动编号,我从中间删除后怎么编号不会自动排列呢

access数据库自动编号问题 我明明设置的自动编号,我从中间删除后怎么编号不会自动排列呢,第1张

肯定是删除过吧,自动编号是不重新排删除了的。解决方法如下:

方法一(前提:数据库表可带内容进行自动编号更新):

打开数据库,切换到“设计视图”,删掉那个自动编号的字段,再建一个同样的自动编号字段即可。

方法二(前提:数据库表内容已被清空):

打开数据库,选择菜单“工具”——“数据库实用工具”——“压缩和修复数据库”,这样就OK了。

方法三:

利用网站程序中的“数据库SQL语句”执行功能在线完成,比如FeitecCMS程序中的“数据处理”——“数据库SQL语句”。

Alter

TABLE

[表名]

Alter

COLUMN

自动编号字段名

COUNTER

(你要的初始值,

1)

Access数据库为字段提供10种数据类型,比较容易了解,和Excel中很多数据类型类似。后面具体说一下自动编号型:

1.文本型(Text):用于输入文本或文本与数字相结合的数据,是最常用的字段类型之一,又分为短文本和长文本两种,区别就是短文本的字符长度不超过255个字符(字节)。在Access中,每一个汉字和所有特殊字符(包括中文标点符号)都算作一个字符。

2.货币型(Currency):用来存储货币值,即与货币相关的数据,占8个字节,在计算中禁止四舍五入。

要求不严格时,可以使用数字型字段。

3.数字型(Number):用于存储数值数据,可以进行数值计算的数据,但货币除外。

数字型字段按字段大小可以分为字节、整型、长整型、单精度型、双精度型、同步复制ID和小数7种情形,分别占1、2、4、4、8、16和12个字节。最常用的是长整型和双精度型。

4.日期/时间型(Date/Time):用于存储日期和(或)时间值,占8个字节。

5、自动编号型(AutoNumber):如果在表中设计了自动编号字段,当表中新增一个记录之后,系统字段为其添加一个顺序编号,通过自动编号可以保证数据记录的唯一性。默认是长整型,自动编号不能更新。

6、是/否型(Yes/No):又称为布尔型类型,用于存储逻辑值(是/否、真/假、开/关),占1个字节。

7、OLE对象型(OLE Object):用于使用OLE协议在其它程序中创建的OLE对象(如Word文档、Excel电子表格、、声音等),最多存储1GB(受磁盘空间限制)。

8、附件:附件类型是存储数字图像等二进制文件的首选数据类型。

9、超链接型(Hyper Link):用于存放通过超链接方式链接的Windows对象,如通过超链接跳转至文档、网页等。

10、查阅向导型(Lockup Wizard):使用查询向导可以构建一个组合框来输入字段值,这个字段值可以是表、查询中的引用,也可以手动输入的值。

扩展资料:

对于自动编号型,在快捷建表时,会默认有自动编号字段“ID”,它的用途主要是表中如果没有合适的字段作为主键时,它可以充当主键。

使用自动编号型字段时,每增加一条记录时,系统自动增加一个顺序编号,即使删除也不会更新,从而保证数据记录的唯一性。所以可以充当主键。

declare @cur cursor

declare @n nvarchar(500)

declare @r as int

declare @sql nvarchar(500)

set @cur= cursor for

SELECT name FROM sysobjects WHERE (xtype = 'u')

open @cur

FETCH NEXT FROM @cur INTO @N

WHILE @@FETCH_STATUS = 0

BEGIN

set @sql ='if not exists(SELECT FROM ' + @n + ') drop table ' + @n

--exec sp_executesql @sql --我先注释了这一行,注意危险,你确认一下

print @sql

FETCH NEXT FROM @cur INTO @N

END

你的问题是改了又改,我的回答也改了又改

上面的回答中: exec sp_executesql @sql 就把没有行的表给删除了,看注释

如果你要列出表的话,如下:

set nocount on

declare @cur cursor

declare @n nvarchar(500)

declare @r as int

declare @sql nvarchar(500)

set @cur= cursor for

SELECT name FROM sysobjects WHERE OBJECTPROPERTY(id, N'IsUserTable') = 1

declare @tb table (name nvarchar(50) ,rows int)

open @cur

FETCH NEXT FROM @cur INTO @N

WHILE @@FETCH_STATUS = 0

BEGIN

set @sql = 'select @c=count () from ' + @n

print @n

exec sp_executesql @sql, N'@c int output',@c=@r output

insert into @tb (name,rows) values(@n,@r)

FETCH NEXT FROM @cur INTO @N

END

--select from @tb --如果你要每个表名称和行数

select name from @tb where rows=0 --这样就是没有记录的表名

手工打字,可能出错,还是要你自己测试一下,

要这点分数还真有点难

Oracle

不直接支持 自动递增的列。

需要创建一个序列 SEQUENCE。

又由于无法在列的默认值那里,设置默认值为序列。因此只能通过触发器来设置。

SQL> CREATE SEQUENCE test_sequence2

2 increment by 1 -- 每次递增1

3 start with 1 -- 从1开始

4 nomaxvalue -- 没有最大值

5 minvalue 1 -- 最小值=1

6 NOCYCLE; -- 不循环

Sequence created

SQL> CREATE TABLE test_create_tab2 (

2 id INT,

3 val VARCHAR(10),

4 PRIMARY KEY (id)

5 );

Table created

SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert

2 BEFORE INSERT ON test_create_tab2

3 FOR EACH ROW

4 BEGIN

5 SELECT test_sequence2nextval INTO :newid FROM dual;

6 END;

7 /

Trigger created

SQL Server

通过 IDENTITY 来设置

参数有2个,一个是“初始值” 一个是“增量”。

1> CREATE TABLE test_create_tab2 (

2> id INT IDENTITY(1, 1) PRIMARY KEY,

3> val VARCHAR(10)

4> );

5> go

MySQL

通过

AUTO_INCREMENT设置

mysql> CREATE TABLE test_create_tab2 (

-> id INT AUTO_INCREMENT,

-> val VARCHAR(10),

-> PRIMARY KEY (id)

-> );

Query OK, 0 rows affected (009 sec)

insert into 表名(字段名逗号隔开(不用写自动增长那列)) values(对应的值也是逗号隔开)

要是每个字段都要插入那就可以写成

insert into 表名 values(顺序写值,每个字段都要写(不包括自动增长列))

into可以省略不写

insert into语句可以有两种编写形式:

1、无需指定要插入数据的列名,只需提供被插入的值即可:

insert into table_name

values (value1,value2,value3,);

2、需要指定列名及被插入的值:

insert into table_name (column1,column2,column3,)

values (value1,value2,value3,);

扩展资料

SQL常用语句

查所有数据库 show databases;

创建数据库 create database db1;

查看数据库 show create database db1;

创建数据库指定字符集 create database db1 character set utf8/gbk

删除数据库 drop database db1;

使用数据库 use db1;

创建表 create table t1(id int,name varchar(10));

查看所有表 show tables;

查看单个表属性 show create table t1;

查看表字段 desc t1;

创建表指定引擎和字符集 create table t1(id int,name varchar(10)) engine=myisam/innodb charset=utf8/gbk;

以上就是关于access数据库自动编号问题 我明明设置的自动编号,我从中间删除后怎么编号不会自动排列呢全部的内容,包括:access数据库自动编号问题 我明明设置的自动编号,我从中间删除后怎么编号不会自动排列呢、自动编号的类型有哪些、如何实现数据库中表的每条记录自动编号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存