こんにちは。エンジニアのrs_shoです。
投稿は5回目になります。今回は初心者向けのSQLについて説明しようと思います。
◆ 関連記事
・【SQL入門】INSERT まとめ
・【SQL入門】UPDATE まとめ
・【SQL入門】DISTINCT 使い方
・RDBMSとDBMSについて【初心者向け】
・【RDBMS】PostgreSQLインストール・コマンド入門編
はじめに
この記事ではSQLを学び始めの方向けに、SQL文の書き方やどういった役割があるかを主に説明しています。
初心者の方に限らず、これどう書くっけ?ってなった人や、初心に帰って1から勉強している方の手助けにもなれましたら幸いです。
SQLとは
SQLについて軽く説明します。SQLとはデータベース言語と言われるもので、
データを検索(閲覧)、追加(保存)、更新、削除などを行うことができる言語です。
各SQLの命令文
データの検索(閲覧)
データの検索(閲覧)はSELECT文を使用します。SELECTは「選択する」という意味になるので、
欲しいデータを選択(抽出)するという単語の意味と一緒に覚えていただければ良いと思います。
SELECT文の書き方
SELECT文は以下のように記述します。
SELECT [カラム1], [カラム2], ... FROM [テーブル名];
SELECT文の使用方法
SELECT文の使用例は以下です。
抽出対象のテーブル 社員テーブル(employee)
employee_id | employee_name | age |
---|---|---|
00001 | 楽楽太郎 | 30 |
00002 | 楽楽次郎 | 24 |
00003 | 楽楽花子 | 22 |
全件検索を行うSQL(テーブルのすべてのデータを抽出)
SELECT employee_id, employee_name, age FROM employee;
全件検索SQLで抽出できる社員の結果
employee_id | employee_name | age |
---|---|---|
00001 | 楽楽太郎 | 30 |
00002 | 楽楽次郎 | 24 |
00003 | 楽楽花子 | 22 |
また、上記のSQLではカラム名を指定していますが、
カラム名を指定せず、すべてのカラムを検索(抽出)する方法があります。
カラム名が多く列挙するのが大変、カラム名をぱっと思い出せない場合に有効です。
全件検索を行うSQL(テーブルのすべてのデータを抽出, カラムは指定しない)
SELECT * FROM employee;
全件検索SQL(カラム指定なし)で抽出できる社員の結果
employee_id | employee_name | age |
---|---|---|
00001 | 楽楽太郎 | 30 |
00002 | 楽楽次郎 | 24 |
00003 | 楽楽花子 | 22 |
データの登録(挿入)
データの登録(挿入)はINSERT文を使用します。INSERTは「挿入する」という意味になるので、
こちらもSELECT文同様に単語の意味と一緒に覚えると覚えやすいと思います。
INSERT文の書き方
INSERT文は以下のように記述します。
INSERT INTO [テーブル名] ([カラム1], [カラム2], ...) VALUES ([カラム1にいれる値], [カラム2にいれる値], ...);
INSERT文の使用方法
INSERT文の使用例は以下です。
挿入対象のテーブル 社員テーブル(employee)
employee_id | employee_name | age |
---|---|---|
00001 | 楽楽太郎 | 30 |
00002 | 楽楽次郎 | 24 |
00003 | 楽楽花子 | 22 |
社員コード00004
, 社員名楽楽三郎
, 年齢22歳
のデータを登録するSQL(挿入)
INSERT INTO employee (employee_id, employee_name, age) VALUES ('00004','楽楽三郎',22);
データ挿入SQLで1件挿入した社員テーブルのデータ
employee_id | employee_name | age |
---|---|---|
00001 | 楽楽太郎 | 30 |
00002 | 楽楽次郎 | 24 |
00003 | 楽楽花子 | 22 |
00004 | 楽楽三郎 | 22 |
また、複数データを1つのSQL文で一括で登録することも可能です。
書き方としてはVALUESのカッコをカンマで区切って複数記載します。
社員コード00004
, 社員名楽楽三郎
, 年齢22歳
と、
社員コード00006
, 社員名楽楽部長
, 年齢31歳
のデータを登録するSQL(挿入)
INSERT INTO employee (employee_id, employee_name, age) VALUES ('00004','楽楽三郎',22), ('00006','楽楽部長',31);
データ挿入SQLで2件挿入した社員テーブルのデータ
employee_id | employee_name | age |
---|---|---|
00001 | 楽楽太郎 | 30 |
00002 | 楽楽次郎 | 24 |
00003 | 楽楽花子 | 22 |
00004 | 楽楽三郎 | 22 |
00006 | 楽楽部長 | 31 |
SELECT文の *
のように、カラム名を指定せずに登録することも可能です。
書き方としてはINTO [テーブル名] の後にカラム名をカッコに列挙する箇所を記載しないようにするだけです。
(※意図しないカラムにデータが入ることを防ぐために、INSERTではカラムを指定することを強くオススメします!)
社員コード00004
, 社員名楽楽三郎
, 年齢22歳
のデータを登録するSQL(挿入)
INSERT INTO employee VALUES ('00004','楽楽三郎',22);
データ挿入SQL(カラム指定なし)で1件挿入した社員テーブルのデータ
employee_id | employee_name | age |
---|---|---|
00001 | 楽楽太郎 | 30 |
00002 | 楽楽次郎 | 24 |
00003 | 楽楽花子 | 22 |
00004 | 楽楽三郎 | 22 |
データの更新(編集)
データの更新(編集)はUPDATE文を使用します。UPDATEも「更新する」という意味になるので、
こちらも他のSQLの命令文同様に単語の意味と一緒に覚えてください!
UPDATE文の書き方
UPDATE文は以下のように記述します。
UPDATE [テーブル名] SET [カラム1] = [値], [カラム2] = [値], ...;
UPDATE文の使用方法
UPDATE文の使用例は以下です。
更新対象のテーブル 社員テーブル(employee)
employee_id | employee_name | age | employment_status |
---|---|---|---|
00001 | 楽楽太郎 | 30 | 正社員 |
00002 | 楽楽次郎 | 24 | 正社員 |
00003 | 楽楽花子 | 22 | 契約社員 |
社員全員の雇用形態を正社員に更新するSQL(編集)
UPDATE employee employment_status = '正社員';
データ更新SQLで更新した社員テーブルのデータ
employee_id | employee_name | age | employment_status |
---|---|---|---|
00001 | 楽楽太郎 | 30 | 正社員 |
00002 | 楽楽次郎 | 24 | 正社員 |
00003 | 楽楽花子 | 22 | 正社員 |
UPDATE文はSET後に記載されたカラムのみを更新するため、更新したくないカラムがある場合は記載しないようにしてください。
また、UPDATE文は条件指定をしない場合、テーブル全体に更新がかかってしまうため、
特定のデータのみ更新したい場合は、後述するWHERE句についての説明をご確認ください。
(※(厳密に言うと方法はありますが)カラム名は必ず指定する必要があるので、SELECT文やINSERT文のSQLのように省略はできません)
データの削除
データの削除はDELETE文を使用します。DELETEは「削除する」という意味なので、
こちらも他のSQLの命令文同様、単語の意味と一緒に覚えてください!
DELETE文の書き方
DELETE文は以下のように記述します。
DELETE FROM [テーブル名];
DELETE文の使用方法
DELETE文の使用例は以下です。
削除対象のテーブル 社員テーブル(employee)
employee_id | employee_name | age |
---|---|---|
00001 | 楽楽太郎 | 30 |
00002 | 楽楽次郎 | 24 |
00003 | 楽楽花子 | 22 |
社員テーブルのデータを全削除するSQL
DELETE FROM employee;
データ削除SQLで削除した社員テーブルのデータ
employee_id | employee_name | age |
---|---|---|
DELETE文はUPDATE文同様、そのまま実行するだけではテーブルの全データを削除してしまうため、
特定のデータだけを削除したい場合は、後述するWHERE句についての説明をご確認ください。
条件指定
SELECT, UPDATE, DELETEは、条件を満たすデータにのみ実行したくなることが多々あります。
そういった時にはSQLのWHERE句と呼ばれるものを使用します。
WHERE句の書き方
WHERE句は以下のように記述します。
{SQLの命令文} WHERE [カラム1] = [値];
WHERE句は条件指定でデータを選択することができます。
上記で記載した比較演算子=
以外にも、様々な演算子を使用することができます。
演算子の記号 | 意味 | 用途 |
---|---|---|
= | 等しい | 記載した値と等しいデータにのみ |
<= | 以下 | 記載した値以下のデータにのみ |
>= | 以上 | 記載した値以上のデータにのみ |
< | より小さい(未満) | 記載した値より小さい値のデータにのみ |
> | より大きい | 記載した値より大きい値のデータのみ |
WHERE句の使用方法
WHERE句の使用例は以下です。
操作対象のテーブル 社員テーブル(employee)
employee_id | employee_name | age | employment_status |
---|---|---|---|
00001 | 楽楽太郎 | 30 | 正社員 |
00002 | 楽楽次郎 | 24 | 正社員 |
00003 | 楽楽花子 | 22 | 契約社員 |
SELECT文のWHERE句の使い方
SELECT文(employee_idが00002
と等しいデータのみ抽出するSQL)
SELECT employee_id, employee_name, age FROM employee WHERE employee_id = '00002';
employee_idが00002
と等しいデータの抽出結果
employee_id | employee_name | age | employment_status |
---|---|---|---|
00002 | 楽楽次郎 | 24 | 正社員 |
SELECT文(ageが24歳以下のデータのみ抽出するSQL)
SELECT employee_id, employee_name, age FROM employee WHERE age <= 24;
ageが24歳以下のデータの抽出結果
employee_id | employee_name | age | employment_status |
---|---|---|---|
00002 | 楽楽次郎 | 24 | 正社員 |
00003 | 楽楽花子 | 22 | 契約社員 |
UPDATE文のWHERE句の使い方
UPDATE文(ageが24歳以上のデータのみ管理職に更新)
UPDATE employee employment_status = '管理職' WHERE age >= 24;
ageが24歳のデータを管理職に更新したテーブルのデータ
employee_id | employee_name | age | employment_status |
---|---|---|---|
00001 | 楽楽太郎 | 30 | 管理職 |
00002 | 楽楽次郎 | 24 | 管理職 |
00003 | 楽楽花子 | 22 | 契約社員 |
DELETE文のWHERE句の使い方
DELETE文(employment_statusが契約社員の人のみ削除)
DELETE FROM employee WHERE employment_status = '契約社員';
employee_statusが契約社員のデータを削除したテーブルのデータ
employee_id | employee_name | age | employment_status |
---|---|---|---|
00001 | 楽楽太郎 | 30 | 正社員 |
00002 | 楽楽次郎 | 24 | 正社員 |
まとめ
いかがだったでしょうか。久しぶりに事細かくSQLについて書いたので、僕自身も勉強になりました。
初めてSQLを触る方、まだ使い方に慣れていない方など、これからSQLを学んでいく人の手助けになりましたら幸いです。
参考文献
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
forms.gleイベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com