精华内容
下载资源
问答
  • 在某些情况下,需要更新数据库所有具有某一个特定字段的,例如:把集团公司某个系统中本来属于A子公司的数据全部更新为属于B子公司的,如果手工一个一个进行更改,首先浪费时间,机械化重复,另外,如果对系统...
    在某些情况下,需要更新数据库所有具有某一个特定字段的表,例如:把集团公司某个系统中本来属于A子公司的数据全部更新为属于B子公司的,如果手工一个表一个表进行更改,首先浪费时间,机械化重复,另外,如果对系统数据库结构不熟悉,还要一个一个表查找、检查是否有该字段,其实蛮麻烦的。
    最近刚好我有这样的需求,于是,做了一个通用的存储过程来解决这样的问题。

    该存储过程用到的数据库基本知识点有:
    1 如何查找数据库中所有的表
    2 如何查找表的所有字段
    3 如何执行字符串连接起来的SQL语句(执行动态SQL语句)
    4 执行动态SQL语句并返回值
    5 动态游标

    create procedure sp_fix_update_tables_appoint_column
     @column_name nvarchar(100), -- 制定需要更新的字段名
     @value_to_reaplace varchar(255), -- 如果是某值得情况下才更新
     @value_new varchar(255), -- 新的赋值
     @table_not_inclue varchar(255) -- 排除在外的不进行更新的表 (某些情况下,特定的表可能不需要更新)
    as
    if ltrim(rtrim(@table_not_inclue))=''
     set @table_not_inclue=''''''
    else
     set @table_not_inclue='''' + replace(@table_not_inclue,',',''',''') + ''''

    declare @table_name as nvarchar(255)
    declare @sql_cur as varchar(2000)
     set @sql_cur='declare cur_tables cursor for
      select name from sysobjects where xtype=''U'' and name not in (' + @table_not_inclue + ')'
    exec (@sql_cur)
    open cur_tables
    fetch next from cur_tables into @table_name
    while @@fetch_status=0
    begin

     declare @column_count as int
     declare @sql_find_column as nvarchar(1000)
     set @sql_find_column=N'SELECT @column_count=count(dbo.syscolumns.name)
      FROM dbo.syscolumns INNER JOIN
      dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id
      WHERE dbo.sysobjects.name=''' + @table_name + ''''
      + ' and  dbo.syscolumns.name =''' + @column_name + ''''
      + ' and (dbo.sysobjects.xtype = ''u'') AND (NOT (dbo.sysobjects.name LIKE ''dtproperties''))'
     
     exec sp_executesql @sql_find_column,N'@table_name varchar(233),@column_name varchar(100),@column_count int output'
      ,@table_name,@column_name,@column_count output
     
     if(@column_count=1)
     begin
      print @table_name
      declare @sql_update as varchar(1000)
      set @sql_update='update ' + @table_name + ' set ' + @column_name + '=''' + @value_new + ''' where '
       + @column_name + '=''' + @value_to_reaplace + ''''
      exec (@sql_update)
     end
     fetch next from cur_tables into @table_name
    end
    close cur_tables
    deallocate cur_tables

     

    就是如果参数为整形的时候,在使用参数得时候的通过case将类型转化为varchar,不然就会报将 varchar 值转换为数据类型为 int 的列时发生语法错误

     set @sql_update='update ' + @table_name + ' set ' + @column_name + '=''' + case(@value_new as varchar)+ ''' where '
       + @column_name + '=''' + case(@value_to_reaplace as varchar) + ''''

    转载于:https://www.cnblogs.com/Impulse/archive/2008/07/30/1256191.html

    展开全文
  • 五、MySQL重复数据的相关操作(包含不存在主键的情况); 六、MYSQL查询返回JSON格式的字符串(多层嵌套); 七、MYSQL查询返回JSON格式的字符串; 八、MYSQL存储过程内循环; 九、创建MYSQL事件(每天/每时/每分...
  • <div><h4>——人脑不是机器,记忆都会退化,我们需要文档辅助作知识沉淀</strong></h4> <h2>javascript 基本功 语言特性 <ul><li>数据类型:</li><li><code>Undefined, <code>Null, <code>Bollean...
  • 更新说明: 2017-02-04(yaya) Ls command: Empty Folder returns false. 2016-12-08(yaya) 修正lz4、vhd不显示解压缩进度指示。增加lzma解压缩进度指示。 2016-11-09(不点) 0x8205 bit 5 = 1: 使checkkey...
  • sql总结.doc

    2019-08-27 22:08:51
    3.存储过程可以重复使用,可减少数据库开发人员的工作量。 4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。 (4)存储过程的优缺点 优点: 作用的四条加上 1.分布式工作。 应用程序和数据库的编码工作...
  • 11.2.4 更新全部数据 11.2.5 利用子查询更新数据 11.2.6 通过视图更新表数据 11.3 数据的删除操作 11.3.1 DELETE语句的语法结构 11.3.2 删除指定行的数据 11.3.3 删除所有数据 11.3.4 通过视图删除表数据 11.3.5 ...
  • SQL语句集锦.rar

    2009-11-18 22:06:40
    有关树的运用和存储过程.t 有关连接的查询语句.txt 末公开的存储过程.txt 极品分组排列进行行转例 查询 时间1.txt 查询替换字符串.sql 模糊查寻.txt 类似于树查询.txt 练习.txt 获得数据库中表字段的...
  • │ │ 8.2.5 校验中数据是否有循环编码的通用存储过程.sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例.sql ...
  • 第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进行复杂的运算,以及如何使用视图、存储过程、触发器、索引、用户定义数据类型、用户定义函数、全文索引、游标、事务和锁、统计信息和同义词等方面的知识;...
  • rename存储过程.txt replace.txt rowcount.txt rowcount精华.txt stuff.txt substring和rtrim.txt unionall.txt 交叉连接查询corss.txt 公交线路问题.txt 分割字符串.txt 分布式查询.txt 分组排列进行更新.txt 别名....
  • 第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进行复杂的运算,以及如何使用视图、存储过程、触发器、索引、用户定义数据类型、用户定义函数、全文索引、游标、事务和锁、统计信息和同义词等方面的知识;...
  • 15.3.5 使用Enterprise Manager创建存储过程和函数 15.3.6 修改和删除存储过程和函数  15.4 Oracle中的流控制语句  15.4.1 条件语句  15.4.2 循环语句  15.4.3 标号和GOTO  15.5 Oracle数据库中的存储...
  • 精通SQL--结构化查询语言详解

    千次下载 热门讨论 2011-12-11 16:35:41
    15.3.5 使用enterprise manager创建存储过程和函数 315 15.3.6 修改和删除存储过程和函数 317 15.4 oracle中的流控制语句 319 15.4.1 条件语句 319 15.4.2 循环语句 320 15.4.3 标号和goto 322 15.5 oracle...
  • 和传统的 t-sql书籍不同,本书以独特的 “技巧 ”形式来介绍知识点,涵盖了数据处理(增删改、视图、索引、存储过程、触发器等)、数据应用(web服务、 clr集成、分布式查询等)和数据库配置(主体、安全、数据库...
  • 24.2 java程序中调用Oracle11g中的没有返回参数的存储过程(更新记录) 24.3 java程序中调用Oracle11g中的有返回参数的存储过程(查询记录) 24.4 java程序中调用Oracle11g中的返回列表的存储过程 24.5 java...
  • 在创建一个数据库的过程中,必须依照一定的准则,这些准则被称为范式,从第一到第六共六个范式,一般数据库设计...所谓第一范式(1NF)是指数据库的每一都是不可分割的基本数据项,同一中不能有多个值,即实体中

    在创建一个数据库的过程中,必须依照一定的准则,这些准则被称为范式,从第一到第六共六个范式,一般数据库设计只要遵循第一范式,第二范式,和第三范式就足够了。满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。

    第一范式(1NF)无重复的列

    所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。
    【说明】:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 

    就是在一个不需要设立主键就能表中保证每一行都具有唯一性。不设立主键就能保证行唯一性的表就是第一范式。

    第二范式(2NF)属性完全依赖于主键

    第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。例如员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。这个惟一属性列被称为主关键字或主键、主码。 
    第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是属性完全依赖于主键。 

    就是在一个有唯一主键在表中保证每一行都具有唯一性。存在一个列被定义为唯一主键的表就是第二范式。

    第三范式(3NF)属性不依赖于其它非主属性

    满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。 

    就是主副(父子)两张表,在子表中在外键是父表中的主键,子表中的外键值必须是父表中的主键值。存在主外关系的两张表就是第三范式。

    第四范式(4NF)禁止主键列和非主键列一对多关系不受约束

    第四范式用于处理由复杂的复合主键所导致的问题。如果将两个相互独立的属性与第三个属性一起组合为一个主键,并且如果没有第三个属性,仅靠这两个属性不能在实体中真正地起到唯一标识的作用,那么它就违反了第四范式;第四范式用来识别那些需要划分为多个不同的实体。通常,只有当很大的复合主键将过多的对象放到单个实体中的时候才会出现这样的问题。 

    就是在一个没有单独列被定义为唯一主键的表中,用多个列组合一起被定义为唯一主键(即:复合主键)。用复合列做主键的表就是第四范式。

    展开全文
  • 经典SQL脚本大全

    2013-12-24 15:28:19
    │ │ 8.2.5 校验中数据是否有循环编码的通用存储过程.sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例.sql ...
  • 实例243 使用存储过程查询多中的数据 实例244 使用存储过程中添加数据 实例245 使用存储过程删除中的数据 6.24 having语句应用 实例246 利用having子句过滤分组数据 实例247 having子句应用在多查询中 第7...
  • 实例243 使用存储过程查询多中的数据 实例244 使用存储过程中添加数据 实例245 使用存储过程删除中的数据 6.24 having语句应用 实例246 利用having子句过滤分组数据 实例247 having子句应用在多查询中 第7...
  • 数据库资料

    2018-04-01 22:00:33
    SQL编程,实现功能强大的查询掌握创建索引、视图,快速访问数据库 掌握创建存储过程,实现复杂的业务规则理解触发器的原理,实现高级的约束目标了解设计数据库的步骤掌握如何绘制数据库的E-R图理解数据库的规范化-...
  • 实例243 使用存储过程查询多中的数据 实例244 使用存储过程中添加数据 实例245 使用存储过程删除中的数据 6.24 having语句应用 实例246 利用having子句过滤分组数据 实例247 having子句应用在多查询中 第7...
  • 能将最多三个任意区域存储格(或)的内容按自定的分隔符号连接成一个字符串写入指定的存储格或新工作中。可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 ...
  • SQL沉思录(中文完整版)

    热门讨论 2013-02-18 18:25:55
    3.6.2 基于存储 35 3.7 联结算法 36 3.7.1 嵌套循环联结算法 37 3.7.2 排序合并联结算法 37 3.7.3 散列联结算法 37 3.7.4 Shin算法 38 第4章 查找 39 4.1 数据元素的名称 40 4.2 多参数查找 42 4.3 常量 ...
  •  本书讨论的是使用而不是过程式代码的各种SQL编程技术。我一直跟大家说,学习SQL编程最重要的就是要摒弃原有的过程式编程,但对于那些一直都在以文件和过程代码的方式来思考的人们而言,仅仅这样说不行,还得具体...
  • 4.7.2 的英文名称 44 4.7.3 数据中的英文单词 46 4.8 名称和数据中的大写 46 4.9 规范化名称 47 4.10 人性化和优秀的设计 47 4.10.1 理解应用程序的任务 48 4.10.2 任务概要 49 4.11 理解数据 51 ...
  • SQL培训第一期

    2018-03-14 15:04:04
    重复,确保每保持原子性,即数据库中的所有字段值都是不可分解的原子值。 1.5.1.2 举例 姓名 年龄 联系电话 地址 省 市 详细地址 1.5.2 第二范式 1.5.2.1 规范 属性完全依赖于主键,确保中每列都与主键...
  • 能将最多三个任意区域存储格(或)的内容按自定的分隔符号连接成一个字符串写入指定的存储格或新工作中。可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 ...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 234
精华内容 93
关键字:

存储过程重复更新表列