見出し画像

データベース、SQL文の"簡単な"覚え方 入門①

本ページはmySQLを想定して作成した記事です。一部内容は他DBでは実行できない可能性もあります。データベースの初期構築については省略します。

目次
1、前準備
2、単一テーブルでの検索(SELECT,FROM)
3、単一テーブルでの検索(WHERE句)

本文で分からない所がある場合は、Twitterのダイレクトメッセージでお気軽にお聞きください。 → 筆者にダイレクトメッセージ

1、前準備

下記の文を実行してください。
(下記のSQL文の意味については、まだ理解出来なくて問題ありません)

CREATE DATABASE shop;

CREATE TABLE shop.customer (
       cusID char(4) comment '顧客ID' PRIMARY KEY,
       Name varchar(255) comment '顧客名' ,
       age int comment '年齢' ,
       kingaku int comment '利用金額' 
);

USE shop;

INSERT INTO customer VALUES('C001', '山田太郎',45,45000);
INSERT INTO customer VALUES('C002', '鈴木一郎',52,23000);
INSERT INTO customer VALUES('C003', '佐藤光一',23,33000);
INSERT INTO customer VALUES('C004', '福田美鈴',22,1000);
INSERT INTO customer VALUES('C005', '大山美香',31,150000);
INSERT INTO customer VALUES('C006', '木本康',75,450000);
INSERT INTO customer VALUES('C007', '島田浩平',33,87500);
INSERT INTO customer VALUES('C008', '中田拓哉',21,300000);
INSERT INTO customer VALUES('C009', '樋口一葉',20,230000);
INSERT INTO customer VALUES('C010', '野口英雄',42,6000);



2、単一テーブルでの検索(SELECT,FROM)

前準備では、顧客を管理するテーブルを作成しました。

作成したテーブルを使用して簡単な検索を行いましょう。

下記の文を実行してください。

SELECT cusID,Name
FROM customer;

実行結果

実行結果②


==================================
「SELECT」では、閲覧したい列を指定します。今回は cusID、Nameを指定しました。上記のコードのcusIDをageに変えたり、Nameを消したりすると表示される列が変わります。実際に書き換えて実行してみてください。複数の列選択する場合は「,」で区切る必要があります。

よくあるミス
→SELECT、FROMの後に半角スペースが入っていない
→文の最後に「;」を記述していない   
     →「;」は、”この文はココで終了です”の合図

==================================

「FROM」ではテーブルを指定しています。

今回の記述
 SELECT <列名><列名>
 FROM <テーブル名>


3、単一テーブルでの検索(WHERE句)

WHERE句は、SQLで最初につまずく問題です。
まずは数値に対して条件を付けるWHERE句をご紹介します。
下記の文を実行してください。

SELECT cusID,name,age
FROM customer
WHERE age <= 30;

実行結果

実行結果③

これは、age(年齢)が30以下の顧客を抽出しています。

実行結果③-2

さきほど使用した不等号「<=」は、〇〇より小さい"を表します。

不等号

よくあるミス
→不等号が全角になっている

今回の記述
 SELECT <列名><列名><列名>
 FROM <テーブル名> 
 WHERE <列名> <不等号> <数値>

==================================

では、上記以外のパターンを実行してもらいます。不等号や列名を変えて、どう書き換えたら良いか、考えて実行してみてください。

①age(年齢)が30歳より上のcusID(顧客ID),Name(顧客名),age(年齢)の顧客を抽出
②age(年齢)が42歳のcusID(顧客ID),Name(顧客名),age(年齢)の顧客を抽出
③kingaku(利用金額)が10万円以上のcusID(顧客ID),Name(顧客名),age(年齢),kingaku(利用金額)を抽出

解答(実行結果は省略)

SELECT cusID,name,age
FROM customer
WHERE age > 30;

SELECT cusID,name,age
FROM customer
WHERE age = 42;

SELECT cusID,name,age,kingaku
FROM customer
WHERE kingaku >= 100000;

または

SELECT * 
FROM customer
WHERE kingaku >= 100000;

→SELECT文での「*」は、全てを表します。FROMで選択したテーブルの全ての列を抽出したい時に使用できる。

==================================

次に文字列に対して条件を付けるWHERE句をご紹介します。

下記を実行してください。

SELECT *
FROM customer
WHERE cusID = 'C002';

実行結果

実行結果④

上記は、cusID(顧客ID)が、’C002’という文字列と完全一致するデータを抽出する文です。上記の文の様に、文字列を条件とする場合は、対象の文字列を「’」シングルコーテーションで囲う必要があります。


下記を実行してください。

SELECT *
FROM customer
WHERE Name LIKE '%一_';

実行結果

実行結果⑤

上記で使用した「LIKE句」では、後ろから2番目の文字が'一'である顧客名を検索しています。

実行結果⑥

LIKE句を知らない人にとっては、これは少し複雑に感じますが、実は単純です。

今回の記述
 SELECT <列名>
 FROM <テーブル名> 
 WHERE LIKE <列名> <文字列>

まず、対象の列名を選択し、どういう文字列を検索したいか考えます。
それを、下記に当てはめて考えます。

ワイルドカード

例えば、’山’が含まれている顧客名を検索したい場合のLIKE句
   →WHERE Name LIKE '%山%'

例えば ’山’が先頭から2番目に含まれている顧客名を検索したい場合のLIKE句
   →WHERE Name LIKE '_山%'

例えば ’山’が後ろから3番目に含まれている顧客名を検索したい場合のLIKE句
   →WHERE Name LIKE '%山__'

例えば ’一’が最後の文字になっている顧客名を検索したい場合のLIKE句
   →WHERE Name LIKE '%一'

==================================

まだ複雑に感じていても、繰り返し実行してみることで、簡単に覚える事ができます。(LIKE句だけに限った話ではないが)

SQL文は、ノートに書き写したりするより、実行を繰り返して覚えた方が早いと思います。

WHERE句については、今ココに掲載した内容以外にも多くの条件式があります。その条件式については次の記事に掲載します。(要望があれば)



この記事が気に入ったらサポートをしてみませんか?