博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  SQl2005(以上)

摘要:了解SQL Server锁争用:NOLOCK 和ROWLOCK 的秘密 收藏 导读: 关系型数据库,如SQL Server,使用锁来避免多用户修改数据时的并发冲突。当一组数据被某个用户锁定时,除非第一个用户结束修改并释放锁,否则其他用户就无法修改该组数据。 有些数据库,包括SQL Server,用锁来避免用户检索未递交的修改记录。在这些系统中,如果用户A在修改一组记录,则其他用户只有等用户A修改完毕了,才能检索。 数据库在每个物理层上设置锁:记录行(rows),数据页(pages, 上百万记录行),扩展页(extends, 多个数据页),整个表,甚至整个数据库。有些数据库(如Oracle等)只 阅读全文

posted @ 2011-04-09 01:25 itcfj 阅读(432) 评论(0) 推荐(0)

摘要:C# codeSQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQL注入是从正常的W 阅读全文

posted @ 2011-03-13 11:37 itcfj 阅读(322) 评论(0) 推荐(0)

摘要:SCOPE_IDENTITY返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。IDENT_CURRENT返回为任何会话和任何作用域中的指定表最后生成的标识值。这个函数需要一个以表名为值的变量,也就是说虽然不受会话和作用域的限制,却会受到表的限制。@@IDENTITY返回最后插入的标识值。体会:加上事务处理,两个函数一个变量没有本质区别。不加事务处理两个函数一个变量受到其他会话、作用域的影响不一样。一直以来都是使用@@ident 阅读全文

posted @ 2011-03-03 20:48 itcfj 阅读(909) 评论(0) 推荐(0)

摘要:专栏作品树形结构在开发中的应用李洪根关键字:树、TreeView可参阅《CSDN开发高手》2003年第十二期概述TreeView是一个重要的控件,无论是在VB.NET,C# 还是VB、Delphi等各种语言中,都充当了导航器的作用。在实际工作中,很多情况下需要将TreeView与数据库进行连接,以填充其节点。在Windows Form和Web Form中,我们可以用TreeView来显示树形结构,如显示目录树、显示地区、分类显示商品等。可以说,在大部分软件的开发中,TreeView都是一个不可缺少的展示控件。因此,树形结构的设计就成了软件开发人员一个永恒的话题。树形结构的展示方式树形结构的展示 阅读全文

posted @ 2011-02-28 20:23 itcfj 阅读(539) 评论(0) 推荐(0)

摘要:普通行列转换(爱新觉罗.毓华 2007-11-18于海南三亚)假设有张学生成绩表(tb)如下:Name Subject Result张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94*/-------------------------------------------------------------------------/*想变成 姓名 语文 数学 物理 ---------- ----------- ----------- ----------- 李四 74 84 94张三 74 83 93*/create table tb( Name 阅读全文

posted @ 2011-02-28 19:15 itcfj 阅读(585) 评论(0) 推荐(1)

摘要:Sql server中DateDiff用法 DATEDIFF 函数 [日期和时间]功能 返回两个日期之间的间隔。语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 )date-part :year | quarter | month | week | day | hour | minute | second | millisecond参数 date-part 指定要测量其间隔的日期部分。有关日期部分的详细信息,请参见日期部分。date-expression-1 某一间隔的起始日期。从 date-expression-2 阅读全文

posted @ 2011-02-22 13:30 itcfj 阅读(13400) 评论(1) 推荐(0)

摘要:需要用到事务处理多条语句的情况,但我们还要防止语句中注入式攻击,所以写了这个方法,进行带参数的事务的处理。下面代码说明:  首先将一条语句的参数放在结构sttSqlParameterList中,这样便于知道参数名及其对应值。  在将语句及参数列表放在结构sttSqlList中,这样便于知道SQL语句及其对应的参数列表。  最后调用ExecParameterTransaction()执行事务。其传入的是sttSqlList列表。[代码]用法代码:[代码] 阅读全文

posted @ 2011-02-13 14:17 itcfj 阅读(276) 评论(0) 推荐(0)

摘要:Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 SQL利用CaseWhenThen多条件判断CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 WHEN 条件3 THEN 结果3 WHEN 条件4 THEN 结果4......... WHEN 条件N THEN 结果N ELSE 结果XENDCase具有两种格式。简单Case函数和Case搜索函数。--简单Case函数CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女'ELSE '其他' E 阅读全文

posted @ 2011-01-20 16:49 itcfj 阅读(3043) 评论(0) 推荐(0)

摘要:假设如下应用:两张表——用户表TDefUser(userid,address,phone)和消费表 TAccConsume(userid,time,amount),需要查消费超过5000的用户记录。用exists:select * from TDefUserwhere exists (select 1 from TAccConsume where TDefUser.userid=TAccConsume.userid and TAccConsume.amount5000)用in:select * from TDefUserwhere userid in (select userid from 阅读全文

posted @ 2010-12-28 20:53 itcfj 阅读(308) 评论(0) 推荐(0)

摘要:SQL中exists和in的区别 两张表——用户表TDefUser(userid,address,phone)和消费表TAccConsume(userid,time,amount),需要查消费超过5000的用户记录。 用exists: select * from TDefUser where exists (select 1 from TAccConsume whereTDefUser.userid=TAccConsume.userid and TAccConsume.amount5000) 用in: select * from TDefUser where userid in (selec 阅读全文

posted @ 2010-12-28 20:37 itcfj 阅读(489) 评论(0) 推荐(0)

摘要:T-SQL 函数实战教程 T-SQL 函数实战教程 T-SQL 是微软在关系型数据库管理系统 SQL Server 中的 SQL-3 标准的实现,是微软对 SQL 的扩展,具有 SQL 的主要特点,同时增加了变量、运算符、函数、流程控制和注释等 语言元素,使得其功能更加强大。并且 T-SQL 自带了许多实用的函数,DBA 可以利用这些 函数来进行更有效地管理。在本次的技术手册中,我们将提供一系列的 T-SQL 函数教程, 其中包括字符串操作函数、集合函数、元数据函数以及系统函数等,充分理解并掌握这些 知识,对 DBA 来说十分必要。 T-SQL 字符串函数 T-SQL 自带了一些字符串处理 阅读全文

posted @ 2010-12-28 20:23 itcfj 阅读(1469) 评论(0) 推荐(0)

摘要:@@ROWCOUNT (Transact-SQL)@@ROWCOUNT (Transact-SQL)SQL Server 2005其他版本 SQL Server 2008 R2SQL Server 2008返回受上一语句影响的行数。如果行数大于 20 亿,请使用 ROWCOUNT_BIG。Transact-SQL 语法约定语法复制@@ROWCOUNT返回类型int备注Transact-SQL 语句可以通过下列方式设置@@ROWCOUNT 的值:将 @@ROWCOUNT 设置为受影响或被读取的行的数目。可以将行发送到客户端,也可以不发送。保留前一个语句执行中的 @@ROWCOUNT。将 @@RO 阅读全文

posted @ 2010-12-28 19:43 itcfj 阅读(276) 评论(0) 推荐(0)

摘要:字符串函数用于处理列中的数据值,通常属于字符型的数据类型。 1、ASCLL(character),将具体字符转换为相应的整数(ASCII)代码,结果为正数。 例:select ASCII('A'),结果为65 2、CHAR(int),将ASCII代码转换为相应的字符,结果为CHAR(1). 例:select CHAR(65),结果为A 3、CHARINDEX(str1,str2),返回部分字符串str1在字符串str2中首次出现的起始位置。如果str1没有在str2中出现,那么返回值为0。 例:select CHARINDEX('world','hello world!'); 结果为7 sel 阅读全文

posted @ 2010-12-28 19:40 itcfj 阅读(813) 评论(1) 推荐(1)

摘要:select语句的执行步骤:(1)执行From子句,根据From子句中的一个或多个表创建工作表。如果在From子句中有两个或多个表,DBMS将对表进行交叉连接,作为工作表。(2)如果有Where子句,DBMS将WHERE子句列出的搜索条件作用于步骤(1)生成的工作表。DBMS保留那些满足搜索条件的行,删除那些不满足搜索条件的行。(3)如果有GROUP BY子句,DBMS将步骤(2)生成的结果表中的行分成多个组,每个组所有行的group_by_expression字段具有相同的值,DBMS将每组减少到单行,而后将其添加到新的结果表中。(4)如果有HAVIG子句,DBMS将HAVING子句列出的搜 阅读全文

posted @ 2010-12-22 11:05 itcfj 阅读(155) 评论(0) 推荐(1)

摘要:排名函数是SQL Server2005新加的功能。在SQLServer2005中有如下四个排名函数:   1.row_number  2.rank  3.dense_rank  4.ntile     下面分别介绍一下这四个排名函数的功能及用法。在介绍之前假设有一个t_table表,表结构与表中的数据如图1所示:  图1   其中field1字段的类型是int,field2字段的类型是varchar  一、row_number   row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号。row_number函数的用法如下面的SQL语句所 示:selectr 阅读全文

posted @ 2010-12-19 16:30 itcfj 阅读(188) 评论(0) 推荐(0)

摘要:查询速度慢的原因很多,常见如下几种:  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  2、I/O吞吐量小,形成了瓶颈效应。  3、没有创建计算列导致查询不优化。  4、内存不 足  5、网络速度慢  6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)  7、 锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)  8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资 源。  9、返回了不必要的行和列  10、查询语句不好,没有优化  可以通过如下方法来优化查 询:  1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可 阅读全文

posted @ 2010-12-19 16:27 itcfj 阅读(367) 评论(0) 推荐(0)

摘要:SQLSelect语句完整的执行顺序ORACLE 在WHERE子句中引用列别名的问题(转)Sql代码 SQLselectsal,commfromemp2wheresal2000;SALCOMM--------------------800160030012505001250140015000110095013008rowsselected.SQLselectsalassalary,commascommissionfromemp2wheresalary2000;wheresalary2000*ERRORatline2:ORA-00904:"SALARY":invalididentifi 阅读全文

posted @ 2010-12-19 16:24 itcfj 阅读(1012) 评论(0) 推荐(0)

摘要:存储过程什么是存储过程呢? 定义:存储过程是指一组作为单个代码单元一起存储于数据库中的 T-SQL 语句。您可以使用输入参数传入运行时信息,并取回作为结果集或输出参数的数据。 存储过程的优点: 1.使用存储过程可提高数据库执行速度。存储过程在首次运行时将被编译。这将产生一个执行计划 - 实际上是 Microsoft® SQL Server™ 为在存储过程中获取由 T-SQL 指定的结果而必须采取的步骤的记录。然后,执行计划在内存中得到缓存,以备以后使用。这样会改善存储过程的性能,因为 SQL Server 无需为确定如何处理代码而重新分析它,而只需引用缓存的计划即可。这个缓存的计划一直可用,直 阅读全文

posted @ 2010-12-19 16:23 itcfj 阅读(195) 评论(0) 推荐(0)

摘要:1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t wh... 阅读全文

posted @ 2010-11-19 09:49 itcfj 阅读(168) 评论(0) 推荐(0)

摘要:@@ROWCOUNT (Transact-SQL)SQL Server 2005其他版本 SQL Server 2008 R2SQL Server 2008返回受上一语句影响的行数。如果行数大于 20 亿,请使用 ROWCOUNT_BIG。Transact-SQL语法约定语法复制@@ROWCOUNT返回类型int备注Transact-SQL 语句可以通过下列方式设置@@ROWCOUNT 的值:将 ... 阅读全文

posted @ 2010-11-05 16:41 itcfj 阅读(342) 评论(0) 推荐(0)