精华内容
下载资源
问答
  • 标识列:自动增长列,数据库的设计我们经常使用此操作,那么oracle数据库,我们如何创建标识列呢?下文将讲述具体的实现方法,如下所示:实现思路:步骤1: 创建数据maomaocreate table maomao(keyId varchar...

    摘要:

    下文讲述oracle数据库中创建标识列的相关技巧分享,如下所示;

    标识列:自动增长列,在数据库的设计中我们经常使用此操作,

    那么在oracle数据库中,我们如何创建标识列呢?下文将讲述具体的实现方法,如下所示:

    实现思路:

    步骤1: 创建数据表maomao

    create table maomao

    (keyId varchar2(20),

    info varchar2(10));

    步骤2: 创建一个序列(Sequence)

    创建序列时,按需选择属性

    如无最大值,则删除maxvalue行

    create sequence SEQMAOMAOKEYID//序列名称

    minvalue 1 //--该序列的最小值是1

    maxvalue 99999999999999 //--最大值

    nomaxvalue //--没有最大值

    start with 1 //--初始值从1开始递增

    increment by 1 //--每次递增1

    cache 20 //--设置缓存CACHE个序列,如果系统DOWN掉了或者其它情况将会导致序列不连续

    nocache //--序列不放在缓存中

    cycle //--到最大值从初始值开始

    nocycle //--一直累加,序列不循环

    order; //

    步骤3:向数据表maomao中插入值:

    currval=返回 sequence的当前值

    nextval=增加sequence的值,并返回 sequence 值

    insert into maomao values (SEQMAOMAOKEYID.nextval,'maomao1');

    insert into maomao values (SEQMAOMAOKEYID.nextval,'maomao2');

    insert into maomao values (SEQMAOMAOKEYID.nextval,'maomao3');

    insert into maomao values (SEQMAOMAOKEYID.nextval,'maomao4');

    步骤4:

    create or replace trigger tg_maomao

    before insert on maomao for each row

    as

    begin

    select SEQMAOMAOKEYID.NEXTVAL INTO :NEW.id FROM DUAL;

    end;

    展开全文
  • 该种列具有以下三种特点:1、列的数据类型为不带小数的数值类型2、进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值3、列值不重复,具有标识表中每一行的作用,每个只能有一个标识列。...

    一、标识列的定义以及特点

    SQL Server中的标识列又称标识符列,习惯上又叫自增列。

    该种列具有以下三种特点:

    1、列的数据类型为不带小数的数值类型

    2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值

    3、列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列。

    由于以上特点,使得标识列在数据库的设计中得到广泛的使用。

    二、标识列的组成

    创建一个标识列,通常要指定三个内容:

    1、类型(type)

    在SQL Server 2000中,标识列类型必须是数值类型,如下:

    decimal、int、numeric、smallint、bigint 、tinyint

    其中要注意的是,当选择decimal和numeric时,小数位数必须为零

    另外还要注意每种数据类型所有表示的数值范围

    2、种子(seed)

    是指派给表中第一行的值,默认为1

    3、递增量(increment)

    相邻两个标识值之间的增量,默认为1。

    三、标识列的创建与修改

    标识列的创建与修改,通常在企业管理器和用Transact-SQL语句都可实现,使用企业管理管理器比较简单,请参考SQL Server的联机帮助,这

    里只讨论使用Transact-SQL的方法

    1、创建表时指定标识列

    标识列可用 IDENTITY 属性建立,因此在SQL Server中,又称标识列为具有IDENTITY属性的列或IDENTITY列。

    下面的例子创建一个包含名为ID,类型为int,种子为1,递增量为1的标识列

    CREATE TABLE T_test

    (ID int IDENTITY(1,1),

    Name varchar(50)

    )

    2、在现有表中添加标识列

    下面的例子向表T_test中添加一个名为ID,类型为int,种子为1,递增量为1的标识列

    --创建表

    CREATE TABLE T_test

    (Name varchar(50)

    )

    --插入数据

    INSERT T_test(Name) VALUES('张三')

    --增加标识列

    ALTER TABLE T_test

    ADD ID int IDENTITY(1,1)

    3、判段一个表是否具有标识列

    可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法:

    Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHasIdentity')

    如果有,则返回1,否则返回0

    4、判断某列是否是标识列

    可使用 COLUMNPROPERTY 函数确定 某列是否具有IDENTITY 属性,用法

    SELECT COLUMNPROPERTY( OBJECT_ID('表名'),'列名','IsIdentity')

    如果该列为标识列,则返回1,否则返回0

    4、查询某表标识列的列名

    SQL Server中没有现成的函数实现此功能,实现的SQL语句如下

    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns

    WHERE TABLE_NAME='表名' AND COLUMNPROPERTY(

    OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=1

    5、标识列的引用

    如果在SQL语句中引用标识列,可用关键字IDENTITYCOL代替

    例如,若要查询上例中ID等于1的行,

    以下两条查询语句是等价的

    SELECT * FROM T_test WHERE IDENTITYCOL=1

    SELECT * FROM T_test WHERE ID=1

    6、获取标识列的种子值

    可使用函数IDENT_SEED,用法:

    SELECT IDENT_SEED ('表名')

    7、获取标识列的递增量

    可使用函数IDENT_INCR ,用法:

    SELECT IDENT_INCR('表名')

    8、获取指定表中最后生成的标识值

    可使用函数IDENT_CURRENT,用法:

    SELECT IDENT_CURRENT('表名')

    注意事项:当包含标识列的表刚刚创建,为经过任何插入操作时,使用IDENT_CURRENT函数得到的值为标识列的种子值,这一点在开发数据库应用程序的时候尤其应该注意。

    利用 SQL 语句修改出一个标识列使用sql语句创建修改SQL Server标识列(即自动增长列)

    --将数据复制到临时表

    select * into #aclist from aclist

    --删除数据表

    drop table aclist

    --创建数据表(并设置标识列)

    create table aclist(id int identity(1,1),[date] datetime,version nvarchar(6),[class] nvarchar(10),actitle nvarchar(50),acdetail nvarchar(max),author nvarchar(50))

    --设置标识列允许插入

    set identity_insert aclist on

    --将数据从临时表转移过来

    insert into aclist(id,[date],version,[class],actitle,acdetail,author)

    select id,[date],version,[class],actitle,acdetail,author from #aclist

    --关闭标识列插入

    set identity_insert aclist off

    --强制设置标识列的起始值:

    DBCC CHECKIDENT (表名, RESEED, 1) --强制使标识值从1开始.

    ----------------

    修改原有字段中,不删除表,直接修改表中字段,删除数据后,处理。

    ---创建没有自动增长的数据表

    CREATE TABLE [tbMessage](

    [id] [decimal](18, 0),

    [msg_content] [varchar](max) NULL

    ) ON [PRIMARY]

    GO

    ----插入测试数据

    insert into [tbMessage]([id],[msg_content])

    values(20,'你知道吗?')

    insert into [tbMessage]([id],[msg_content])

    values(21,'你知道吗?201')

    go

    --查看数据

    ---select * from tbMessage

    --插入临时表

    select * into #tbMessage from [tbMessage]

    go

    --删除表数据

    delete [tbMessage]

    go

    --删除字段ID

    alter table [tbMessage] drop column [ID]

    ---增加ID自动增长字段

    alter table [tbMessage] add [id] int identity(1,1)

    set identity_insert [tbMessage] on

    --将数据从临时表转移过来

    insert into [tbMessage]([msg_content]

    ,[id])

    select [msg_content]

    ,[id] from #tbMessage

    --关闭标识列插入

    set identity_insert [tbMessage] off

    ---删除临时表

    drop table #tbMessage

    --------------------------------------------------

    /*

    drop table tbMessage

    ---------------检测自动增长字段是否正常----------

    ----获取种子数据

    SELECT IDENT_SEED ('[tbMessage]')

    ---drop table tbMessage

    ---插入二条数据

    insert into [tbMessage]([msg_content])

    values('你知道吗20111')

    insert into [tbMessage]([msg_content])

    values('你知道吗20112')

    ---查看这个ID是否,正常增长

    select * from tbMessage

    */

    展开全文
  • 不一定,但要求是一个key2、一个表可以有几个标识列?至多一个!3、标识列的类型只能是数值型4、标识列可以通过 SET auto_increment_increment=3;设置步长可以通过 手动插入值,设置起始值*/#一、创建表时设置标识列...

    #标识列

    /*

    又称为自增长列

    含义:可以不用手动的插入值,系统提供默认的序列值

    特点:

    1、标识列必须和主键搭配吗?不一定,但要求是一个key

    2、一个表可以有几个标识列?至多一个!

    3、标识列的类型只能是数值型

    4、标识列可以通过 SET auto_increment_increment=3;设置步长

    可以通过 手动插入值,设置起始值

    */

    #一、创建表时设置标识列

    DROP TABLE IF EXISTS tab_identity;

    CREATE TABLE tab_identity(

    id INT ,

    NAME FLOAT UNIQUE AUTO_INCREMENT,

    seat INT

    );

    TRUNCATE TABLE tab_identity;

    INSERT INTO tab_identity(id,NAME) VALUES(NULL,'john');

    INSERT INTO tab_identity(NAME) VALUES('lucy');

    SELECT * FROM tab_identity;

    SHOW VARIABLES LIKE '%auto_increment%';

    SET auto_increment_increment=3;

    展开全文
  • -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 increment by 1 cache...2.--INNERID.currval 指当前序列 --INNERID.nextval 指下一个序列create table admin (id va...

    -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 increment by 1 cache 20 order;

    2.--INNERID.currval   指当前序列 --INNERID.nextval   指下一个序列

    create table admin (id varchar2(20),name varchar2(10));

    insert into admin values (INNERID.nextval,‘a‘); insert into admin values (INNERID.nextval,‘b‘); insert into admin values (INNERID.nextval,‘c‘); insert into admin values (INNERID.nextval,‘d‘); --不断的插入序列的下一个值.

    3.创建触发器(注意这里无法设置id的默认值为INNERID.nextval )

    CREATE OR REPLACE TRIGGER admin_tg --admin id 的触发器 BEFORE INSERT ON admin FOR EACH ROW BEGIN        SELECT INNERID.NEXTVAL INTO :NEW.id FROM DUAL; END;

    测试语句

    insert into admin (username) values ( ‘zdz‘);

    原文:http://www.cnblogs.com/outlooking/p/4265001.html

    展开全文
  • 虽然创建表中字段的主外键、标识列、唯一约束、check约束等可以使用视图法创建,但最基本的还是应该会使用sql语句来创建这些吧,咱废话少说,直接上干货!!! 添加主键约束: alter table <表名> add ...
  • Hive表创建唯一标识列

    2021-06-27 15:06:16
    需求:某一张 hive 表中需要有一列去唯一标识行,有些类似于MySQL 的自增ID row_number() SELECT row_number() OVER(ORDER BY RAND()) AS sample_key 1 结果 UUID SELECT regexp_replace(reflect(...
  • 例: round(123.456,2) ------------ 123.47ROUND ( numeric_expression , length [ , function ] ) 参数 numeric_expression 精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)...sql中标识列的作用是...
  • mysql - 标识列

    2021-02-02 05:50:16
    一个表中只能有一个标识列!3.标识列的类型有限制吗?只能是数值类型(int,float,double)4.标识列可以通过set auto_increment_increment=3;设置步长,可以通过 手动插入值, 设置起始值*/#一、创建表时设置标识列crea...
  • PostgreSQL表标识列教程

    2021-09-13 19:39:46
    本文学习使用 GENERATED AS IDENTITY 约束创建 PostgreSQL 标识列标识列介绍 PostgreSQL 10 引入新的特性:GENERATED AS IDENTITY 约束,可以给列自动赋唯一值,它是非常好用serial 列的变体。语法如下: ...
  • 该种列具有以下三种特点:1、列的数据类型为不带小数的数值类型2、进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值3、列值不重复,具有标识表中每一行的作用,每个只能有一个标识列。...
  • 不一定,但要求是一个key2、一个表可以有几个标识列?至多一个!3、标识列的类型只能是数值型4、标识列可以通过 SET auto_increment_increment=3;设置步长创建表时设置标识列AUTO_INCREMENTDROP TABLE IF EXISTS tab...
  • 使用AUTO_INCREMENT可以通过AUTO_INCREMENT属性为新的行产生唯一的标识:CREATE TABLE animals (id MEDIUMINT NOT NULL AUTO_INCREMENT,name CHAR(30) NOT NULL,PRIMARY KEY (id));INSERT INTO animals (name) ...
  • mysql标识列和事务

    2021-01-18 18:45:21
    不一定,但要求是一个key9 2、一个表可以有几个标识列?至多一个!10 3、标识列的类型只能是数值型11 4、标识列可以通过 SET auto_increment_increment=3;设置步长12 可以通过 手动插入值,设置起始值131415 */1617 ...
  • mysql标识列

    2021-01-14 15:23:27
    不一定,但要求是一个key(也可以是unique)2、一个表可以有几个标识列?至多一个!3、标识列的类型只能是数值型4、标识列可以通过 SET auto_increment_increment=3;设置步长可以通过 手动插入值,设置起始值*/#一、...
  • 数据库标识列标识列又称为自增列,它可以不用手动的插入值而由系统来提供默认值,一个表中至多只能有一个标识列,并且不允许有空值,另外类型也只能是数值型。标识列的含义:设计数据时都会给ID添加一个...
  • 3、列值不重复,具有标识表中每一行的作用,每个只能有一个标识列。 由于以上特点,使得标识列在数据库的设计得到广泛的使用。 二、标识列的组成 创建一个标识列,通常要指定三个内容: 1、类型(type) SQL ...
  • 尽管你可以对标识列(identity column)的值及其任意值的用处有千条万条理由,但是...为了解决这个问题,你可以创建一个带有标识列的表格,并用一些数据行来填充它:-- Create a test table.CREATE TABLE TestIdentit...
  • 1 自增1.1 创建自增列在创建表时可以制定是否自增。 一个表只能有一个自增。https://www.cndba.cn/dave/article/3590语法格式1.种子:装载到表中的第一个行所使用的值;2.增量:增量值,该值被添加到前一个...
  • SQL Server, 我们有时需要清空数据之后,重新添加记录时,标识列重新从1开始计数。我们只需要插入记录之前,执行下面的命令:DBCC CHECKIDENT ('表名', RESEED, 0)--------------------------------------...
  • DBCCCHECKIDENT重置数据库标识列从某数值开始DBCC CHECKIDENT 重置数据库标识列从某数值开始DBCC CHECKIDENT(N'dbo.Orders', RESEED, 0);DBCC CHECKIDENT 语法DBCC CHECKIDENT(table_name[ , { NORESEED | { ...
  • 2、一个表可以有几个标识列?至多一个! 3、标识列的类型只能是数值型 4、标识列可以通过 SET auto_increment_increment=3;设置步长 可以通过 手动插入值,设置起始值 二、创建表时设置标识列 DROP TABLE IF EXISTS...
  • SQL Server 2000 修改系统的方法大部分人都知道,介绍如何 SQL 2005 修改系统的资料目前还比较少,虽然微软不赞成修改系统,而且也把修改系统的代码隐藏起来了。但微软一贯喜欢给自己留小后门。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 268,740
精华内容 107,496
关键字:

在表中创建一个标识列