日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

实用的SQL语句

發(fā)布時(shí)間:2024/9/20 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实用的SQL语句 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

行列互轉(zhuǎn)

create?table?test(id?int,name?varchar(20),quarter?int,profile?int)?
insert?into?test?values(1,'a',1,1000)
insert?into?test?values(1,'a',2,2000)
insert?into?test?values(1,'a',3,4000)
insert?into?test?values(1,'a',4,5000)
insert?into?test?values(2,'b',1,3000)
insert?into?test?values(2,'b',2,3500)
insert?into?test?values(2,'b',3,4200)
insert?into?test?values(2,'b',4,5500)
select?*?from?test

--行轉(zhuǎn)列
select?id,name,
[1]?as?"一季度",
[2]?as?"二季度",
[3]?as?"三季度",
[4]?as?"四季度",
[5]?as?"5"
from
test
pivot
(
sum(profile)
for?quarter?in
(
[1],[2],[3],[4],[5])
)
as?pvt


create?table?test2(id?int,name?varchar(20),?Q1?int,?Q2?int,?Q3?int,?Q4?int)
insert?into?test2?values(1,'a',1000,2000,4000,5000)
insert?into?test2?values(2,'b',3000,3500,4200,5500)
select?*?from?test2

--列轉(zhuǎn)行
select?id,name,quarter,profile
from
test2
unpivot
(
profile
for?quarter?in
(
[Q1],[Q2],[Q3],[Q4])
)?
as?unpvt

?

sql替換字符串 substring replace

--例子1:
update?tbPersonalInfo?set?TrueName?=?replace(TrueName,substring(TrueName,2,4),'**')?where?ID?=?1

--例子2:
update?tbPersonalInfo?set?Mobile?=?replace(Mobile,substring(Mobile,4,11),'********')?where?ID?=?1

--例子3:
update?tbPersonalInfo?set?Email?=?replace(Email,'chinamobile','******')?where?ID?=?1?

?

SQL查詢一個(gè)表內(nèi)相同紀(jì)錄 having

如果一個(gè)ID可以區(qū)分的話,可以這么寫(xiě)
select?*?from?表?where?ID?in?(
select?ID?from?表?group?by?ID?having?sum(1)>1) 如果幾個(gè)ID才能區(qū)分的話,可以這么寫(xiě)
select?*?from?表?where?ID1+ID2+ID3?in
(
select?ID1+ID2+ID3?from?表?group?by?ID1,ID2,ID3?having?sum(1)>1) 其他回答:數(shù)據(jù)表是zy_bho,想找出ZYH字段名相同的記錄
--方法1:????
SELECT??*FROM??zy_bho??a??WHERE??EXISTS?
??(
SELECT??1??FROM??zy_bho??WHERE??[PK]??<>??a.[PK]??AND??ZYH??=??a.ZYH)?
???
--方法2:
select??a.*??from??zy_bho??a??join??zy_bho??b?
??????
on??(a.[pk]<>b.[pk]??and??a.zyh=b.zyh)?
???
--方法3:
select??*??from??zy_bbo??where??zyh??in?
(
select??zyh??from??zy_bbo??group??by??zyh??having??count(zyh)>1)?
--其中pk是主鍵或是?unique的字段。?

把多行SQL數(shù)據(jù)變成一條多列數(shù)據(jù),即新增列

Select
DeptName
=O.OUName,
'9G'=Sum(Case?When?PersonalGrade=9?Then?1?Else?0?End),
'8G'=Sum(Case?When?PersonalGrade=8?Then?1?Else?0?End),
'7G4'=Sum(Case?When?PersonalGrade=7?AND?JobGrade?=4?Then?1?Else?0?End),
'7G3'=Sum(Case?When?PersonalGrade=7?AND?JobGrade?=3?Then?1?Else?0?End),
'6G'=Sum(Case?When?PersonalGrade=6?Then?1?Else?0?End),
'5G3'=Sum(Case?When?PersonalGrade=5?AND?JobGrade?=3?Then?1?Else?0?End),
'5G2'=Sum(Case?When?PersonalGrade=5?AND?JobGrade?=2?Then?1?Else?0?End),
'4G'=Sum(Case?When?PersonalGrade=4?Then?1?Else?0?End),
'3G2'=Sum(Case?When?PersonalGrade=3?AND?JobGrade?=2?Then?1?Else?0?End),
'3G1'=Sum(Case?When?PersonalGrade=3?AND?JobGrade?=1?Then?1?Else?0?End),
'2G'=Sum(Case?When?PersonalGrade=2?Then?1?Else?0?End),
'1G'=Sum(Case?When?PersonalGrade=1?Then?1?Else?0?End),
--'?未定級(jí)'=Sum(Case?When?PersonalGrade=NULL?Then?1?Else?0?End)?

?

表復(fù)制

insert?into?PhoneChange_Num?([IMSI],Num)
SELECT?[IMSI]
??????,
count([IMEI])?as?num
??
FROM?[Test].[dbo].[PhoneChange]?group?by?[IMSI]?order?by?num?desc?

語(yǔ)法1:Insert INTO table(field1,field2,...) values(value1,value2,...)

語(yǔ)法2:Insert into Table2(field1,field2,...) select value1,value2,... from Table1(要求目標(biāo)表Table2必須存在,由于目標(biāo)表Table2已經(jīng)存在,所以我們除了插入源表Table1的字段外,還可以插入常量。)

語(yǔ)法3:SELECT vale1, value2 into Table2 from Table1(要求目標(biāo)表Table2不存在,因?yàn)樵诓迦霑r(shí)會(huì)自動(dòng)創(chuàng)建表Table2,并將Table1中指定字段數(shù)據(jù)復(fù)制到Table2中。)

語(yǔ)法4:使用導(dǎo)入導(dǎo)出功能進(jìn)行全表復(fù)制。如果是使用【編寫(xiě)查詢以指定要傳輸?shù)臄?shù)據(jù)】,那么在大數(shù)據(jù)表的復(fù)制就會(huì)有問(wèn)題?因?yàn)閺?fù)制到一定程度就不再動(dòng)了,內(nèi)存爆了?它也沒(méi)有寫(xiě)入到表中。而使用上面3種語(yǔ)法直接執(zhí)行是會(huì)馬上刷新到數(shù)據(jù)庫(kù)表中的,你刷新一下mdf文件就知道了。

?

利用帶關(guān)聯(lián)子查詢Update語(yǔ)句更新數(shù)據(jù)

--方法1:
Update?Table1?set?c?=?(select?c?from?Table2?where?a?=?Table1.a)?where?c?is?null?

--方法2:
update??A
set??newqiantity=B.qiantity
from??A,B
where??A.bnum=B.bnum?

--方法3:
update
????(
select?A.bnum?,A.newqiantity,B.qiantity?from?A?left?join?B?on?A.bnum=B.bnum)?AS?C
set?C.newqiantity?=?C.qiantity
where?C.bnum?=XX?

?

連接遠(yuǎn)程服務(wù)器

--方法1:
select?*??from?openrowset('SQLOLEDB','server=192.168.0.67;uid=sa;pwd=password','SELECT?*?FROM?BCM2.dbo.tbAppl')

--方法2:
select?*??from?openrowset('SQLOLEDB','192.168.0.67';'sa';'password','SELECT?*?FROM?BCM2.dbo.tbAppl')??

?

?

Date 和 Time 樣式

?

?

不帶世紀(jì)數(shù)位 (yy) (1) 帶世紀(jì)數(shù)位 (yyyy) 標(biāo)準(zhǔn) 輸入/輸出 (3)

-

0100 (1,2)

默 認(rèn)

mon dd yyyy hh:miAM(或 PM)

1

101

美 國(guó)

mm/dd/yyyy

2

102

ANSI

yy.mm.dd

3

103

英 國(guó)/法國(guó)

dd/mm/yyyy

4

104

德 國(guó)

dd.mm.yy

5

105

意 大利

dd-mm-yy

6

106(1)

-

dd mon yy

7

107(1)

-

mon dd, yy

8

108

-

hh:mi:ss

-

9109 (1,2)

默 認(rèn)設(shè)置 + 毫秒

mon dd yyyy hh:mi:ss:mmmAM(或 PM)

10

110

美 國(guó)

mm-dd-yy

11

111

日 本

yy/mm/dd

12

112

ISO

yymmdd

yyyymmdd

-

13113 (1,2)

歐 洲默認(rèn)設(shè)置 + 毫秒

dd mon yyyy hh:mi:ss:mmm(24h)

14

114

-

hh:mi:ss:mmm(24h)

-

20120 (2)

ODBC 規(guī)范

yyyy-mm-dd hh:mi:ss(24h)

-

21121 (2)

ODBC 規(guī)范(帶毫秒)

yyyy-mm-dd hh:mi:ss.mmm(24h)

-

126 (4)

ISO8601

yyyy- mm-ddThh:mi:ss.mmm(無(wú)空格)

-

127(6, 7)

帶時(shí)區(qū) Z 的 ISO8601。

yyyy-mm-ddThh:mi:ss.mmmZ

(無(wú) 空格)

-

130 (1,2)

回歷 (5)

dd mon yyyy hh:mi:ss:mmmAM

-

131 (2)

回歷 (5)

dd/mm/yy hh:mi:ss:mmmAM

?

--語(yǔ)句及查詢結(jié)果:
SELECT?CONVERT(varchar(100),?GETDATE(),?0):?05?16?2006?10:57AM
SELECT?CONVERT(varchar(100),?GETDATE(),?1):?05/16/06
SELECT?CONVERT(varchar(100),?GETDATE(),?2):?06.05.16
SELECT?CONVERT(varchar(100),?GETDATE(),?3):?16/05/06
SELECT?CONVERT(varchar(100),?GETDATE(),?4):?16.05.06
SELECT?CONVERT(varchar(100),?GETDATE(),?5):?16-05-06
SELECT?CONVERT(varchar(100),?GETDATE(),?6):?16?05?06
SELECT?CONVERT(varchar(100),?GETDATE(),?7):?05?16,?06
SELECT?CONVERT(varchar(100),?GETDATE(),?8):?10:57:46
SELECT?CONVERT(varchar(100),?GETDATE(),?9):?05?16?2006?10:57:46:827AM
SELECT?CONVERT(varchar(100),?GETDATE(),?10):?05-16-06
SELECT?CONVERT(varchar(100),?GETDATE(),?11):?06/05/16
SELECT?CONVERT(varchar(100),?GETDATE(),?12):?060516
SELECT?CONVERT(varchar(100),?GETDATE(),?13):?16?05?2006?10:57:46:937
SELECT?CONVERT(varchar(100),?GETDATE(),?14):?10:57:46:967
SELECT?CONVERT(varchar(100),?GETDATE(),?20):?2006-05-16?10:57:47
SELECT?CONVERT(varchar(100),?GETDATE(),?21):?2006-05-16?10:57:47.157
SELECT?CONVERT(varchar(100),?GETDATE(),?22):?05/16/06?10:57:47?AM
SELECT?CONVERT(varchar(100),?GETDATE(),?23):?2006-05-16
SELECT?CONVERT(varchar(100),?GETDATE(),?24):?10:57:47
SELECT?CONVERT(varchar(100),?GETDATE(),?25):?2006-05-16?10:57:47.250
SELECT?CONVERT(varchar(100),?GETDATE(),?100):?05?16?2006?10:57AM
SELECT?CONVERT(varchar(100),?GETDATE(),?101):?05/16/2006
SELECT?CONVERT(varchar(100),?GETDATE(),?102):?2006.05.16
SELECT?CONVERT(varchar(100),?GETDATE(),?103):?16/05/2006
SELECT?CONVERT(varchar(100),?GETDATE(),?104):?16.05.2006
SELECT?CONVERT(varchar(100),?GETDATE(),?105):?16-05-2006
SELECT?CONVERT(varchar(100),?GETDATE(),?106):?16?05?2006
SELECT?CONVERT(varchar(100),?GETDATE(),?107):?05?16,?2006
SELECT?CONVERT(varchar(100),?GETDATE(),?108):?10:57:49
SELECT?CONVERT(varchar(100),?GETDATE(),?109):?05?16?2006?10:57:49:437AM
SELECT?CONVERT(varchar(100),?GETDATE(),?110):?05-16-2006
SELECT?CONVERT(varchar(100),?GETDATE(),?111):?2006/05/16
SELECT?CONVERT(varchar(100),?GETDATE(),?112):?20060516
SELECT?CONVERT(varchar(100),?GETDATE(),?113):?16?05?2006?10:57:49:513
SELECT?CONVERT(varchar(100),?GETDATE(),?114):?10:57:49:547
SELECT?CONVERT(varchar(100),?GETDATE(),?120):?2006-05-16?10:57:49
SELECT?CONVERT(varchar(100),?GETDATE(),?121):?2006

對(duì)上面進(jìn)行動(dòng)態(tài)生成字符串:

declare?@sql1?nvarchar(200),@sql2?nvarchar(200)
declare?@count?nvarchar(100);
set?@sql1?=?'SELECT?CONVERT(varchar(100),?GETDATE(),?0)'
set?@sql2?=?'SELECT?@count?=?CONVERT(varchar(100),?GETDATE(),?0)'
exec?sp_executesql??@sql2,N'@count?nvarchar(50)?out',@count?out
print?@sql1?+''+?@count

?

--SQL?Server?僅保證往返轉(zhuǎn)換(即從原始數(shù)據(jù)類(lèi)型進(jìn)行轉(zhuǎn)換后又返回原始數(shù)據(jù)類(lèi)型的轉(zhuǎn)換)在各版本間產(chǎn)生相同值。
DECLARE?@myval?decimal?(5,?2)
SET?@myval?=?193.57
SELECT?CAST(CAST(@myval?AS?varbinary(20))?AS?decimal(10,5))
--?Or,?using?CONVERT
SELECT?CONVERT(decimal(10,5),?CONVERT(varbinary(20),?@myval))
--輸出193.57000
--
輸出193.57000

?

--bigint數(shù)據(jù)類(lèi)型的字段截取(其它類(lèi)型也一樣)
select?substring(CONVERT(varchar(15),字段名),11,9)?from?表名
select?substring(cast(字段名?as?varchar(50),6,9))?from?表名

?

?SQL中的相除

--SQL中的相除
SELECT?CASE?WHEN?ISNULL(A+B,0)<>0?THEN?
LTRIM(CONVERT(DEC(18,2),A*100.0/(A+B)))+'%'??ELSE?''?END?AS?'百分?jǐn)?shù)'?
FROM?TB?

?

--百分比的不同格式
select?
LTRIM(CONVERT(DEC(18,2),42*100.0/96))+'%'?AS?'百分?jǐn)?shù)string'?,--DEC=decimal
CONVERT(decimal(10,2),42*100.0/96)?AS?'百分?jǐn)?shù)dec',?--100?與?100.0是不一樣的
CONVERT(decimal(10,2),42*100/96)?AS?'沒(méi)有保留到小數(shù)點(diǎn)'
--from?Tb
order?by?百分?jǐn)?shù)dec?desc
--43.75%????43.75????43.00
?
--方法二:
Select?(Convert(varchar(50),Round(42*100.0/96,3))+'%')?as?百分比?--from?A
--
43.750000%

?

四舍五入

/*ROUND?(?numeric_expression?,?length?[?,function?]?)
function?必須為?tinyint、smallint??或?int。
如果省略?function?或其值為?0(默認(rèn)值),則將舍入?numeric_expression。
如果指定了0以外的值,則將截?cái)?numeric_expression。
*/
SELECT?ROUND(150.45648,?2);--保留小數(shù)點(diǎn)后兩位,需要四舍五入
SELECT?ROUND(150.45648,?2,?0);--保留小數(shù)點(diǎn)后兩位,0為默認(rèn)值,表示進(jìn)行四舍五入
SELECT?ROUND(150.45648,?2,?1);--保留小數(shù)點(diǎn)后兩位,不需要四舍五入,這里除0以外都是有同樣的效果
SELECT?ROUND(150.45648,?2,?2);--保留小數(shù)點(diǎn)后兩位,不需要四舍五入,這里除0以外都是有同樣的效果
--
150.46000
--
150.45000
--
150.45000
--
150.45000

?

對(duì)字段出現(xiàn)NULL值的處理

--判斷某些字段是否為空
--
case
select?case?when?'字段名'?is?null?then?'\N'?else?convert(varchar(20),'字段名')?end?as?'NewName'
select?case?when?null?is?null?then?'\N'?else?convert(varchar(20),null)?end?as?'NewName'

--SQL?Server?2005:coalesce
select?coalesce('字符串類(lèi)型字段','\N')?as?'NewName'
select?coalesce(convert(varchar(20),'非字符串類(lèi)型字段'),'\N')?as?'NewName'
select?coalesce(convert(varchar(20),null),'\N')?as?'NewName'

--coalesce,返回其參數(shù)中的第一個(gè)非空表達(dá)式
select?Coalesce(null,null,1,2,null)union
select?Coalesce(null,11,12,13,null)union
select?Coalesce(111,112,113,114,null)

?

count的幾種情況

--第一種
select?count(*)?from?tablename

--第二種
select?count(ID)?from?tablename

--第三種,1換成其它值也是可以的
select?count(1)?from?tablename

/*
--第四種,這個(gè)不存在性能問(wèn)題
idint?表ID(如果?indid?=?0?或255)。否則為索引所屬表的ID
Indid?smallint?索引ID:
0=表
1=聚簇索引
>1=非聚簇索引
255=具有text或image數(shù)據(jù)的表?xiàng)l目。
rows?int?基于indid=0?和?indid=1地?cái)?shù)據(jù)級(jí)行數(shù),該值對(duì)于indid>1重復(fù)。如果indid=255,rows設(shè)置為0。
當(dāng)表沒(méi)有聚簇索引時(shí),Indid?=?0?否則為?1。?
*/
select?rows,indid?from?sysindexes?where?id?=?object_id('tablename')?and?indid?in?(0,1)?

?

?

Union all

--把兩個(gè)相同結(jié)構(gòu)的表union后插入到一個(gè)新表中
select?*?
into?table_now
from?table_1
union?all?select?*?from?table_2
--Truncate?table?table_now

?

查看數(shù)據(jù)庫(kù)緩存的SQL

--適用MSSQL2000、MSSQL2005
use?master
declare?@dbid?int
Select?@dbid?=?dbid?from?sysdatabases?where?name?=?'Test'--修改成數(shù)據(jù)庫(kù)的名稱
select
dbid,UseCounts?,RefCounts,CacheObjtype,ObjType,
DB_Name(dbid)?as?DatabaseName,SQL
from?syscacheobjects
where?dbid=@dbid
order?by?dbid,useCounts?desc,objtype

?

刪除計(jì)劃緩存

--刪除整個(gè)數(shù)據(jù)庫(kù)的計(jì)劃緩存
DBCC?FREEPROCCACHE

--刪除某個(gè)數(shù)據(jù)庫(kù)的計(jì)劃緩存
USE?master
DECLARE?@dbid?INT
SELECT?@dbid=dbid?FROM?sysdatabases?WHERE?NAME?=?'表名'
DBCC?FLUSHPROCINDB?(@dbid)

?

導(dǎo)出時(shí)加入特殊字符

情況一:全部字段都需要加字符,在這里設(shè)置【文本限定符】就可以了。

?

情況二:

--某些特殊的字段需要加單引號(hào)(或者其它符號(hào))?
SELECT
??????
[ID]
??????,
''''+convert(varchar(25),[ts],121)+''''?as?[ts]
??????,
''''+convert(varchar(25),[otherParty],121)+''''?as?[otherParty]
??????,
''''+convert(varchar(25),[StartTime],121)+''''?as?[StartTime]
??????,
[CcCause]
??????,
[RrCause]
??
FROM?[]

效果:74983006,'2010-03-09 23:59:10.000'

?

newid()的妙用

--生成測(cè)試數(shù)據(jù)
SET?ANSI_NULLS?ON
GO
SET?QUOTED_IDENTIFIER?ON
GO
SET?ANSI_PADDING?ON
GO
CREATE?TABLE?[dbo].[test](
????
[name]?[varchar](20)?NULL,
????
[quarter]?[int]?NULL,
????
[profile]?[int]?NULL,
????
[dates]?[smallint]?NULL,
????
[ID]?[int]?IDENTITY(1,1)?NOT?NULL,
?
CONSTRAINT?[PK_test]?PRIMARY?KEY?CLUSTERED?
(
????
[ID]?ASC
)
WITH?(PAD_INDEX??=?OFF,?STATISTICS_NORECOMPUTE??=?OFF,?IGNORE_DUP_KEY?=?OFF,?ALLOW_ROW_LOCKS??=?ON,?ALLOW_PAGE_LOCKS??=?ON)?ON?[PRIMARY]
)?
ON?[PRIMARY]
GO
SET?ANSI_PADDING?OFF
GO
SET?IDENTITY_INSERT?[dbo].[test]?ON
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'a',?1,?1000,?421,?1)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'Aa',?2,?2000,?421,?2)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'AA',?3,?4000,?421,?3)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'a',?4,?5000,?421,?4)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'b',?1,?3000,?421,?5)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'b',?2,?3500,?421,?6)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'b',?3,?4200,?421,?7)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'b',?4,?5500,?421,?8)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'a',?1,?1000,?421,?9)
SET?IDENTITY_INSERT?[dbo].[test]?OFF

?

?--從數(shù)據(jù)庫(kù)中隨機(jī)取出N條記錄的方法:newid()

select?top?5?*?from?test
select?top?5?*?from?test?order?by?newid()

?

(圖:效果圖)?

?

查詢時(shí)區(qū)分大小寫(xiě)

--生成測(cè)試數(shù)據(jù)
SET?ANSI_NULLS?ON
GO
SET?QUOTED_IDENTIFIER?ON
GO
SET?ANSI_PADDING?ON
GO
CREATE?TABLE?[dbo].[test](
????
[name]?[varchar](20)?NULL,
????
[quarter]?[int]?NULL,
????
[profile]?[int]?NULL,
????
[dates]?[smallint]?NULL,
????
[ID]?[int]?IDENTITY(1,1)?NOT?NULL,
?
CONSTRAINT?[PK_test]?PRIMARY?KEY?CLUSTERED?
(
????
[ID]?ASC
)
WITH?(PAD_INDEX??=?OFF,?STATISTICS_NORECOMPUTE??=?OFF,?IGNORE_DUP_KEY?=?OFF,?ALLOW_ROW_LOCKS??=?ON,?ALLOW_PAGE_LOCKS??=?ON)?ON?[PRIMARY]
)?
ON?[PRIMARY]
GO
SET?ANSI_PADDING?OFF
GO
SET?IDENTITY_INSERT?[dbo].[test]?ON
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'a',?1,?1000,?421,?1)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'Aa',?2,?2000,?421,?2)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'AA',?3,?4000,?421,?3)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'A',?4,?5000,?421,?4)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'b',?1,?3000,?421,?5)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'b',?2,?3500,?421,?6)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'b',?3,?4200,?421,?7)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'b',?4,?5500,?421,?8)
INSERT?[dbo].[test]?([name],?[quarter],?[profile],?[dates],?[ID])?VALUES?(N'A',?1,?1000,?421,?9)
SET?IDENTITY_INSERT?[dbo].[test]?OFF

??

--sql?server?查詢區(qū)分大小寫(xiě)?collate?Chinese_PRC_CS_AS_WS
select?*?from?test?where?[name]='A'?collate?Chinese_PRC_CS_AI
select?*?from?test?where?ascii(name)?=?ascii('A')

?

(圖:效果圖)??

?

SQL換行

?

/*
SQL的換行
制表符?CHAR(9)
換行符?CHAR(10)
回車(chē)?CHAR(13)
*/
PRINT?'Test'+CHAR(13)+'Name'
PRINT?'Test'+CHAR(10)+'Age'
PRINT?'Test'+CHAR(9)+'Tel'

--以文本格式顯示結(jié)果
SELECT?'AAA'+?CHAR(10)+'BBB'--AAA??BBB
SELECT?'AAA'+?CHAR(13)+'BBB'--AAA??BBB
SELECT?'AAA'?+?CHAR(10)?+?CHAR(13)?+?'BBB'--AAA??BBB

?

TRUNCATE TABLE [Table Name]

下面是對(duì)Truncate語(yǔ)句在MSSQLServer2000中用法和原理的說(shuō)明:

Truncate是SQL中的一個(gè)刪除數(shù)據(jù)表內(nèi)容的語(yǔ)句,用法是:

Truncate table 表名 速度快,而且效率高,因?yàn)?
TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語(yǔ)句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少。
DELETE 語(yǔ)句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一項(xiàng)。TRUNCATE TABLE 通過(guò)釋放存儲(chǔ)表數(shù)據(jù)所用的數(shù)據(jù)頁(yè)來(lái)刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁(yè)的釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結(jié)構(gòu)及其列、約束、索引等保持不變。新行標(biāo)識(shí)所用的計(jì)數(shù)值重置為該列的種子。如果想保留標(biāo)識(shí)計(jì)數(shù)值,請(qǐng)改用 DELETE。如果要?jiǎng)h除表定義及其數(shù)據(jù),請(qǐng)使用 DROP TABLE 語(yǔ)句。
對(duì)于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應(yīng)使用不帶 WHERE 子句的 DELETE 語(yǔ)句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發(fā)器。
TRUNCATE TABLE 不能用于參與了索引視圖的表。?

?

其它

--查看內(nèi)存狀態(tài)
dbcc?memorystatus

--查看哪個(gè)引起的阻塞,blk?
EXEC?sp_who?active?

--查看鎖住了那個(gè)資源id,objid
EXEC?sp_lock?

--當(dāng)前查詢分析器SPID
--查詢分析器的狀態(tài)欄中可以看到
--比如sa(57),這就表示當(dāng)前查詢分析器SPID為57,這樣在使用profile的時(shí)候就可以指定當(dāng)前窗體進(jìn)行監(jiān)控

?

--獲取腳本的執(zhí)行時(shí)間
declare?@timediff?datetime?
select?@timediff=getdate()?
select?*?from?tablename
print?'1耗時(shí):'+?convert(varchar(10),datediff(ms,@timediff,getdate()))

轉(zhuǎn)載于:https://www.cnblogs.com/wayshan/p/4064584.html

總結(jié)

以上是生活随笔為你收集整理的实用的SQL语句的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。