![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQLServer
Shine
这个作者很懒,什么都没留下…
展开
-
SQL-触发器的使用及语法
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 我为什么要使用触发器?比如,这么两个表:转载 2011-09-19 11:44:57 · 283 阅读 · 0 评论 -
SQL Server中行列转换 Pivot UnPivot
PIVOT用于将列值旋转为列名(即行转列),在SQL Server2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P完整语法:table_sourcePIVOT(聚合函数(value_column)FOR pivot_columnIN()) UNPIVOT用于将列明转为列值(转载 2013-06-05 11:57:09 · 297 阅读 · 0 评论 -
SQLSERVER 获取表信息
declare @TableName nvarchar(100)set @TableName='Leave_BUHR'SELECT (case when a.colorder=1 then d.name else '' end) 表名,a.colorder 字段序号,a.name 字段名,(case when COLUMNPROPERTY( a.id,a.name,原创 2013-06-20 09:30:22 · 251 阅读 · 0 评论 -
sqlserver set case 条件同表多字段更新
语法:update set [column] = (case when [column1] {conditions} then {value} ....else {value} end) where {conditions} update tmp_Matrix_X set type = (case when comments like 'newly%' then 'add' when c原创 2013-06-27 15:00:08 · 312 阅读 · 0 评论 -
SQLSERVER-sp_executesql OUT
ALTER proc [dbo].[proc_Leave_Application_GetAvisibleLeaveByUser_LeaveType]@userID uniqueidentifier,@leaveType uniqueidentifier , @usedLeaves decimal(18,1) output,@userTotal decimal(18,1) outpu原创 2013-09-18 15:59:33 · 201 阅读 · 0 评论 -
区别
select a.DefaultDays,'System',GETDATE() from Leave_Defaultleave a left join Leave_Application b on a.EmployeeCode=b.EmployeeCode and b.Status in('1E56709C-34FC-418D-A6B5-6EF04DD8D86B','18AF32A1-原创 2013-09-26 11:01:19 · 101 阅读 · 0 评论 -
SQL-联表更新
update leave_employeeInfo set EmployeeID =o.EmployeeID , EmployeeCode =o.EmployeeCode , PositionID原创 2013-03-11 09:54:26 · 612 阅读 · 0 评论 -
SQL - not in 和 join
今天做了7W行的数据分页 存储过程如下: ALTER PROCEDURE [dbo].[proc_select_page_top]@pageindex INT=1, --当前页数@pagesize INT=5, --每页大小@tablename VARCHAR(1000)='', --表名@fields VARCHAR(1000)='', --查询的字段集合@ke原创 2013-12-18 15:55:45 · 247 阅读 · 0 评论 -
SQL -迭代
直接上代码:with departmentIDs as( select employeeID,lmemployeeID from ocm_employeesnapshot where lmemployeeID='ADE530EB-EF07-4692-8D72-887AAA695868' union all select l.employeeID,l.lmemployeeID fro原创 2013-12-24 13:45:55 · 230 阅读 · 0 评论 -
MS SQL锁
1 如何锁一个表的某一行SELECT * FROM table ROWLOCK WHERE id = 12 锁定数据库的一个表SELECT * FROM table WITH (HOLDLOCK) ---holdlock人为加锁加锁语句:sybase:update 表 set col1=col1 where 1=0 ;MSSQL:select col1 from 表转载 2014-07-04 11:35:39 · 238 阅读 · 0 评论 -
SQL 查询优化
第一篇SQL语句效率1. SQL优化的原则是:将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。调整不良SQL通常可以从以下几点切入:(1)检查不良的SQL,考虑其写法是否还有可优化内容(2)检查子查询,考虑SQL子查询是否可以用简单连接的方式进行重新书写(3)检查优化索引的使用(4)考虑数据库的优化器2. 避免出现SELECT *转载 2013-06-05 13:22:42 · 2583 阅读 · 0 评论 -
SQL 开始日期和结束日期
--定义导出数据的临时表 create table temp_tb ( year int, month int, employeeCode nvarchar(32), leavetype nvarchar(32), status nvarchar(32), startDate datetime, enddate datetime,原创 2013-03-05 15:31:57 · 574 阅读 · 0 评论 -
日期计算
--获得当月天数 select day(dateadd(mm,1,getdate())-day(getdate())) as 本月天数 ; select getdate() as 当前日期; select day(getdate()) as 目前第几天; select getdate()-day(getdate()) as 上个月最后一天; -- 减去了当前的天数 selec转载 2013-03-04 10:05:52 · 134 阅读 · 0 评论 -
创建索引可以大大提高系统的性能
创建索引可以大大提高系统的性能:第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,转载 2011-10-11 11:11:40 · 344 阅读 · 0 评论 -
SQL-创建临时表
临时表drop table #Tmp --删除临时表#Tmpcreate table #Tmp --创建临时表#Tmp( ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1 WokNo varchar(50), primary key (ID)原创 2011-11-16 09:23:50 · 314 阅读 · 0 评论 -
SQL-创建效率高sql-建立索引
我们做开发的人员,虽说自己不是专业从事数据库方面研究的(如DBA),但很多时候,公司没有专门的DBA,所以拿到具体的项目中,整体的数据库设计都是开发人员自己写的,随着时间的推移,加上开发经验的增长,越来越关心如何设计好的数据库,如何写出高效的sql语句。之所以非常关心数据库及sql语句的写法,主要是在程序逻辑代码上大家都有可能写出一样的效率的功能方法来,而sql语句呢,对于同样的结果集,一个初级的转载 2011-11-16 11:07:35 · 338 阅读 · 0 评论 -
SQL - 标量函数
标量函数对一个或多个参数进行操作以产生一个单独的值。定义函数时,参数必须放置在括号中间。标量函数可以返回除了text、ntext、cursor和timestamp的任何数据类型。如果函数语句不止一条,必须使用BEGIN和END。标量函数可以用于许多位置,包括:SELECT语句列的列表WHERE子句ORDER BYGROUP BYUPDATE语句的SET子句INSER转载 2011-11-17 13:24:14 · 1053 阅读 · 0 评论 -
SQL-Function 返回表
/*按照符号分割字符串*/create function [dbo].[m_split](@c varchar(2000),@split varchar(2)) returns @t table(col varchar(200)) as begin while(charindex(@split,@c)<>0)原创 2011-11-30 14:44:58 · 1005 阅读 · 0 评论 -
三种分页的存储过程
--根据MAX(MIN)IDCREATE PROC [dbo].[proc_select_id]@pageindex int=1,--当前页数@pagesize int=10,--每页大小@tablename VARCHAR(50)='',--表名@fields VARCHAR(1000)='',--查询的字段集合@keyid VARCHAR(50)='',--主键@c转载 2012-10-29 17:49:40 · 140 阅读 · 0 评论 -
生成自动-存储或触发器
生成自动 类似 XXXXX001,XXXXXX010,XXXXXXX100,XXXXXXX1000> .. create trigger tr_leaveapplication_autocode on dbo.Leave_Applicationfor insertasbegin declare @appCode varchar(32); --获取当前的最大Code原创 2012-11-08 11:16:09 · 150 阅读 · 0 评论 -
SQL 查询当天,本月,本周的记录
SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY dateandtime DESC本月记录 SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0转载 2012-12-04 14:13:53 · 174 阅读 · 0 评论 -
SQL-存储过程中调用存储过程
第一种方法: 使用output参数 USE AdventureWorks;GOIF OBJECT_ID ( 'Production.usp_GetList', 'P' ) IS NOT NULL DROP PROCEDURE Production.usp_GetList;GOCREATE PROCEDURE Production.usp_GetList @p原创 2012-12-26 10:50:26 · 200 阅读 · 0 评论 -
SQL Split
在给文章加自定义标签时,需要在存储过程中对输入的字符串按照“,”字符分割成一个字符数组。但是Sql中没有实现字符串分组的Split方 法。因此就需要编写一个自定义的Split函数。我首先是使用表值函数的方法实现的字符串分组,但是在使用中感觉不是很方便。后来又在网上找到了一种使用 两个标量函数,其中一个函数首先返回分割后字符数组的长度,另一个函数依次返回每个分割出的字符串。然后使用循环依次获取分割的转载 2013-02-18 09:34:56 · 176 阅读 · 0 评论 -
SQL 查询优化
1.引言 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,索引的运用与复杂视图的编写等体会不出SQL语句各种写法的性能优劣,但是应用系统实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可转载 2014-06-23 12:23:04 · 85 阅读 · 0 评论