RECOMMEND

ハッカーと画家
ハッカーと画家
プログラマ必読。→感想


C言語ポインタ完全制覇
C言語ポインタ完全制覇
C言語 対ポインタ最強兵器。
感想

COUNTER

MONTHLY

CATEGORIES

RECENT ENTRIES

RECENT COMMENTS

RECENT TRACKBACKS

twitter

Twitterボタン

APPENDIX

sugarball

こまごまと、プログラミング関係のtipsを。

[スポンサー広告]スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[MySQL]MySQLで複数行をINSERTする 

今回はこちらのサイトを参考にしました。他力本願。
複数行を追加するためのinsert文 - while(life)tech_onoue++;

まずは、クエリの文字列をセミコロンで区切る方法。
insert into テーブル名 values(...);
insert into テーブル名 values(...);


次に、valuesをカンマで区切って複数指定する方法。
insert into テーブル名 values(...),(...), ... ,(...);



2行目以降、列名を指定する必要が無い場合は後者の方が簡単ですね。パフォーマンス的にも後者の方が良いとのことで。
MySQL 1クエリにおける複数行 INSERT の効果 || OSS iPedia
スポンサーサイト

[MySQL]MySQLでINSERT時に重複するKEYが存在する場合に使えるオプション 

今回はこちらのサイトが参考になりました。
floatingdays: MySQLで INSERT時に重複する KEYが既に存在する場合の動作のオプション


INSERT IGNORE INTO ...
 (効能)重複するKEYが既に存在する場合、データは登録されない

INSERT INTO ... ON DUPLICATE KEY UPDATE ...
 (効能)重複するKEYが既に存在する場合、そのデータをUPDATEする

REPLACE INTO ...
 (効能)重複するKEYが既に存在する場合、そのデータをDELETEしてからINSERTする(※UPDATEではない)

いずれも、重複するKEYが存在しなければ普通のINSERT文と同じ結果になる。とのこと。かなり重宝しそうです。


■参考:MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.2.4 INSERT 構文

[MySQL]MySQLでレコードをn件読み込む 

SQLで「レコードをn件読み込む」場合、Oracleなんかは
select * from TABLE where value > 10 and rownum <= 3

のように、rownumを使えば、3件レコードを読み込みます。

これをMySQLで実現しようとする場合、limitを使いましょう。
■limit使用前
mysql> select * from wp_postmeta;
+---------+---------+-------------------+------------+
| meta_id | post_id | meta_key | meta_value |
+---------+---------+-------------------+------------+
| 1 | 2 | _wp_page_template | default |
| 2 | 4 | _edit_last | 1 |
| 3 | 4 | _edit_lock | 1298216706 |
| 5 | 4 | _wp_old_slug | |
+---------+---------+-------------------+------------+
4 rows in set (0.00 sec)

■limit使用後
mysql> select * from wp_postmeta limit 2;
+---------+---------+-------------------+------------+
| meta_id | post_id | meta_key | meta_value |
+---------+---------+-------------------+------------+
| 1 | 2 | _wp_page_template | default |
| 2 | 4 | _edit_last | 1 |
+---------+---------+-------------------+------------+
2 rows in set (0.00 sec)


はい。無事、最初の2件のレコードを取得できました。

このlimitの良いところは、limitで指定した件数のレコードを取得したら処理が終了することです。つまり速い。

たとえば、「そのレコードが存在するかどうか」を確かめたい場合、countを使えばレコードを全件読み込むのですが、limitを使えば指定した件数分レコードを読み込んだ時点で処理が終了します。つまり速い。大事なことなので2回言いました。



[MySQL]MySQLをインストールしてみる 

今回はMySQLをインストールしてみます。やはりVineLinuxなので、apt-getコマンドでインストールするとしましょう。

今回は、こちらのサイトを参考にしました。

どうやら、
・MySQL-server
・MySQL-Max
・MySQL-client
・MySQL-shared
・perl-DBD-MySQL
これらのパッケージを順番にインストールする必要があるとのことです。理由はよくわからないのですが、おいおい理解できるものとします。。


では、パッケージをインストールしてみます。
# apt-get install MySQL-server
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
MySQL-server
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 104 個
7395kB のアーカイブを取得する必要があります。
展開後に 14.2MB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 3.2/i386/plus MySQL-server 4.0.25-0vl0 [7395kB]
7395kB を 5s 秒で取得しました (1331kB/s)
変更を適用しています...
準備中... ################################# [100%]
1:MySQL-server ################################# [100%]
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
080615 18:32:00 /usr/sbin/mysqld: Shutdown Complete


PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h vmvine password 'new-password'
See the manual for more instructions.

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com

完了
# apt-get install MySQL-Max
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
MySQL-Max
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 104 個
1630kB のアーカイブを取得する必要があります。
展開後に 4284kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 3.2/i386/plus MySQL-Max 4.0.25-0vl0 [1630kB]
1630kB を 0s 秒で取得しました (2536kB/s)
変更を適用しています...
準備中... ################################# [100%]
1:MySQL-Max ################################# [100%]
Restarting mysqld.
完了
# apt-get install MySQL-client
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
MySQL-client
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 104 個
2666kB のアーカイブを取得する必要があります。
展開後に 5161kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 3.2/i386/plus MySQL-client 4.0.25-0vl0 [2666kB]
2666kB を 1s 秒で取得しました (2570kB/s)
変更を適用しています...
準備中... ################################# [100%]
1:MySQL-client ################################# [100%]
完了
# apt-get install MySQL-shared
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
MySQL-shared
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 104 個
276kB のアーカイブを取得する必要があります。
展開後に 497kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 3.2/i386/plus MySQL-shared 4.0.25-0vl0 [276kB]
276kB を 0s 秒で取得しました (969kB/s)
変更を適用しています...
準備中... ################################# [100%]
1:MySQL-shared ################################# [100%]
完了
# apt-get install perl-DBD-MySQL
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下の追加パッケージがインストールされます:
perl-DBI
以下のパッケージが新たにインストールされます:
perl-DBD-MySQL perl-DBI
アップグレード: 0 個, 新規インストール: 2 個, 削除: 0 個, 保留: 104 個
834kB のアーカイブを取得する必要があります。
展開後に 1857kB のディスク容量が追加消費されます。
続行しますか? [Y/n]y
取得:1 http://updates.vinelinux.org 3.2/i386/plus perl-DBI 1.46-0vl0.31 [603kB]
取得:2
http://updates.vinelinux.org 3.2/i386/plus perl-DBD-MySQL 2.9004-0vl0.31 [231kB]
834kB を 0s 秒で取得しました (1712kB/s)
変更を適用しています...
準備中... ################################# [100%]
1:perl-DBI ################################# [ 50%]
2:perl-DBD-MySQL ################################# [100%]
完了
#


とりあえずこれでインストール完了です。次は、MySQLの設定を行います。

«  | HOME |  »

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。