はじめまして、2015年入社の一松です。
まもなく暖かい春を向かえる4月。これからエンジニアとして就職することが決まっている方も多いのではないでしょうか。
わたしも今年1月からエンジニアとして働くことになり、最近はデータベースを扱う業務を行っています。
そこで今回は「開発新卒に捧ぐ、SQLの5つの基本」ということで、以前の私と同じように、データベースについては勉強したけれど実際の操作はしたことがない、という新入社員や学生の方に向けて、私も最初に勉強した基本の「キ」をお伝えしようと思います。(もちろん、既に社会人の方も大歓迎です!!)
データベースって何?という方はTECHSCOREに詳しい説明があるので、先に読んでみてくださいね!
また、TECHSCOREではSQLについて詳しく解説したページがあるので、合わせ読んでいただくと、さらに理解が深まるかと思います。
SQLとは
5つの基本をご説明する前にそもそもSQLとはなにか、説明します。
SQLとは、データベースマネジメントシステム(DBMS)のデータを操作するための言語です。
SQLを使うことで、データベースに対して、必要なデータを格納したり、格納されているデータ参照したり、不要になったデータを削除したりできます。
また、データベースには、いくつかの種類があります。
代表的なものは、マイクロソフトのSQL Server、Oracleの MySQL、PostgreSQL(「ぽすとぐれすきゅーえる」と読みます)などです。
基本的な書き方や考え方は概ね共通しています。
今回の記事ではPostgreSQLを用いて、
1テーブルの作成、2データの登録、3データの取得、4データの削除、5データの編集
の5つに沿って、SQLの基本的な文法と操作をご紹介します!
1)テーブルの作成【 CREATE TABLE 】
まずは元になる「テーブル」を作成していきましょう。
テーブルは何も書き込まれていないEXCELの表をイメージしてください。まず空の表を作ってから、そこに情報を書き込んでいきます。今回は八百屋さんの商品データを例に作成してみましょう。
テーブルを作成する際にはCREATE TABLEを使います。
1 2 3 4 5 6 |
CREATE TABLE テーブル名 ( 列名1 データ型 制約, 列名2 データ型 制約, 列名3 データ型 制約, PRIMARY KEY(列名) ); |
実際に書いてみると以下の様になります。
1 2 3 4 5 6 7 8 |
CREATE TABLE shohin( id VARCHAR(4) NOT NULL, bunrui VARCHAR(20) NOT NULL, shohinmei VARCHAR(30) NOT NULL, tanka INTEGER NOT NULL, zaikosuu INTEGER NOT NULL, PRIMARY KEY (id) ); |
データ型とはどんなデータが入るかを予め決めておくものです。詳しくは割愛しますが、テキストを表すVARCHAR(後ろに続く数字は格納できる最大の文字数です。) 数字を表すINTEGER、列の中で主キーを定めるPRIMARY KEYです。
データ型の後ろには、制約事項を書きます。今回であれば空のデータを入れることができない「NOT NULL」を指定しています。
PRIMARY KEY(主キー)とは、データベース内で重複してはならないデータ、かつ必ず何かしらデータを入れておく必要があります。これによって、レコード(1行ごとのデータ)を識別することができます。
作成されたテーブル「shohin」を見てみましょう。
テーブルの中を参照する際には以下のように書きます。
1 |
SELECT * FROM shohin; |
※SELECTは後ほど紹介します。
1 2 3 |
id | bunrui | shohinmei | tanka | zaikosuu ----+--------+-----------+-------+---------- (0 行) |
(列左から:ID、分類、商品名、単価、在庫数)
まだ、何もデータ登録されていないので0行ですが、テーブルを作成することができました。
CREATEについては、TECHSCORE解説ページも参考にしてください。
2)データの登録【 INSERT 】
先ほど作ったテーブルにデータを登録していきます。データを登録したい時には INSERTを使います。
1 2 |
INSERT INTO テーブル名 (列1,列2,列3,…) VALUES (値1,値2,値3,…) ; |
INSERTは行を登録するので、列の順に合わせて値を入力していきます。その後ろに、VALUESで実際の値を挿入します。
実際に書いてみると以下の様になります。
1 2 |
INSERT INTO shohin (id,bunrui,shohinmei,tanka,zaikosuu) VALUES ('0001','野菜','キャベツ',150,20); |
結果を確認してみましょう。
1 |
SELECT * FROM shohin; |
※SELECTは後ほど紹介します。
1 2 3 4 |
id | bunrui | shohinmei | tanka | zaikosuu ------+--------+-----------+-------+---------- 0001 | 野菜 | キャベツ | 150 | 20 (1 行) |
データが1行登録できました。
他のデータも入れてみましょう。
1 2 3 4 5 6 7 8 |
INSERT INTO shohin (id,bunrui,shohinmei,tanka,zaikosuu) VALUES ('0002','野菜','にんじん',100,30); INSERT INTO shohin (id,bunrui,shohinmei,tanka,zaikosuu) VALUES ('0003','野菜','きゅうり',120,25); INSERT INTO shohin (id,bunrui,shohinmei,tanka,zaikosuu) VALUES ('0004','果物','りんご',100,15); INSERT INTO shohin (id,bunrui,shohinmei,tanka,zaikosuu) VALUES ('0005','果物','バナナ',130,25); |
結果を確認してみましょう。
1 |
SELECT * FROM shohin; |
※SELECTは後ほど紹介します。
1 2 3 4 5 6 7 8 |
id | bunrui | shohinmei | tanka | zaikosuu ------+--------+-----------+-------+---------- 0001 | 野菜 | キャベツ | 150 | 20 0002 | 野菜 | にんじん | 100 | 30 0003 | 野菜 | きゅうり | 120 | 25 0004 | 果物 | りんご | 100 | 15 0005 | 果物 | バナナ | 130 | 25 (5 行) |
データが登録できましたね!
☆ポイント☆
- SQLを実行する際には文の最後に「;」をつけます。忘れがちなので注意してください。
- 行、列と言われた時、縦か横かわかりやすい覚え方は、漢字のつくり(右側)を見てください。行は横棒が2本なので「横」を意味し、列は縦棒が2本あるので「縦」を意味しています。
INSERTについては、TECHSCORE解説ページも参考にしてください。
3)DBから必要な情報を参照する【 SELECT 】
先程からデータを登録した結果をお見せしていましたが、どのようにして確認しているか、説明します。
テーブルの中身を見たい時には SELECTを使います。
1 |
SELECT 抽出したい列名 FROM テーブル名; |
例えば登録されている商品名を見たい場合は、
1 |
SELECT shohinmei FROM shohin; |
1 2 3 4 5 6 7 8 |
shohinmei ----------- キャベツ にんじん きゅうり りんご バナナ (5 行) |
商品名を取り出すことができました。
登録されているすべての列を見たい場合は列名に「*」を使います。
1 |
SELECT * FROM shohin; |
1 2 3 4 5 6 7 |
id | bunrui | shohinmei | tanka | zaikosuu ------+--------+-----------+-------+---------- 0001 | 野菜 | キャベツ | 150 | 20 0002 | 野菜 | にんじん | 100 | 30 0003 | 野菜 | きゅうり | 120 | 25 0004 | 果物 | りんご | 100 | 15 0005 | 果物 | バナナ | 130 | 25 |
すべての列を見ることができますね。
特定の行のみを限定して参照したい場合はWHEREを追記します。
分類が野菜となっている行のみを抽出してみましょう。
1 2 |
SELECT * FROM shohin WHERE bunrui = '野菜'; |
1 2 3 4 5 6 |
id | bunrui | shohinmei | tanka | zaikosuu ------+--------+-----------+-------+---------- 0001 | 野菜 | キャベツ | 150 | 20 0002 | 野菜 | にんじん | 100 | 30 0003 | 野菜 | きゅうり | 120 | 25 (3 行) |
これで自由に登録されている内容を見ることができますね!
SELECTについては、TECHSCORE解説ページも参考にしてください。
4)DBの内容を削除する【 DELETE 】
次は登録した情報を削除する時のやり方をご紹介します。
削除するときにはDELETEを使います。
任意の行を削除したい場合
1 2 |
DELETE FROM テーブル名 WHERE 条件; |
SELECTでも使ったWHEREを使っています。これで削除したい行の条件を指定することができます。
テーブルの中身をすべて削除したい場合は、以下のように何も指定しなければOKです。
1 |
DELETE FROM テーブル名; |
先ほど登録した内容から、バナナのデータだけを消してみましょう。
1 2 |
DELETE FROM shohin WHERE shohinmei = 'バナナ'; |
1 |
SELECT * FROM shohin; |
1 2 3 4 5 6 7 |
id | bunrui | shohinmei | tanka | zaikosuu ------+--------+-----------+-------+---------- 0001 | 野菜 | キャベツ | 150 | 20 0002 | 野菜 | にんじん | 100 | 30 0003 | 野菜 | きゅうり | 120 | 25 0004 | 果物 | りんご | 100 | 15 (4 行) |
指定した行だけ消すことができました。
DELETEについては、TECHSCORE解説ページも参考にしてください。
5)DBの内容を変更する【 UPDATE 】
登録や削除だけでなく、内容を変更したいという場面もありますね。
そのようなときは UPDATE を使います。
1 2 3 |
UPDATE テーブル名 SET 変更したい列名 = 変更後の値 WHERE 条件; |
例えば、キャベツの値段を200円に変更したい場合は
1 2 3 |
UPDATE shohin SET tanka = 200 WHERE shohinmei = 'キャベツ'; |
というふうに書きます。
WHEREは行を指定する書き方でしたね。
今回は商品名がキャベツの行の商品単価を200に書き換えるように指定しました。
1 2 3 4 5 6 7 |
id | bunrui | shohinmei | tanka | zaikosuu ------+--------+-----------+-------+---------- 0002 | 野菜 | にんじん | 100 | 30 0003 | 野菜 | きゅうり | 120 | 25 0004 | 果物 | りんご | 100 | 15 0001 | 野菜 | キャベツ | 200 | 20 (4 行) |
UPDATEについては、TECHSCORE解説ページも参考にしてください。
おわりに
SQLの5つの基本をご紹介しました。いかがだったでしょうか。
この記事で一通りデータの作成から編集までできるようになるかと思います。
もっとSQLに詳しくなりたい!使いこなしてみたい!という方は、
テーブルとテーブルを結合してデータを抽出する「JOIN」、分類ごとに数を数えることができる「GROUP BY」、データを並び替えて抽出できる「ORDER BY」などを調べてみてはいかがでしょうか。もちろんTECHSCOREでも解説していますよ!
最後まで読んでいただきありがとうございました。
この記事がみなさんのお役に立つことを願っています。
TECHSCOREにはSQLの基本事項が網羅されています!
ボリュームたっぷりですが、参考にしてみてくださいね。
参考:TECHSCORE SQL