程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> MSSQL數據庫和t-sql技巧集錦

MSSQL數據庫和t-sql技巧集錦

編輯:關於SqlServer

1.把長日期轉換為短日期 Convert(char(10),getdate(),120)
MS-SQL數據庫開發常用匯總 1.按姓氏筆畫排序:
Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as

2.數據庫加密:

select encrypt('原始密碼')
select pwdencrypt('原始密碼')
select pwdcompare('原始密碼','加密後密碼') = 1--相同;否則不相同 encrypt('原始密碼')
select pwdencrypt('原始密碼')
select pwdcompare('原始密碼','加密後密碼') = 1--相同;否則不相同

3.取回表中字段:

declare @list varchar(1000),@sql nvarchar(1000)
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
set @sql='select '+right(@list,len(@list)-1)+' from 表A'
exec (@sql)

4.查看硬盤分區:

EXEC master..xp_fixeddrives

5.比較A,B表是否相等:

if (select checksum_agg(binary_checksum(*)) from A)
=
(select checksum_agg(binary_checksum(*)) from B)
print '相等'
else
print '不相等'

6.殺掉所有的事件探察器進程:

DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
EXEC sp_msforeach_worker '?'

7.記錄搜索:
開頭到N條記錄

Select Top N * From 表
-------------------------------
N到M條記錄(要有主索引ID)
Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc
----------------------------------
N到結尾記錄
Select Top N * From 表 Order by ID Desc

8.如何修改數據庫的名稱:

sp_renamedb 'old_name', 'new_name'

9:獲取當前數據庫中的所有用戶表

select Name from sysobjects where xtype='u' and status>=0

10:獲取某一個表的所有字段

select name from syscolumns where id=object_id('表名')

11:查看與某一個表相關的視圖、存儲過程、函數

select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'

12:查看當前數據庫中所有存儲過程

select name as 存儲過程名稱 from sysobjects where xtype='P'

13:查詢用戶創建的所有數據庫

select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')

或者

select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01

14:查詢某一個表的字段和數據類型

select column_name,data_type from information_schema.columns
where table_name = '表名'
[n].[標題]:
Select * From TableName Order By CustomerName
[n].[標題]:

一、 只復制一個表結構,不復制數據

select top 0 * into [t1] from [t2]

二、 獲取數據庫中某個對象的創建腳本

1、 先用下面的腳本創建一個函數

if exists(select 1 from sysobjects where id=object_id('fgetscript') and objectproperty(id,'IsInlineFunction')=0)
drop function fgetscript
go

create function fgetscript(
@servername varchar(50) --服務器名
,@userid varchar(50)='sa' --用戶名,如果為nt驗證方式,則為空
,@password varchar(50)='' --密碼
,@databasename varchar(50) --數據庫名稱
,@objectname varchar(250) --對象名

) returns varchar(8000)
as
begin
declare @re varchar(8000) --返回腳本
declare @srvid int,@dbsid int --定義服務器、數據庫集id
declare @dbid int,@tbid int --數據庫、表id
declare @err int,@src varchar(255), @desc varchar(255) --錯誤處理變量

--創建sqldmo對象
exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output
if @err<>0 goto lberr

--連接服務器
if isnull(@userid,'')='' --如果是 Nt驗證方式
begin
exec @err=sp_oasetproperty @srvid,'loginsecure',1
if @err<>0 goto lberr

exec @err=sp_oamethod @srvid,'connect',null,@servername
end
else
exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@password

if @err<>0 goto lberr

--獲取數據庫集
exec @err=sp_oagetproperty @srvid,'databases',@dbsid output
if @err<>0 goto lberr

--獲取要取得腳本的數據庫id
exec @err=sp_oamethod @dbsid,'item',@dbid output,@databasename
if @err<>0 goto lberr

--獲取要取得腳本的對象id
exec @err=sp_oamethod @dbid,'getobjectbyname',@tbid output,@objectname
if @err<>0 goto lberr

--取得腳本
exec @err=sp_oamethod @tbid,'script',@re output
if @err<>0 goto lberr

--print @re
return(@re)

lberr:
exec sp_oageterrorinfo NULL, @src out, @desc out
declare @errb varbinary(4)
set @errb=cast(@err as varbinary(4))
exec master..xp_varbintohexstr @errb,@re out
set @re='錯誤號: '+@re
+char(13)+'錯誤源: '+@src
+char(13)+'錯誤描述: '+@desc
return(@re)
end
go

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved