
目次
今回は、Microsoft SQL Serverで使用されるSQL(Structured Query Language)の拡張版である
T-SQL(Transact-SQL)について紹介していこうと思います。
標準SQLに加え、条件分岐やループ、ストアドプロシージャなどのプログラミング機能が追加されています。
T-SQLを習得すると、データの抽出・更新・削除だけでなく、より高度なデータ処理やバッチ処理を効率的に行うことができます。
それではさっそく学んでいきましょう。
T-SQLの基本構文
まずは、T-SQLの基本構文を紹介していきます。
これは通常のSQLと全く同じですので、特に問題ないと思います。
1 SELECT文(データの取得)
T-SQLの最も基本的なコマンドはSELECT
文です。データベースから必要な情報を取得するために使用されます。
SELECT 列名 FROM テーブル名;
例えば、"Employees" テーブルの "Name" 列を取得する場合は、下記のようになります。
SELECT Name FROM Employees;
SELECT文の記事の詳細こちらを参考にしてください。
2 データの追加(INSERT文)
データを追加する場合は、INSERT文を使用します。
INSERT INTO テーブル名 (列名1, 列名2) VALUES (値1, 値2);
例:新しい従業員を追加する
INSERT INTO Employees (Name, Age) VALUES ('Tanaka', 28);
3 UPDATE文(データの更新)
既存のデータを変更するには、UPDATE文を使用します。
UPDATE テーブル名 SET 列名 = 新しい値 WHERE 条件;
例:IDが1の従業員の年齢を変更する
UPDATE Employees SET Age = 35 WHERE ID = 1;
4 DELETE文(データの削除)
特定の行を削除するには、DELETE文を使用します。
DELETE FROM テーブル名 WHERE 条件;
例:IDが2の従業員を削除する
DELETE FROM Employees WHERE ID = 2;
T-SQLの特徴
ここからが、T-SQLの見どころとなってきます。
T-SQLでは、変数の利用や、条件分岐、などが利用できます。
それぞれ紹介していきます。
1 変数について DECLEAR
T-SQLでは、変数を使用することができます。
--変数宣言
DECLARE @intValue INT;
--変数の設定
SET @intValue = 100;
DECLEARE で変数を宣言し、SETで値を格納できます。
また、変数を宣言する時は、「@」を付ける必要があります。
2 条件分岐 IF文
IFを利用することで条件分岐を行うことができます。
SQLので取得した値を変数に格納し、条件分岐するなど処理が可能です。
IF @intValue >= 30
BEGIN
PRINT '30以上です';
END
ELSE
BEGIN
PRINT '30未満です';
END;
3 繰り返し While文
T-SQLで、While文を使うことで、繰り返しの処理を行うことが可能です。
WHILE ループ条件
BEGIN
繰り返し
END
ループ条件を10より小さいときとして、0からループさせてみます。
WHILE @intValue < 10
BEGIN
SET @intValue = @intValue + 1
PRINT @intValue
END;
4 ストアドプロシージャ
ストアドプロシージャは、複数のSQLコマンドをまとめて管理することができる機能です。
「GetEmployees」という名前のストアドプロシージャを作成し、
Employeesテーブルの全てのデータを表示します。
CREATE PROCEDURE GetEmployees
AS
BEGIN
SELECT * FROM Employees;
END;
作成したプロシージャを実行するのは、EXECを使います。
EXEC GetEmployees;
実行すると、SELECT文の結果が表示されます。
T-SQLサンプル
今回紹介した内容のストアドプロシージャを作成しました。
--ストアドプロシージャ作成
CREATE PROCEDURE [dbo].[GetEmployees]
AS
BEGIN
--変数宣言
DECLARE @intValue INT;
--変数の設定
SET @intValue = 100;
--条件分岐
IF @intValue >= 30
BEGIN
PRINT '30以上です';
END
ELSE
BEGIN
PRINT '30未満です';
END;
--繰り返し
SET @intValue = 0;
WHILE @intValue < 10
BEGIN
SET @intValue = @intValue + 1
PRINT @intValue
END;
-- SELECT文
SELECT * FROM Employees;
END;
実行用
EXEC [dbo].[GetEmployees]
結果:
PRINTの内容が表示されています。
SELECTの結果が表示されています。
まとめ
T-SQLは、標準SQLを拡張し、より高度なデータ操作を可能にする強力な言語です。
まずは基本的なSELECT、INSERT、UPDATE、DELETEをマスターし、
徐々に高度な機能へとステップアップしましょう!