`
xqf222
  • 浏览: 117449 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int

 
阅读更多

--SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int

--关键说明:
--1、从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段
--2、更新字段类型前如果该字段有默认值索引则应先删除掉对应的索引
--3、数据表字段数据类型为tinyint在CodeSmith中读出来的是DbType.Byte类型,需要修正

declare @TableName nvarchar(250)

--声明读取数据库所有数据表名称游标mycursor1
declare mycursor1 cursor for select name from dbo.SysObjects WHERE OBJECTPROPERTY(ID, 'IsUserTable') = 1
--打开游标
open mycursor1
--从游标里取出数据赋值到我们刚才声明的数据表名变量中
fetch next from mycursor1 into @TableName
--如果游标执行成功
while (@@fetch_status=0)
begin

--定义游标中要修正的字段名变量
Declare @ColumnName nvarchar(255)
Declare @ColumnID int
--通过游标读取指定数据表的所有类型为tinyint的字段

--声明游标mycursor2
declare mycursor2 cursor for select name,colid from syscolumns Where ID=OBJECT_ID(@TableName) and xtype='48' order by colid

--打开游标
open mycursor2


--从游标里取出数据赋值到我们刚才声明的字段名变量中
fetch next from mycursor2 into @ColumnName,@ColumnID

--如果游标执行成功
while (@@fetch_status=0)
begin

--1、如果当前字段存在默认值索引则应先删除
IF EXISTS (select * from sys.default_constraints where parent_object_id=OBJECT_ID(@TableName) and parent_column_id=@ColumnID)
BEGIN
Declare @ConstraintName nvarchar(255)
select @ConstraintName=name from sys.default_constraints where parent_object_id=OBJECT_ID(@TableName) and parent_column_id=@ColumnID
exec ('ALTER TABLE ['+@TableName+'] DROP CONSTRAINT ['+@ConstraintName+']')

END

--2、更新当前字段[tinyint]类型为[int]类型
exec ('ALTER TABLE ['+@TableName+'] ALTER COLUMN ['+@ColumnName+'] int')


--用游标去取下一条记录
fetch next from mycursor2 into @ColumnName,@ColumnID
end

--关闭游标
close mycursor2
--撤销游标
deallocate mycursor2

--用游标去取下一条记录
fetch next from mycursor1 into @TableName
end
--关闭游标
close mycursor1
--撤销游标
deallocate mycursor1

分享到:
评论

相关推荐

    MySQL数据库:表的字段类型.pptx

    MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是INTEGER的同义词,关键字DEC是...

    JDBC数据类型与数据库字段对应表——SQL Server篇

    JDBC数据类型与数据库字段对应表——SQL Server篇 数值型 整型 JDBC tinyint java.lang.Integer smallint int bigint java.lang.Long mediumint java.lang.Long

    图书管理系统数据库设计及sql语句.docx

    1.用户表 字段名 数据类型 能否为空 注释 UserId int 用户id主键,自增 ,读者编号 OpenId int 识别用户 UserName Char(20) 姓名, LastTime Datetime 上次登陆时间 UserPhone Int 电话 图书管理系统数据库设计及sql...

    简单了解mysql存储字段类型查询效率

    2、整数都有UNSIGNED可选属性 (拿tinyint字段来举例,unsigned后,字段的取值范围是0-255,而signed的范围是-128 – 127。 那么如果我们在明确不需要负值存在的情况下,通常是不要设置signed来支持负数的。) 3、...

    数据库设计的性能与效率.docx

    任何类型的数据表,字段空间应当本着足够用,不浪费的原则,数值类型的字段取值范围见下表: 数据库设计的性能与效率全文共6页,当前为第1页。 字段类型 存储空间(b) UNSIGNED 取值范围 tinyint 1 否 -128~127 是 0~...

    sqlserver自定义函数

    更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。 语法 sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ] --假设要处理的表名为...

    数据库相关的知识点!

    now()sql中的内置函数,根据数据类型生成相对应的时间模式 char( )定长字符串,存储速度快,但是浪费空间 varchar( )变长字符串,存储速度慢,可是节省空间 enum() 表示枚举 多选一 set( )表示集合 多选多 七...

    Java数据类型与MySql数据类型对照表

    本文讲述了Java数据类型与MySql数据类型对照表。分享给大家供大家参考,具体如下: 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java....

    PHP100视频教程 8:Mysql 简介和创建新的数据库.rar

    3、介绍数据库中常用字段类型  整数型:TINYINT,SMALLINT,INT,BIGINT  小数型:FLOAT,DOUBLE,DECIMAL(M,D)  字符型:CHAR,VARCHAR  日期型:DATETIME ,DATE,TIMESTAMP  备注型:TINYTEXT ,TEXT ...

    MySQL INT类型全解析

    整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉int类型相关知识,也会介绍其他整型字段的使用。 1.整型分类及存储范围 整数类型 ...

    SQL server 2005中设置自动编号字段的方法

    如果希望重新定义在表中添加新记录时该列中自动生成...只能为不允许空值且数据类型为 decimal、int、numeric、smallint、bigint 或 tinyint 的列设置标识属性。此外,不能为主键列设置标识属性。 修改列的标识属性 1.

    sql字段类型

    SQL SERVER提供的说明 bit:0或1的整型数字 int:从 2^31 2 147 483 648 到2^31 2 147 483 647 的整型数字 smallint:从 2^15 32 768 到2^15 32 767 的整型数字 tinyint:从0到255的整型数字

    Mysql数据库设计.pdf

    Mysql数据库设计 数据库设计 MYSQL数据库设计 串转义序列 \0 NUL(ASCLL 0) \' \" \b 退格 \n 新⾏ \r 回车 \t 制表符 \\ 反斜杠 数值列类型 TINYINT 1字节 ⾮常⼩的整数 有符号值:-128⾄127 ⽆符号值:0⾄255 ...

    mysql基础只是总结

    a) drop 字段 注意当表中字段为1个的时候不能删除 b) add 字段名 类型[大小] 属性,add 字段名 类型[大小] 属性⋯⋯ [after|first 字段] c) modify 字段名 类型[大小] 属性,modify 字段名 类型[大小] 属性⋯⋯ ...

    MySQL 数据类型 详解

    MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3个字节 范围(-8388608~8388607) int(m) 4个字节 范围(-2147483648~2147483647) ...

    sql分页存储过程

    @FieldNames VARCHAR(1000), --显示列名,如果是全部字段则为* @WhereString VARCHAR(256) = NULL, --查询条件 不含'WHERE'字符,如[id]>5 AND [userid]>10000 @OrderField VARCHAR(256) = NULL, --排序不含'...

    MySQL SQL语句优化的10条建议

    2.字段的种类尽可能用int 或者tinyint类型。另外字段尽可能用NOT NULL。3.当然无可避免某些字段会用到text ,varchar等字符类型,最好将text字段的单独出另外一个表出来(用主键关联好)4.字段的类型,以及长度,是一...

    国内省市区sql,更新于为2020年,每年持续更新,中间有需要也可以及时联系我

    国内省市区的sql,需要的可以随时联系本人拿取最新的sql,已经更新为2020年1月的了 https://download.csdn.net/download/html_css_js_php/12107011 这个是2020年1月的,最新的,id,也改成了110100,并且新增了...

    简单了解Django ORM常用字段类型及参数配置

    这篇文章主要介绍了简单了解Django ORM常用字段类型及参数配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一、数值型 AutoField对应int(11)。自增主键,...

    MySQL百万级数据分页查询优化方案

    当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些...

Global site tag (gtag.js) - Google Analytics