
SQL Server
光义
想尽所想,服务无止境!
展开
-
探讨SQL Server中Case 的不同用法
CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。 首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下: SELECT myColumnSpec> = CASE WHEN A> THEN somethingA> WHEN B> THEN something转载 2008-11-14 16:41:00 · 267 阅读 · 0 评论 -
SQL SERVER 数据类型详解
数据类型 类型 描 述 bit 整型 bit 数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或Fa lse 、On 或Off int 整型 int 数据类型可以存储从- 231(-214748原创 2009-11-26 15:18:00 · 222 阅读 · 0 评论 -
SET ROWCOUNT 1 与 TOP(1) 的区别
SET ROWCOUNT 1 与 TOP(1) 的区别 都能实现只取得一条语句。。 使 SQL Server 在返回指定的行数之后停止处理查询。 Transact-SQL 语法约定语法 SET ROWCOUNT { number | @number_var } 参数number | @numbe原创 2009-11-27 16:49:00 · 4475 阅读 · 0 评论 -
SQL 游标(1)
关系数据库中的操作会对整个行集起作用。由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行。这种由语句返回的完整行集称为结果集。应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理。这些应用程序需要一种机制以便每次处理一行或一部分行。游标就是提供这种机制的对结果集的一种扩展。游标通过以下方式来扩展结果处理:允许定位在结果集的原创 2009-11-27 17:23:00 · 1476 阅读 · 0 评论 -
SQL SERVER 参考:游标(Cursor)的讲解与实例
在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条T_SQL 选择语句相关联,因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集转载 2009-11-27 17:26:00 · 479 阅读 · 0 评论 -
锁的概述
锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读 A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致 不可重复读原创 2009-11-30 09:17:00 · 286 阅读 · 0 评论 -
牢记!SQL Server数据库开发的二十一条军规(SQL收藏)
如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS)。 在这里,我不打算介绍使用SQL Server的窍门,也不能提供一个包治百病的方案,我所做的是总结一些经验----关于如何形成一个好的设计。这些经验来自我过去几年中经受的教训,一直来,我看到许多同样的设计转载 2009-12-02 08:56:00 · 269 阅读 · 0 评论 -
REPLACE
将第一个字符串表达式中第二个给定字符串表达式的所有实例都替换为第三个表达式。 语法 REPLACE ( string_expression1 , string_expression2 , string_expression3 )参数 string_expression1 要搜索的字符串表达式。stri原创 2009-11-30 09:25:00 · 347 阅读 · 0 评论 -
--创建随机存储过程,根据表名,随机排序原有数据
--创建随机存储过程,根据表名,随机排序原有数据Create Procedure Pro_Rand(@table_name varchar(100)= ,@sql_where varchar(1000)= )as Begin declare @sql varchar(1000); if LTrim(@table_name) is not null begin原创 2009-11-26 17:13:00 · 319 阅读 · 0 评论 -
五种提高 SQL 性能的方法
五种提高 SQL 性能的方法有时, 为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整。啊,但关键在于确定如何进行调整!迟早您会遇到这种情况:应用程序中的 SQL 查询不能按照您想要的方式进行响应。它要么不返回数据,要么耗费的时间长得出奇。如果它降低了报告或您的企业应用程序的速度,用户必须等待的时间过长,他们就会很不满意。就像您的父母不想听您解释为什么在深更半夜才回原创 2009-12-02 09:08:00 · 276 阅读 · 0 评论 -
sql 查询慢的48个原因分析
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资转载 2009-12-02 09:49:00 · 311 阅读 · 0 评论 -
存储过程编写经验和优化措施
导读:在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。关键词:数据库 开发 SQL Server 存储过程 正在加载数据... 一、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。 二、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数转载 2009-12-03 17:12:00 · 298 阅读 · 0 评论 -
isnull的用法
根据表达式是否为空,返回一个布尔值结果。语法 ISNULL(expression)参数expression是任何数据类型的有效表达式。结果类型DT_BOOL示例如果 DiscontinuedDate 列包含空值,此示例将返回 TRUE。 复制代码原创 2009-12-03 16:35:00 · 412 阅读 · 0 评论 -
SQL语句优化技术分析
一、操作符优化1、IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的转载 2009-12-03 17:18:00 · 469 阅读 · 1 评论 -
sql server 2000/2005 游标的使用操作
1. 定义游标定义游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式为:DECLARE 游标名称 [INSENSITIVE] [SCROLL]CURSOR FOR select语句[FOR{READ ONLY|UPDATE[OF 列名字表]}]参数说明:INSE原创 2009-11-27 17:24:00 · 1235 阅读 · 0 评论 -
SQL表变量与临时表区别 + 非游标临时表遍历
问题 1:为什么在已经有了临时表的情况下还要引入表变量?解答 1:与临时表相比,表变量具有下列优点: 如 SQL Server 联机丛书“表”(Table) 一文中所述,表变量(如局部变量)具有明确定义的范围,在该范围结束时会自动清除这些表变量。 与临时表相比,表变量导致存储过程的重新编译更少。 涉及表变量的事务仅维持表变量上更新的持续时间。因此,使用表变量时,需要锁定和记录资原创 2009-11-27 17:01:00 · 2612 阅读 · 2 评论 -
SQL SERVER中临时表、持久表、表变量的区别
与持久表一样,优化器创建并维护临时表的分布统计信息,并跟踪它的基数。当索引临时表时,这种能力尤其重要。当优化器需要评估选择性时,它就可以根据这些分布统计信息生成经过优化的计划。这是临时表在性能方面不同于表变量的主要特性之一。此外,因为临时表会维护统计信息,如果上次编译后被引用表有足够多的行发生变化(即达到重新编译阀值)代码会被重新编译。重新编译。重新编译阀值是根据表类型和行数计算得出的。对于持久原创 2009-11-27 11:21:00 · 478 阅读 · 0 评论 -
连接同一字段的所有内容
连接同一字段的所有内容 create procedure PRO_CONNECT @SCD_NO varchar(32), @GY_TYPE_ID intas declare @gy_request varchar(1000) set @gy_request= select @gy_request=case when GY_REQUEST is not原创 2009-03-11 11:49:00 · 267 阅读 · 0 评论 -
自动将当前数据库的用户存储过程加密。
自动将当前数据库的用户存储过程加密。DECLARE @sp_name nvarchar(400)DECLARE @sp_content nvarchar(2000)DECLARE @asbegin intdeclare @now datetimeselect @now = getdate()DECLARE sp_cursor CURSOR FOR SELECT object_name(i转载 2009-03-11 15:28:00 · 273 阅读 · 0 评论 -
SQL存储过程的优点及语法
定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。存储过程的优点: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当原创 2009-05-03 21:09:00 · 843 阅读 · 0 评论 -
常用存储过程
存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 定义总是很抽象。存储过程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL Server)。如果我们通过创建存储过程以及在ASP中调用存储过程,就可以避免将SQL语句同ASP代码混杂在一起。这样做的好处至少有三个: 网管网bitsCN.com 第一、大大提高效率。存储原创 2009-05-03 21:24:00 · 291 阅读 · 0 评论 -
MSSQL多列取最大或者最小值 --整理帖
/*lvl1 lvl2 lvl3 lvl4 lvl 4 3 4 1 3 2 2 1 2 2 3 4 4 4 3 4 3 1 2 2 怎么写代码 去比较lvl1、lvl2、lvl3、lvl4 对应每行的值,取其中转载 2009-10-18 21:45:00 · 272 阅读 · 0 评论 -
SQL 行列互转
--行列互转/******************************************************************************************************************************************************以学生成绩为例子,比较形象易懂整理人:中国风(Roy)日期:2008.06.06转载 2009-10-19 11:43:00 · 266 阅读 · 0 评论 -
随机删除重复记录!
-------------- 随机删除重复记录! ------------------------------------------- Author: Luoyoumou -----------------------------drop table test;--先求出符合条件的记录:create table test(col1 int identity(1,1), col2转载 2009-10-19 12:33:00 · 295 阅读 · 0 评论 -
修改SQL数据库的名称
其实在修改数据库名称之前,如果有用户连接到数据库的话会造成数据库重命名失败,可以先执行select spidfrom master.dbo.sysprocesseswhere dbid=db_id(OldDbName) 结果集中显示的是当前连接到数据库OldDbName的连接比如结果是7981当然,实际值应该不是这两个然后执行kill 79kill 81关闭已建立的连接,之后再执行EXEC s原创 2009-11-10 17:27:00 · 424 阅读 · 0 评论 -
ACCESS数据库到SQL数据库
从Access数据库导入到SQL方法一:在MSsql中要简历ODBC..方法比较笨点..方法二:直接从Access升迁到MSsql.. 因为Access数据库有设置密码..还真不好搞..搞了好几次都失败了.. 利用方法二..一次成功.. 用数据库升迁...简单... 建议使用第二种方法导入ACCESS数据库到MSSQL数据库中..省事!!!原创 2009-11-10 17:42:00 · 286 阅读 · 0 评论 -
数据库优化原则
1、对于作为数据库应用系统都所有者和用户都企业或者组织来说,应当明白良好都数据库设计和精心编写都代码都价值和重要性。2、花费尽可能多都努力来设计数据库模式,因为所有的优化都要基于数据库模式。3、集中精力优化运行最频繁都代码,而不是那些运行最慢的代码、4、在升级硬件之前进行优化。即使在速度快都服务器上,坏代码仍旧是坏代码。5、列出所有可能都优化思路,即使你没有时间在现在去实施他们。原创 2010-01-13 09:50:00 · 367 阅读 · 0 评论 -
存储过程
1、使用sql模板。如下所示:通常的做法:set @SQL=select +@col+ from +@tbl+较好的方法是:set @SQL_Template=select $col from $tblset @sql = replace(@SqL_template,$col,@col)2、使用constraint或unique index来尽可能早的转载 2009-11-17 22:59:00 · 200 阅读 · 0 评论 -
字符串切割
/*定义数据字符串*/declare @sourcesql varchar(100),@middlesql varchar(50)/*初始化字符串*/set @sourcesql = 4001,4002,4003,4004/*循环提取以 , 分割都字符内容*/while(charindex(,,@sourcesql,1) > 0 )begin /*输出显示各个字符串的值*/ selec原创 2010-01-14 16:45:00 · 406 阅读 · 0 评论 -
存储过程共有三种返回值
----------------------存储过程共有三种返回值------------------- /*(一)、参数返回值@parm2; (二)、过程返回值return 100; (三)、数据集返回值select * from table1 where age = @parm1 请问,如何得到三类转载 2009-11-26 10:32:00 · 532 阅读 · 0 评论 -
SQL server 语句获取所有数据库名、表名、字段名、表字段长度
获取数据库中所有的表SELECT SysObjects.name AS Tablename FROM sysobjects WHERE xtype = 'U'获取数据库中所有表的列名SELECT SysColumns.name AS Columnsname, SysObjects.name AS Tablename FROM SysObjects, SysColumns WHERE原创 2012-10-11 21:28:50 · 2944 阅读 · 0 评论