2013

8

6

MySQLで(初心者が)よく使いそうなSQL構文の逆引きまとめてやんよ!!!

Pocket
LINEで送る
Facebook にシェア
reddit にシェア
LinkedIn にシェア

データベースを扱うには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';
今後も自分のメモとして増やしていきます。
Pocket
LINEで送る
Facebook にシェア
reddit にシェア
LinkedIn にシェア

トップへ