未経験からエンジニア転職をするための最強ロードマップロードマップ

【SQL教材②】データの取得からデータの更新・削除方法、その他SQLの基本構文などを徹底解説(MySQL)

ファド

こんにちは!
PHPのLaravelやJavaScriptでWeb開発をしているフリラーンスエンジニアのファドと申します!

こちらの記事はSQL教材の第2回目の記事になります。

その他のSQL教材を学習したい方は下記リンクから直接教材へ飛ぶことができます。

目次

SQLでデータを取得する(SELECT)

SELECT文とはDBからデータを取得する命令文です。
膨大なデータの中から対象となるデータを探したり、
特定のカラムだけを並べたりするときにSELECT文を使います。

今まで学習してきた、CREATEやINSERTとは違ってSELECTは情報を取得するだけですので、直接データに変更を加えるものではありません。

使い方は以下のとおりです!

SELECT
    カラム名
FROM
    DB名.テーブル名;

以下のようにすれば複数のカラムを指定する事もできます!

SELECT
    カラム名1,
    カラム名2
FROM
    DB名.テーブル名;

※テーブル名のみでも取得はできますが、どのDBから取得しているのかをわかりやすくするために、DB名とセットで書く癖をつけておきましょう。

では、test01テーブルからデータの取得をしてみましょう!

SELECT
    name,
    age
FROM
    db_test.test01;

実行し、下記の画像のようにtest01テーブルに存在しているデータの中からnameとageの値のみ取得できていればOKです!

また、カラム名のところに*(アスタリスク)をつけることで、
全てのカラムを選択することができます。

SELECT
    *
FROM
    db_test.test01;

実行してみましょう!

画像のようにtest01テーブルからすべてのデータが取得できていればOKです!

★検索ワード
・SQL SELECT 使い方

条件検索(WHERE)

句とは命令文の後に付いて、その中の構成要素として使われます。
このWHERE句はSELECT文や、のちに説明するUPDATE文の中でよく使われます。

WHERE句は検索、絞り込みに使います。

使い方は以下のとおりです!

SELECT
    *
FROM
    DB名.テーブル名
WHERE
    条件式;

条件式には以下のようなものがあります。
=,<,>,AND,OR など


age >= 19 ・・・ ageカラムの値が19以上のものを取得する

name = “サトウ” ・・・ nameカラムの値が”サトウ”のものを取得する

name != “ナカタ” ・・・ nameカラムの値が”ナカタ”以外のものを取得する

以下のような種類の演算子があります。

演算子説明
=等しい
大きい
小さい
>=大きい、もしくは等しい
<=小さい、もしくは等しい
!=等しくない
<>等しくない
AND2つの条件を結合し、両方の条件が真
OR2つの条件のうち、どちらか一方が真
NOT式の結果を反転
BETWEEN a AND b対象のフィールドが a と b の範囲内
IN対象のフィールドが式の一覧の1つに一致
LIKE対象のフィールドがパターンに一致

では、実際にWHERE句を使用してみましょう!

SELECT
    *
FROM
    db_test.test01
WHERE
    age = 22;

画像のような検索結果が表示されていればOKです!

★検索ワード
・SQL WHERE 使い方

データの更新(UPDATE)

UPDATE文はすでにあるレコードを編集したいときに使います。
WHERE句で編集対象を絞り込みつつ、使用します。

使い方は以下のとおりです!

UPDATE
    DB名.テーブル名
SET
    項目名 = 更新する値
WHERE
    編集したいレコードを特定できる式;

では、実際にUPDATE文を使用してみましょう!

UPDATE
    db_test.test01
SET
    name = "鳥山明"
WHERE
    id = 1;

画像のように、idが1の人のnameの値が鳥山明になっていればOKです!

条件指定をしないと全てのカラムが対象となり、データが書き変わってしまうので注意しましょう。

UPDATE
    db_test.test01
SET
    age = 99;

上記のUPDATE文を実行すると、以下の画像のようになってしまいます。

★検索ワード
・SQL UPDATE 使い方

データの削除(DELETE)

レコードの削除にはDELETE文を使用します。
これもUPDATEと同じく、条件指定しないと全て消えてしまうので気を付けましょう。

使い方は以下のとおりです!

DELETE FROM
    DB名.テーブル名
WHERE
    条件式;

では、実際にDELETE文を使用してみましょう!

DELETE FROM
    db_test.test01
WHERE
    id >= 3;

画像のようにidが1、2のデータ以外がすべて削除されればOKです!

★検索ワード
・SQL DELETE 使い方

テーブル、データベースの削除(DROP)

テーブル、データベースの削除にはDROP文を使用します。
これもUPDATEと同じく、条件指定しないと全て消えてしまうので気を付けましょう。

使い方は以下のとおりです!

DROP TABLE DB名.テーブル名;

では、実際にDROP文を使用してみましょう!

DROP TABLE db_test.test01;

画像のようにtest01が削除されていればOKです!

★検索ワード
・SQL DROP 使い方

コメント

コメントはプログラムとして実行されないので、
書いたコードの説明や、メモ等に使うことができます。

使い方は以下のとおりです!

-- これはコメントです

複数行コメントの書き方は以下のとおりです!

/*
  コメント
  コメント
  コメント
*/

/**/で囲った部分がコメントになります。

★検索ワード
・SQL コメント

複数レコードのINSERT

先ほどDROPでテーブルごと削除してしまったので、
テスト用のテーブルが消えてしまいましたね。

今から同じものを作りますが、こんなときもSQLを使うと、
最初に行った画面操作より楽に作ることができます。

手順としては以下です。
①CREATE文でテーブルの作成
②INSERT文でデータの一括作成

INSET文はVALUESの値をいくつも連続で指定すれば、複数行のデータを一括で作ることができます。
では、実際にINSERT文で複数のレコードを一括で作成しましょう!

-- テーブル作成のCREATE文
CREATE TABLE db_test.test01 (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    age INT NOT NULL,
    code VARCHAR(255)
);

-- 複数レコード一括INSERT
INSERT INTO
    db_test.test01 (id, name, age, code)
VALUES
    (1, 'タロウ', 18, '001'),
    (2, 'ハナコ', 22, '001'),
    (3, 'イチロウ', 48, '002'),
    (4, 'キョウコ', 46, '002'),
    (5, 'ポチ', 3, '003');

画像のようにtest01テーブルが作成され、データが作成されていればOKです!

★検索ワード
・SQL INSERT 複数

IN

IN句は条件式などに使用します。
IN句内のリストに一致するものを取得できます。

使い方は以下のとおりです!

[対象の要素名] IN([値1,値2,値3…]);

では、実際にIN句を使用してみましょう!

SELECT
    id,
    name
FROM
    db_test.test01
WHERE
    name IN("タロウ", "ハナコ");

画像のようにnameの値がタロウとハナコのデータを取得できていればOKです!

★検索ワード
・SQL IN 使い方

LIKE

IN句と同じように条件式に使用でき、文字列を部分一致検索します。
基本的にWHERE句の後ろに、条件の一つとして記述することになります。

また、LIKE句には、ワイルドカードと呼ばれるものと一緒に使います。
ワイルドカード
% ・・・ 0文字以上の任意の文字列
_ ・・・ 任意の1文字

使い方は以下のとおりです!

SELECT
    列名
FROM
    テーブル名
WHERE
    列名 LIKE '検索文字';

では、実際にLIKE句を使用してみましょう!

SELECT
    id,
    name
FROM
    db_test.test01
WHERE
    name LIKE "キ%";

今回はnameの値がキ%という条件で検索したので、nameの値がキから始まるデータを取得しています。
なので、画像のようにnameの値がキョウコのデータを取得できていればOKです!

★検索ワード
・SQL LIKE 使い方

NOT

直後の条件式などを否定する際に使用します。

使い方は以下のとおりです!

SELECT
    カラム名
FROM
    テーブル名
WHERE
    カラム名 NOT LIKE '検索文字';

では、実際にNOTを使用してみましょう!

SELECT
    id,
    name
FROM
    db_test.test01
WHERE
    name NOT LIKE "キ%";

今度は先程のLIKE句の説明で検索したのとは反対にnameの値がキから始まらないデータを検索しています。
なので、画像のようにnameの値がキョウコ以外のデータを取得できていればOKです!

★検索ワード
・SQL NOT 使い方

iS NULL

指定されたカラムがnullのものを取得します。

使い方は以下のとおりです!

SELECT
    カラム名
FROM
    テーブル名
WHERE
    カラム名 is NULL;

では、実際にis NULLを使用してみましょう!

--検索用のデータを作成
INSERT INTO
    db_test.test01
VALUES
    (6, "コジロウ", 1, null);

--検索実行
SELECT
    *
FROM
    db_test.test01
WHERE
    code is NULL;

画像のようにcodeの値がnullであるコジロウのデータを取得できていればOKです!

★検索ワード
・SQL is NULL 使い方

COUNT

COUNTとは集計関数といって、数を数える関数です。
関数とは、単一の値もしくはデータの集合を処理して、その結果を返すものです。
関数を使うことで、四捨五入、合計値や平均値の算出といった処理を簡単に記述することができます。

カラムごとにカウントもできます。
その場合NULLはカウントしません。

使い方は以下のとおりです!

SELECT
    COUNT(カラム名)
FROM
    テーブル名;

では、実際にCOUNTを使用してみましょう!

SELECT
    COUNT(code)
FROM
    db_test.test01;

画像のようにCOUNT(code)が5と表示されていればOKです!

また、COUNT(*)とすることで全てのカラム(登録されているデータの数)をカウントできます。

その場合は下記のように使用します!

SELECT
    COUNT(*)
FROM
    db_test.test01;

こちらを実行すると以下の画像のようにCOUNT(*)が6と表示されます!

★検索ワード
・SQL COUNT 使い方

GROUP BY

GROUP BYは集計関数と一緒に使われることが多いです。
カラムごとの集計をするときに使用します。

使い方は以下のとおりです!

SELECT
    カラム名 、 COUNT(カラム名)
FROM
    db_test.test01
GROUP BY
    code;

では、実際にGROUP BYを使用してみましょう!

SELECT
    code,
    COUNT(code)
FROM
    db_test.test01
GROUP BY
    code;

画像のようにcodeの値ごとのカウント数が取得できていればOKです!
GROUP BYを使用することで、より詳細にカウント数を取得することができます!

★検索ワード
・SQL GROUP BY 使い方

AS

ASはCOUNTなどで取得した値についてカラム名を指定できます。
以下のコードをそれぞれ実行し、動きを見比べてみましょう!

-- ①code集計
SELECT
    code,
    COUNT(code)
FROM
    db_test.test01
GROUP BY
    code;

-- ②code集計 COUNT(code)のカラム名
SELECT
    code,
    COUNT(code) AS "各codeの数"
FROM
    db_test.test01
GROUP BY
    code;

①code集計

②code集計 COUNT(code)のカラム名

①でCOUNT(code)となっているカラム名が②では各codeの数となっています!
このようにカラム名を変更し、どういった値を集計しているのかということをわかりやすく表示させることができます。

★検索ワード
・SQL AS 使い方

次の教材

次の教材は下記から簡単に飛ぶことができます!
引き続きプログラミングを楽しんでいきましょう!

あわせて読みたい
【SQL教材③】HAVING句や内部結合・外部結合などのSQL応用構文を徹底解説(MySQL) こちらの記事はSQL教材の第3回目の記事になります。 その他のSQL教材を学習したい方は下記リンクから直接教材へ飛ぶことができます。 【HAVING】 HAVINGの説明の前に以...

プログラミング学習サポートについて

「独学で挫折した。。。」

「一人でのプログラミング学習がしんどい。。。」

「未経験からエンジニア転職をしたいけど何をしたら良いかわからない。。。」

このような悩みをお持ちの方向けに、本教材作成者のファドがMENTAという学習サイトにてあなたのプログラミング学習とエンジニア転職を徹底サポートいたします!

サポート価格はなんと1日あたりたったの約300円!

教材で分からない箇所のサポートはもちろんのこと、本サイトで公開しているすべての課題の解答も公開しております。
また、MENTAで学習を終わらせていただいた方限定で懇意にしていただいている企業さんを紹介することもあります!

なお、サポート内容の詳細は下記の通りです。

  • 目標設定
  • マインドセット
  • オリジナル教材見放題
  • オリジナル課題見放題
  • オリジナル課題の解答見放題
  • 課題コードレビュー
  • 教材への無制限質問
  • 課題への無制限質問
  • ポートフォリオ作成アドバイス
  • 褒めのコーチング

いくつかのプランを用意させていただいておりますので、下記より一度ご覧ください!

あわせて読みたい
【プログラミング学習】1日あたりたったの「300円」のみでプログラミングを学び、最短で転職or稼ぐ!|【ME... プログラミングを学びたいすべての方へこれからの時代は格安でプログラミングを学び、最短で稼げ自己紹介はじめまして!この度はプランをご覧いただき、誠にありがとうござ...

コメント

    この記事が気に入ったら
    フォローしてね!

    よかったらシェアしてね!
    • URLをコピーしました!

    コメント

    コメントする

    目次