データベースを扱うにはSQL構文の記述はある程度マスターしないといけませんが、そこまで特殊な条件を用いる必要もない(・・・今のところ)自分と同じ初心者のメモとして簡単な逆引きまとめてみます。
テーブルの設定変更のSQL構文
対象テーブル名を変更するSQL構文
ALTER TABLE テーブル名 RENAME 新テーブル名;
カラムを追加するSQL構文
ALTER TABLE テーブル名 ADD フィールド名 データ型;
指定フィールド名を変更するSQL構文
ALTER TABLE テーブル名 CHANGE フィールド名 新フィールド名 データ型;
指定フィールドの型を変更するSQL構文
ALTER TABLE テーブル名 MODIFY フィールド名 データ型;
指定フィールドを削除するSQL構文
ALTER TABLE テーブル名 DROP フィールド名;
SELECT文(検索系)のSQL構文
対象テーブルから指定列を検索するSQL構文
SELECT 取得する列名
FROM 対象となるテーブル;
対象テーブルから複数指定の列を取得するSQL構文
SELECT 列名① , 列名② , 列名③ , ....
FROM 対象となるテーブル
対象テーブルからすべての列を検索するSQL構文
SELECT *
FROM 対象となるテーブル;
指定値より大きい値を取得するSQL構文
SELECT 取得する列名
FROM 対象となるテーブル
WHERE 比較対象となる列名 > 比較する値;
特定の文字列を含む行を取得するSQL構文
SELECT *
FROM 対象となるテーブル
WHERE 検索条件対象となる列名
LIKE '%特定の文字列%';
'%'や'_'を含んだ特定の文字列を含む行を取得するSQL構文
SELECT *
FROM 対象となるテーブル
WHERE 検索条件対象となる列名
LIKE '%100$%' ESCAPE '$';
比較条件の最小値~最大値に一致した行を取得するSQL構文
SELECT *
FROM 対象となるテーブル
WHERE 検索条件対象となる列名
BETWEEN 比較条件の最小値 AND 比較条件の最大値;
列内から特定のデータを取得するSQL構文
SELECT *
FROM 対象となるテーブル
WHERE 検索対象となる列名 IN ('列内で抽出したいデータ①','列内で抽出したいデータ②');
列内から特定のデータ以外を取得するSQL構文
SELECT *
FROM 対象となるテーブル
WHERE 検索対象となる列名 NOT IN ('列内で抽出したいデータ①','列内で抽出したいデータ②');
UPDATE文(更新系)のSQL構文
条件一致したフィールドの指定列の値の更新
UPDATE 対象となるテーブル
SET 更新対象となる列名 = 新しく更新するデータ
WHERE 検索条件対象となる列名 = 検索条件対象となるフィールドの値;
特定の文字列を持つカラムを一斉に置換
UPDATE 対象となるテーブル
SET 更新対象となる列名 =
REPLACE(更新対象となる列名, '置換対象となる文字列', '置換後の文字列');
DELETE文(削除系)のSQL構文
対象テーブル自体を削除するSQL構文
DROP TABLE 削除するテーブル名;
対象テーブル内の全データを削除するSQL構文
DELETE FROM 対象となるテーブル;
/* テーブル自体は削除されない */
対象テーブル内の行の削除
DELETE FROM 対象となるテーブル
WHERE 削除したいデータの対象列 = 削除対象となるデータ;
対象テーブルから0以上の条件にあった行を削除するSQL構文
DELETE FROM 対象となるテーブル
WHERE 条件の対象となる列名 > 0;
INSERT文(追加系)のSQL構文
テーブル末尾ににデータを追加する
INSERT INTO 対象となるテーブル
VALUES ('挿入するデータ①' , '挿入するデータ②' ...);
集計関数を使ったSQL構文
主な集計関数を使い出力させる列名を指定するSQL構文
SELECT
SUM('合計値を集計する列名') AS '合計値を出力させる列名',
AVG('平均値を集計する列名') AS '平均値を出力させる列名',
MAX('最大値を集計する列名') AS '最大値を出力させる列名',
MIN('平均値を集計する列名') AS '最小値を出力させる列名'
FROM '対象となるテーブル';
対象テーブルの全ての行数を数えるSQL構文
SELECT COUNT(*) AS '行数を出力させる列名'
FROM '対象となるテーブル';
対象テーブルの値が'NULL'以外の行数を数えるSQL構文
SELECT COUNT('行数を取得したい列名') AS '行数を出力させる列名'
FROM '対象となるテーブル';
デバッグ関連で使いそうなSQL構文
特定テーブルのAUTO_INCREMENTの欠番があるか確認するSQL構文
# 指定範囲内で存在する(欠番していない)IDレコード数
SELECT COUNT(id) FROM 対象となるテーブル WHERE id BETWEEN 1 AND 10000;
# 欠番したIDを表示させたい場合
SELECT (t1.id + 1) as `欠番の先頭ID`,
(SELECT MIN(t3.id) -1 FROM 対象となるテーブル t3 WHERE t3.id > t1.id) as `欠番の終端ID`
FROM 対象となるテーブル t1
WHERE NOT EXISTS (SELECT t2.id FROM 対象となるテーブル t2 WHERE t2.id = t1.id + 1)
HAVING `欠番の終端ID` IS NOT NULL;
ストレージエンジンの状態を確認するSQL構文
innodbはデータ>バッファ、MyISAMはキーサイズ>キーバッファサイズの場合はDB激重のシグナルなんで注意!
# innodbのデータサイズの計測
SELECT SUM( data_length ) FROM information_schema.tables WHERE ENGINE = 'innodb';
# innodbのバッファプールサイズ
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
# MyISAMのキーサイズの計測
SELECT SUM( index_length ) FROM information_schema.tables WHERE ENGINE = 'myisam';
# MyISAMのキーバッファサイズ
SHOW VARIABLES LIKE 'key_buffer_size';
今後も自分のメモとして増やしていきます。