毎日膨大な量のデータが生成される今日の市場では、データの処理方法を理解することが非常に重要です。 SQL Serverは、データを処理するためにMicrosoftによって開発された統合環境です。SQL Serverチュートリアルのこの記事では、データベースを探索するために必要なすべての操作とコマンドについて学習します。
理解を深めるために、ブログを次のカテゴリに分類しました。
コマンド | 説明 |
この一連のコマンドは、データベースを定義するために使用されます。 | |
| 操作コマンドは、データベースに存在するデータを操作するために使用されます。 |
この一連のコマンドは、データベースシステムのアクセス許可、権限、およびその他の制御を処理します。 | |
これらのコマンドは、 データベースのトランザクションを処理します。 |
この記事では、コマンドとは別に、次のトピックについて説明します。
- SQL Serverとは何ですか?
- SQLServerをインストールします
- SSMSを使用してSQLServerに接続する
- データベースエンジンにアクセスする
- SQLServerアーキテクチャ
- SQLのコメント
- SQLServerのデータ型
- データベースのキー
- データベースの制約
- 演算子
- 集計関数
- ユーザー定義関数
- ネストされたクエリ
- 参加する
- ループ
- ストアドプロシージャ
- 例外処理
***注意*** このSQLServerチュートリアルでは、以下のデータベースを次のように検討します。例、学習と書き方を紹介するコマンド。
学生証 | 学生の名前 | 親の名前 | 電話番号 | 住所 | 市 | 国 |
1 | 嫌い | Akriti mehra | 9955339966 | ブリゲードロードブロック9 | ハイデラバード | インド |
2 | マナサー | Shourya Sharma | 9234568762 | メイヨーロード15 | コルカタ | インド |
3 | アナイ | ソウミャミシュラ | 9876914261 | マラサハリハウスNo101 | バンガロール | インド |
4 | Preeti | ローハン・シンハ | 9765432234 | クイーンズロード40 | デリー | インド |
5 | シャナヤ | Abhinay agarwal | 9878969068 | オベロイストリート21 | ムンバイ | インド |
SQL Serverで使用されるさまざまなコマンドを理解する前に、SQL Serverとは何か、そのアーキテクチャ、およびそのインストール方法を理解しましょう。
SQL Serverとは何ですか?
Microsoft SQLServerはリレーショナルです データベース管理システム 。それはサポートします 構造化照会言語 そして、SQL言語の独自の実装が付属しています。 Transact-SQL(T-SQL) 。 SQLデータベースを処理するための統合環境があります。 。
SQLServerの主要なコンポーネントは次のとおりです。
- データベースエンジン: このコンポーネントは、ストレージ、迅速なトランザクション処理、およびデータの保護を処理します。
- SQLサーバー - このサービスは、MS SQL Serverのインスタンスを開始、停止、一時停止、および続行するために使用されます。
- SQL Serverエージェント– サーバーエージェントサービスはタスクスケジューラの役割を果たし、任意のイベントによって、または要件に従ってトリガーされます。
- SQLServerブラウザ –このサービスは、着信要求を目的のSQLServerインスタンスに接続するために使用されます。
- SQL Serverフルテキスト検索– ユーザーがSQLテーブルの文字データに対してフルテキストクエリを実行できるようにするために使用されます。
- SQL ServerVSSライター - SQL Serverが実行されていないときに、データファイルのバックアップと復元を許可します。
- SQL Server Analysis Services(SSAS)– このサービスは、データ分析、データマイニング、および 機能。 SQLServerは そして R 高度なデータ分析用。
- SQL Server Reporting Services(SSRS)– 名前が示すように、このサービスは、との統合を含む機能と意思決定機能を提供するために使用されます 。
- SQL Server Integration Services(SSIS) - このサービスは、複数のデータソースからのさまざまなタイプのデータに対してETL操作を実行するために使用されます。
これで、MS SQL Serverとは何かがわかったので、SQL Serverチュートリアルのこの記事に進み、SQLServerのインストールとセットアップの方法を理解しましょう。
SQLServerをインストールします
SQL Serverをインストールするには、次の手順に従います。
ステップ1: の公式ページに移動します Microsoft SQLServerのダウンロード 、オンプレミスまたはクラウドのいずれかにSQLServerをインストールするオプションがあります。
ステップ2: 次に、下にスクロールすると、2つのオプションが表示されます。 Developer&Enterpriseエディション 。ここでは、ダウンロードします 開発者版 。ダウンロードするには、をクリックするだけです。 ダウンロード中 オプション。以下を参照してください。
ステップ3: アプリケーションがダウンロードされたら、ファイルをダブルクリックすると、次のウィンドウが表示されます。
ステップ4: これで、3つのオプションのいずれかを選択してSQLServerをセットアップできます。ここでは、 基本オプション 。インストールタイプオプションを選択すると、次の画面は使用許諾契約に同意することです。これを行うには、をクリックします 受け入れる 次のウィンドウで。
ステップ5: 次に、SQLServerのインストール場所を指定する必要があります。次に、[インストール]をクリックする必要があります。
クリックしたら インストール 、必要なパッケージがダウンロードされていることがわかります。これで、インストールが完了すると、次の画面が表示されます。
ここで、先に進んで[今すぐ接続]をクリックするか、インストールをカスタマイズすることができます。あなたのより良い理解のために、私は前進して選択します カスタマイズ。
ステップ6: クリックしたら カスタマイズ 上記のウィンドウで、次のウィザードが開きます。次のウィンドウで、をクリックします 次。
ステップ7: ルールが自動的にインストールされたら、をクリックします 次 。以下を参照してください。
ステップ8: 次に、インストールの種類を選択する必要があります。だから、 を実行します SQL Server2017の新規インストール オプションをクリックしてから 次。
ステップ9: 開いたウィザードで、エディションを選択します。 開発者。 次に、をクリックします 次 。以下を参照してください。
ステップ10: 次に、ラジオボタンをチェックインして使用許諾契約書を読み、同意してから、をクリックします。 次 。以下を参照してください。
ステップ11: 以下のウィザードで、インストールする機能を選択できます。また、インスタンスのルートディレクトリを選択して、をクリックすることもできます 次 。ここでは、 データベースエンジンサービス 。
ステップ12: 次に、インスタンスに名前を付ける必要があります。そうすると、インスタンスIDが自動的に作成されます。ここでは、インスタンスに「edureka」という名前を付けます。次に、をクリックします 次。
ステップ13: サーバー構成ウィザードで、をクリックします 次 。
ステップ14: 次に、認証モードを有効にする必要があります。ここでは、 Windows認証モード そして ミックスモード 。混合モードを選択します。次に、パスワードを入力してから、現在のユーザーを次のように追加します 管理者 を選択することによって 現在のユーザーを追加 オプション。
ステップ15: 次に、構成ファイルのパスを選択し、をクリックします インストール 。
インストールが完了すると、次の画面が表示されます。
SSMSを使用してSQLServerに接続する
SQL Serverをインストールしたら、次のステップはSQLServerをSQLServer ManagementStudioに接続することです。これを行うには、以下の手順に従います。
ステップ1: 次のウィンドウに戻り、をクリックします。 SSMSをインストールする オプション。
ステップ2: そのオプションをクリックすると、にリダイレクトされます 次のページ 、選択する必要がある場所 SSMSをダウンロードします。
ステップ3: セットアップがダウンロードされたら、アプリケーションをダブルクリックすると、次のウィザードが開きます。
ステップ4: クリック インストールオプション 、上記のウィンドウで、そのインストールが開始されることがわかります。
ステップ5: インストールが完了すると、次のようなダイアログボックスが表示されます。
SSMSをインストールしたら、次のステップはにアクセスすることです データベースエンジン 。
データベースエンジンへのアクセス
あなたが開くとき SQL Server Management Studio から スタートメニュー 、下の図に示すウィンドウのようなウィンドウが開きます。
ここで、サーバー名、認証モードについて言及し、をクリックします 接続します。
クリックした後 接続する 、次の画面が表示されます。
皆さん、それがSQLServerのインストールとセットアップの方法です。ここで、このSQL Serverチュートリアルを進めて、SQLServerのアーキテクチャのさまざまなコンポーネントを理解しましょう。
SQLServerアーキテクチャ
SQLServerのアーキテクチャは次のとおりです。
- サーバ &minusこれは、SQLサービスがインストールされ、データベースが存在する場所です。
- リレーショナルエンジン &minusクエリパーサー、オプティマイザー、およびエグゼキューターが含まれ、実行はリレーショナルエンジンで行われます。
- コマンドパーサー &minusクエリの構文をチェックし、クエリを機械語に変換します。
- オプティマイザ &minus統計、クエリ、代数ツリーを入力として、実行プランを出力として準備します。
- クエリエグゼキュータ &minusこれはクエリが段階的に実行される場所です
- ストレージエンジン &minusこれは、ストレージシステムでのデータの保存と取得、データの操作、トランザクションの管理とロックを担当します。
これで、SQL Serverとそのさまざまなコンポーネントをセットアップしてインストールする方法がわかったので、書き始めましょう。 サーバ。ただし、その前に、SQLServerでコメントを作成する方法について説明します。
SQLServerのコメント
SQLでコメントする方法は2つあります。つまり、 s イングルラインコメント または m ulti-lineコメント 。
単一行コメント
単一行コメントはで始まります 2つのハイフン(–)。 したがって、(–)の後に記載されているテキストは、1行の終わりまでコンパイラーによって無視されます。
例:
-単一行コメントの例
複数行コメント
複数行コメントは/ *で始まり、で終わります * / 。したがって、 / * そして * / コンパイラによって無視されます。
例:
/ *複数行コメントの例* /
SQL Serverチュートリアルのこの記事では、最初のコマンドセット、つまりデータ定義言語コマンドから始めましょう。
データ定義言語コマンド
記事のこのセクションでは、データベースを定義するのに役立つコマンドについてのアイデアを提供します。コマンドは次のとおりです。
CREATE
このステートメントは、テーブル、データベース、またはビューを作成するために使用されます。
「CREATEDATABASE」ステートメント
このステートメントは、データベースを作成するために使用されます。
構文
CREATE DATABASE DatabaseName
例
データベースの学生を作成する
‘ CREATE TABLE ’ステートメント
名前が示すように、このステートメントはテーブルを作成するために使用されます。
構文
CREATE TABLE TableName(Column1データ型、Column2データ型、Column3データ型、...。ColumnNデータ型)
例
CREATE TABLE StudentInfo(StudentID int、StudentName varchar(8000)、ParentName varchar(8000)、PhoneNumber int、AddressofStudent varchar(8000)、City varchar(8000)、Country varchar(8000))
落とす
このステートメントは、既存のテーブル、データベース、またはビューを削除するために使用されます。
「DROPDATABASE」ステートメント
このステートメントは、既存のデータベースを削除するために使用されます。以下のコマンドを実行すると、データベースに存在する完全な情報が失われます。
構文
DROP DATABASE DatabaseName
例
DROPデータベースの学生
「DROPTABLE」ステートメント
このステートメントは、既存のテーブルを削除するために使用されます。以下のコマンドを実行すると、表にある完全な情報が失われます。
構文
DROP TABLE TableName
例
DROP TABLE StudentInfo
年齢
ALTERコマンドは、既存のテーブルの列または制約を追加、削除、または変更するために使用されます。
‘ 他の机 ’ステートメント
このステートメントは、既存のテーブルの列を追加、削除、変更するために使用されます。
ADD / DROPCOLUMNを含む「ALTERTABLE」ステートメント
ALTER TABLEステートメントは、列を追加および削除するためにADD / DROPColumnコマンドとともに使用されます。
構文
ALTER TABLE TableName ADDColumnNameデータ型ALTERTABLE TableName DROP COLUMN ColumnName
例
--ADD列BloodGroup:ALTER TABLE StudentInfo ADD BloodGroup varchar(8000)-DROP列BloodGroup:ALTER TABLE StudentInfo DROP COLUMN BloodGroup
ALTERCOLUMNを使用した「ALTERTABLE」ステートメント
ALTER TABLEステートメントをALTER列とともに使用して、テーブル内の既存の列のデータ型を変更できます。
構文
ALTER TABLE TableName ALTER COLUMNColumnNameデータ型
例
-列DOBを追加し、データ型を日付から日時に変更します。 ALTER TABLE StudentInfo ADDDOB日付ALTERTABLE StudentInfo ALTER COLUMNDOB日時
切り捨てる
このSQLコマンドは、テーブルに存在する情報を削除するために使用されますが、テーブル自体は削除しません。したがって、テーブル自体を削除するのではなく、テーブルに存在する情報を削除する場合は、TRUNCATEコマンドを使用する必要があります。それ以外の場合は、DROPコマンドを使用します。
構文
TRUNCATE TABLE TableName
例
TRUNCATE TABLE StudentInfo
名前を変更
このステートメントは、1つ以上のテーブルの名前を変更するために使用されます。
構文
sp_rename'OldTableName '、' NewTableName '
例
sp_rename'StudentInfo '、' Infostudents '
SQL Serverチュートリアルに関するこの記事に進み、SQLServerでサポートされているさまざまなデータ型について理解しましょう。
SQLServerのデータ型
データ型カテゴリ | データ型名 | 説明 | 範囲/構文 |
正確な数値 | 数値 | 数値を格納するために使用され、精度とスケール番号が固定されています | – 10 ^ 38 + 1から10 ^ 38 –1。 |
tinyint | 整数値を格納するために使用されます | 0から255 | |
smallint | 整数値を格納するために使用されます | -2 ^ 15(-32,768)から2 ^ 15-1(32,767) | |
bigint | 整数値を格納するために使用されます | -2 ^ 63(-9,223,372,036,854,775,808)から2 ^ 63-1(9,223,372,036,854,775,807) | |
int | 整数値を格納するために使用されます | -2 ^ 31(-2,147,483,648)から2 ^ 31-1(2,147,483,647) | |
ビット | 0、1、またはNULLの値を使用する整数データ型を格納します | 0、1、またはNULL | |
10進数 | 数値を格納するために使用され、精度とスケール番号が固定されています | – 10 ^ 38 + 1から10 ^ 38 –1。 | |
smallmoney | 金銭を保管するために使用されますまたは通貨の値。 | – 214,748.3648〜214,748.3647 | |
お金 | 金銭を保管するために使用されますまたは通貨の値。 | -922,337,203,685,477.5808から922,337,203,685,477.5807(-922,337,203,685,477.58 Informaticaの場合は922,337,203,685,477.58に。 | |
おおよその数値 | 浮く | 浮動小数点数値データを格納するために使用されます | – 1.79E + 308から-2.23E-308、0および2.23E-308から1.79E + 308 |
リアル | 浮動小数点数値データを格納するために使用されます | – 3.40E + 38〜-1.18E – 38、0および1.18E – 38〜3.40E + 38 | |
日時 | 日付 | SQLServerで日付を定義するために使用されます。 | 構文:date |
smalldatetime | 時刻が24時間の日に基づいており、秒が常にゼロ(:00)で、小数秒がない時刻と組み合わされる日付を定義するために使用されます。 | 構文:smalldatetime | |
日付時刻 | 24時間制に基づく秒の小数部の時刻と組み合わせる日付を定義するために使用されます。 | 構文:datetime | |
datetime2 | datetime2 既存の拡張としてです 日付時刻 デフォルトの小数精度が大きく、日付範囲が大きいタイプ。 | 構文:datetime2 | |
datetimeoffset | タイムゾーンを認識している時刻と組み合わせた日付を定義するために使用されます。それは24時間制に基づいています。 | 構文:datetimeoffset | |
時間 | 1日の時間を定義するために使用されます。 | 構文:time | |
文字列 | char | 固定サイズの文字を格納するために使用されます。 | char[( n )]ここで、n値は1〜8,000の範囲で変化します |
varchar | 可変長文字を格納するために使用されます。 | varchar [( n |最大)]ここで、n値は1〜8000の範囲で変化し、許可される最大ストレージは2GBです。 | |
テキスト | vを保存するために使用可変長の非Unicodeデータ | 許可される最大文字列長– 2 ^ 31-1(2,147,483,647) | |
Unicode文字列 | nchar | 固定サイズの文字を格納するために使用されます。 | nchar[(n)]ここで、n値は1〜4000の範囲で変化します |
nvarchar | 可変長文字を格納するために使用されます。 | varchar [( n |最大)]ここで、n値は1〜4000で変化し、許可される最大ストレージは2GBです。 | |
ntext | 可変長Unicodeデータを格納するために使用されます | 許可される最大文字列長– 2 ^ 30-1(2,147,483,647) | |
バイナリ文字列 | バイナリ | いずれかの固定長のバイナリデータ型を格納するために使用されます | バイナリ[( n )]ここで、n値は1〜8,000の範囲で変化します |
バイナリ | いずれかの固定長のバイナリデータ型を格納するために使用されます | バイナリ[( n )]ここで、n値は1〜8000の範囲で変化し、許可される最大ストレージは2 ^ 31-1バイトです。 | |
画像 | 可変長バイナリデータを格納するために使用されます | 0-2 ^ 31-1(2,147,483,647)バイト | |
その他のデータ型 | これは、カーソルへの参照を含むストアドプロシージャまたは変数のOUTPUTパラメータのデータ型です。 | - | |
行バージョン | データベース内で自動生成された一意の2進数を公開するために使用されます。 | - | |
階層ID | 階層内の位置を表すために使用されます。 | - | |
uniqueidentifier | 16バイトのGUIDです。 | 構文:uniqueidentifier | |
sql_variant | SQLServerでサポートされているさまざまなデータ型の値を格納するために使用されます | 構文:sql_variant | |
xml | XMLデータ型を格納するために使用されます。 | xml([コンテンツ|ドキュメント] xml_schemacollection) | |
空間ジオメトリタイプ | ユークリッド(フラット)座標系でデータを表すために使用されます。 | - | |
空間地理タイプ | GPSの緯度や経度の座標など、楕円体(地球)のデータを保存するために使用されます。 | - | |
テーブル | 後で処理するために結果セットを保存するために使用されます | - |
次に、この記事では、データベース内のさまざまなタイプのキーと制約について理解しましょう。
データベース内のさまざまなタイプのキー
以下は、データベースで使用されるさまざまなタイプのキーです。
- 候補キー– 候補キーは、テーブルを一意に識別できる属性のセットです。テーブルには複数の候補キーを含めることができ、選択した候補キーのうち、1つのキーが主キーとして選択されます。
- スーパーキー– 属性のセットは、タプルを一意に識別できます。したがって、候補キー、一意キー、および主キーはスーパーキーですが、その逆は当てはまりません。
- 主キー– 主キー すべてのタプルを一意に識別するために使用されます。
- 代替キー– 代替キーは、主キーとして選択されていない候補キーです。
- 一意のキー- 一意のキーは主キーに似ていますが、列に単一のNULL値を許可します。
- 外部キー - 他の属性の値として存在する値のみを取得できる属性は、 外部キー それが参照する属性に。
- コンポジットキー- 複合キーは、各タプルを一意に識別する2つ以上の列の組み合わせです。
データベースで使用される制約
制約は、テーブルに格納されているデータのルールを指定するためにデータベースで使用されます。さまざまな種類の SQLの制約 以下の通り:
NULLではありません
NOT NULL制約は、列がNULL値を持つことができないことを保証します。
例
CREATE TABLE StudentInfo(StudentID int NOT NULL、StudentName varchar(8000)NOT NULL、ParentName varchar(8000)、PhoneNumber int、AddressofStudent varchar(8000)NOT NULL、City varchar(8000)、Country varchar(8000))-NOT NULL ALTER TABLE ALTER TABLE StudentInfo ALTER COLUMN PhoneNumber int NOTNULLで
ユニーク
この制約により、列のすべての値が一意になります。
例
--CreateTableのUNIQUECREATE TABLE StudentInfo(StudentID int NOT NULL UNIQUE、StudentName varchar(8000)NOT NULL、ParentName varchar(8000)、PhoneNumber int、AddressofStudent varchar(8000)NOT NULL、City varchar(8000)、Country varchar( 8000))-UNIQUE on Multiple Columns CREATE TABLE StudentInfo(StudentID int NOT NULL、StudentName varchar(8000)NOT NULL、ParentName varchar(8000)、PhoneNumber int、AddressofStudent varchar(8000)NOT NULL、City varchar(8000)、Country varchar(8000)CONSTRAINT UC_Student_Info UNIQUE(StudentID、PhoneNumber))-ALTERTABLEのUNIQUEALTER TABLE StudentInfo ADD UNIQUE(StudentID)-UNIQUE制約を削除するにはALTER TABLE StudentInfo DROP CONSTRAINT UC_Student_Info
小切手
CHECK制約は、列のすべての値が特定の条件を満たすことを保証します。
例
--CREATETABLEのCHECK制約CREATETABLE StudentInfo(StudentID int NOT NULL、StudentName varchar(8000)NOT NULL、ParentName varchar(8000)、PhoneNumber int、AddressofStudent varchar(8000)NOT NULL、City varchar(8000)、Country varchar( 8000)CHECK(Country = 'India'))-CHECK複数の列に対する制約CREATE TABLE StudentInfo(StudentID int NOT NULL、StudentName varchar8000)NOT NULL、ParentName varchar(8000)、PhoneNumber int、AddressofStudent varchar(8000)NOT NULL、 City varchar(8000)、Country varchar(8000)CHECK(Country = 'India' AND City = 'Hyderabad'))-ALTER TABLE ALTER TABLEStudentsInfoのCHECK制約ADDCHECK(Country = 'India')- CHECK制約の名前ALTERTABLE StudentInfo ADD CONSTRAINT CheckConstraintName CHECK(Country = 'India')-CHECK制約を削除するにはALTER TABLE StudentInfo DROP CONSTRAINT CheckConstraintName
デフォルト
DEFAULT制約は、値が指定されていない場合の列のデフォルト値のセットで構成されます。
例
--CREATETABLEのDEFAULT制約CREATETABLE StudentInfo(StudentID int、StudentName varchar(8000)NOT NULL、ParentName varchar(8000)、PhoneNumber int、AddressofStudent varchar(8000)NOT NULL、City varchar(8000)、Country varchar(8000) DEFAULT'India ')-ALTERTABLEのDEFAULT制約ALTERTABLE StudentInfo ADD CONSTRAINT defau_Country DEFAULT'India'FOR国-デフォルトの制約を削除するにはALTERTABLE StudentInfo ALTERCOLUMN国DROPdefau_Country
インデックス
ザ・ INDEX制約 テーブルにインデックスを作成するために使用されます。これにより、データベースからデータを非常にすばやく作成および取得できます。
構文
-重複値が許可されるインデックスを作成しますCREATEINDEX IndexName ON TableName(Column1、Column2、... ColumnN)-重複値が許可されないインデックスを作成しますCREATE UNIQUE INDEX IndexName ON TableName(Column1、Column2、.. .. ColumnN)
例
CREATE INDEX idex_StudentName ON StudentInfo(StudentName)-テーブル内のインデックスを削除するにはDROP INDEX StudentInfo.idex_StudentName
SQL Serverチュートリアルに関するこの記事に進み、Microsoft SQLServerで使用されるさまざまなデータ操作言語コマンドについて理解しましょう。
データ操作言語コマンド
記事のこのセクションでは、データベースを操作するために使用できるすべてのコマンドについて説明します。コマンドは次のとおりです。
これらのコマンドとは別に、次のような他の操作演算子/関数もあります。
使用する
このステートメントは、データベースに対してさまざまな操作の実行を開始するデータベースを選択するために使用されます。
構文
DatabaseNameを使用する
例
学生を使用する
挿入する
ザ・ INSERTINTOステートメント 新しいレコードを既存のテーブルに挿入するために使用されます。
構文
INSERT INTO TableName(Column1、Column2、Column3、...、ColumnN)VALUES(value1、value2、value3、...)-列名について言及したくない場合は、以下の構文を使用しますINSERT INTO TableName VALUES (Value1、Value2、Value3、...)
例
INSERT INTO StudentInfo(StudentID、StudentName、ParentName、PhoneNumber、AddressofStudent、City、Country)VALUES('06 '、' Sanjana '、' Kapoor '、' 9977331199 '、' Buffalo Street House No 10 '、' Kolkata '、' India ')INSERT INTO StudentInfo VALUES('07'、 'Vishal'、 'Mishra'、 '9876509712'、 'Nice Road 15'、 'Pune'、 'India')
更新
UPDATEステートメントは、テーブルにすでに存在するレコードを変更または更新するために使用されます。
構文
UPDATE TableName SET Column1 = Value1、Column2 = Value2、... WHERE条件
例
UPDATE StudentInfo SET StudentName = 'Aahana'、City = 'Ahmedabad' WHERE StudentID = 1
削除
DELETEステートメントは、テーブル内の既存のレコードを削除するために使用されます。
構文
TableNameWHERE条件から削除
例
StudentInfoから削除WHEREStudentName = 'Aahana'
GO
MERGEステートメントは、ソース表が提供されている特定の表に対してINSERT、UPDATE、およびDELETE操作を実行するために使用されます。以下を参照してください。
構文
MERGE TagretTableName USING SourceTableName ON MergeCondition WHEN MATCHED THEN Update_Statement WHEN NOT MATCHED THEN Insert_Statement WHEN NOT MATCHED BY SOURCE THEN DELETE
例
MERGEステートメントを理解するには、次のテーブルをソーステーブルおよびターゲットテーブルと見なします。
ソーステーブル:
学生証 | 学生の名前 | マーク |
1 | 嫌い | 87 |
2 | マナサー | 92 |
4 | アナイ | 74 |
ターゲットテーブル:
学生証 | 学生の名前 | マーク |
1 | 嫌い | 87 |
2 | マナサー | 67 |
3 | Saurabh | 55 |
SampleSourceTable SOURCE ON(TARGET.StudentID = SOURCE.StudentID)を使用してSampleTargetTableターゲットをマージします。ターゲットと一致しない場合は、(StudentID、StudentName、Marks)を挿入します。値(SOURCE.StudentID、SOURCE.StudentName、SOURCE.Marks)は、ソースと一致しない場合は削除します。
出力
学生証 | 学生の名前 | マーク |
1 | 嫌い | 87 |
2 | マナサー | 92 |
4 | アナイ | 74 |
選択する
ザ・ SELECTステートメント データベース、テーブル、またはビューからデータを選択するために使用されます。返されたデータは、と呼ばれる結果テーブルに保存されます。 結果セット 。
構文
SELECT Column1、Column2、... ColumN FROM TableName-(*)は、テーブルからすべてを選択するために使用されますSELECT * FROM table_name-返すレコードの数を選択するには、次のように使用します。SELECTTOP 3 * FROM TableName
例
-いくつかの列を選択するにはSELECTStudentID、StudentName FROM StudentInfo-(*)を使用してテーブルからすべてを選択しますSELECT * FROM StudentInfo-返すレコード数を選択するには次を使用します:SELECT TOP 3 * FROM StudentInfo
SELECTステートメントで次のキーワードを使用することもできます。
DISTINCT
DISTINCTキーワードは、異なる値のみを返すためにSELECTステートメントで使用されます。
構文
SELECT DISTINCT Column1、Column2、... ColumnN FROM TableName
例
StudentInfoからDISTINCTPhoneNumberを選択します
ORDER BY
このステートメントは、必要な結果を昇順または降順で並べ替えるために使用されます。デフォルトでは、結果は昇順で保存されます。ただし、結果を降順で取得したい場合は、 DESC キーワード。
構文
SELECT Column1、Column2、... ColumnN FROM TableName ORDER BY Column1、Column2、... ASC | DESC
例
--ParentNameでソートされた「StudentsInfo」テーブルからすべての学生を選択します:SELECT * FROM StudentInfo ORDER BY ParentName-ParentNameでソートされた「StudentsInfo」テーブルから降順ですべての学生を選択します:SELECT * FROM StudentInfo ORDER BY ParentNameDESC- ParentNameとStudentNameでソートされた「StudentsInfo」テーブルからすべての学生を選択します。SELECT* FROM StudentInfo ORDER BY ParentName、StudentName / *「StudentsInfo」テーブルからすべての学生をParentNameで降順、StudentNameで昇順で選択します。* / SELECT * FROM StudentInfo ORDER BY ParentName ASC、StudentName DESC
GROUP BY
このステートメントは、 集計関数 結果セットを1つ以上の列でグループ化します。
構文
SELECT Column1、Column2、...、ColumnN FROM TableNameWHERE条件GROUPBY ColumnName(s)ORDER BY ColumnName(s)
例
-各都市からの学生の数を一覧表示します。 SELECT COUNT(StudentID)、City FROM StudentInfo GROUP BY City
グループ化セット
GROUPINGSETSはSQLServer 2008で導入され、によって生成できる結果セットを生成するために使用されました。 UNION ALL 複数の単純なGROUPBY句の
構文
SELECT ColumnNames(s)FROM TableName GROUP BY GROUPING SETS(ColumnName(s))
例
グループ化セット((StudentID、StudentName、City)、(StudentID)、(StudentName)、(City))によってStudentInfoグループからStudentID、StudentName、COUNT(City)を選択します
持っている
この句は、次のようなシナリオで使用されます。 WHEREキーワード 使用できません。
構文
SELECT ColumnName(s)FROM TableName WHERE Condition GROUP BY ColumnName(s)HAVING Condition ORDER BY ColumnName(s)
例
SELECT COUNT(StudentID)、City FROM StudentInfo GROUP BY City HAVING COUNT(StudentID)> 2 ORDER BY COUNT(StudentID)DESC
に
INTOキーワードは、 SELECTステートメント あるテーブルから別のテーブルにデータをコピーします。そうですね、これらのテーブルは一時テーブルであると理解できます。一時テーブルは通常、元のテーブルを乱すことなく、テーブルに存在するデータを操作するために使用されます。
構文
SELECT * INTO NewTable [IN ExternalDB] FROM OldTableWHERE条件
例
-テーブル 'StudentsInfo'のバックアップを作成するにはSELECT * INTO StudentBackup FROMStudentInfo-StudentInfoから少数の列のみを選択するにはSELECTStudentName、PhoneNumber INTO StudentDetails FROM StudentInfo SELECT * INTO PuneStudents FROM StudentInfo WHERE City = 'Pune'
CUBE
CUBEはの拡張です GROUPBY句 。これにより、GROUPBY句で指定されたグループ化列のすべての組み合わせの小計を生成できます。
構文
SELECT ColumnName(s)FROM TableName GROUP BY CUBE(ColumnName1、ColumnName2、.....、ColumnNameN)
例
SELECT StudentID、COUNT(City)FROM StudentInfo GROUP BY CUBE(StudentID)ORDER BY StudentID
巻き上げる
ROLLUPは、GROUPBY句の拡張です。これにより、小計を表す追加の行を含めることができます。これらは、総計行とともに超集約行と呼ばれます。
構文
SELECT ColumnName(s)FROM TableName GROUP BY ROLLUP(ColumnName1、ColumnName2、.....、ColumnNameN)
例
SELECT StudentID、COUNT(City)FROM StudentInfo GROUP BY ROLLUP(StudentID)
オフセット
OFFSET句はSELECTおよび ORDERBYステートメント レコードの範囲を取得します。単独では使用できないため、ORDERBY句とともに使用する必要があります。また、言及する範囲は0以上である必要があります。負の値を言及すると、エラーが表示されます。
構文
SELECT ColumnNames)FROM TableName WHERE Condition ORDER BY ColumnName(s)OFFSET RowsToSkip ROWS
例
新しい列を検討してください マーク の中に StudentInfo テーブル。
SELECT StudentName、ParentName FROM StudentInfo ORDER BY Marks OFFSET 1 ROWS
フェッチ
FETCH句は、いくつかの行のセットを返すために使用されます。 OFFSET句と組み合わせて使用する必要があります。
構文
SELECT ColumnNames)FROM TableName WHERE Condition ORDER BY ColumnName(s)OFFSET RowsToSkip FETCH NEXT NumberOfRows ROWSONLY。
例
SELECT StudentName、ParentName FROM StudentInfo ORDER BY Marks OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY
上
TOP句はSELECTステートメントとともに使用され、返されるレコードの数を示します。
構文
SELECTTOP番号ColumnName(s)FROM TableNameWHERE条件
例
学生情報からトップ3 *を選択
ピボット
PIVOTは、行を列値にローテーションするために使用され、残りの列値で必要に応じて集計を実行します。
構文
SELECT NonPivoted ColumnName、[First Pivoted ColumnName] AS ColumnName、[Second Pivoted ColumnName] AS ColumnName、[Third Pivoted ColumnName] AS ColumnName、... [Last Pivoted ColumnName] AS ColumnName FROM(データを生成するSELECTクエリ)AS [alias最初のクエリの場合] PIVOT([AggregationFunction](ColumName)FOR [値が列ヘッダーになる列のColumnName] IN([First Pivoted ColumnName]、[Second Pivoted ColumnName]、[Third Pivoted ColumnName] ... [lastピボット列]))AS [ピボットテーブルのエイリアス]
例
詳細な例を取得するには、を参照してください。 SQLPIVOTとUNPIVOTに関する私の記事 。次のこのSQLServerチュートリアルでは、Microsoft SQLServerでサポートされているさまざまな演算子について説明します。
演算子
ザ・ さまざまなタイプの演算子 SQLServerでサポートされているのは次のとおりです。
それらのそれぞれについて一つずつ議論しましょう。
算術演算子
オペレーター | 意味 | 構文 |
+ | 添加 | 式+式 |
- | 減算 | 式–式 |
* | 乗算 | 式*式 |
/ | Divison | 式/式 |
% | モジュラス | 式%式 |
代入演算子
オペレーター | 意味 | 構文 |
= | 変数に値を割り当てる | 変数=「値」 |
ビット演算子
オペレーター | 意味 | 構文 |
&(ビットごとのAND) | 2つの整数値の間でビット単位の論理AND演算を実行するために使用されます。 | 式と式 |
&=(ビットごとのAND代入) | 2つの整数値の間でビット単位の論理AND演算を実行するために使用されます。また、操作の出力に値を設定します。 | 式&=式 |
| (ビットごとのOR) | Transact-SQLステートメント内でバイナリ式に変換される2つの整数値間でビット単位の論理OR演算を実行するために使用されます。 | 式|式 |
| =(ビットごとのOR割り当て) | Transact-SQLステートメント内でバイナリ式に変換される2つの整数値間でビット単位の論理OR演算を実行するために使用されます。また、操作の出力に値を設定します。 | 式| =式 |
^(ビット単位の排他的論理和) | 2つの整数値間でビット単位の排他的論理和演算を実行するために使用されます。 | 式^式 |
^ =(ビット単位の排他的論理和の割り当て) | 2つの整数値間でビット単位の排他的論理和演算を実行するために使用されます。また、操作の出力に値を設定します。 | 式^ =式 |
〜(ビット単位ではありません) | 整数値に対してビット単位の論理NOT演算を実行するために使用されます。 | 〜式 |
比較演算子
オペレーター | 意味 | 構文 |
= | に等しい | 式=式 |
>> | 大なり記号 | 式>式 |
< | 未満 | 式 |
> = | 以上 | 式> =式 |
<= | 以下 | 式<= expression |
等しくない | 式式 | |
!= | 等しくない | 式!=式 |
!< | よりは少なくない | 式! |
!> | 大きくない | 式!>式 |
複合演算子
オペレーター | 意味 | 構文 |
+ = | 元の値に値を追加し、元の値を結果に設定するために使用されます。 | 式+ =式 |
-= | 元の値から値を減算し、元の値を結果に設定するために使用されます。 | 式-=式 |
* = | 値を元の値に乗算し、元の値を結果に設定するために使用されます。 | 式* =式 |
/ = | 元の値から値を除算し、元の値を結果に設定するために使用されます。 | 式/ =式 |
%= | 元の値から値を除算し、元の値を結果に設定するために使用されます。 | 式%=式 |
&= | ビット単位のAND演算を実行し、元の値を結果に設定するために使用されます。 | 式&=式 |
^ = | ビット単位の排他的論理和演算を実行し、元の値を結果に設定するために使用されます。 | 式^ =式 |
| = | ビットごとのOR演算を実行し、元の値を結果に設定するために使用されます。 | 式| =式 |
論理演算子
オペレーター | 意味 | 構文 |
すべて | 比較のセットがすべてTRUEの場合、TRUEを返します。 | スカラー式!= ALL(サブクエリ) |
そして | 両方の式がTRUEの場合、TRUEを返します。 | boolean_expression AND boolean_expression |
どれか | 一連の比較のいずれかがTRUEの場合、TRUEを返します。 | スカラー式! = {ANY}(サブクエリ) |
の間に | オペランドが範囲内にある場合はTRUEを返します。 | sampleexpression [NOT] beginexpressionとendexpressionの間 |
存在する | サブクエリに行が含まれている場合はTRUEを返します。 | EXISTS(サブクエリ) |
に | オペランドが式のリストの1つと等しい場合、TRUEを返します。 | test_expression [NOT] IN(subquery | expression [、…n]) |
オペランドがパターンに一致する場合はTRUEを返します。 | match_expression [NOT] LIKEパターン[ESCAPEEscape_character] | |
ない | ブール演算子の値を逆にします。 | [NOT] boolean_expression |
または | ブール式のいずれかがTRUEの場合、TRUEを返します。 | boolean_expressionまたはboolean_expression |
いくつか | 一連の比較の一部がTRUEの場合、TRUEを返します。 | スカラー式<= { SOME} ( subquery ) |
スコープ解決演算子
オペレーター | 意味 | 例 |
::: | 複合データ型の静的メンバーへのアクセスを提供します。複合データ型は、複数のメソッドと単純なデータ型を含むデータ型です。複合データ型これらには、組み込みCLR型とカスタムSQLCLRユーザー定義型(UDT)が含まれます。 | DECLARE @hid Hierarchyid SELECT @hid = Hierarchyid :: GetRoot()PRINT @ hidden.ToString() |
演算子の設定
主に3つのセット操作があります。連合、交差する、マイナス。以下の画像を参照して、SQLの集合演算を理解できます。以下の画像を参照してください。
オペレーター | 意味 | 構文 |
連合 | UNION演算子は、2つ以上のSELECTステートメントの結果セットを組み合わせるために使用されます。 | Table1からColumnNameを選択します 連合 SELECT ColumnName(s)FROM Table2 |
交差する | INTERSECT句は、2つを組み合わせるために使用されます選択するステートメントを実行し、両方のSELECTステートメントのデータセットの共通部分を返します。 | SELECT Column1、Column2…。 FROM TableName WHERE条件 交差する SELECT Column1、Column2…。 FROM TableName WHERE条件 |
を除いて | EXCEPT演算子は、最初のSELECT操作で返され、2番目のSELECT操作では返されないタプルを返します。 Java用のEclipseを設定する | SELECT ColumnName FROM TableName を除いて SELECT ColumnName FROM TableName |
文字列演算子
オペレーター | 意味 | 構文/例 |
+(文字列の連結) | 2つ以上のバイナリまたは文字列、列、または文字列と列名の組み合わせを1つの式に連結します | 式+式 |
+ =(文字列の連結) | 2つの文字列を連結し、その文字列を操作の結果に設定するために使用されます。 | 式+ =式 |
%(一致するワイルドカード文字) | 0文字以上の任意の文字列に一致するために使用されます。 | 例:「sample%」 |
[](一致するワイルドカード文字) | 角かっこ[]で囲まれた指定された範囲またはセット内の単一の文字を照合するために使用されます。 | 例:m [n-z]% ’ |
[^](一致するワイルドカード文字) | 角括弧の間に指定された範囲またはセット内にない単一の文字を照合するために使用されます。 | 例:「Al [^ a]%」 |
_(一致するワイルドカード文字) | 文字列比較操作で1文字を照合するために使用されます | test_expression [NOT] IN(subquery | expression [、…n]) |
集計 機能
別の 集計関数 SQLServerでサポートされているのは次のとおりです。
関数 | 説明 | 構文 | 例 |
和() | 値のグループの合計を返すために使用されます。 | SELECT SUM(ColumnName)FROM TableName | StudentInfoからSUM(マーク)を選択します |
カウント() | 条件に基づいて、または条件なしで行数を返します。 | SELECT COUNT(ColumnName)FROM TableNameWHERE条件 | StudentInfoからCOUNT(StudentID)を選択します |
AVG() | 数値列の平均値を計算するために使用されます。 | SELECT AVG(ColumnName)FROM TableName | StudentInfoからAVG(マーク)を選択 |
MIN() | この関数は、列の最小値を返します。 | SELECT MIN(ColumnName)FROM TableName | StudentInfoからMIN(マーク)を選択します |
MAX() | 列の最大値を返します。 | SELECT MAX(ColumnName)FROM TableName | 学生情報からMAX(マーク)を選択 |
最初() | 列の最初の値を返すために使用されます。 | SELECT FIRST(ColumnName)FROM TableName | StudentInfoから最初に(マーク)を選択 |
最終() | この関数は、列の最後の値を返します。 | SELECT LAST(ColumnName)FROM TableName | StudentInfoからLAST(マーク)を選択 |
ユーザー定義関数
Microsoft SQL Serverを使用すると、ユーザーはルーチンであるユーザー定義関数を作成できます。これらのルーチンはパラメーターを受け入れ、単純なアクションから複雑なアクションを実行し、その特定のアクションの結果を値として返すことができます。ここで、返される値は、単一のスカラー値または完全な結果セットのいずれかです。
ユーザー定義関数を使用して、次のことができます。
- モジュラープログラミングを許可する
- ネットワークトラフィックを削減する
- クエリの高速実行を許可する
また、作成できるユーザー定義関数にはさまざまな種類があります。彼らです:
- スカラー関数: 慣れているRETURNS句で定義されたタイプの単一のデータ値を返します。
- テーブル値関数: 慣れているを返すテーブルデータ・タイプ。
- システム機能: SQL Serverには、さまざまな操作を実行するためのさまざまなシステム機能が用意されています。
ユーザー定義関数とは別に、SQL Serverには、さまざまなタスクを実行するために使用できる多数の組み込み関数があります。 SQL Serverチュートリアルに関するこの記事に進んで、ネストされたクエリとは何かを理解しましょう。
ネストされたクエリ
ネストされたクエリ 外側のクエリと内側のサブクエリを持つクエリです。したがって、基本的に、サブクエリは、SELECT、INSERT、UPDATE、DELETEなどの別のクエリ内にネストされたクエリです。以下の画像を参照してください。
次のSQLServerチュートリアルでは、SQLのさまざまな種類の結合について理解しましょう。
参加する
テーブル間の関連する列に基づいて、2つ以上のテーブルのタプルを組み合わせるために使用されます。結合には次の4つのタイプがあります。
- 内部結合: 両方のテーブルで値が一致するレコードを返します。
- 左結合: 左側のテーブルのレコードと、右側のテーブルの条件を満たすレコードを返します。
- 右結合: 右側のテーブルのレコードと、左側のテーブルの条件を満たすレコードを返します。
- 完全結合: 左側または右側のテーブルに一致するレコードを返します。
結合の構文を理解するために、StudentsInfoテーブルと一緒に次のテーブルを検討してください。
SubjectID | 学生証 | SubjectName |
10 | 10 | 数学 |
2 | 十一 | 物理 |
3 | 12 | 化学 |
内部結合
構文
SELECT ColumnName(s) 表1から 内部結合Table2ON Table1.ColumnName = Table2.ColumnName
例
SELECT Subject.SubjectID、StudentsInfo.StudentName FROMSubjects内部結合StudentsInfoON Subject.StudentID = StudentInfo.StudentID
左結合
構文
SELECT ColumnName(s) 表1から Table1.ColumnName = Table2.ColumnNameのLEFTJOIN Table2
例
SELECT StudentInfo.StudentName、Subjects.SubjectID FROM StudentInfo LEFT JOIN Subject ON StudentInfo.SubjectID = Subject.SubjectID ORDER BY StudentInfo.StudentName
右結合
構文
SELECT ColumnName(s) 表1から Table1.ColumnName = Table2.ColumnNameでTable2を右結合します
例
SELECT StudentInfo.StudentName、Subjects.SubjectID FROM StudentInfo RIGHT JOIN Subject ON StudentInfo.SubjectID = Subject.SubjectID ORDER BY StudentInfo.StudentName
完全結合
構文
SELECT ColumnName(s) 表1から Table1.ColumnName = Table2.ColumnNameの完全外部結合Table2
例
SELECT StudentInfo.StudentName、Subjects.SubjectID FROM StudentInfo FULL OUTER JOIN Subject ON StudentInfo.SubjectID = Subject.SubjectID ORDER BY StudentInfo.StudentName
次に、SQL Serverチュートリアルに関するこの記事では、SQLServerでサポートされているさまざまな種類のループについて理解しましょう。
ループ
さまざまな制御制御コマンドは次のとおりです。
それらのそれぞれについて一つずつ議論しましょう。
BEGIN..END
これらのキーワードは、一連のSQLステートメントを囲むために使用されます。次に、このSQLステートメントのグループを実行できます。
構文
BEGIN StatementBlock END
ブレーク
このステートメントは、現在のWHILEループを終了するために使用されます。現在のWHILEループが別のループ内にネストされている場合、BREAKステートメントは現在のループのみを終了し、制御は現在のループ内の次のステートメントに渡されます。 BREAKステートメントは、通常、IFステートメント内で使用されます。
構文
ブレーク
継続する
CONTINUEステートメントは、WHILEループを再開するために使用されます。したがって、CONTINUEキーワードの後のステートメントはすべて無視されます。
構文
継続する
ここで、Labelは、GOTOがその特定のラベルを対象としている場合に処理が開始されるポイントです。
GOTO
ラベルへの実行フローを変更するために使用されます。 GOTOキーワードの後に記述されたステートメントはスキップされ、ラベルで処理が続行されます。
構文
ラベルの定義:ラベル:実行の変更:GOTOラベル
ここで、Labelは、GOTOがその特定のラベルを対象としている場合に処理が開始されるポイントです。
IF..ELSE
他のプログラミング言語と同様に、SQL ServerのIf-elseステートメントは条件をテストし、条件がfalseの場合、「else」ステートメントが実行されます。
構文
IF BooleanExpression StatementBlock [ELSE StatementBlock]
返品
クエリまたはプロシージャを無条件に終了するために使用されます。したがって、RETURN句の後に記述されたステートメントは実行されません。
構文
RETURN [IntegerExpression]
ここでは、整数値が返されます。
を待つ
WAITFOR制御フローは、特定のステートメントが変更されるか、少なくとも1つの行を返すか、指定された時間または時間間隔が経過するまで、ストアード・プロシージャー、トランザクション、またはバッチの実行をブロックするために使用されます。
構文
WAITFOR(GetConversionGroupStatement)] [、TIMEOUTタイムアウト]
どこ、
- ディレイ –経過しなければならない期間
- TimeToPass – p待つ時間の期間
- 時間 –ストアドプロシージャ、トランザクション、またはバッチが実行される時間。
- TimeToExecute –WAITFORステートメントが終了する時刻。
- RecieveStatement -TO有効なRECEIVEステートメント。
- GetConversionGroupStatement -TO有効なGETCONVERSATIONGROUPステートメント。
- タイムアウトタイムアウト - メッセージがキューに到着するのを待機する期間をミリ秒単位で指定します。
一方
このループは、特定のSQLステートメントまたはSQLステートメントブロックを繰り返し実行するための条件を設定するために使用されます。ステートメントは、ユーザーが指定した条件がTRUEである限り実行されます。条件が失敗するとすぐに、ループの実行が停止します。
構文
WHILE BooleanExpression StatementBlock
さて、皆さんはDMLコマンドを知っているので、次のセクションに移りましょう。SQLチュートリアルに関するこの記事、つまりDCLコマンド。
データ制御言語コマンド(DCL)
SQL Serverチュートリアルのこのセクションでは、複数のユーザーデータベース環境でデータベースセキュリティを適用するために使用されるコマンドについて説明します。コマンドは次のとおりです。
付与
GRANTコマンドは、データベースとそのオブジェクトへのアクセスまたは特権をユーザーに提供するために使用されます。
構文
ObjectNameの特権名をRoleNameに付与[付与オプション付き]
どこ、
- PrivilegeName –ユーザーに付与される特権/権利/アクセスです。
- ObjectName – TABLE / VIEW / STOREDPROCなどのデータベースオブジェクトの名前。
- ユーザー名 –アクセス/権利/特権を付与されたユーザーの名前。
- 公衆 –すべてのユーザーにアクセス権を付与します。
- RoleName –グループ化された一連の特権の名前。
- グラントオプション付き –他のユーザーに権限を付与するためのアクセス権をユーザーに付与するため。
例
--StudentsInfoテーブルへのSELECT権限をuser1に付与するにはGRANTSELECT ON StudentInfo TO user1
取り消す
REVOKEコマンドは、GRANTコマンドを使用して指定されたユーザーのアクセス権限を取り消すために使用されます。
構文
ObjectNameのPrivilegeNameをPUBLICから取り消す
例
--user1から付与された権限を取り消すにはREVOKESELECT ON StudentInfo TO user1
このSQLServerチュートリアルに進み、ストアドプロシージャを作成して使用する方法を理解しましょう。
ストアドプロシージャ
ストアドプロシージャ アプリケーションの特定のビジネスロジックをカプセル化する再利用可能なユニットです。つまり、これはSQLステートメントとロジックのグループであり、特定のタスクを実行するためにコンパイルおよび保存されます。
構文
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] type [])] IS BEGIN [declaration_section] execute_section //ストアドプロシージャで使用されるSQLステートメントENDGO
例
--StudentIdがストアドプロシージャへの入力パラメータとして指定されたときに学生名を返すプロシージャを作成しますCreatePROCEDURE GetStudentName(@StudentId INT、-Input parameter、@ StudName VARCHAR(50)OUT --Output parameter、AS BEGIN SELECT @StudName = StudentName FROM StudentInfo WHERE StudentID = @ StudentId END
実行する手順:
- @StudNameをnvarchar(50)として宣言します
- EXEC GetStudentName 01、@ StudName出力
- SELECT @StudName
上記の手順では、特定の学生の名前が返されます。その学生に入力としてIDを与えることについて。次のこのSQLServerチュートリアルでは、トランザクション制御言語コマンドについて理解しましょう。
トランザクション制御言語コマンド(TCL)
SQL Serverチュートリアルのこのセクションでは、データベース内のトランザクションを管理するために使用されるコマンドについて説明します。コマンドは次のとおりです。
コミット
COMMITコマンドは、トランザクションをデータベースに保存するために使用されます。
構文
コミット
ロールバック
ROLLBACKコマンドは、データベースを最後にコミットされた状態に復元するために使用されます。
構文
ロールバック
注意: SAVEPOINTでROLLBACKを使用すると、進行中のトランザクションでセーブポイントに直接ジャンプできます。構文:ROLLBACK TO SavepointName
セーブポイント
SAVEPOINTコマンドは、トランザクションを一時的に保存するために使用されます。したがって、任意のポイントにロールバックする場合は、そのポイントを「SAVEPOINT」として保存できます。
構文
SAVEPOINTSAVEPOINTNAME
データベース内のトランザクションの動作を理解するには、以下の表を検討してください。
学生証 | 学生の名前 |
1 | Rohit |
2 | スハナ |
3 | Ashish |
4 | プレナ |
さて、以下を使用してください データベース内のトランザクションを理解するため。
INSERT INTO StudentTable VALUES(5、 'Avinash')COMMIT UPDATE StudentTable SET name = 'Akash' WHERE id = '5' SAVEPOINT S1 INSERT INTO StudentTable VALUES(6、 'Sanjana')SAVEPOINT S2 INSERT INTO StudentTable VALUES(7、 'Sanjay ')SAVEPOINT S3 INSERT INTO StudentTable VALUES(8、' Veena ')SAVEPOINT S4 SELECT * FROM StudentTable
次のSQLServerチュートリアルの記事では、Transact-SQLで例外を処理する方法を理解しましょう。
例外処理
例外には、システム定義の例外とユーザー定義の例外の2種類があります。名前が示すように、例外処理は、ユーザーが生成された例外を処理できるプロセスです。例外を処理するには、次の制御フローステートメントを理解する必要があります。
スロー
この句は、例外を発生させ、実行をTRY…CATCH構造のCATCHブロックに転送するために使用されます。
構文
THROW [ErrorNumber、@ localvariable、State] []
どこ、
- ErrorNumber -TO例外を表す定数または変数。
- メッセージ -TO例外を説明する変数または文字列。
- 状態 -メッセージに関連付ける状態を示す0から255までの定数または変数。
THROW 51000、「レコードは存在しません。」、1
TRY..CATCH
Transact-SQLで例外処理を実装するために使用されます。ステートメントのグループをTRYブロックで囲むことができます。 TRYブロックでエラーが発生した場合、制御はCATCHブロックで囲まれたステートメントの別のグループに渡されます。
構文
BEGIN TRY StatementBlock END TRY BEGIN CATCH [StatementBlock] END CATCH []
BEGIN TRY SELECT * FROM StudentInfo END TRY BEGIN CATCH SELECT ERROR_NUMBER()AS ErNum、ERROR_MESSAGE()AS ErMsg END CATCH
に これで、SQLServerチュートリアルに関するこの記事は終わりです。初心者向けSQLServerチュートリアルに関するこの記事をお楽しみいただけたでしょうか。私 MySQLの構造化されたトレーニングを受講したい場合は、 インストラクター主導のライブトレーニングと実際のプロジェクト経験が付属しています。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。 質問がありますか? 」のコメントセクションでそれについて言及してください SQLServerチュートリアル 」と私はあなたに戻ります。