网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL修改

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
问:SQLServer2000中设计表时如何得到自动编号字段?
    答:具体步骤如下:
    ①像Access中的自动编号字段
    右键你的表-->设计表-->找到你的id字段(类int型)-->标识-->是-->标识种子(初始值)-->标识递增量-->OK
    ②用IDENTITY(SEED,INCREMENT)参数
    seed-启始值
    increment-增量
    CREATETABLE表名(
    你的IDIDENTITY(1,1)NOTNULL,你的其他字段...)
    CREATETABLE表名(
    你的字段IDAUTOINCREMENT(1000,10),其他字段...)
    ③修改起始值和步进值
    ALTERTABLE表名ALTERCOLUMN你的字段IDCOUNTER(2000,50)
    ④让一个删空的表自动增加字段的开始值重新从1开始
    ALTERTABLE表名ALTERCOLUMN你的字段IDCOUNTER(1,1)
    上述34只适用与Access,COUNTER为其一种数据类型,可以在Access中指定一不是自动编号的字段为自动编号字段,也可以让一自动编号字段重新从指定值按指定步长自动编号。但是如果表中有数据,用户不能用该语句来将该列的数据类型改变为COUNTER数据类型。对于SQLServer并不支持。
    对于SQLServer我们或许总希望用AlterTable表名AlterColumn你的字段IDENTITY(1,1)
    来指定字段重新从1开始计数,但是这句话本身是错误的,好长时间我也疑惑为什么这句话不能执行。如果我们看看MS对AlterTable语句的定义就清楚了,这句话根本是错误的。下面是MS对AlterTable语句的定义。
    ALTERTABLEtable
    {[ALTERCOLUMNcolumn_name
    {new_data_type[(precision[,scale])]
    [COLLATE]
    [NULL|NOTNULL]
    |{ADD|DROP}ROWGUIDCOL}
    ]
    |ADD
    {[]
    |column_nameAScomputed_column_expression
    }[,...n]
    |[WITHCHECK|WITHNOCHECK]ADD
    {}[,...n]
    |DROP
    {[CONSTRAINT]constraint_name
    |COLUMNcolumn}[,...n]
    |{CHECK|NOCHECK}CONSTRAINT
    {ALL|constraint_name[,...n]}
    |{ENABLE|DISABLE}TRIGGER
    {ALL|trigger_name[,...n]}
    }
    ::=
    {column_namedata_type}
    [[DEFAULTconstant_expression][WITHVALUES]
    |[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]
    ]
    [ROWGUIDCOL]
    [COLLATE]
    [][...n]
    ::=
    [CONSTRAINTconstraint_name]
    {[NULL|NOTNULL]
    |[{PRIMARYKEY|UNIQUE}
    [CLUSTERED|NONCLUSTERED]
    [WITHFILLFACTOR=fillfactor]
    [ON{filegroup|DEFAULT}]
    ]
    |[[FOREIGNKEY]
    REFERENCESref_table[(ref_column)]
    [ONDELETE{CASCADE|NOACTION}]
    [ONUPDATE{CASCADE|NOACTION}]
    [NOTFORREPLICATION]
    ]
    |CHECK[NOTFORREPLICATION]
    (logical_expression)
    }
    ::=
    [CONSTRAINTconstraint_name]
    {[{PRIMARYKEY|UNIQUE}
    [CLUSTERED|NONCLUSTERED]
    {(column[,...n])}
    [WITHFILLFACTOR=fillfactor]
    [ON{filegroup|DEFAULT}]
    ]
    |FOREIGNKEY
    [(column[,...n])]
    REFERENCESref_table[(ref_column[,...n])]
    [ONDELETE{CASCADE|NOACTION}]
    [ONUPDATE{CASCADE|NOACTION}]
    [NOTFORREPLICATION]
    |DEFAULTconstant_expression
    [FORcolumn][WITHVALUES]
    |CHECK[NOTFORREPLICATION]
    (search_conditions)
    }
    可以看到,IDENTITY只是在中,也就是说,我们可以这样使用
    AlterTable表名Add字段名IntIDENTITY(1,1)
    即,我们可以增加一个字段并指定它为自动编号字段。但是不能更改一个字段为自动编号字段(也或许我没找到方法)。即,如果我们想给表增加自动编号字段,只能使用添加字段的方法,而不能更改一个已有的字段为自动编号字段。
    至于如果需要更改自动编号字段计数起始值可以使用DBCC命令:
    DBCCCHECKIDENT(表名,RESEED,100)
    SQL修改列及表名的问题
    下文对SQL修改列及表名的问题进行了详细的解析,供您参考,如果您遇到过类似的问题,不妨一看,相信对您会有所帮助。
    AD:
    遇到一个问题,怎么修改int的列为char,使用SQL语句的话,因为数量量比较大,查询分析器里操作会超时失败,刚开始认为执行下面语句就可以了
    AltertableStockaltercolumnStockCountchar
    结果失败,检查了下,总结如下
    执行上门操作需要先对表检查
    1.该列不是主键之类的,是的话要移除
    2.查看约束,有和该列关联的约束也要解除
    3.索引看下是否用到该列
    大概就这么多,我第二步就解决了上面的SQL修改列失败问题
    附带下面的语句
    增加列
    1:在表table1中增加name列为text型
    altertabletable1addnametext
    2:在表table2中增加nob列为int型且设自增量为1,且不空
    altertabletable1addnobintidentity(1,1)notnull
    删除列
    例:删除table1中的id列
    altertabletable1dropcolumnid
    3.修改表名
    execsp_rename'旧表名','新表名'
    4.SQL查询分析器的使用技巧,有时候临时忘记语句怎么写,但是修改表数据又提示超时
    这时候可以,点“工具”->选项->设计器->表设计器和数据库设计器->自动生成更改脚步(这个选项打上勾)
    然后,再次去修改数据,提示超时之后,会得到对应的sql执行代码,把代码提出来放在查询分析器里手动执行就可以执行成功了
    
  • 上一篇资讯: sql出现问题(1)
  • 下一篇资讯: SQL修改(1)
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师