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

