ITに携わる人が避けては通れない必須スキル「SQL」。データを取り扱う上で重要な存在なのです。一見するとアルファベットだらけで難しそうに見えますが、プログラミング言語と比べて非常に簡潔で、覚えることも多くありません。しかも、数学の公式のような構文に当てはめるだけで誰でも使いこなすことが出来ます。それを体感して貰えるよう、今回の記事では重要なポイントに絞って解説し、実際にSQLを想像しながら読み進められる内容となっています。
「SQL」とは?SQLを扱うための基礎知識
SQL(Structured Query Language)とは、情報の集まりであるデータベースを操作する言語です。データベースを作ったり、そこから特定のデータを探して取り出したり、データを追加・削除したり、更新したりすることができます。
「言語」ではあるものの、SQLはデータベースを操作する命令しか出すことができない点でプログラミング言語とは性質が異なります。
データベースは、登録者の氏名や連絡先、ログインIDやパスワード、位置情報や距離といった数値の記録などのデータを管理しており、Webアプリケーションやソフトウェア、Webサイトなどさまざまなシステムにおいて欠かせないものです。そのため、それを取り扱うために必要となるSQLも必須のスキルなのです。
データベースの基礎知識
SQLを理解するにあたって、まずはデータベースについての知識も必要です。ここからは重要なポイントに絞って解説します。
まず、データベースには表形式でデータが格納されています。Excelの表などをイメージすると分かりやすいでしょう。そして、その一つの表を「テーブル」と呼びます。さらに、この表の中の列のことを「カラム」、行を「レコード」と呼びます。SQLでは、これら「テーブル」「カラム」「レコード」の単位で考えることが多いので、ここでしっかりと覚えておきましょう。
テーブルやカラム、レコードは自分で自由に作り、データを入れることができます。ただし、決まりや制約があったり、案件によっては独自のルールがあったりすることもあります。ここでは、特に押さえておきたい3つのポイントを紹介します。
1.【規則】「id」など、その情報1つがあればレコードを特定できるカラム(主キー)が必須2.【一般的なルール】カラム名はすべて小文字の英語にする(よく使われるルール)
3.【一般的なルール】複数単語の場合は「_(アンダーバー)」でつなぐ(よく使われるルール) ex. 「record id」→「record_id」
ポイント1に出てくる「主キー」は、その情報一つでデータを特定できるカラムのことです。例えば、「苗字が佐藤」では1人に特定できない場合でも、「idが1の人」なら特定することができます。これがあると、同姓同名など同じ情報を持っている人を見分けることができるので、とても重要なカラムなのです。
SQLのルール
テーブルと同じように、SQLにも規則やルールがあります。ここでは、特に押さえておきたい3つのルールを紹介します。
1.文末には「;(セミコロン)」をつける
2.全てのデータを取り出したい時は「*(アスタリスク)」
3.文字列は「’(シングルクオーテーション)」でかこむ
【基本構文】データベーステーブルの操作
ここからは、実際にSQLの構文を見ながら操作方法を解説していきます。
テーブルの作成:CREATE TABLE
まずは、データベースを扱ううえで最初に行うテーブルの作成です。作成する際には下記の「CREATE TABLE」構文を使います。[ ]で囲まれているのが、自分で書き換える箇所です。
CREATE TABLE employee (
employee_id (INT),
first_name (VARCHAR),
last_name (VARCHAR),
department_id (INT),
PRIMARY KEY (employee_id)
);
「データ型」とは、データの種類のことです。例えば、数値型や文字列型、日付型、時刻型など、さまざまあります。複雑な内容なのでここでは詳しく取り上げず、例の中では数値型を意味する「INT」と、文字列型を意味する「VARCHAR」を使います。
では、実際に、次のような「employee」という名前のテーブルを作成してみます。
表のとおりにテーブル名やカラム名を入れていくのですが、一点だけ、テーブルの規則でご紹介した『「id」など、その情報1つがあればレコードを特定できるカラム(=主キー)が必須』の制約がかかることに注意してください。
それが一番下の「PRIMARY KEY([主キー])」の部分です。どのカラムが主キーとなるか、明示してあげましょう。ここでは「employee_id」を指定します。
CREATE TABLE employee (
employee_id (INT),
first_name (VARCHAR),
last_name (VARCHAR),
department_id (INT),
PRIMARY KEY (employee_id)
);
カラムの追加:ALTER TABLE
次に、既に作成したテーブルにカラムを追加してみます。「うっかり入れ忘れた!」「新しく追加したデータも管理できるようにしたい」といった場合に役立ちます。その際に使うのが、下記の「ALTER TABLE」構文です。
ALTER TABLE [テーブル名] ADD [追加するカラム名 追加するカラムのデータ型];
では、先ほど作成したemployeeテーブルに年齢のカラム「age」を追加してみましょう。
ALTER TABLE employee ADD age INT;
DROP TABLE:テーブルの削除
次に、テーブルの削除です。下記の構文を使うと削除できますが、中のデータも含めて丸ごと消えてしまい、戻すことはできないので、使う際には注意しましょう。
DROP TABLE テーブル名;
employeeテーブルを削除する場合は下記のようになります。
DROP TABLE employee;
【基本構文】データの操作
ここからは、データベースの中にあるデータを操作する際に必ず使う、基本的な構文を紹介します。
データ取得:SELECT文
最も基本となるのが、データベースからデータを取得する「SELECT」文です。
SELECT [カラム名] FROM [テーブル名];
では、このテーブルから全てのカラムのデータを取り出してみましょう。全てのデータは「*(アスタリスク)」を使うと表現することができます。
すると、SQLは次のようになります。
SELECT * FROM employee;
条件を指定する:WHERE句
取り出す情報に、例えば「idが1の人」や「加藤一郎さん」など、条件を付けたい場合もあります。その際に使うのが「WHERE句」です。SQL文の最後に、「WHERE [条件]」を付け加えるだけで、指定することができます。
実際に、「employee_idが1の人」という条件を指定すると、下記のようになります。
SELECT * FROM employee WHERE employee_id = 1;
ちなみに、WHERE句には複数の条件を指定することも可能です。その場合は、「WHERE 条件A AND 条件B」のように、それぞれの条件をANDでつなぎます。そうすると、「条件Aと条件Bのどちらも満たす場合」の指定をすることが可能です。
データ登録:INSERT文
既存のテーブルに新しいレコードを追加したい場合の構文です。例えば「新しい社員が入った」場合などに使います。
INSERT INTO [テーブル名]([カラム名1], [カラム名2], ……) VALUES([値1], [値2], ……);
実際に、次のデータを追加してみましょう。
employee_id:6
first_name:仲原
last_name:光
department_id:1
INSERT INTO テーブル名(employee_id, first_name, last_name, department_id) VALUES(6, ‘仲原’, ‘光’, 1);
ここで注意してほしいのが、SQLのルールでご紹介した『 文字列は「’(シングルクオーテーション)」でかこむ』です。忘れるとエラーになるので、必ずつけましょう。
データ更新:UPDATE文
既にテーブルに登録されている情報を更新する構文です。例えば、「結婚して苗字が変わった」「間違えて登録した」といった場合に使います。
UPDATE [テーブル名] SET [更新処理] WHERE [条件];
実際に、「佐藤 美津子」さんを「谷口 美津子」さんに変更してみましょう。
UPDATE employee SET firstname = ‘谷口’ WHERE employee_id = 2;
条件のWHERE句で「佐藤 美津子」という名前を指定することも可能ではありますが、主キーであるemployee_idで指定すると簡単です。また、同姓同名の人を誤って更新することもないので、主キーを活用しましょう。
データ削除:DELETE文
テーブルのデータを削除するための構文です。テーブルを丸ごと消すわけではありませんが、復元はできないので、必要なデータを消さないよう、条件の付け方などには細心の注意を払いましょう。
DELETE FROM [テーブル名] WHERE [条件];
実際に、「田中 孝」さんのデータを削除してみます。
DELETE FROM employee WHERE employee_id = 1;
まとめ
今回は、SQLを学び始める上で最も基礎となる情報や構文を解説しました。後編では、より複雑なデータを取り出すためのSQLや、さらに使いこなすために必要な関数などの解説をします。 前編と後編を合わせて読めば、これからSQLを活用していくために必要な知識はバッチリです!ぜひ、後編もチェックしてみてください。