こんにちは!
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カラムの値が”ナカタ”以外のものを取得する
以下のような種類の演算子があります。
演算子 | 説明 |
---|---|
= | 等しい |
> | 大きい |
< | 小さい |
>= | 大きい、もしくは等しい |
<= | 小さい、もしくは等しい |
!= | 等しくない |
<> | 等しくない |
AND | 2つの条件を結合し、両方の条件が真 |
OR | 2つの条件のうち、どちらか一方が真 |
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 使い方
次の教材
次の教材は下記から簡単に飛ぶことができます!
引き続きプログラミングを楽しんでいきましょう!
プログラミング学習サポートについて
「独学で挫折した。。。」
「一人でのプログラミング学習がしんどい。。。」
「未経験からエンジニア転職をしたいけど何をしたら良いかわからない。。。」
このような悩みをお持ちの方向けに、本教材作成者のファドがMENTAという学習サイトにてあなたのプログラミング学習とエンジニア転職を徹底サポートいたします!
サポート価格はなんと1日あたりたったの約300円!
教材で分からない箇所のサポートはもちろんのこと、本サイトで公開しているすべての課題の解答も公開しております。
また、MENTAで学習を終わらせていただいた方限定で懇意にしていただいている企業さんを紹介することもあります!
なお、サポート内容の詳細は下記の通りです。
- 目標設定
- マインドセット
- オリジナル教材見放題
- オリジナル課題見放題
- オリジナル課題の解答見放題
- 課題コードレビュー
- 教材への無制限質問
- 課題への無制限質問
- ポートフォリオ作成アドバイス
- 褒めのコーチング
いくつかのプランを用意させていただいておりますので、下記より一度ご覧ください!
コメント