MySQLを4つの基本機能CRUDを中心に解説する。
今回はもっともベーシックな部分だ。
●データベース作成
CREATE DATABASE myapp DEFAULT CHARACTER SET utf8;
●データベース削除
DROP DATABASE IF EXISTS myapp;
●テーブル作成
CREATE TABLE members( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(30), depart VARCHAR(20) DEFAULT '無所属', age INT, updated DATE );
●テーブル削除
DROP TABLE IF EXISTS members;
●カラムには型を指定する。よく使う型の一覧
INT
FLOAT
DOUBLE
CHAR /*固定長文字列*/
VARCHAR(len) /*len桁の可変長文字列*/
TEXT /*長い文字列*/
DATETIME /*日付時刻 2017-08-31 23:10:20*/
DATE /*日付 2017-08-31*/
TIME /*23:10:20*/
BLOB /*バイナリデータ*/
●●4つの基本機能CRUD(CREATE,READ,UPDATE,DELETE)
SQLでは
CREATE:INSERT
READ:SELECT
UPDATE=UPDATE
DELETE=DELETE
●INSERT(INSERT INTO テーブル名(カラムの並び) VALUES(値の並び))
INSERT INTO members(id,name,depart,age,updated)
VALUES(1,'山田太郎','営業部',40,'2014-12-01');
INSERT INTO members(name,age)
VALUES ('鈴木さくら',25);
/*全カラムに対して挿入はカラムの並び省略化)*/
INSERT INTO members
VALUES(3,'佐藤次郎','人事部',35,'2015-01-15');
/*連続入力化*/
INSERT INTO members(name,depart,age)
VALUES('田中一郎','経理部',48),
('山口弘子','営業部',28),
('渡辺順二','人事部',58),
('中島博之','総務部',49),
('山下圭吾','経理部',23);
●SELECT(SELECT 欲しいもの FROM テーブル)
/*全件抽出*/
SELECT * FROM members;
/*nameカラム取得*/
SELECT name FROM members;
/*name,ageカラム取得*/
SELECT name,age FROM members;
/*WHERE句で絞り込み*/
SELECT * FROM members WHERE age=25;
SELECT * FROM members WHERE age>25;
SELECT * FROM members WHERE age>=25;
//<>でない
SELECT * FROM members WHERE age<>25;
SELECT * FROM members WHERE age>25 AND age <40
SELECT * FROM members WHERE age>25 OR updated <='2015-01-15'
//BETWEEN(端の値含む)
SELECT * FROM members WHERE updated BETWEEN '2015-01-15' AND '2015-02-15'
//INの中にあるデータを抽出
SELECT * FROM members WHERE depart IN('営業部','人事部');
//null判定
SELECT * FROM members WHERE updated IS NULL;
SELECT * FROM members WHERE updated IS NOT NULL;
//あいまい検索
SELECT * FROM members WHERE name LIKE '鈴木%';
SELECT * FROM members WHERE name LIKE '%木%';
SELECT * FROM members WHERE name LIKE '%田';
//北が含まれない
SELECT * FROM members WHERE name NOT LIKE '%北%';
/*ORDER BY (並び替え)*/
//年齢降順
SELECT * FROM members ORDER BY age DESC;
//updatedがnullでないデータを年齢昇順
SELECT * FROM members WHERE updated IS NOT NULL
ORDER BY age ASC;
//ORDER BYは複数指定できる
SELECT * FROM members ORDER BY age DESC,name ASC;
//LIMIT 件数を制限できる
SELECT * FROM members ORDER BY age DESC LIMIT 3;
/*LIMIT と合わせてOFFSET指定*/
//2番目に年齢を高い人から3人取得
SELECT * FROM members ORDER BY age DESC LIMIT 3 OFFSET 1;
●UPDATE(UPDATE テーブル SET カラム=値 )
/*鈴木さくらの部署を人事部に変更*/ UPDATE members SET depart='人事部' WHERE name='鈴木さくら'; /*鈴木さくらの部署を人事部に変更,年齢を1歳あげる*/ UPDATE members SET depart='人事部',age=age+1 WHERE name='鈴木さくら';
●DELETE(DELETE FROM テーブル )
/*WHERE句で絞り込まないと全件削除してしまうので注意!*/
//idが3のデータを削除
DELETE FROM members WHERE id=3;
[集計関数]
/*集計関数。結果は基本1行*/ /*count(*) 登録データ件数*/ SELECT count(*) FROM members; /*avg(age) 年齢の平均*/ SELECT avg(age) FROM members; /*max(age) 年齢の最大*/ SELECT max(age) FROM members; /*min(age)* 年齢の最小/ SELECT min(age) FROM members; /*sum(age)* 年齢の合計/ SELECT sum(age) FROM members;
[GROUP BY(同一項目をまとめる、主に集計関数と共に使う。結果はGROUP BYした項目数行)]
/*departでGROUP BY 結果はdepartの種類の数出力される。*/
/*GROUP BYした項目は取得カラムに設定可能*/
SELECT depart,avg(age) FROM members GROUP BY depart;
[HAVING(GROUP BY した結果に対する絞込み)]
/*departでGROUP BYしてその平均年齢を集計し平均年齢30以上を取得*/
SELECT depart,avg(age) FROM members GROUP BY depart HAVING avg(age) >= 30;

コメント