
私もそう思ってた頃がありました。
20代半ばの私の経歴として、大学時代にほんの少しだけ(ほぼ未経験)「SQL」を触ったことがあり、また社会人になってからは「SQL」を使ったプログラマーとして働いています。
この2つの「SQL」ですが、大学時代は「MySQL」で社会人は「SSMS」と、言葉は同じでも中身は全く違っていました。
今回は「難しそう」を少しでも解消するよう、私がプログラマーとして使用している「SSMS」について説明させていただきます。
そもそもSQLって何?

SQLとは、データベースの言語の1つを表します。
データベースを言い換えるならば、データを格納する「箱」や「棚」、「フォルダ」のようなものです。
例えば、データベースの中に「全従業員の名前、性別、住所」であったり「過去30年分の売り上げデータ」であったり、1万件、10万件、時には100万件を超えるデータが入っていたりします。
手作業でデータを探し出すのはとても困難だと思いますが、SQLを使用することで、データを一括あるいは条件を指定して抽出・操作することができます。
SQLと言っても様々な種類がある

冒頭でも伝えたように、SQLといってもMySQL、SSMS、Oracleなど色々な種類があります。
正確に言えば、データベースを管理するシステムの種類がたくさんあり、それによってSQLの言語が少しずつ変わってきます。
言わば、方言のようなものです。
今回はそのデータベース管理システムの1つであるSSMSについて、例を交えながら詳しく見ていきましょう。
1.SQL Serverとは?

SQL Server(正式名称: Microsoft SQL Server)とは、Microsoftが開発したデータベース管理システムのことを言います。
Microsoftというと、みなさんもよく聞く「Windows」を連想されるかもしれません。
その通りで、WindowsとSQL Serverは同じ会社が開発しているため、SQL ServerはWindows OSのパソコンと相性がいいと言われています。
SQL Server Management Studio(SSMS)とは?

SSMSとは、 SQL Serverの管理・設定や、開発することができるツールです。
クエリ(データベースにデータの検索・抽出を命令する文)は、 T-SQL(Transact-SQL)というSQL言語を使用します。
SSMSで開発をするには、まずSQL Serverをダウンロードして、その後にSSMSをダウンロードする必要があります。
2.SQL ServerとSSMSの構造
1) データベース

SQL Serverでは、複数のデータベースを管理しています。
データベースを大きく2つに分類すると、「System Database」と「User Database」で構成されています。
「System Database」は、SSMSのユーザーのログイン情報やデータベースのテンプレート内容など、SQL Serverが初めから用意してくれている管理用のデータベースです。
一方で、私達がSSMSでオリジナルのデータを管理・使用するためのデータベースを作成・使用する場合は、「User Database」を指します。
例えば、A社の社員情報・売上の情報などを格納するために『A_Company』データベースを作成したとします。
このデータを扱うにはSSMSにログインする必要がありますが、そのログインのIDやパスワードは「System Database」に管理され、A_Companyデータベースは「User Database」を指すようになります。
2) テーブル

SSMSでは、『テーブル』と呼ばれる「ファイル」のようなもので細かくデータを管理しています。
例えば、「A_Company」データベースの中では、A社の社員情報は『staff_mst』テーブルに、顧客情報は『customer_mst』テーブルに、売上情報は『order_mst』テーブルに分かれている、………という風にデータを細かく分類をすることができます。

このテーブルは表で管理されており、Excelをイメージすると良いと思います。
エクセルでもデータ管理する際に、1行目に項目名を入れ、2行目からデータを格納すると思います。
テーブルでも、テーブル内にカラムと呼ばれる項目をあらかじめ設定し、そのカラムに合うデータを格納します。
3) カラム

カラムとは上記でも簡単に説明しましたが、日本語で言うと「列」を表します。
例えば、「staff_mst」テーブルには、従業員番号を格納する『staff_no』カラム、従業員の名前を格納する『name』カラム、生年月日を格納する『birthday』カラム、………といったようにデータの格納場所を設定できます。
さらに、このカラムは一つ一つに「データ型」を設定できます。
例えば、『staff_no』カラムは①文字列しか格納できません ②5文字までしか格納できません、『name』カラムは①文字列しか格納できません ②50文字までしか格納できません、『birthday』カラムは①日付表記しか格納できません といったような設定ができます。
この設定に合うものしかデータを格納できず、個々に後からデータ型を変えることはできません。
4) レコード

レコードとは、日本語で言うと「行」を表します。
テーブルのデータを、横で見ていきます。
例えば、「A_Company」データベース内にある「staff_mst」テーブル内の「staff_no」カラムが『00001』の従業員は、「name」カラムは『SQL Hanako』で「birthday」かラムは『1990/01/01』という風に、1件1件のデータを表します。
5) フィールド

フィールドとは、エクセルで言うならば「セル」を表します。
例えば、「A_Company」データベース内にある「staff_mst」テーブル内の「staff_no」カラムが「00001」の「name」カラムは『SQL Hanako』である。という風に、あるレコードの1カラムを表します。
ここまで、SQL ServerとSSMSの構造についてお伝えしました。
データをSQLで検索したり、抽出するためにはこの構造の概念が必要となってきます。
データベースはフォルダ、テーブルはExcelファイル、カラムはExcelの列、レコードはExcelの行・テーブルはExcelのセル
3.代表的な構文について6つ紹介

ここからは、実際にSSMSを使用してデータを扱うための、T-SQL言語の代表的な構文について見ていきます。
データをテーブルから抽出したり、テーブルにデータを格納したりなどデータの操作をするためには、SQLを使用します。
冒頭でもお伝えしましたが、SSMSではT-SQLと呼ばれるSQL言語を使用します。
このT-SQL言語でよく使用する代表的な構文があるため、こちらを見ていきましょう。
簡単に説明すると、
(1)SELECT(テーブルの作成)(2)INSERT(データの格納)(3)SELECT(データの抽出)(4)UPDATE(データの更新)(5)DELETE(データの削除)(6)DROP(テーブルの削除)
です。
(1)CREATE
まず、以下のようなテーブルを例にあげます。
staff_mst
staff_no | name | birthday | Tel |
このようなテーブルを作成するとき、SSMSでは一般的に以下ようなのSQLを作成します。
1 2 3 4 5 |
CREATE TABLE [テーブル1] [カラム1] [データ型] [NULL or NOT NULL], [カラム2] [データ型] [NULL or NOT NULL], ... ; |
CREATE TABLE [テーブル1] で、[テーブル1] という名前のテーブルを作成します。
テーブルを作成する時に、同時にカラムの作成もします。
一番最後に記載されている[NULL or NOT NULL]とは、そのカラムでNULL(データなし)を許可するかどうかを決めます。
今回の例では、以下のようにデータ型とNULLの設定をします。
・staff_no (文字列型5桁、NULLは許可しない)
・name(文字列型50桁、NULLは許可しない)
・birthday(日付型、NULLは許可しない)
・tel(整数型、NULLは許可する)
それでは、実際にSQLを記載してみます。
1 2 3 4 5 6 |
CREATE TABLE staff_mst staff_no nvarchar(5) NOT NULL, name nvarchar(50) NOT NULL, birthday date NOT NULL, tel int NULL, ; |
データ型が専門用語であるため、初めて見る方は難しいかもしれませんが、興味がある方は検索してみると他にもたくさん出てくるでしょう。
これで、テーブルの作成が完了しました。
(2)INSERT
テーブルの大枠を作成できましたが、今の状態ではデータが無く空っぽな状態です。
今度は以下のようなデータを作成してみましょう。
staff_no | name | birthday | Tel |
00001 | SQL Hanako | 1990/1/1 | 01234567890 |
00002 | SQL Taro | 1990/8/31 | 11111111111 |
00003 | SSMS Jiro | 1992/1/1 | NULL |
テーブルにデータを格納する場合、INSERT文を使用します。
書き方は様々ありますが、一般的なSQLはこのように書きます。
1 2 3 4 5 6 7 8 |
INSERT INTO [テーブル1] ( [カラム1] ,[カラム2] , … ) VALUES( '値1' ,'値2', … ) ; |
それでは実際に、例のデータをINSERTする文を記載してみました。
1 2 3 4 5 6 7 |
INSERT INTO staff_mst ( staff_no, name, birthday, tel ) VALUES( '00001','SQL Hanako','1990-01-01',01234567890)( '00002','SQL Taro','1990-08-31',11111111111)( '00003','SSMS Jiro','1992-01-01',NULL) |
これで、作成したテーブルにデータを格納できました。
(3)SELECT
SELECTでは、データの検索をすることができます。
例えば、先ほど作成したデータから『「staff_no」が00001の人の名前を知りたい』とします。
このような時に、SELECT文の使用をします。
SELECT文にも書き方は様々ありますが、シンプルで簡単な例を書いてみます。
1 2 3 4 |
SELECT [カラム1] ,[カラム2] , … FROM [テーブル1] (WHERE 条件式;) |
SELECTの次に記載するカラム名は、テーブルの全てのカラムを記載しなくても良く、厳選することもできます。
また、WHEREから条件式を足すことで、データの絞り込みをすることができます。
今回は、『「staff_no」が00001の人』という絞り込みが必要なので、これを踏まえてSELECT文の記載をしてみます。
1 2 3 4 |
SELECT name FROM staff_mst WHERE staff_no = ‘00001’ |
これで、『SQL Hanako』という名前が結果に表示されます。
(4)UPDATE
UPDATEでは、データの更新をすることができます。
例えば、『staff_no「00003」の電話番号を88888887777に更新したい』といったような、既存のデータに対してUPDATEで上書きをすることができます。
staff_no | name | birthday | Tel |
00001 | SQL Hanako | 1990/1/1 | 01234567890 |
00002 | SQL Taro | 1990/8/31 | 11111111111 |
00003 | SSMS Jiro | 1992/1/1 | 88888887777 |
こちらも一例を書いてみます。
1 2 3 4 |
UPDATE [テーブル1] SET [カラム1] = ‘値1’ (WHERE 条件式) ; |
こちらは、WHERE文を記載しなければ、全ての[カラム1]の値を’値1’に上書きされます。
特定のカラムを更新したい場合は、条件式を記載する必要があります。
それでは、以下の表の例の『staff_no「00003」』という条件を踏まえて、SQLを書いてみます。
1 2 3 4 |
UPDATE staff_mst SET tel = 88888887777 (WHERE staff_no = ‘00003’) ; |
これで、カラムの更新をすることができました。
(5)DELETE
DELETEは、テーブルのフィールドもしくはデータ全てを削除することができます。
例えば、『staff_noが「00001」のフィールドを削除したい』というように、その条件に合うカラムを含んだフィールドが削除されます。
staff_no | name | birthday | Tel |
00002 | SQL Taro | 1990/8/31 | 11111111111 |
00003 | SSMS Jiro | 1992/1/1 | 88888887777 |
以下に基本的な書き方を記載します。
1 2 3 |
DELETE FROM [テーブル1] (WHERE 条件式) ; |
WHERE文を記載しなければ、テーブルの全てのデータを削除することができます。
今回は、『staff_noが「00001」』という条件が含まれるように、記載していきます。
1 2 3 |
DELETE FROM staff_mst WHERE staff_no = ‘00001’ ; |
(6)DROP
最後にDROPですが、こちらはテーブルそのものを削除することができます。
以下のように記載します。
1 |
DROP TABLE [テーブル1]; |
いたってシンプルで簡単です。
これを利用して、staff_mstを削除してみます。
1 |
DROP TABLE staff_mst; |
まとめ

色々な種類があるSQLで、今回はSSMSについて見ていきました。
初めの慣れないうちにこれだけを一気に理解するのは、とても大変だと思います。
わたし自身、SSMSを使用し始めて1年はとても苦労しました。
しかし少しずつ理解をしていくと、SSMSに限らず他のSQL言語でも似たような部分はあるためとても汎用性のあるものだなと感じました。
SSMSはMicrosoft社が開発したSQL Serverで使用するための開発ツールで、
データベース(棚)を作ってからテーブル(フォルダ)を作成してカラム(列)を定義し、
T-SQL(SQL言語)を用いてデータを操作する。
という大枠を掴めれば初めは十分であると思います。
これからSSMSにトライされる方、SSMSに何となく興味がある・知りたいと思っている方々に少しでも役に立つものになれば幸いです。
最後までご覧いただき、ありがとうございました。