把工作这段期间sql server 中需要用的sql语句整理了一下

前些日子sql用到哪里写到哪里,乱七八糟,今天整理了一下,以作备份(虽然开通博客已经八个月了,但是今天还是第一次发表博文,好紧张啊~~)

--2014.08.27号整理sql语句

1:进入数据库
use [数据库名]
eg: use [dev]

2:创建表
create table 表名(
[ID] int identity(1,1) primary key,
[列名] 数据类型 约束 ,
)
eg:
create table atblTest1(
[ID] int identity(1,1) primary key, --从1开始每次增加1
[Key] varchar(200) unique ,
[Value] decimal(18,4) ,                --小数点后面保留四位小数,数据长18位(不加小数点位)
[Unit1] varchar(100),

--Message text,

--Time datetime

--[count] int,
)

3:操作现有表/字段

--修改字段数据类型
alter table 表名 alter column 字段名 字段类型

--删除字段出现约束什么错误
ALTER TABLE 表名 DROP CONSTRAINT 默认约束名
GO
ALTER TABLE 表名 DROP COLUMN 字段名
GO

--获取默认约束名
select name
from sysobjects
where id=(select cdefault
from syscolumns
where name=‘字段名‘ and id = (select id
from sysobjects
where name = ‘表名‘))

--添加字段
alter table 表名 add 字段名 字段类型

--不允许空字符:
alter table 表名 add 新字段 字段类型 not NULL

--允许空字符:
alter table 表名 add 新字段 字段类型 NULL

--修改字段
exec sp_rename ‘表名.原列名‘,‘新列名‘,‘column‘

--修改表名
exec sp_rename ‘旧表名‘, ‘新表名‘

eg:
exec sp_rename ‘atblTest1‘, ‘atblTest‘
exec sp_rename ‘atblTest.Unit1‘,‘Unit‘,‘column‘
alter table atblTest alter column [Unit] varchar(200)
alter table atblTransactions add IsInsertAccounting bit
alter table atblMembers add AccountUserId int
alter table atblAccounts add PendingBalance money

4:添加数据
insert into 表名(列名1,列名2,列名3) values(数据1,数据2,数据3)

eg: insert into atblTest values(‘LOBcheckFee‘,3,‘dollars‘)

5:更改数据
update 表名 set 列名 = 列名数据 where id=标识数据

eg: update atblTest set [Unit] =‘dollar‘ where [ID]=1

6:创建触发器 (就不连贯着来发例子了啊)

create trigger 触发器名     --创建触发器名字
on 触发器所在表               --在这个表中创建触发器
for Update                     -- 因为哪个事件而触发(insert ,update,delete)
as                                 --事件触发后所做的事情
if Update(该表字段)          --如果修改XX字段
begin
引发的sql操作
end

eg:(主要是如果ablLeads表QuantityOnHand数量改变,就会将改变的过程存到另一个表中:1-->0)
create trigger trQuantityOnHand
on atblLeads
for Update
as
if Update(QuantityOnHand)
begin
  declare @QuantityOnHandOld int, @QuantityOnHandNew int,@LeadID int;

  select @QuantityOnHandNew=QuantityOnHand,@LeadID=LeadID from inserted;

  select @QuantityOnHandOld=QuantityOnHand from deleted;

  if(@QuantityOnHandOld != @QuantityOnHandNew)
  begin
    insert into atblTrigger([Type],[Time],[Result],[LeadID])
  values(‘QuantityOnHand‘,getdate(),convert(varchar, @QuantityOnHandOld)+‘ -> ‘+convert(varchar,@QuantityOnHandNew),@LeadID);
end
end

7:删除触发器

if(object_id(‘触发器名称‘) is not null)
drop trigger 触发器名称

if(object_id(‘trQuantityOnHand‘) is not null)
drop trigger trQuantityOnHand

8:对表数据分页
select * from
(
select * , row_number() over
(
order by
某种规律的字段名(id)
) as rownum
from 表名
)DATA
where DATA.rownum>开始页码*每页列显数量 and DATA.rownum<开始页码*每页列显数量+每页列显数量

eg:列显第六页的数据即600-610之间的数据
select * from
(
select * , row_number() over
(
order by
LEADID
) as rownum
from atblLeads
)DATA
where DATA.rownum>60*10 and DATA.rownum<60*10+10

9:删除表
drop table 表名

-----如果表存在就drop掉------------------------------
if exists (select 1
from sysobjects
where id = object_id(‘表名‘)
and type = ‘U‘)
drop table 表名
go

--eg:
if exists (select 1
from sysobjects
where id = object_id(‘[dbo].[db3_IndexingDetails]‘)
and type = ‘U‘)
drop table [dbo].[db3_IndexingDetails]
go

10:控制sql修改数量

eg:
begin tran
update atblOrders set OrderStatus = 2 where EbayOrderID = ‘131235536269-0‘
if(@@ROWCOUNT>1)   [email protected]@ROWCOUNT 是受影响的行数
  begin rollback tran
    print ‘sql超过了指定的受影响行数,将不会执行该语句‘
  end
else if(@@ROWCOUNT=0)
  begin
    print ‘执行失败‘
  end
else
  begin commit tran
  print ‘恭喜你执行完成‘
end

11:获得行数
select count(*) from 你的表名

12:获得列名以及详细数据
select * from syscolumns where id = object_id(‘表名‘)

eg: select * from syscolumns where id = object_id(‘atblUsers‘)

13:获得列名数量
select count(*) from syscolumns where id=object_id(‘你的表名‘)

14:读取库中的所有表名
select name from sysobjects where xtype=‘u‘

15:读取指定表的所有列名
select name from syscolumns where id=(select max(id) from sysobjects where xtype=‘u‘ and name=‘表名‘)

16:获取字段类型
select t.name from sysobjects o,syscolumns c,systypes t
where o.id=c.id and c.usertype=t.usertype and o.name=‘表名‘ and c.name=‘列名‘

17:Select语句 区分查询数据的大小写

--不区分大小写(默认不区分)
select top 10 * from atblUsers where [Password]=‘sunflower134‘ COLLATE Chinese_PRC_CI_AS

eg:--区分大小写 针对某个字段
select top 10 * from atblUsers where [Password]=‘sunflower134‘ COLLATE Chinese_PRC_CS_AS AND Status=1

18:数据查询

eg:
select TransactionID,AccountID,TransactAmount,TransactDate,TransactType,
Credit = CASE WHEN TransactAmount = 0 THEN 0 WHEN TransactAmount > 0 THEN TransactAmount END, --(添加的列显字段)
Debit = CASE WHEN TransactAmount = 0 THEN 0 WHEN TransactAmount < 0 THEN -TransactAmount END
FROM [atblAccounting]
WHERE [AccountID] = 53 order by TransactDate DESC ,TransactType desc

select Sum(TransactAmount) from atblAccounting where AccountID=54

select TOP 200 * from atblAccounting order by TransactionID DESC

select b.IsInsertAccounting, * from atblAccounting a
inner join atblTransactions b on a.ebayOrderID=b.eBayOrderID and a.ItemID = b.ItemID

select count(*) from atblUsereBayAuthToken

19:删除表中的所有数据
DELETE FROM 表名

20:查询SQLserver的详细版本信息
select @@VERSION

大晚上了,这些sql大多数是已经写过了,所以例子中sql就没有再测试一遍了.

时间: 2024-10-15 21:06:42

把工作这段期间sql server 中需要用的sql语句整理了一下的相关文章

Sql Server中如何快速修正SQL 语句错误

本文将和大家讨论一些关于找SQL 错误的问题. 现在的系统基本都是需要用到数据库的,既然用到数据库我们就要写SQL 脚本,常用的做法是现在Microsoft Sql Server Management Sudio写好调试好,然后贴到 代码中,但这样就能保证我们的SQL 脚本正常运行吗?那如果带参数的SQL 或存储过程出现问题呢?如果数据出现问题,我们应该怎么找出错误的SQL 呢? 带着这个疑问,开始我们今天的讨论.以前用代码和数据库打交道,出现数据问题,我们会打个断点一步一步的调试,就像这样:

sql server 中的case when then 语句

--select DataName , --case Code -- -- when 'W01'  then '男' -- -- when 'W07'  then '女' -- -- else '其他' -- -- end as Code --from dbo.HistoryData select DataName, ( case when Code='W01'  then '男' when Code='W07'  then '女' else '其他' end ) from HistoryDat

在SQL SERVER中,怎样用T-sql语句拷贝表??

1.说明:复制表(只复制结构,源表名:a 新表名:b) 法一:select * into b from a where 1<>1法二:select top 0 * into b from a2.说明:拷贝表(拷贝数据,源表名:a 目标表名:b)insert into b(a, b, c) select d,e,f from a;

SQL SERVER 中的Schema详解

以往 SQL Server 内的对象命名是"服务器.数据库.用户名.对象",但新版的对象命名改为"服务器.数据库.Schema.对象".这让你规划数据库对象命名时更有弹性. 架构是形成单个命名空间的数据库实体的集合.命名空间是一个集合,其中每个元素的名称都是唯一的. 虽然 SQL Server 2000 包含 CREATE SCHEMA 语句,但实际上并不会像上面所定义的那样创建架构.在 SQL Server 2000 中,数据库用户和架构是隐式连接在一起的.每个数

(4.7)怎么捕获和记录SQL Server中发生的死锁?

转自:https://blog.csdn.net/c_enhui/article/details/19498327 怎么捕获和记录SQL Server中发生的死锁? sql server如何让错误日志记录死锁 2014年02月19日 18:25:55 阅读数:1313 我们知道,可以使用SQL Server自带的Profiler工具来跟踪死锁信息.但这种方式有一个很大的敝端,就是消耗很大.据国外某大神测试,profiler甚至可以占到服务器总带宽的35%,所以,在一个繁忙的系统中,使用profi

深入浅出SQL Server中的死锁 【转】

简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相关观念有一个理解. 一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理解死锁.比如说一个经典的例子就是汽车(主体)对于道路(资源)的征用,如图1所示. 图1.对于死锁的直观理解 在图1的例子中,每队汽车都占有一条道路,但都需要另外一队汽车所占有的另一条道路,因此互相阻塞,谁都无法前行,因此造成了死锁.由这个简单的例子可以看出,发生死锁需要四个必要条件,如下: 1)互斥

深入浅出SQL Server中的死锁

简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相关观念有一个理解. 一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理解死锁.比如说一个经典的例子就是汽车(主体)对于道路(资源)的征用,如图1所示. 图1.对于死锁的直观理解 在图1的例子中,每队汽车都占有一条道路,但都需要另外一队汽车所占有的另一条道路,因此互相阻塞,谁都无法前行,因此造成了死锁.由这个简单的例子可以看出,发生死锁需要四个必要条件,如下: 1)互斥

十步优化SQL Server中的数据访问(转载)

原文地址:http://tech.it168.com/a2009/1125/814/000000814758.shtml 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因. 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得很大,有些表

SQL Server中关于跟踪(Trace)那点事

前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简单的举几个应用场景: 在线生产库为何突然宕机?数百张数据表为何不翼而飞?刚打好补丁的系统为何屡遭黑手?新添加的信息表为何频频丢失?某张表字段的突然更改,究竟为何人所为?这些个匿名的访问背后,究竟是人是鬼?突然增加的增量数据,究竟是对是错?数百兆的日志爆炸式的增长背后又隐藏着什么?这一且的背后,是应用