MySQLで使用したSQL文のサンプルを記録していきたいと思います。自分用にまとめておくページです。
MySQL操作関連はこちらにまとめました。
https://normalblog.net/system/mysql/mysql_matome/
見出し
CREATE
テーブル作成
1 2 3 4 5 6 7 |
CREATE TABLE posts ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), body TEXT, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL ); |
DROP
テーブル削除
1 |
DROP TABLE test_table; |
テーブル削除(存在する場合のみ削除)
1 |
DROP TABLE IF EXISTS test_table; |
バッチなどにDROP TABLEを組み込む場合などに、存在しないテーブルを削除しようとするとエラーになってしまいますので、存在するか確認した上でDELETEしてあげます。
UPDATE
データ更新
1 |
UPDATE test_table SET test_column1 = 1, test_column2 = 2 WHERE deleted IS NULL; |
DELETE
テーブルデータ削除
1 |
DELETE FROM test_table WHERE deleted IS NULL; |
TRUNCATE
テーブルデータ削除(AUTO_INCREMENTも初期化)
1 2 3 |
TRUNCATE TABLE test_table; or TRUNCATE test_table; |
RAND
ランダムな値を取得
1 |
SELECT round(id * RAND()*100), ROUND(id * RAND()*100) FROM posts WHERE id = 1 |
DATE_ADD
直近1か月以内に作成したデータを取得
1 |
SELECT * FROM test_tables WHERE created >= DATE_ADD(NOW(), INTERVAL -1 MONTH); |
今日作成したデータを取得
1 |
SELECT * FROM test_tables WHERE created >= DATE(NOW()); |
1年以上前に作成したデータを取得
1 |
SELECT * FROM test_tables WHERE created <= DATE_ADD(NOW(), INTERVAL -1 YEAR) |
INDEX
インデックス確認
1 |
SHOW INDEX FROM test_tables; |
EXPLAIN
実行計画確認
EXPLAINを先頭につける。
1 |
EXPLAIN SELECT * FROM test_table; |
テーブルをコピーしたい場合
テーブル作成
1 |
create table books2 like books; |
内容コピー挿入
1 |
insert into books2 select * from books; |
外部キー制約
ON UPDATE CASCADEで親更新時に子も更新
ON DELETE CASCADEで親削除時に子も削除
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE skills ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), type_id INT UNSIGNED NOT NULL, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL, FOREIGN KEY (type_id) REFERENCES types(id) ON UPDATE CASCADE ON DELETE CASCADE ) ENGINE = InnoDB; |
MySQL記事
MySQL操作関連はこちらにまとめました。
https://normalblog.net/system/mysql/mysql_matome/