いくつかの一般的なSQL文

1、表作成
2、追加のフィールド- [削除]欄
3、乱数
文字列に4、時間を
5、クエリの年、月、日の
場合は、その後6、ケース、
7、新しいSQL Idの取得
8、数増加
、9トライキャッチ
10、時間関連のSQLクエリ
11、クエリSQL実行時間とCPU使用時間およびI / O操作ケース
12、あるいは
図13に示すように、テーブル空のテーブルをドロップ、コピーシート
ログクリーンアップ14、
15、ロック・テーブルクエリ、ロック解除
16は、SQL文のパフォーマンスのTop10 
17は、情報のルックアップテーブル
18は、ルックアップテーブル命令
19と、ルックアップテーブルのフィールドは、詳細
OK!
図1に示すように、テーブル作成
-ドロップテーブル
--DROP表[DBO] [テーブル名]。

-创建表
。CREATE TABLE [DBO] [System_Code_InstallationPeriod](
[ID] INT NOT NULL IDENTITY(1,1)PRIMARY KEY、
[名前]のnvarchar(50)NULLデフォルト'默认值'、
[型ID] INT NULL、
[金]マネーNULL、
[CreatePeople] NVARCHAR(50)NULL、
[CREATETIME]日時NULL、
[ModifyPeople] NVARCHAR(50)NULL、
[ModifyTime]日時NULL

-テーブルのショーを追加
sp_addextendedproperty N'MS_Description 'N'インストール時間テーブル'N'user'、N'dbo 'EXECUTE N'table'、N '[ テーブル名]'、NULL、NULL
削除テーブルショーを-
--exec sp_dropextendedpropertyのN'MS_Description ''ユーザ'' DBO ''テーブル'' [ テーブル名]」、NULL、NULL

-フィールド説明を追加
sp_addextendedproperty N'MS_DescriptionをEXECUTE 'N' [人]を作成'N'user'、N'dbo ' N'table'、N '[ テーブル名]'、N'column 'N' [フィールド名] '
sp_addextendedproperty N'MS_Descriptionを実行する'、N '] [作成時間'、N'user 'N'dbo'、 N'table 'N' [ テーブル名] 'N'column'、N ' [フィールド名] '
sp_addextendedproperty N'MS_Descriptionを実行する'、N '[修飾]'、N'user 'N'dbo'、 N'table 'N' [ テーブル名] 'N'column'、N ' [フィールド名] '
EXECUTE sp_addextendedproperty N'MS_Description'、N '] [変性'、N'user 'N'dbo'、 N'table 'N' [ テーブル名] 'N'column'、N ' [フィールド名] '

-削除フィールド説明
--exec sp_dropextendedpropertyのN'MS_Description ''ユーザ'' DBO ''テーブル'' テーブル''列''フィールド名'

図2に示すように、追加のフィールド-削除フィールド
-フィールド追加
ALTER TABLE [表] ADD [フィールド名] INT NULL;
ALTER TABLE [表] ADD [フィールド名] NVARCHAR(50)NULL;

-フィールド説明を追加
sp_addextendedproperty N'MS_DescriptionをEXECUTE 'N' [名] 'N'user'、N'dbo ' N'table'、[ テーブル名] 'N'column'、[フィールド名] ';
EXECUTE sp_addextendedpropertyのN'MS_Description'、N '[名]'、N'user 'N'dbo'、 N'table '[ テーブル名]'、N'column '[フィールド名]'。

-削除フィールド
ALTER TABLE [表]ドロップ列[フィールド名]
3、乱数
SELECT LTRIM(床(RAND()* 10000))
4、タイムスイッチストリング。
--2018-11-13
SELECT CONVERT(VARCHAR( 50)、GETDATE()、23 )AS 'TIME'

--2018-11-13午後6時46分14秒
SELECT CONVERT(VARCHAR(50)、GETDATE()、20)AS 'TIME'

17 --2019-01-14:15:59.920
(VARCHAR(50)、GETDATE()、121)の場合、SELECT変換
5、クエリ年、月、日
SELECT
CONVERT(VARCHAR(4)、YEAR(GETDATE()))AS '内の'、
CONVERT(VARCHAR(4)、MONTH(GETDATE()))AS '月'、
CONVERT(VARCHAR(4)、DAY(GETDATE()))AS '日'
6、ケース、ときに、そして、
SELECT
CASEをセックス
0 THEN 'F'
THEN。1 'M'
ELSE ''
END AS 'セックス'
FROM
[テーブル]

SELECT
CASEを
WHEN w_grade> = 90 THEN'A '
w_grade> AND w_grade = 80 <THEN = 89' B '
w_grade> AND w_grade = 70 <= 79 THEN' C '
w_grade> AND w_grade = 60 <= 69 THEN 'D'
ELSE 'E'
www.gendan5.com/topic/businessnews.html金融知識
END AS '等級'
FROM
[テーブル名]
新しいSQL Idを取得するために7、
SELECT @@ IDENTITY - getがクロスドメインであります最新のid

SELECT IDENT_CURRENT( '[テーブル名]') - 電流Id指定したテーブルを有しています

SELECT SCOPE_IDENTITYは、() -最後に挿入されたテーブルの現在のデータベースIDで得られる
増加し、8数
ROW_NUMBER()OVER(ORDER BY SELECT Id)のAS ' 番号'、*を[DBO] [表] FROM。
9、試してみてください。 -catch
TRY BEGIN
SELECTを。5/0
ENDのTRY
CATCH BEGIN
、SELECT ERROR_MESSAGE()AS "エラーの説明を"
ERROR_NUMBER()AS "エラー番号"
、ERROR_SEVERITY()AS '重症度'
AS 'エラー状態番号')ERROR_STATE(
ERROR_LINE()AS 'エラー行番号'、
ERROR_PROCEDURE()AS 'エラーは、ストアドプロシージャまたはトリガの名前を発生し'
END CATCH
10、時間関連のクエリSQLの
--20,190,306,094,000
SELECT変換(VARCHAR(8)、GETDATE( )、112)+置き換える(変換 (VARCHAR(8)、GETDATE()、114)、 ''、 '')

--20190306094332437
セレクト変換(VARCHAR(8)、GETDATE()、112)+置き換える(変換(VARCHAR(12)、GETDATE()、14)、 ''、 '')

-当月天数
セレクト日(DATEADD(MS、-3、DATEADD(M、DATEDIFF(M、0、GETDATE())+ 1,0)))

---最初の月の
DATEADD選択(D、-day(GETDATE ())+ 1、GETDATE())

---月の最後の日は
(D、-day(GETDATE DATEADD選択 ())、DATEADD(M、1、GETDATEを()))

-この時点で来年月の最後の日は
(D、-day(GETDATE DATEADD選択 ())、DATEADD(メートル、12、GETDATEを()))

-月の最初の月曜日
SELECT DATEADD(週、DATEDIFF(週 、 ''、DATEADD(DD、6 - DAY(GETDATE())、GETDATE()))、 '')

-今日では、すべてのデータは
[表] SELECT * FROMここDateDiff関数(DD、CREATETIME、 GETDATE())= 0

-昨日のすべてのデータは
[表] SELECT * FROMここDateDiff関数(DD、CREATETIME、 GETDATE())= 1

すべてのデータ--7日
ここDateDiff関数(DD、CREATETIME、[表] SELECT * FROM GETDATE())<= 7

すべてのデータ--30日は
[表] DateDiff関数(DD、CREATETIME、SELECT * FROM GETDATE())<= 30

-すべての月のデータ:
[表]からSELECT *ここDateDiff関数(MM、CREATETIME、 GETDATE())= 0

-データがすべての年
[テーブル]から選択*どこDateDiff関数(YY、CREATETIME、 GETDATE())= 0

-クエリ今日は今年の日です
選択日付要素(DAYOFYEAR、のgetDate() )

-クエリ今日は月の日です
(DD、のgetDate())の日付要素SELECT
SELECT日(のgetDate())を

-クエリの日付が今週月曜日で、どのくらい(注:あなたが一日カットしたい場合は日曜日はとても日曜日月曜日までに計算される場合はありません指定された日付が、日曜日である。)
SELECT DATEADD(週、DATEDIFF(週、 0、GETDATE())、0 )

-クエリ昨日の日付
を選択し変換(CHAR、DATEADD(DD 、-1、GETDATE())、121)

-クエリ月の日付の最初の日
を選択DATEADD(ミリメートル、DATEDIFF(ミリメートル firstdayとして、0、GETDATE())、0)

-クエリ月の日付の最終日は、
(MS、-3、DATEADD DATEADD選択 LASTDAYとして(MM、DATEDIFF(M、0、GETDATE())+ 1、0))

-本月有多少天
' - ' + CAST(月(GETDATE((ミリメートル、1、キャスト((キャスト(年(varchar型としてGETDATE()))+ DATEADD日付要素(DD、DATEADD(DDを、-1、選択))、VARCHARなど)+ ' - 01')日時など))))

- 2つの期間の合計が数日が異なる
(「/ 2016、日DateDiff関数を選択し daysumとして、「2016年8月20日」5/17」)

-日±Nで指定された日付に
変換(CHAR、DATEADD(DD選択 riqiとして、1、GETDATE())、111)

-指定した日に±Nの分://日付の前に15分の現在の時刻を確認
SELECT DATEADD(miザ、-15、GETDATE())
。11、SQLクエリの実行時間やCPU利用時間とI / Oの動作条件
- -実行時間やCPU使用時間を表示します

上のセット統計時間
[表名]から[*
セットの統計時間のオフ

- I / 0のビューのクエリの場合

SET統計IO ON
SELECT [表]から
SET統計IO OFF
12は、交換
UPDATE [表] SET [フィールド] =([フィールド]、 '内容を置き換える'、 '最初のコンテンツを置き換える')置き換える;
13、テーブルを削除、空のテーブルは、テーブルのコピー
DROP TABLEテーブル名を-削除テーブルの
TRUNCATE TABLEテーブル名-空のデータテーブル
SELECT
ソース表からINTOのターゲット表名
14、クリーンアップのログを
使用し、[マスター]
GO
のALTER DATABASEデータベース名をクリーンアップしますRECOVERY単純WITH NO_WAITセット
GO
セットリカバリを簡単に清掃するALTERデータベースデータベース名-シンプルモード
GO
洗浄するために使用するデータベース名
GO
圧縮永久歪み- DBCC SHRINKFILE(N、2、TRUNCATEONLY「データベース名が洗浄_logすべき」)ログサイズ2Mた後、あなたは自己指定することができ
GO
使用を[マスター]
GOの
データベース名ALTERデータベースはRECOVERY SET WITH FULL NO_WAITをクリーンアップする
GO
データベース名SET RECOVERY FULLをクリーンアップするためにALTER DATABASE -フルモードに戻る
GO
15、ロック・テーブルクエリ、ロック解除
-テーブルを参照してくださいがロックされました:
SELECTは、
SPID、request_session_id
OBJECT_NAME(resource_associated_entity_id)tableNameの
FROM
sys.dm_tran_locks RESOURCE_TYPE = 'OBJECT' request_session_id ASC BY ORDER


-ロック解除:
INTは@spid DECLARE
-プロセステーブルロックSET 52は@spid =である
DECLARE @SQL VARCHAR(1000)
SET @SQL = 'キル' CAST +(AS VARCHAR @spid)
EXEC(@SQL)
16を、SQL文のパフォーマンスTOPlO 
TOP 10 SELECT
st.text AS [親完全なステートメント]、
SUBSTRING(st.text、(qs.statement_start_offset / 2)+。1、((CASE WHENは-1 THEN DATALENGTH(st.text)ELSE qs.statement_end_offset ENDをstatement_end_offset - qs.statement_start_offset)/ 2)+ 1 [など) 統計的ステートメント対応する部分]、
CAST(((qs.total_elapsed_time / 1000000.0)/qs.execution_count)AS DECIMAL(28,2))AS [平均消費秒] 、
CAST(qs.last_elapsed_time / 1000000.0 AS DECIMAL(28、2))AS [ファイナライズ消費秒]、
qs.last_execution_time AS [最後の実行時間]、
CAST(/ 1000000.0 AS DECIMAL(28、2)qs.min_elapsed_time) AS [最小消費秒]、
CAST(qs.max_elapsed_time / 1000000.0 AS DECIMAL( 28、2))AS [ 最大消費秒]、
CAST(qs.total_elapsed_time / 1,000,000.0 AS DECIMAL(28、2))AS [合計秒を消費]、
(qs.execution_count )AS [実行の総数]、
[コンパイル時のプログラム] CREATION_TIME AS、
CAST(qs.last_worker_time / 1000000.0 AS DECIMAL(28、2))AS [CPUの秒数を確定する]
sys.dm_exec_query_statsからがqs
クロスSYSを適用します。 dm_exec_sql_text(qs.sql_handle)AS ST
CROSSはsys.dm_exec_query_plan(qs.plan_handle)を適用QP
qs.last_execution_timeは> DATEADD(N、-30は、GETDATE())WHERE
ORDER BY DESCのqs.last_worker_time
17は、テーブル情報は、クエリ
SELECT
テーブル名=ケース場合a.colorder = 1次にd.name他 '末端は、
テーブルが示す場合=ときa.colorder = 1次に、ISNULL (f.value、 '')他'末端、
フィールド番号= a.colorder、
フィールド名= a.name、
COLUMNPROPERTY(a.id、a.name、 'IsIdentity')= 1、次いで'√'else'末端、标识=ケース
主键=ケースが存在する((IN XTYPE =' PK」と名前がsysobjectsから1を選択
SELECT中(indidがsysindexesにFROM名
SELECTにid = a.id ANDたcolid = a.colid sysindexkeys FROM INDID
''))その後、 '√'他に終わり、)
类型= b.name、
占用字节数= a.length、
长度= COLUMNPROPERTY(a.id、a.name、 'PRECISION')、
小数位数= ISNULL(COLUMNPROPERTY(a.id、a.name、 'スケール')、0)、
允许空=ケースa.isnullable =図1は、次いで、 '√'else'末端、
默认值= ISNULL(e.text、' ')、
字段说明= ISNULL(G。[値]、'')
SYSCOLUMNS FROM
左B = a.xusertypeにsystypesにbを参加します.xusertype
インナーsysobjectsにはa.id = Dの研究開発に参加。idとd.xtype = 'U' とd.name <> 'dtproperties'
E ONはsyscommentsのがe.id =を左参加a.cdefault
参加sys.extended_properties G = ON a.id g.major_idとa.colid = g.minor_id左
ON参加sys.extended_properties F及びF = f.major_idをd.id左= 0 .minor_id
--where d.name =「[テーブル名]「 -条件と相まってのみ指定したテーブル、クエリ、場合
a.colorder、a.id順
18は、記述されているルックアップテーブル

SELECT
テーブル名= d.nameは、
テーブルは= ISNULL(F値'示す 「)、
TOP 10 SELECTテーブルクエリを= ' ';' + + d.name' FROM
'+ CONVERT(VARCHAR -テーブルショー=' ( 100)、VALUEのISNULL(F.、 ''))
FROM
sysobjectsには、D
f.major_id = ONがFをd.id sys.extended_propertiesをJOIN LEFT
AND f.minor_id = 0
WHERE
U-を'd.xtype ='
AND d.name <> 「dtproperties」
「%[テーブル名]%」のような-そしてd.nameは-のみ指定したテーブルのクエリは、この条件を追加する場合
d.name、ORDER BYを
19と、ルックアップテーブルのフィールドの詳細は、
SELECT
ときa.colorderテーブル名=ケースを= 1、次いでd.name他'末端は 、
テーブルが示す場合=ときISNULL次いでa.colorder = 1 (f.value、 '')他'末端、
フィールド名1 = a.name、
インナーとしてSYSCOLUMNS FROM字段名5 =(SELECT STUFF((SELECT '' + a.NameはsysobjectsにD上のa.id = d.id AND d.xtype = 'U' AND d.name <> 'dtproperties' JOIN XMLパスのd.name = '[表名]'( ''))、1,1、 ''))、
字段名6 =(SELECT STUFF((AS SYSCOLUMNS FROM + a.Name '@' SELECT INNERはsysobjectsにD上のa.id = d.idに参加しd.xtype = 'U' AND XMLパスのd.name <> 'dtproperties' d.name = '[表名]'( ''))、 1,1、 ''))、
字段名7 =(SELECT STUFF((SELECT '' + CASE
b.name = 'はnvarchar' THEN 'string'は
b.name = 'INT' THEN 'INT'
WHEN B .nameの= '日時' THEN '日時'
ELSE '進?'
END + 'SYSCOLUMNS FROM + a.Name左a.xusertype = b.xusertype内にbがsystypesには結合としてsysobjectsにはa.id = d.idにDおよびd.xtype =参加' U'とd.name <> 'dtproperties'どこd.name = '[表名]'のXML PATH( ''))、1,1、 ''))、FOR
字段名8 = '新しいSqlParameter( "@ '+ a.name +'"、 '+ a.name +')、 '、
字段名9 =場合
b.name = 'はnvarchar'を'/// <要約>
///' + ISNULL(CONVERT(VARCHAR(100)、G。[値] )、 '')+」
/// </要約>
公共の文字列'+ a.name +' {取得します。セットする; } '
ときb.name = 'INT'を'/// <要約>
/// '+ ISNULL(CONVERT(VARCHAR(100)、G。[値])、'')+'
/// </要約>
公共のint '+ a.name +' { 取得する; セットする;
} ' ときb.name = '日時'を'/// <要約>
/// '+ ISNULL(CONVERT(VARCHAR(100)、G。[値])、'')+'
/// </要約>
公共のDateTime '+ a.name +' {取得します。セットする; } '
そう'/// <要約>
/// '+ ISNULL(CONVERT(VARCHAR(100)、G。[値])、'')+'
/// </要約>
公共小数?'+ a.name +' {取得します。セットする; } '末端、
类型=ケースb.name = 'はnvarchar'次いでb.name + '(' + CONVERT(VARCHAR(50)、COLUMNPROPERTY(a.id、a.name、 'PRECISION'))+')、 '他b.name +'、」端、
字段说明1 =場合(ISNULL(CONVERT(VARCHAR(100)、G [値])。 ''))= ''を''他( ' - ' + ISNULL(CONVERT(VARCHAR(100)、G。[値])、 ''))末端、
字段说明2 =ケース(ISNULL(CONVERT(VARCHAR(100)、G。[値])、 ''))= ''を''他( '/
' + ISNULL(CONVERT(VARCHAR(100)、G。[値])、 '')+ '* /'

SYSCOLUMNS FROM
左a.xusertypeにbがsystypesにに参加= b.xusertype
内側がsysobjectsにはa.id = d.idとd.xtype = 'U'とd.name <> 'dtproperties'の研究開発に参加
Aの左ジョインのsyscomments電子e.id = .cdefault
左a.id = g.major_idとa.colid = g.minor_idにsys.extended_properties G参加
左d.id = f.major_id F上sys.extended_propertiesに参加しf.minor_id = 0
ここで、d .nameの= '[表名]'
a.id、a.colorder順

おすすめ

転載: blog.51cto.com/14513127/2478096