基本的なSQL文(詳細版)

まず、基本的な

1、説明:データベースを作成します。

DATABASEデータベース名をCREATE

2、説明:データベースを削除

ドロップデータベースデータベース名

3、説明:バックアップのSQL Server

- バックアップデータデバイスを作成します。

USEマスター

EXEC sp_addumpdevice 'ディスク'、 'testBack'、 'C​​:\ mssql7backup \ MyNwind_1.dat'

- スタートバックアップ

BACKUP DATABASEパブTO testBack

4、説明:新しいテーブルを作成します

  create table 表名 (列名 数据类型 primary key(设置主键)

                      列名 数据类型 

                      列名 数据类型 not null(不能设置空值))

既存のテーブルに基づいて新しいテーブルを作成します。

A:(新しいテーブルを作成するために、古いテーブルを使用して)tab_oldのようなテーブルtab_newを作成します

B:tab_old定義のみから選択COL1、COL2 ...として作成テーブルtab_new

5、解説:新しいテーブルを削除します。

ドロップテーブルtabnameの

6.説明:列を追加します。

アルターテーブルtabnameの追加列COLタイプ

注:列は上昇後に削除することはできません。列データ・タイプは変更できないDB2を添加した後、唯一の変更は、VARCHARタイプの長さを増加させることです。

7、説明:主キーを追加:アルターテーブルtabnameの主キー(COL)を追加

説明:アルターテーブルtabnameのドロップ主キー(COL):主キーを削除します

8、説明:作成したインデックス:作成[ユニーク] TABNAMEのインデックスidxname(COL ...)

削除インデックス:ドロップインデックスidxname

注:インデックスが変更されていない、変更するには、再ビルドに削除する必要があります。

9、説明:select文などのビュービュー名を作成します。ビューを作成します。

削除ビュー:ドロップビュービュー名

10、説明:いくつかの簡単な基本的なSQL文

選択:選択* TABLE1範囲から

插入:TABLE1への挿入(FIELD1、FIELD2)値(値1、値2)

削除:TABLE1から削除どこの範囲

アップデート:更新TABLE1セットフィールド1 = VALUE1範囲

検索:「%VALUE1%」のようなフィールド1の様な構文情報を見つけるために、非常に微妙ですTABLE1から*を選択!

排序:フィールド1でTABLE1の順序から*を選択し、フィールド2 [DESC]

总数:TABLE1からのトータルカウントとして選択数

求和:TABLE1からsumvalueとして選択合計(フィールド1)

平均:TABLE1からavgvalue AS SELECT AVG(FIELD1)

最大:TABLE1からMAXVALUEとして選択MAX(フィールド1)

最小:TABLE1からMINVALUE AS SELECT分(FIELD1)

11、説明:いくつかの高レベルの問合せターム動作

A:UNION演算子

UNION演算子は、他の2つのテーブル(例えばTABLE1とTABLE2)の結果を組み合わせることにより、結果表を導出し、任意の重複する行を排除します。ALL UNION(すなわちUNION ALL)と組み合わせて使用​​される場合、重複する行を排除しません。両方の場合において、誘導されたテーブルの各行はTABLE2からTABLE1からのものではありません。

B:演算子EXCEPT

すべての重複行の除去にTABLE2 TABLE1内のすべての行を含めることではなく、オペレータのEXCEPTおよび結果表を導き出します。ALLと併用した場合(ALLを除き)を除く、重複する行を排除しません。

C:INTERSECT演算子

のみTABLE1とTABLE2両方の行を含めて、すべての重複する行を排除することにより、INTERSECT演算子は、結果表を導出します。ALL INTERSECT(INTERSECT ALL)と組み合わせて使用​​される場合、重複する行を排除しません。

注:使用いくつかのクエリ結果のワード線の動作は同じでなければなりません。

12、説明:使用して外部結合

A、左側(外側)に参加:

左外側(左結合)に参加:結果セットは接続テーブルの一致する行が含まれ、すべての行が左接続テーブルを含みます。

SQL:選択AA、AB、AC、BC、BD、LEFT OUTからbfはAA上には、BのJOIN = BC

B:右側(外側)に参加:

右外側(右リンク)参加:結果セットには、相手側コネクタ接続テーブル行の両方を含む、すべての行は右接続テーブルを含みます。

C:フル/クロス(外側)に参加:

完全外部結合:さらに、テーブル内のすべてのレコードを結ぶ2を備え、シンボリックリンクテーブルの行と一致していないだけ。

12、グループ:グループによる:

グループが完了すると、テーブルには、お問い合わせは、グループのみに関連する情報を得ることができます。

グループの統計情報)のカウント、合計、最大、最小、標準規格関連の情報パケット:(平均)

パケットのSQLServerは、時:グループのテキスト、ntext型、イメージタイプのフィールドにすることはできません

selecte統計フィールドの関数はなく、通常のフィールドで一緒。

13、データベース操作:

データベースをデタッチ:sp_detach_db;追加のデータベース:ショーの後、その後sp_attach_db、完全に必要な追加のパス名

14.どのようにデータベースの名前を変更します:

sp_renamedb 'OLD_NAME'、 'NEW_NAME'

第二に、強化します

1、説明:テーブルのコピー(複製されただけの構造、ソーステーブル名:新しいテーブル名:b)は(アクセス可能)

方法:1 <> 1(唯一のSQLServerのための)からBへの選択*

法二:AからBへの選択トップ0 *

2、説明:コピーテーブル(データソーステーブル名コピー:対象テーブル名:B)を(アクセス入手可能)

B(A、B、C)を選択し、D、E、BからFに挿入します。

3、説明:(絶対パスを使用して、特定のデータ)は、クロスデータベーステーブル間のコピー(アクセス入手可能)

B(A、B、C)を選択し、D、E、 '特定のデータベース' 中のBからFの条件に挿入

例子:...でB ' "Server.MapPathの&("。 ")&" \ data.mdb "&"' どこから...

4、説明:サブクエリ(表1:表名2:B)

IN(Bから選択D)は或者ここから、B、Cを選択しますから、B、Cを選択する場合IN(1,2,3)

5、解説:記事、著者、最終的な応答時間を表示します

表Aからa.title、a.username、b.adddateを選択し、B(table.title = a.titleテーブルからMAX(adddate)adddateを選択)

6、説明:外部結合照会(表1:表名2:B)

選択AA、AB、AC、BC、BD、LEFT OUTからbfはAA上には、BのJOIN = BC

7、概要:オンラインビューのクエリ(テーブル名1:A)

*選択してから1> TA T(FROM A、B、Cを選択します)。

8、説明:限界との間の境界値クエリデータの範囲を含む、使用の間に、間に含まれていません

時刻1とTIME2間TABLE1の時間から選択*

ない間数值1及び数值2 TABLE1から、A、B、Cを選択します

9、説明:使用中

TABLE1 SELECT * FROMここで、[しない]( '値1'、 '値2'、4 '値'、 '値6')で

図10は、説明:2つの関連テーブルが、メインテーブルを削除するには、サイドテーブルの情報を有していません

存在していないTABLE1から削除(table2のtable1.field1 = table2.field1から選択*)

11、説明:四つのテーブル合同調査の質問:

AA上のCへの参加左内側はAA = BBにBを参加から右内側選択* = ccの内部がAAにDに参加=ここで、ddは...

12、説明:5分前倒しリマインダの

SQL:スケジュールからDATEDIFF( '分'、F開始時刻、GETDATE())> *を選択5

13、説明:データベースのSQL文ケリページ

トップ10 Bを選択します。*(ソートフィールドDESCによってテーブルの順序から選択トップ20の主キーフィールド、ソートフィールド)、テーブルBからB。主キーフィールド=。ソートフィールドによりプライマリキーフィールド順序

特定の実装:

データベースページについて:

エンドINT @、@start int型を宣言

@sql NVARCHAR(600)

セット@ SQL = '選択トップ' + + STR(@ STR-1)+なくすTから「取り除く '(選択上部にない取り除くTから+' STR(@エンド@ 1 +スタート)+> -1 「)

幹部sp_executesqlを@sql

注:あなたは変数にすることはできませんので、直接トップ後の実用的なアプリケーションでは、特別な治療の唯一の方法。ridは、特定のトップ・フィールドがある場合、これは非常に良いですが、ID列です。矛盾を避けるためにトップフィールドの論理インデックスであれば、実際のテーブルでクエリ結果(データ・テーブル内の論理インデックスと矛盾可能でデータ、一方、最初のクエリのインデックス、クエリインデックス場合)

14、説明:最初の10行

トップ10 *フォームtable1を選択する場所の範囲

15、説明:月額使用缶リストについては、このフォーラムのように(各群において同一b値のデータに対応する全ての情報を記録最大を選択し、毎月の販売製品の分析、性能が被験者によってランキング、以下のように。)

(tb.b = ta.bテーブル名のTBから選択MAX())ここで、TA =テーブル名から、B、Cを選択します

16、説明:TableAのTableBの表Cの列に含めたすべてではないとは、すべての重複行を削除し、結果表を導き出します

(TABLEBから選択)(表Cから選択)を除く以外は(にtableAから選択)

17、説明:10件のランダムなデータを削除します

NEWID(でテーブル名順から上位10 *を選択)

18、説明:ランダムに選択されたレコード

変更を選択します()

19、説明:削除重複レコード

1)、COL1でテーブル名のグループからどこIDません(MAX(IDを選択)でテーブル名から削除し、COL2、...)

2)、テーブル名から一時に異なる*を選択

テーブル名から削除

一時SELECT * FROMテーブル名に挿入

評価:関与大量のデータを移動するこの操作は、このアプローチは、大容量のデータ操作には適していませんが、

3)、例えば:外部表のインポートデータ、何らかの理由で、最初の導入部分は、どのように除去するので、それは繰り返しフィールドの多くを生成すること、のみ次一度にすべてを導入するように、特定の位置を決定することは困難です繰り返しフィールド

ALTER TABLEのテーブル名

- 自動インクリメントを追加します。

COLUMN_B int型のアイデンティティを追加します(1,1)

(ではないCOLUMN_Bどこテーブル名から削除

COLUMN1でテーブル名のグループから最大(COLUMN_B)を選択し、COLUMN2、...)

ALTER TABLEのテーブル名ドロップ列のCOLUMN_B

20、説明:リストデータベース内のすべてのテーブル名

ここで、タイプ=「U」ユーザのsysobjectsから選択名の// Uの代表

21、説明:リストのすべてのテーブルのカラム名

ID = OBJECT_ID( 'TableNameが')SYSCOLUMNSから名前を選択

22、説明:リストされたタイプ、ベンダ、PCSフィールドフィールド型配列に、ケースは容易に同様のケースを選択し、複数の選択肢を達成することができます。

タイプ、和SUM(場合「C」ベンダー場合、次に他個0端)、和(ケースベンダ「B」を他個0端)テーブル名のグループから(他の場合に「A」をPCS 0端ベンダーの場合)を選択します種類別

結果を表示します:

ベンダー個を入力

1台のコンピュータ

1台のコンピュータ

ディスクB 2

A 2 CD

B 3本の携帯電話

C 3の携帯電話

23、説明:テーブルtable1を初期化

TRUNCATE TABLE TABLE1

24、説明:10から15までを選択したレコード

識別DESCによって(選択トップ15のID ASCによってテーブルの順序から*)table_别名順から上位5 *を選択

第三に、スキル

複数のSQL文で使用する場合1,1 = 1,1 = 2は、使用され

「1 = 1はどこ」「1 = 2」は、すべて選択されていないすべて選択され、

以下のような:

@strWhereもし!= ''

ベギン

セット@strSQL = '選択数(*)からの合計として[' + @tblName + ']ここで、' + @strWhere

終わり

そうしないと

ベギン

セット@strSQL = 'SELECT COUNT(*)からの合計として[' + @tblName + ']'

終わり

私たちは、直接書き込むことができます

エラー!目次項目が見つかりました。

セット@strSQL = '選択数(*)からの合計として[' + @tblName + '1 = 1安定' + @strWhere 2、データベースを縮小

- インデックスを再構築

DBCC REINDEX

DBCC INDEXDEFRAG

- データとログを縮小

DBCC SHRINKDB

DBCC SHRINKFILE

図3に示すように、圧縮されたデータベース

DBCC SHRINKDATABASE(DBNAME)

4、既存のユーザー権限に新しいユーザーにデータベースを転送します

幹部sp_change_users_loginを 'update_one'、 'NEWNAME'、 'OLDNAME'

行きます

5、バックアップのチェックセット

ディスク=からVERIFYONLY RESTORE 'E:\ dvbbs.bak'

6、修理データベース

ALTER DATABASE [ドッブス] SET SINGLE_USER

GO

DBCC CHECKDB( 'ドッブス'、REPAIR_ALLOW_DATA_LOSS)WITH TABLOCK

GO

ALTER DATABASE [ドッブス] SET MULTI_USER

GO

7、クリア済みのログ

SET NOCOUNT ON

DECLAREの@LogicalFileNameのシステム名、

@MaxMinutes INT、

@NewSize INT

操作対象のデータベース名 - のUSEテーブル名

SELECT @LogicalFileName = 'tablename_log'、 - ログファイル名

@MaxMinutes = 10、 - リミット時間にログをラップすることができました。

@NewSize = 1 - ログファイルを設定したいサイズ(M)

セットアップ/初期化

DECLARE @OriginalSize int型

SELECT @OriginalSize =サイズ

SYSFILES FROM

WHERE名= @LogicalFileName

(+ DB_NAME 'は元のサイズ')+ SELECT + 'LOGは'

CONVERT(VARCHAR(30)、@ OriginalSize)+ '8Kページや' +

CONVERT(VARCHAR(30)、(@ OriginalSize * / 1024 8))+ 'MB'

SYSFILES FROM

WHERE名= @LogicalFileName

TABLE DummyTransのCREATE

(DummyColumnはchar(8000)NOT NULL)

DECLARE @Counter INT、

@StartTime DATETIME、

@TruncLog VARCHAR(255)

SELECT @StartTime = GETDATE()、

@TruncLog = 'BACKUP LOG' + DB_NAME()+ 'WITH TRUNCATE_ONLY'

DBCC SHRINKFILE(@LogicalFileName、@NewSize)

EXEC(@TruncLog)

- ラップログ必要に応じて。

WHILE @MaxMinutes> DATEDIFF(MI、@StartTime、GETDATE()) - 時間が満了していません

AND @OriginalSize =(名= @LogicalFileName SYSFILESからサイズを選択)

AND(@OriginalSize * / 1024 8)> @NewSize

BEGIN - 外部ループを。

SELECT @Counter = 0

WHILE((@Counter <@OriginalSize / 16)AND(@Counter <50000))

BEGIN - 更新

INSERT DummyTransのVALUES( 'フィルログ')DELETE DummyTrans

@Counter = @Counter + 1を選択

終わり

EXEC(@TruncLog)

終わり

+ DB_NAME SELECT 'の最終的なサイズは、'()+ + 'LOGです'

CONVERT(VARCHAR(30)、サイズ)+ '8Kページや' +

CONVERT(VARCHAR(30)、(サイズ* / 1024 8))+ 'MB'

SYSFILES FROM

WHERE名= @LogicalFileName

DROP TABLE DummyTrans

SET NOCOUNT OFF

8、説明:テーブルを変更します

幹部sp_changeobjectownerを 'テーブル名'、 'DBO'

図9に示すように、全てのテーブル格納変更

PROCEDURE dbo.User_ChangeObjectOwnerBatchのCREATE

NVARCHARとして@OldOwner(128)、

NVARCHARとして@NewOwner(128)

なので

NVARCHARとしてDECLARE @Name(128)

NVARCHARとしてDECLARE @Owner(128)

NVARCHARとしてDECLARE @OwnerName(128)

DECLARE CURSOR FOR curObject

「名前」=名前を選択

'所有者' = USER_NAME(UID)

sysobjectsにから

どこUSER_NAME(UID)= @ OldOwner

名前の順序

OPEN curObject

curObject INTO @Name、@Ownerから次のFETCH

WHILE(@@ FETCH_STATUS = 0)

ベギン

所有者= @ OldOwner @場合

ベギン

セット@OwnerName = @OldOwner + '' + RTRIM(@Name)

EXEC sp_changeobjectownerを@OwnerName、@NewOwner

終わり

- 名@を選択し、@ newownerに、@ OldOwner

curObject INTO @Name、@Ownerから次のFETCH

終わり

近くcurObject

DEALLOCATE curObject

GO

10、SQL Serverのサイクルの書き込みデータを直接

@i int型を宣言

私は= @セット1

30 @i <しばらく

ベギン

テスト(ユーザーID)の値(@i)に挿入

セット@私は= I + 1 @

終わり

公開された56元の記事 ウォンの賞賛561 ・は 20000 +を見て

おすすめ

転載: blog.csdn.net/CZXY18ji/article/details/103176522