SQL(更新中) - user000422/0 GitHub Wiki
データベースを削除 , 作成 , 選択
drop database if exists データベース名 ; -- データベースを削除
create database if not exists データベース名 ; -- データベースを作成
use データベース名 ; -- 使用するデータベースを選択
テーブルを作成 create table テーブル名 ( … );
テーブル名は複数形で ---s
create table テーブル名(
id int, -- id を 整数型の int で作成
password varchar(16), -- password を 文字列16文字以下の varchar(16) で作成
type int DEFAULT 1, -- type の 初期値(指定されない場合のデフォルト値)設定
update_date datetime -- 更新日用のカラム
);
id int primary key not null auto_increment
… ID連番のテンプレート
テーブルへデータを挿入
INSERT INTO テーブル名 ( データA, データB ) VALUES(A挿入データ, B挿入データ) ;
-- 単一
INSERT INTO blueteam(id, password) VALUES(1, "123");
-- 複数
INSERT INTO blueteam(id, password) VALUES(1, "123"),(2, "456");
SELECT( 選択、検索 )
SELECT * FROM sample_table; -- 基本型
-- カラムを指定して検索 複数条件指定はカンマで区切る
SELECT id FROM sample_table;
SELECT id, password FROM sample_table;
-- WHERE 基本型
SELECT * FROM テーブル名 WHERE point >= 80;
-- BETWEEN 範囲検索( 最小値 AND 最大値 )
SELECT * FROM テーブル名 WHERE point BETWEEN 60 AND 80;
-- IN 含まれているか
SELECT * FROM テーブル名 WHERE team IN ('red','green');
-- NOT IN 含まれていなければ
SELECT * FROM テーブル名 WHERE team NOT IN ('red','green');
-- 条件つき検索( 名前 の 頭文字 が T で 始まる データ )
SELECT * FROM テーブル名 WHERE name like 'T%';
-- NOT NULL NULL以外
SELECT * FROM テーブル名 WHERE name IS NOT NULL;
-- LIMIT 検索結果の上限設定
SELECT * FROM sample_table LIMIT 1;
SELECT * FROM sample_table WHERE color='red' LIMIT 1; -- 条件
並び替え
SELECT * FROM sampleTable ORDER BY 基準フィールド ASC; -- ASC 昇順(省略可)
SELECT * FROM sampleTable ORDER BY 基準フィールド DESC; -- DESC 降順
-- 複数指定
SELECT * FROM テーブル名 ORDER BY 基準フィールドA DESC, 基準フィールドB DESC;
サブクエリ
SELECT stock
( SELECT item FROM sample_table WHERE price < 100 ) AS item
FROM sample_table;
集計
SELECT COUNT(*) FROM sample_table; -- 件数
SELECT COUNT(*) AS レコード件数 FROM sample_table; -- 集計名設定(件数)
SELECT SUM(フィールド名) FROM sample_table; -- 合計値
SELECT MAX(フィールド名) FROM sample_table; -- 最高値
SELECT AVG(フィールド名) FROM sample_table; -- 平均値
更新
-- テーブル の データ を 更新
UPDATE テーブル名 SET フィールド名 = 値 WHERE 条件句;
-- 更新( id が 1 の point の データを 100 に 更新 )
UPDATE テーブル名 SET point = 100 WHERE id = 1;
DELETE( 削除 )
-- 削除
DELETE FROM テーブル名 WHERE 条件句;
-- 削除( point が 60 未満 の データ を 削除 )
DELETE FROM テーブル名 WHERE point < 60;
-- 削除( 指定 テーブル の データ を 全て 削除 )
DELETE FROM テーブル名;
構造変更
-- 構造変更( フィールド1 の 後 に 新フィールド を 追加 )
ALTER TABLE テーブル名 ADD 新フィールド名 AFTER フィールド1;
-- 構造変更( フィールド1 の 名称 を 新フィールド名 に 変更 )
ALTER TABLE テーブル名 CHANGE フィールド1 新フィールド;
-- 構造変更( 既存フィールド に オプション を 追加 )( primary key 等 )
ALTER TABLE テーブル名 ADD オプション名(フィールド名);
-- 構造変更( 既存フィールド に オプション を 追加 )( auto_increment 等 )
ALTER TABLE テーブル名 CHANGE フィールド名 フィールド名 データ型 not null オプション名;
-- 構造変更( フィールドオプション を 削除 )
ALTER TABLE テーブル名 DROP オプション名;
テーブル結合
JOINで結合し、ONで関連させるカラムを指定
NULlを含む結果が欲しい場合は LEFT JOIN
、そうでなければ INNER JOIN
select 後 に「 * 」も 使える
UNIONは重複レコード以外すべて、UNIONALLは重複レコードもすべて
-- 内部結合( テーブルA の フィールド2 と テーブルB の フィールド2 が 一致する テーブルA の フィールド1 と テーブルB の フィールド2を 結合表示 )
SELECT テーブルA.フィールド1, テーブルB.フィールド1
FROM テーブルA JOIN テーブルB
ON テーブルA.フィールド2 = テーブルB.フィールド2;
-- 外部結合 LEFT()
SELECT テーブルA.フィールド1,テーブルB.フィールド1
FROM テーブルA LEFT JOIN テーブルB
ON テーブルA.フィールド2 = テーブルB.フィールド2;
-- 外部結合 LEFT()
SELECT * FROM テーブルA LEFT JOIN テーブルB
ON テーブルA.フィールド1 = テーブルB.フィールド2;