MySQLのレコードを全削除する

MySQLのレコードを全削除する

DELETEかTRUNCATEを使う。

DELETE FROM ${table_name};
TRUNCATE table ${table_name};

実際にやってみましょう。

mysql> delete from company;
Query OK, 8 rows affected (0.07 sec)

mysql> truncate table agent_mst
    -> ;
Query OK, 0 rows affected (0.17 sec)
mysql> select * from agent_mst;
Empty set (0.00 sec)

Nice

mysql insert intoで複数テーブルにinsertはできるのか?

結論から言うと、insert intoのシングルクエリで複数テーブルへのinsertはできないらしい。


なにいいいいいいいいい!?

tips♪
Oracleだとinsert allで出来るよう。mysqlはあまりニーズがないのかな?このあたりの経緯を説明できたらプロって感じがしますね。(=私はアマチュアです)

insert all
 into table1(id, coin, price) values (1, 'BTC/JPY', 437130)
 into table2(id, coin, price) values (2, 'ETH/JPY', 11703)
 into table3(id, coin, price) values (3, 'XRP/JPY', 39.04)
select * from dual;

mysqlで複数データをまとめてinsert

mysqlで複数データをinsertしたいとします。sql文はどう書けばいいのでしょうか?
insert into values の後を複数で繋げます。

INSERT INTO {table_name} (column_name1, column_name2) VALUES ('value1','value2'), ('value3', 'value4');

では実際にやってみましょう。まずsql文を作ります。データは適当に用意します。

INSERT INTO company(company_name, type, status) VALUES ('富士通', 1, 1),('リクルート', 1, 1),('日本ユニシス', 1, 1);

select * from でデータが入っているか確認します。

複数データが入っています。

MySQLでINDEXを貼るメリットと方法

indexとは何か?indexという言葉が頭に入ってこない。index.htmlと混合する。などなど。
indexは「あかさたな」でいうア行、サ行など、検索のショートカットと感がれば分かり易い。

MySQLでどんなケースだとINDEXを設定するのか?
– レコード(n)が多く、検索(O(n))に時間がかかっている
– それによってアプリケーションのパフォーマンスに影響が出る

イメージしやすいと思うが、select文での検索(O(n))の時間は Olog(n)となり、レコードの処理に時間がかかる。indexをおくと、全件検索しなくて済むので、処理時間が短くなる。

indexの種類は幾つかあるが、mysqlではB-TreeIndexが使用されている。

(あ、この図、検索アルゴリズムの本などで見たことある!!クイックソートだ。)
ということで、関連する書籍を「情報検索アルゴリズム」などのワードでamazonで調べると良いだろう。

インデックスをはると、クイックソートの並び替えが短縮されるので、処理が短くなるという算段だ。

インデックスの追加は

ALTER TABLE table_name ADD INDEX index_name(column_name);