この記事では、ブラウザだけでMySQLを「サザエさんの例」を通してサンプルのコードを書きながら学習する内容になっております。
途中からでもなるべく学習可能な様に書いております。
使用ブラウザはmyCompilerのMySQLを使っています。
今回学習するテーブルのイメージです。
現在、ブラウザのMySQLの左側の画面はこの様なコードが入っています。
-- create a table
CREATE TABLE sazaefamily (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
gender TEXT NOT NULL,
age INTEGER NOT NULL
);
-- insert some values
INSERT INTO sazaefamily VALUES (1, '磯野波平', '男性',54);
INSERT INTO sazaefamily VALUES (2, 'フグ田サザエ', '女性',24);
INSERT INTO sazaefamily VALUES (3, '磯野カツオ', '男性',11);
INSERT INTO sazaefamily VALUES (4, '磯野ワカメ', '女性',9);
INSERT INTO sazaefamily VALUES (5, '穴子さん', '男性',27);
-- fetch some values
SELECT * FROM sazaefamily WHERE gender = '女性';
SELECT * FROM sazaefamily;
SELECT * FROM sazaefamily WHERE age>=25;
SELECT name FROM sazaefamily WHERE id=4;
SELECT name FROM sazaefamily WHERE name LIKE '%野%';
SELECT name,age FROM sazaefamily WHERE age<15;
SELECT name,age FROM sazaefamily ORDER BY age DESC;
テーブルを年齢順に並び替えて、この様なイメージになっています。
今日は、サザエさんのキャラクターの年齢の、平均や最大値、件数のカウントなどを求めて行きます。
まず、年齢の合計と平均を求めて見ます。
SELECT SUM(age),AVG(age) FROM sazaefamily;
実行結果です。
年齢の合計を求めるというのは、あまり実用的ではありませんね。
平均年齢については、小数点以下を表示させないようにROUND関数でAVG関数を囲いネストします。
SELECT SUM(age), ROUND(AVG(age)) FROM sazaefamily;
次に年齢の最大値と最小値を求めます。
年齢順に並べた表のイメージです。
SELECT MAX(age),MIN(age) FROM sazaefamily;
実行結果です。
年齢が高い順に3名抽出します。
SELECT * FROM sazaefamily ORDER BY age DESC LIMIT 3;
実行結果です。
この表の件数を求めます。
SELECT COUNT(*) FROM sazaefamily;
実行結果です。
年齢が平均以上のキャラクターの名前と年齢を求めます。
SELECT name,age FROM sazaefamily WHERE age >= (SELECT AVG(age) FROM sazaefamily);
実行結果です。
最後にGROUP BY を使って、男女別の平均年齢を求めます。
SELECT gender, ROUND(AVG(age)) FROM sazaefamily GROUP BY gender;
実行結果です。
ここまでのコードのまとめです。
-- create a table
CREATE TABLE sazaefamily (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
gender TEXT NOT NULL,
age INTEGER NOT NULL
);
-- insert some values
INSERT INTO sazaefamily VALUES (1, '磯野波平', '男性',54);
INSERT INTO sazaefamily VALUES (2, 'フグ田サザエ', '女性',24);
INSERT INTO sazaefamily VALUES (3, '磯野カツオ', '男性',11);
INSERT INTO sazaefamily VALUES (4, '磯野ワカメ', '女性',9);
INSERT INTO sazaefamily VALUES (5, '穴子さん', '男性',27);
-- fetch some values
SELECT * FROM sazaefamily WHERE gender = '女性';
SELECT * FROM sazaefamily;
SELECT * FROM sazaefamily WHERE age >= 25;
SELECT name FROM sazaefamily WHERE id = 4;
SELECT name FROM sazaefamily WHERE name LIKE '%野%';
SELECT name, age FROM sazaefamily WHERE age < 15;
SELECT name, age FROM sazaefamily ORDER BY age DESC;
SELECT SUM(age), ROUND(AVG(age)) FROM sazaefamily;
SELECT MAX(age), MIN(age) FROM sazaefamily;
SELECT * FROM sazaefamily ORDER BY age DESC LIMIT 3;
SELECT COUNT(*) FROM sazaefamily;
SELECT age, name FROM sazaefamily WHERE age >= (SELECT AVG(age) FROM sazaefamily);
SELECT gender, ROUND(AVG(age)) FROM sazaefamily GROUP BY gender;
お疲れ様でした。ブレイクタイムPhotoは、
隅田公園の梅の花です。
ご精読誠にありがとうございました。
【オススメ入門書】
3ステップでしっかり学ぶ My SQL入門