RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

SQLの基本【まとめ】

こんにちは。エンジニアの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を学んでいく人の手助けになりましたら幸いです。

参考文献


  • エンジニア中途採用サイト
    ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
    ご興味ありましたら是非ご確認をお願いします。
    20210916153018
    https://career-recruit.rakus.co.jp/career_engineer/

  • カジュアル面談お申込みフォーム
    どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
    以下フォームよりお申込みください。
    forms.gle

  • イベント情報
    会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com

Copyright © RAKUS Co., Ltd. All rights reserved.