テーブル内のレコードを削除するには次のようにDELETE文を使います。
DELETE FROM テーブル名;
ただしこれだとテーブル内の全てのレコードを削除してしまいます。
一般的に全てのレコードを削除することは考えづらいので、通常の運用では次のようにWHERE句で特定の条件に合致するレコードのみを削除します。
DELETE FROM テーブル名 WHERE 条件式;
実際にレコードを削除してみましょう。
-- titlesという名前のテーブルがあれば削除 DROP TABLE IF EXISTS titles; -- titlesという名前のテーブルを作成 CREATE TABLE titles ( id INT NOT NULL AUTO_INCREMENT, author_id INT, post_title VARCHAR(50) UNIQUE, view INT, PRIMARY KEY (id) ); -- レコードを挿入 INSERT INTO titles (author_id, post_title, view) VALUES (1, 'MySQLとは', 80), (2, 'SQLとはなにか', 50), (1, 'DockerでMySQLを使う方法', 10); -- viewが50に満たないレコードを削除 DELETE FROM titles WHERE view < 50; SELECT * FROM titles;
実行結果は次のとおりです。
1 1 MySQLとは 80 2 2 SQLとはなにか 50
viewが50に満たない3番目のレコードだけが削除されているのがわかります。
ちなみにこの後レコードを追加した場合、AUTO_INCREMENTで自動連番としているidは、一度使われている3を飛ばして4から始まります。
-- viewが50に満たないレコードを削除 DELETE FROM titles WHERE view < 50; -- その後レコードを追加 INSERT INTO titles (author_id, post_title, view) VALUES (3, 'MySQLサーバーへの接続と切断', 30); SELECT * FROM titles;
id author_id post_title view 1 1 MySQLとは 80 2 2 SQLとはなにか 50 4 3 MySQLサーバーへの接続と切断 30
自動連番をリセットして振り直すにはテーブルごと削除して再作成する必要があるため注意しましょう。