SQLとは
-
RDBMSを操作するための言語のことを
SQL
と呼ぶ
- SQLを用いて書かれたDBを操作する命令のことを クエリ や、 SQL文 と呼ぶ
- DBの中にある数万・数百万もの膨大なデータを効率的に操作することが可能
-
国際標準化されているため様々なDBで利用できる
- 先程紹介したOracle、MySQL、PostgreSQL、Microsoft SQL Serverでも使える
- RDBMSによって 文法の違い や サポートされていない演算子 があるため、公式ドキュメントを読んで何が使えるのか確認することが大切
SQL文の種類
- 以下、例文がありますが、演習で使うMySQLの構文で書かれています
- 参考として他のRDBMSも交えつつ紹介します
①データ操作言語(Data Manipulation Language, DML)
-
「game」テーブルを例に使い方を見てみよう
「game」テーブル
id title 1 MOTHER 2 星のカービィ 3 ポケモンスナップ 4 マリオストーリー -
SELECT(データの検索)
SELECT * FROM game WHERE id = 2;
- 「game」テーブルから、idが2のレコードを全て表示
id title 2 星のカービィ -
INSERT(データの追加)
INSERT INTO game (id, title) VALUES (5, ‘ロックマンエグゼ’);
-
「game」テーブルに、idが5でtitleがロックマンエグゼのデータを追加
id title 1 MOTHER 2 星のカービィ 3 ポケモンスナップ 4 マリオストーリー 5 ロックマンエグゼ
-
「game」テーブルに、idが5でtitleがロックマンエグゼのデータを追加
-
UPDATE(データの更新)
UPDATE game SET id = 5 , title = ‘MOTHER2’ WHERE id = 1;
-
idが1のデータを、idが5・titleがMOTHER2のデータに更新
id title 5 MOTHER2 2 星のカービィ 3 ポケモンスナップ 4 マリオストーリー
-
idが1のデータを、idが5・titleがMOTHER2のデータに更新
-
DELETE(データの削除)
DELETE FROM game WHERE id = 2;
-
idが2のデータを削除
id title 1 MOTHER 3 ポケモンスナップ 4 マリオストーリー
-
idが2のデータを削除
② データ定義言語(Data Definition Language, DDL)
-
CREATE(テーブルの作成)
CREATE TABLE mydb.game ( id INT , title VARCHAR(128) );
-
id(int)とtitle(varchar)を持つ「game」テーブルを「mydb」データベースの中に作成
id title 1 MOTHER 2 星のカービィ 3 ポケモンスナップ 4 マリオストーリー
-
id(int)とtitle(varchar)を持つ「game」テーブルを「mydb」データベースの中に作成
-
ALTER(テーブルの設定変更)
ALTER TABLE game ADD device int;
-
「game」テーブルにint型でdeviceというカラムを追加
id title device 1 MOTHER 2 星のカービィ 3 ポケモンスナップ 4 マリオストーリー
-
「game」テーブルにint型でdeviceというカラムを追加
-
DROP(テーブルの削除)
DROP TABLE game;
- 「game」テーブルを削除
-
TRUNCATE(テーブルデータの削除)
-
「game」テーブルのデータをすべて削除
id title
-
「game」テーブルのデータをすべて削除
ℹ️
些細な違いに気をつけよう!
-
他のRDBMSを使っていて
「同じだろう」と思っていると微妙に違ったりする
Oracle PostgreSQL NULLと空文字の扱い 同一として扱う 別物として扱う 抽出行数指定 WHERE句でROWNUM擬似列を使用して指定
※12c以降はFETCH FIRST ROWS ONLYなどで代替LIMIT句で指定
SQL文のお作法
読みづら~いSQL
select id, name, age, gender, country from users where age>=18 and country='Japan'or country='USA' and gender='Female' order by age desc limit 10;
読みやすく書くためのポイント
- インデント を入れる
- キーワード(SELECTやWHEREなど)は 大文字 にする
- それ以外(カラム名や値)は 小文字 にする
-
それでもわかりにくい部分には
コメント
を入れる
-
-- でコメントアウト
- 例「-- ほげほげ」
-
-- でコメントアウト
読みやすくしてみる
-- 年齢が18歳以上の女性ユーザーを国で絞り込み、年齢の降順で上位10件を取得する
SELECT
id,
name,
age,
gender,
country
FROM
users
WHERE
age >= 18
AND (
country = 'Japan'
OR country = 'USA'
)
AND gender = 'Female'
ORDER BY
age DESC
LIMIT
10;
※書き方に100点の正解はないのでいろいろ模索してみよう