sql
文章平均质量分 70
wacthamu
这个作者很懒,什么都没留下…
展开
-
output经典使用
OUTPUT是SQL SERVER2005的新特性.可以从数据修改语句中返回输出.可以看作是"返回结果的DML".INSERT,DELETE,UPDATE均支持OUTPUT子句.在OUTPUT子句中,可以引用特殊表inserted和deleted.使用inserted和deleted表与在触发器中使用的非常相似. 在INSERT,DELETE,UPDATE中OUTPUT的区别 1.转载 2012-02-16 18:17:09 · 5153 阅读 · 0 评论 -
sql server TRY CATCH
Transact-SQL 代码中的错误可使用 TRY…CATCH 构造处理,此功能类似于C#语言的异常处理功能。TRY…CATCH 构造包括两部分:一个 TRY 块和一个 CATCH 块 1.TRY...CATCH 块不处理导致数据库引擎关闭连接的严重性为 20 或更高的错误。但是,只要连接不关闭,TRY...CATCH 就会处理严重性为 20 或更高的错误。 2.严重性为转载 2013-03-14 11:23:42 · 648 阅读 · 0 评论 -
不采用拼接sql字符串实现多条件查询的解决方案
下面是 不采用拼接sql字符串实现多条件查询的解决方案第一种写法是 感觉代码有些冗余 if (@adddate is not null) and (@name select * from table where adddate = @adddate and name = @name else if (@adddate is not null) and (@name ='转载 2013-03-14 16:55:08 · 1778 阅读 · 0 评论 -
in、exists、not in、not exists
NOT INSELECT DISTINCT MD001 FROM BOMMD WHERE MD001 NOT IN (SELECT MC001 FROM BOMMC)NOT EXISTS,exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度select DISTINCT MD001 from BOMMD WHERE NOT EXISTS转载 2013-03-14 21:24:21 · 610 阅读 · 0 评论 -
exists in 对比运用 (Oracle)
有两个简单例子,以说明 “exists”和“in”的效率问题1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ;T1数据量小而T2数据量非常大时,T12) select * from T1 where T1.a in (select T2.a from T2) ;T1数据量非常大而T2数据量小时,T转载 2012-11-12 12:11:06 · 362 阅读 · 0 评论 -
SQL 函数
一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果。这些要求包括:执行计算与数学运算、转换数据、解析数值、组合值和聚合一个范围内的值等。下表给出了T-SQL函数的类别和描述。函数类别作用聚合函数 执行的操作是将多个值合并为一个值。例如 COUNT、SUM、MIN和 MAX。配置函数转载 2013-03-13 15:20:02 · 1151 阅读 · 0 评论 -
SQLServer 系统视图 (部分)
SQLServer中提供了相当丰富的系统视图,能够从宏观到微观,从静态到动态反应数据库对象的存储结果、系统性能、系统等待事件等等。同时 也保留了与早期版本兼容性的视图,主要差别在于SQLServer2008提供的新系统视图一是更加全面和丰富、二是更注重命名规则。 SQLServer2008的几乎所有对象信息都存在于sys.objects系统视图中,同时又在不同的系统视图中保留转载 2013-03-29 08:10:59 · 750 阅读 · 0 评论 -
SQL递归查询 SqlServer/ORACLE递归查询
在 SQLSERVER2005以后,mssql开始有了递归查询的方法了。比较起最开始写存储过程或者写function的方式。这样的方式更加简便灵活的。而oracle也有自带的树形结构递归查询方法,connect by下面我自己写的一段SQL,简单注释下CTE共用表达式的一些用法。 实现对树状结构的根节点和子节点的查询。 代码-------------------转载 2013-03-16 15:19:23 · 1364 阅读 · 0 评论 -
merge 复杂用法(sqlserver)
使用merge同时执行insert和update操作我们经常会有这样的需求,根据某个字段或多个字段查找表中的一行或多行数据,如果查找成功得到匹配项,更新其中的其他一个或多个字段;如果查找失败则将“某个字段或多个字段”作为新的一行中的数据插入到表中。第一种方法是先更新,然后根据@@rowcount判断是否有匹配项,如果没有则插入。先使用下面的 代码创建一个存储过程。1转载 2013-03-30 09:34:33 · 1331 阅读 · 0 评论 -
merge sqlserver 2008
SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb510625.aspx功能:根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。我们看一个例子,假如,有一总产品列表,一个分店产品列表转载 2013-03-30 09:57:21 · 550 阅读 · 0 评论 -
SQL中Case经典使用
SQL中Case的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '转载 2013-03-21 13:17:26 · 481 阅读 · 0 评论 -
查看JOB状态
BEGIN DECLARE @jobstatus TABLE(Job_ID uniqueidentifier, Last_Run_Date int, Last_Run_Time int, Next_Run_Date int, Next_Run_Time int,Next_Run_Schedule_ID int, Requested_To_Run int,转载 2013-03-27 17:00:36 · 1429 阅读 · 0 评论 -
SQLSERVER 临时表结构脚本
--SQL查询SQLSERVER数据库中的临时表结构脚本use [tempdb]goselect a.name,case a.precision when 0 then case a.is_ansi_padded when 1 then convert(nvarchar(15),b.name+ '('+convert(nvarchar(10),a.max_le转载 2013-04-26 21:37:40 · 923 阅读 · 0 评论 -
@@ERROR在跳出游标循环中的应用
create proc test_syasdeclare @ERROR int,@sql_insert nvarchar(2000),@sql_on nvarchar(2000),@sql_off nvarchar(2000),@cnt int,@cnt1 intselect @ERROR = 0select @cnt1 = 0set @sql_on = N原创 2012-03-29 17:32:26 · 1686 阅读 · 0 评论 -
sql 关于时间日期的
CONVERT(varchar(10),getDate(),120) 求得到"昨天,今天"日期函数的SQL 所属分类:MS-SQL Server 基础类 ---------------------------------------------------------------------- Convert(Datetime,GetDate(),2)转载 2013-03-13 15:30:49 · 1317 阅读 · 0 评论 -
oracle sql 效率 要点
◆SQL语句用大写的;因为Oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。◆在Java代码中尽量少用连接符“+”连接字符串。◆避免在索引列上使用NOT通常,我们要避免在索引列上使用NOT, NOT会产生在和在索引列上使用函数相同的影响。◆当Oracle“碰到”NOT,他就会停止使用索引转而执行全表扫描。◆避免在索引列上使用计算。WHERE子句中,假如索引列是函数的转载 2012-11-12 17:14:01 · 343 阅读 · 0 评论 -
join中on与where区别
关键字: on 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(转载 2012-02-18 12:33:57 · 1161 阅读 · 0 评论 -
excel数据导入sqlserver
要用T-SQL语句直接导出至Excel工作薄,就不得不用借用SQL Server管理器的一个扩展存储过程:xp_cmdshell,此过程的作用为“以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。”下面为定义示例:EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Book3.xls -c -q -S"serverna转载 2012-03-02 16:19:18 · 649 阅读 · 0 评论 -
解决用OpenRowSet打开Excel后字段顺序混乱的问题!
不管是把Sql Server表的资料插入Excel:Insert Into OpenRowSet('Microsoft.Jet.OLEDB.4.0','Excel 5.0;hdr=Yes;DataBase=C:\test.xls',test$)select * from T_test还是把Excel的资料插入Sql Server表:Insert Into T_test转载 2012-03-02 18:29:41 · 875 阅读 · 0 评论 -
cast使用
(1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。以下例子用于将文本字符串'12'转换为整型: SELECT CAST('12' AS int) (2).返回值是整型值12。如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢? SELECT CAST('12.5' AS int) (3).CAST()函数和CO转载 2012-03-09 10:43:26 · 461 阅读 · 0 评论 -
嵌套事务
在处理事务的时候,一般都用RollBack Transaction来回滚,但是如果在嵌套事务中这样使用的话,就会出现错误。在SqlServer里,嵌套事务的层次是由@@TranCount全局变量反映出来的。每一次Begin Transaction都会引起@@TranCount加1。而每一次Commit Transaction都会使@@TranCount减1,而RollBack Transact转载 2012-03-16 11:15:49 · 2099 阅读 · 0 评论 -
sql行转列
要将其转变为: 可以看得出来,表2列是由表1的行数据转化而来的,只有姓名列是表1中的列。一步一步的来嘛,其他的列难搞,如果表2只有1列姓名的话,那么veryeasy了,不就是一个简单的分组嘛。Select姓名 From 表1 Group By 姓名 现在sql语句的架子搭起来了,无论以后如何变化,分组是少不了的。那么开始下一步,想这个结果集中再添加1列,多了我们不加转载 2012-03-19 13:47:52 · 514 阅读 · 0 评论 -
基础sql 温故而知新
一、基础1、说明:创建数据库CREATE DATABASE database-name 2、说明:删除数据库dropdatabase dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind转载 2012-04-06 17:37:29 · 632 阅读 · 0 评论 -
row_number、rank、dense_rank和ntile的比较
排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数:1. row_number2. rank3. dense_rank4. ntile 下面分别介绍一下这四个排名函数的功能及用法。在介绍之前假设有一个t_table表,表结构与表中的数据如图1所示:图1其中field1字段的类型是int,转载 2012-03-22 17:02:16 · 414 阅读 · 0 评论 -
case用法一
许多人都知道,CASE是SQL中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。比如,你可以在 WHERE 子句中使用 CASE。首先让我们看一下 CASE 的语法。在一般的 SELECT 中,语法如下:SELECT = CASE WHEN THEN WHEN THEN ELSE END在上面的代码中需要用转载 2012-04-16 10:51:17 · 861 阅读 · 0 评论 -
绑定变量
1、认识绑定变量: 绑定变量是为了减少解析,比如你有个语句这样的: select aaa,bbb from ccc where ddd=eee; 如果经常通过改变eee这个谓词赋值来查询,如下: select aaa,bbb from ccc where ddd=fff; select aaa,bbb from ccc where ddd=ggg;转载 2012-07-29 09:28:37 · 6620 阅读 · 0 评论 -
oracle 递归 start with connect by level
查找员工编号为7369的领导:1 SELECT LEVEL,E.* FROM EMP E CONNECT BY PRIOR E.MGR = E.EMPNO START WITH E.EMPNO = 78762 ORDER BY LEVEL DESC"start with" -- this identifies all LEVEL=1 nodes in the tree"转载 2012-11-02 10:32:39 · 5739 阅读 · 0 评论 -
查询实例中的SQL (正在执行的 性能差的)
---正在执行的select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea b where a.sql_address = b.address ---执行过的select b.SQL_TEXT,b.FIRST_LOAD_TIME,b.SQL_FULLTEXT from转载 2012-11-06 15:02:48 · 514 阅读 · 0 评论 -
rownum
如果你想了解Oracle查询前10条记录的相关实际应用方案的话,你就可以点击以下的文章对其在实际相关操作中的正确用法,有一个更加完善的认识,希望你在浏览完以下的文章会以下就是正文的详细内容的介绍。在Oracle怎样查询表中的top10条记录呢?select * from test where rownum =10 下面是关于rownum的介绍Rownum和row_number转载 2012-11-06 16:24:57 · 841 阅读 · 0 评论 -
MS SQL Server 表数据更新时间查询
检查数据库表最近一次被INSERT/UPDATE/DELETE的时间来了解各个表的数据写入情况。这里通过一个脚本给每个表加上触发器来记录表数据最后修改时间等信息。执行以下T-SQL语句,将在当前数据库中创建一个日志表 [dbo].[generic_tbmodify_log] ,并自动从 sysobjects 系统表中获得数据库表清单,对除 [dbo].[generic_tbmodify_l转载 2013-05-12 21:18:00 · 3920 阅读 · 1 评论