こんにちは。
本日はSQL初心者の方に向けて、基礎から簡単なコマンド操作までを解説していきます。
目次
1.用語解説
2.新しいDBの作成
3.テーブルの作成
4.レコードの作成
5.レコードの検索
6.レコードの並べ替え
7.最後に
1. 用語解説
はじめにDB関連の基礎的な用語を解説していきます。
聞き慣れないワードが出てきて、イメージしにくいこともあると思うので、
今回は韓国アイドルグループのSEVENTEENを例にして解説していきます。
-
SQL
→データの操作や定義を行うためのDB言語 -
DB(データベース)
→データの集まり。今回は事務所に例えて、「HYBE」というデータベースを作成します。 -
テーブル
→データを保存しておくための「表」にあたるものです。今回はグループ自体を例えて、「SEVENTEEN」というテーブルを作成します。ひとつのDBの中には、複数のテーブルを作成することができます。 -
レコード
→テーブルの「行」にあたるものです。例えばメンバー情報を保存しておくための「SEVENTEEN」という名前のテーブルに、「S.COUPS」「JEONGHAN」「JOSHUA」などのメンバー全員分のデータが保存されている例で考えてみましょう。この1件分のデータにあたる「行」がレコードです。 -
カラム
→カラムは、テーブルの「列」にあたるものです。例えばメンバー情報を保存しておくための SEVENTEEN という名前のテーブルを作成すると、テーブルの中には、ひとりひとりのユーザーIDや名前、出身国、チーム、生年月日の項目を保存できるようになります。それぞれの項目にあたる「列」がカラムです。
早速、データベースから作成していきます。
2. 新しいDBの作成
まず「HYBE」というデータベースを作成します。
create database データベース名;
で作成できます。
create database HYBE;
早速、先ほど作成したデータベースに切り替えます。
use データベース名;
use HYBE;
3. テーブルの作成
続いてテーブルを作成します。
create table テーブル名 (カラム名1 型 属性,カラム名2 型 属性,...);
create table SEVENTEEN (ID int primary key, NAME varchar(10), COUNTRY varchar(10), TEAM varchar(10), BIRTHDAY date);
例にあるint,varchar,dateはそれぞれ整数、可変長文字列、日付の型です。
PRIMARY KEYは主キー(重複しないユニークな値)であることを表します。
全部合わせると
「SEVENTEENという名前のテーブルを作ってください。カラムは主キーの数値型のID、可変長文字列型のNAMEとCOUNTRYとTEAM、日付型のBIRTHDAYです。」
となります。
4. レコードの作成
続いて作成したテーブルに実際にレコードを追加していきます。
insert into テーブル名 (カラム名1, カラム名2, ...) values (データ1, データ2, ...);
insert into SEVENTEEN (ID, NAME, COUNTRY, TEAM, BIRTHDAY) values (1,"S.COUPS", "korea", "hiphop","1995-08-08");
insert into SEVENTEEN (ID, NAME, COUNTRY, TEAM, BIRTHDAY) values (2,"JEONGHAN", "korea", "vocal","1995-10-04");
データの作成にはinsert文を使います。今回の1つ目の例では
「SEVENTEENテーブルにIDが1、NAMEがS.COUPS、COUNTRYがkorea、TEAMがhiphop、BIRTHDAYが1995-08-08のレコードを作ってください。」
になります。
同様に、メンバー全員分のレコードを追加していきます。
+----+-----------+---------+------------+------------+
| ID | NAME | COUNTRY | TEAM | BIRTHDAY |
+----+-----------+---------+------------+------------+
| 1 | S.COUPS | korea | hiphop | 1995-08-08 |
| 2 | JEONGHAN | korea | vocal | 1995-10-04 |
| 3 | JOSHUA | usa | vocal | 1995-12-30 |
| 4 | JUN | china | performanc | 1996-06-10 |
| 5 | HOSHI | korea | performanc | 1996-06-15 |
| 6 | WONWOO | korea | hiphop | 1996-07-17 |
| 7 | WOOZI | korea | vocal | 1996-11-22 |
| 8 | THE8 | china | performanc | 1997-11-07 |
| 9 | MINGYU | korea | hiphop | 1997-04-06 |
| 10 | DK | korea | vocal | 1997-02-18 |
| 11 | SEUNGKWAN | korea | vocal | 1998-01-16 |
| 12 | VERNON | usa | hiphop | 1998-02-18 |
| 13 | DINO | korea | performanc | 1999-02-11 |
+----+-----------+---------+------------+------------+
5. レコードの検索
レコードの中から、特定の条件を満たすレコードだけを抽出して表示してみます。
select カラム名1, カラム名2, ... from テーブル名 where 条件;
select NAME from SEVENTEEN where ID=1;
「SEVENTEENテーブルからIDが1のメンバー(レコード)の名前(NAME)を取り出してください」
という指示です。
+---------+
| NAME |
+---------+
| S.COUPS |
+---------+
IDが1であるS.COUPSが取り出せました。
続いて、中国人メンバーのみを取り出してみます。
select NAME from SEVENTEEN where COUNTRY="china";
「SEVENTEENテーブルからCOUNTRYがchinaのメンバー(レコード)の名前(NAME)を取り出してください」
という指示です。
+------+
| NAME |
+------+
| JUN |
| THE8 |
+------+
中国人メンバーのJUNとTHE8のみが取り出せました。
続いて、ヒップホップチームのメンバーのみを取り出してみます。
select NAME from SEVENTEEN where TEAM="hiphop";
「SEVENTEENテーブルからTEAMがhiphopのメンバー(レコード)の名前(NAME)を取り出してください」
という指示です。
+---------+
| NAME |
+---------+
| S.COUPS |
| WONWOO |
| MINGYU |
| VERNON |
+---------+
ヒップホップチームのメンバーである、S.COUPS,WONWOO,MINGYU,VERNONが取り出せました。
6. レコードの並べ替え
続いて、レコードを指定した順番に並び替えてみます。
select カラム名1 , カラム名2 , ...from テーブル名 where 条件 order by カラム名 asc;
※ asc(デフォルト) ... 昇順(A→Z)
今回は、メンバーを年齢順に並べ替えます。
select * from SEVENTEEN order by BIRTHDAY asc;
「SEVENTEENテーブルからメンバー(レコード)を、BIRTHDAYのasc(昇順)で取り出してください」という指示です。
※「*」を使うと全カラム名を列挙したことと同等となります。
+----+-----------+---------+------------+------------+
| ID | NAME | COUNTRY | TEAM | BIRTHDAY |
+----+-----------+---------+------------+------------+
| 1 | S.COUPS | korea | hiphop | 1995-08-08 |
| 2 | JEONGHAN | korea | vocal | 1995-10-04 |
| 3 | JOSHUA | usa | vocal | 1995-12-30 |
| 4 | JUN | china | performanc | 1996-06-10 |
| 5 | HOSHI | korea | performanc | 1996-06-15 |
| 6 | WONWOO | korea | hiphop | 1996-07-17 |
| 7 | WOOZI | korea | vocal | 1996-11-22 |
| 10 | DK | korea | vocal | 1997-02-18 |
| 9 | MINGYU | korea | hiphop | 1997-04-06 |
| 8 | THE8 | china | performanc | 1997-11-07 |
| 11 | SEUNGKWAN | korea | vocal | 1998-01-16 |
| 12 | VERNON | usa | hiphop | 1998-02-18 |
| 13 | DINO | korea | performanc | 1999-02-11 |
+----+-----------+---------+------------+------------+
メンバーを年齢順に並べ替えることができました。
7. 最後に
いかがだったでしょうか?
今回はSQL初心者の方に向けて、基礎から簡単なコマンド操作をアイドルグループSEVENTEENに例えて解説しました。
SQLは実際に現場などでも使用する機会が多いので、少しでも参考になれば嬉しいです。
最後までお読みいただきありがとうございました。