WEB開発/システム開発の実務経験を踏まえて、SQLについて入社前に知っておくと良さそうなことをまとめてみた

SQL
<br>

こんにちは、かしむらです。

都内常駐のフリーエンジニアです。

2021年7月現在はReact/Goを使っています。

・エンジニア歴5年

・朝もくサロン運営

・突き抜けエンジニアサロン講師

・Twitter(フォロワー2,000名以上)で情報発信

・インスタグラムで基本情報技術者の対策資料投稿

など色々やっている人です。

この記事では、これまでにサーバサイドを4年以上経験しているエンジニアが経験を踏まえて、『SQL』について入社前に知っておくと良さそうなことをまとめてみました。

ことの発端は以下のツイートです。「入社前にSQLはどれくらい理解しておけば良いか分からない」という方がいらっしゃるということが分かったので、これらを記事でさらに細かく解説しようと思いました。

この記事は下記に該当する方を対象としています。

・開発エンジニアを目指していて、SQLを学習中の方

・SQLを学習したいけど何を重点的に押さえた方がいいか分からない方

上記に該当する方にはかなり役立つ内容となっておりますので、ぜひ最後までご覧ください。

1.SQLの基礎知識

SQLは、データベースに格納されたデータを操作したり、テーブルを作成することができる言語です。SQLを学習する上で、データベースの理解は必須ですので、しっかり基礎を押さえましょう。

1−1.データとDB(データベース)

システムは、例えば以下のようなデータを取り扱います。SQLはこのようなデータを抽出したり、テーブルへデータを登録したり、データの削除をおこなう言語です。

・顧客情報 → お客さんの情報。年齢、住所、職業など

・商品情報 → 商品一つ一つの情報。商品コード、商品名、価格、商品画像など

・売上情報 → このお店でこの商品は何個売れたか、何時に売れたか、など

また、データベースとはデータを集めて整理しておくことができる、表のイメージのようなものです。エンジニアは略して「DB」と呼んでいる人がほとんどです。

1−2.SQL

SQLはStructured Query Languageの略です。データベースを操作することができる言語で、「非手続き型言語」と訳します。

かしむら
かしむら

SQLは「DML」「DDL」「DCL」と3つ種類があります。この記事では、それぞれで重要な部分を詳細に解説します!解説する用語は重要なので繰り返し学習しておきましょう。

■DML(Data Manipulation Language):データ操作言語

SELECT(データ抽出)、INSERT(データ登録)、UPDATE(データ更新)、DELETE(データ削除)などがあります。

■DDL(Data Definition Language):データ定義言語

CREATE TABLE(テーブル作成)、ALTER TABLE(テーブル情報変更)、DROP TABLE(テーブル削除)などがあります。

■ DCL(Data Control Langeage):データ制御言語

GRANT(権限付与)、COMMIT(コミット)、ROLLBACK(ロールバック)などがあります。

2.入社前に押さえておくべきこと

では入社前に押さえておきべきことを解説していきます。これまでの経験から、入社前にこれだけは押さえておいた方が良い業務でよく使う知識なので知っておくと役に立つことを挙げていきます。WEB開発、システム開発の企業へ入社される方は是非参考にしてください。

2−1.DML(Data Manipulation Language):データ操作言語

かしむら
かしむら

SQLといえばコレ!

SELECT文、INSERT文、UPDATE文、DELETE文はコレに該当します。

2−1−1.SELECT文:データの抽出

SQLで一番よく現場で使うのがこの「SELECT文」になります。テーブルから抽出したい列と抽出条件を指定します。

押さえるべき!基本的な形

SELECT 列名1, 列名2, 列名3 FROM テーブル名 WHERE 抽出条件

押さえるべき!よく使う条件文

これらはSELECT文と組み合わせて使用することで、抽出条件を絞ることができます。現場でもよく使うので、これくらいは覚えてしまった方がいいです。

条件文意味
WHEREグループ化する前の抽出条件
ORDER BYソート順
GROUP BYグループ化
HAVINGグループ化した後の抽出条件
副問合せ問合せの中に問合せ
UNION重複を含めずに結合
UNION ALL重複を含めて結合
LIKEあいまい検索
EXISTS存在するか
OUTER JOIN外部結合
INNER JOIN内部結合
BETWEEN範囲指定

意味が分かればOK!基本的な例文

テーブル:「商品情報_T」

商品ID商品名単価店舗ID登録日
A001Java書籍1400ST4102021-06-12
A002PHP書籍1300ST6702021-07-04
A003C#電子書籍1080ST4302021-06-12
A004Java電子書籍1080ST4602021-07-06

このテーブルから「単価」が1,300円以上の商品の「商品ID」「商品名」を抽出するSQL

SELECT 商品ID, 商品名 FROM 商品情報_T WHERE 単価 >= 1300

抽出結果↓

商品ID商品名
A001Java書籍
A002PHP書籍

2−1−2.INSERT文:データの登録

これも現場でよく使うSQLになります。テーブルへデータを追加していくときはこのINSERT文を実行します。

押さえるべき!基本的な形

INSERT INTO テーブル名 ( 列名1, 列名2, 列名3 ) VALUES ( 値1, 値2, 値3 )

意味が分かればOK!基本的な例文

テーブル:「商品情報_T」

商品ID商品名単価店舗ID登録日
A005Ruby書籍1700ST2402021-06-15
A006React電子書籍1080ST5202021-07-08

このテーブルへ以下のデータを登録するSQL

商品ID商品名単価店舗ID登録日
A007Vue書籍1600ST8802021-07-13

INSERT INTO  商品情報_T (商品ID, 商品名, 単価, 店舗ID, 登録日) VALUES (‘A007’, ‘Vue書籍’, 1600, ‘ST880’, ‘2021-07-13’)

INSERT文実行後の抽出結果↓

商品ID商品名単価店舗ID登録日
A005Ruby書籍1700ST2402021-06-15
A006React電子書籍1080ST5202021-07-08
A007Vue書籍1600ST8802021-07-13

2−1−3.UPDATE文:データの更新

これも現場でよく使うSQLになります。テーブルの中で更新したいデータの条件を指定して、更新処理を行うことができます。「WHERE」句を指定しないと全データを対象に更新処理を行ってトラブルを起こしかねないので注意しましょう。

押さえるべき!基本的な形

UPDATE テーブル名 SET 列名1 = 値1, 列名2 = 値2 WHERE 更新条件

意味が分かればOK!基本的な例文

テーブル:「商品情報_T」

商品ID商品名単価店舗ID登録日
A005Ruby書籍1700ST2402021-06-15
A006React電子書籍1080ST5202021-07-08
A007Vue書籍1600ST8802021-07-13

「単価」が1500円以上のデータの「店舗ID」を、NULLに更新するSQL

UPDATE 商品情報_T SET 単価 = NULL WHERE 単価 >= 1500

UPDATE文実行後の抽出結果↓

商品ID商品名単価店舗ID登録日
A005Ruby書籍1700NULL2021-06-15
A006React電子書籍1080ST5202021-07-08
A007Vue書籍1600NULL2021-07-13

2−1−4.DELETE文:データの削除

これも現場でよく使うSQLになります。テーブルの中で削除したいデータの条件を指定して、削除処理を行うことができます。「WHERE」句を指定しないと全データを対象に削除処理を行ってトラブルを起こしかねないので注意しましょう。

押さえるべき!基本的な形

DELETE FROM テーブル名 WHERE 削除条件

意味が分かればOK!基本的な例文

テーブル:「商品情報_T」

商品ID商品名単価店舗ID登録日
A006React電子書籍1080ST5202021-07-08
A007Vue書籍1600ST8802021-07-13
A008CSS書籍1400KJ5602021-07-14

「店舗ID」が「ST」で始まるデータを削除するSQL

DELETE FROM 商品情報_T WHERE 店舗ID LIKE ‘ST%’

DELETE文実行後の抽出結果↓

商品ID商品名単価店舗ID登録日
A006React電子書籍1080ST5202021-07-08
A007Vue書籍1600ST8802021-07-13

2−2.DDL(Data Definition Language):データ定義言語

2−2−1.CREATE文:テーブル作成

データを格納しておくためのテーブルは「CREATE文」を実行することで作成することができます。ここら辺はProgateに専用コースがないので、知らない方が大半だと思いますが、実務では必須レベルなので押さえておきましょう。

押さえるべき!基本的な形

CREATE TABLE テーブル名 ( 列名1 型1, 列名2 型2, 列名3 型3 )

意味が分かればOK!基本的な例文

テーブル:「商品情報_T」

列名サイズNOT NULL
商品IDvarcher4
商品名varchar30
単価int8
店舗IDvarchar5
登録日date

上記テーブルを作成するSQL

CREATE TABLE 商品情報_T {
  `商品ID` varchar(4) NOT NULL ,
  `商品名` varchar(30) ,
  `単価` int(8) ,
  `店舗ID` varchar(5) ,
  `登録日` date
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

2−2−2.ALTER文:テーブル更新

上記「CREATE文」で作成したテーブルは、「ALTER文」を実行することで列定義を変更することができます。これも実務では必須レベルなので押さえておきましょう。

押さえるべき!基本的な形

・テーブル名を変更するSQL

ALTER TABLE 変更前テーブル名 RENAME TO 変更後テーブル名

・列名を変更するSQL

ALTER TABLE テーブル名 RENAME 変更前列名 TO 変更後列名

意味が分かればOK!基本的な例文

テーブル:「商品情報_T」

列名サイズNOT NULL
商品IDvarcher4
商品名varchar30
単価int8
店舗IDvarchar5
登録日date

上記テーブル名「商品情報_T」を「商品NEW_T」へ変更するSQL

ALTER TABLE 商品情報_T RENAME TO 商品NEW_T

上記テーブルの列名「登録日」を「登録日時」へ変更するSQL

ALTER TABLE 商品情報_T RENAME 登録日 TO 登録日時

2−2−3.DROP文:テーブル削除

上記「CREATE文」で作成したテーブルは、「DROP文」を実行することで削除することができます。これも実務では使用することがあるので押さえておきましょう。

押さえるべき!基本的な形

DROP TABLE テーブル名

意味が分かればOK!基本的な例文

テーブル「商品情報_T」を削除するSQL

DROP TABLE 商品情報_T

テーブル「商品情報_T」が存在する場合のみ削除するSQL

DROP TABLE IF EXISTS 商品情報_T

2−2−4.テーブルデータの削除

「TRUNCATE文」を実行することでテーブルの全レコード削除することができます。これも実務では使用することがあるので押さえておきましょう。

押さえるべき!基本的な形

TRUNCATE TABLE テーブル名

意味が分かればOK!基本的な例文

テーブル「商品情報_T」の全データを削除するSQL

TRUNCATE TABLE 商品情報_T

2−4.PL/SQL:手続き型言語

PL/SQLとは、「Procedure Language/Structed Query Language」の略で、「手続き型言語」と訳します。

SQL(非手続き型言語)は一つの命令をおこなうのに対し、PL/SQLは複数の命令を一度の実行でおこなうことができます。PL/SQLは、SQLを拡張した言語になります。

SQLはどの開発現場でも使用します。しかし、PL/SQLは使用されていない現場も多いです。経験上、大量のデータを取り扱う大規模な現場で使用されることが多いと感じます。

そのため、PL/SQLは学習必須ではないと個人的に思います。余裕があれば触れておくと良いでしょう。

参考になれば幸いです!

コメント

タイトルとURLをコピーしました