良く使うSQL例文まとめ16選

良く使うSQL例文まとめ16選

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/

MySQL記事一覧はこちら

https://normalblog.net/system/mysql/

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です