My Photo

« March 2012 | Main | May 2012 »

April 29, 2012

MySQLメモ008:便利なSQL文 その2

INTO OUTFILE句

SELECT … INTO OUTFILE は検索結果をファイルに書き出す。

<SELECT文> INTO OUTFILE '<ファイル名>'

C:\applications\MySQL\MySQL Server 5.5\bin>mysql -uroot -p java_sample_db
Enter password: **********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select * from products;
+------------+-----------+-------+-----------------+-------------+---------+
| product_id | name      | price | manufacturer_id | category_id | comment |
+------------+-----------+-------+-----------------+-------------+---------+
|          1 | ita choco |   100 |               8 |           6 | NULL    |
|          2 | udon1     |    50 |              22 |           1 | sanuki  |
+------------+-----------+-------+-----------------+-------------+---------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM products INTO OUTFILE 'C:/data/products.txt';
Query OK, 2 rows affected (0.27 sec)

mysql> quit
Bye

C:\applications\MySQL\MySQL Server 5.5\bin>type c:\data\products.txt
1       ita choco       100     8       6       \N
2       udon1   50      22      1       sanuki

LOAD DATA INFILE

LOAD DATA INFILE はテキストファイルを読み込んでテーブルにデータを挿入する。

LOAD DATA [LOCAL] INFILE '<ファイル名>' INTO TABLE <テーブル名>

  LOCALなしの場合はサーバ上のファイルを読み込む。
  LOCALありの場合はMySQLクライアントを実行しているコンピュータ上のファイルを読み込む。

C:\applications\MySQL\MySQL Server 5.5\bin>type C:\data\curry_data1.txt
3       koku curry kara 130     15      7       retort
4       koku curry chuukara     130     15      7       retort

C:\applications\MySQL\MySQL Server 5.5\bin>type C:\data\curry_data2.txt
5       koku curry ama  130     15      7       retort

C:\applications\MySQL\MySQL Server 5.5\bin>mysql -uroot -p java_sample_db
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.5.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET @bak_cs=@@character_set_database;
Query OK, 0 rows affected (0.03 sec)

mysql> SET @@character_set_database=binary;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM products;
+------------+-----------+-------+-----------------+-------------+---------+
| product_id | name      | price | manufacturer_id | category_id | comment |
+------------+-----------+-------+-----------------+-------------+---------+
|          1 | ita choco |   100 |               8 |           6 | NULL    |
|          2 | udon1     |    50 |              22 |           1 | sanuki  |
+------------+-----------+-------+-----------------+-------------+---------+
2 rows in set (0.02 sec)

mysql> LOAD DATA INFILE 'C:/data/curry_data1.txt' INTO TABLE products;
Query OK, 2 rows affected (0.05 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM products;
+------------+---------------------+-------+-----------------+-------------+---------+
| product_id | name                | price | manufacturer_id | category_id | comment |
+------------+---------------------+-------+-----------------+-------------+---------+
|          1 | ita choco           |   100 |               8 |           6 | NULL    |
|          2 | udon1               |    50 |              22 |           1 | sanuki  |
 |         3 | koku curry kara     |   130 |              15 |           7 | retort
 |         4 | koku curry chuukara |   130 |              15 |           7 | retort
+------------+---------------------+-------+-----------------+-------------+---------+
4 rows in set (0.00 sec)

mysql> LOAD DATA INFILE 'C:/data/curry_data2.txt' INTO TABLE products
    -> LINES TERMINATED BY '\r\n';
Query OK, 1 row affected (0.06 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM products;
+------------+---------------------+-------+-----------------+-------------+---------+
| product_id | name                | price | manufacturer_id | category_id | comment |
+------------+---------------------+-------+-----------------+-------------+---------+
|          1 | ita choco           |   100 |               8 |           6 | NULL    |
|          2 | udon1               |    50 |              22 |           1 | sanuki  |
 |         3 | koku curry kara     |   130 |              15 |           7 | retort
 |         4 | koku curry chuukara |   130 |              15 |           7 | retort
|          5 | koku curry ama      |   130 |              15 |           7 | retort  |
+------------+---------------------+-------+-----------------+-------------+---------+
5 rows in set (0.00 sec)

mysql> SET @@character_set_database=@bak_cs;
Query OK, 0 rows affected (0.00 sec)

mysql>

上の実行例でのSET文は文字化け防止のおまじない。
SELECT … INTO OUTFILE と LOAD DATA INFILE のファイル形式は以下の句で指定する。

FIELDS [TERMINATED BY '<文字>'] [[OPTIONALLY] ENCLOSED BY '<文字>' [ESCAPED BY '<文字>'] LINES TERMINATED BY '<文字>'

FIELDS TERMINATED BY '<文字>' はフィールドの区切り文字を指定する。
FIELDS ENCLOSED BY '<文字>' はフィールドを指定した文字で囲むことを指定する。
FIELDS OPTIONALLY ENCLOSED BY '<文字>' はCHAR型、VARCHAR型などの文字列のフィールドのみを指定した文字で囲むことを指定する。
FIELDS ESCAPED BY '<文字>' はエスケープ文字を指定する。
LINES TERMINATED BY '<文字>' は改行コードを指定する。

April 22, 2012

MySQLメモ007:便利なSQL文 その1

LIMIT句

SELECT文にLIMIT句を付けると検索結果の一部のみを取得することができる。

<SELECT文> LIMIT [<オフセット>], <件数>

指定したオフセットから指定した件数分を取得する。
通常はORDER BY句を一緒につける。なぜならORDER BY句がないとSELECTの結果はどのような順番で帰ってくるかわからないためである。

mysql> SELECT * FROM t3 ORDER BY col1;
+------+
| col1 |
+------+
| a    |
| b    |
| c    |
| d    |
+------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM t3 ORDER BY col1 LIMIT 1,2;
+------+
| col1 |
+------+
| b    |
| c    |
+------+
2 rows in set (0.00 sec)

拡張INSERT

1文で複数のレコードを挿入できる。

mysql> SELECT * FROM t1;
Empty set (0.00 sec)

mysql> INSERT INTO t1 VALUES ('a'), ('b');
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM t1;
+------+
| col1 |
+------+
| a    |
| b    |
+------+
2 rows in set (0.00 sec)

ユーザー変数

ユーザーが変数を定義してそれをSQL文中で使うことができる。
ユーザー変数は「@変数名」と記述する。

mysql> SET @PI=3.14;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT 2*@PI;
+----------------------------------+
| 2*@PI                            |
+----------------------------------+
| 6.280000000000000000000000000000 |
+----------------------------------+
1 row in set (0.00 sec)

MySQLメモ006:トランザクション

AUTO COMMIT

MySQLはデフォルトではSQL文を実行するたびに自動的にコミットする。これをAUTO COMMITモードと呼ぶ。
AUTO COMMITかどうかの参照、AUTO COMMITの有効/無効はシステム変数 AUTOCOMMIT で行う。

AUTO COMMITが有効の場合、トランザクションを開始するには BEGIN または START TRANSACTION が必要で、COMMIT または ROLLBACK でトランザクションが終了する。
AUTO COMMITが無効の場合、BEGIN や START TRANSACTION は不要で自動的にトランザクションが開始され、COMMIT または ROLLBACK でトランザクションが終了する。

mysql> SELECT @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM t3;
Empty set (0.00 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t3 VALUES ('a');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM t3;
+------+
| col1 |
+------+
| a    |
+------+
1 row in set (0.00 sec)

mysql> ROLLBACK;
Query OK, 0 rows affected (0.05 sec)

mysql> SELECT * FROM t3;
Empty set (0.00 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t3 VALUES ('b');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM t3;
+------+
| col1 |
+------+
| b    |
+------+
1 row in set (0.00 sec)

mysql> COMMIT;
Query OK, 0 rows affected (0.05 sec)

mysql> SELECT * FROM t3;
+------+
| col1 |
+------+
| b    |
+------+
1 row in set (0.00 sec)

トランザクション分離レベル

トランザクション分離レベルとは、あるトランザクションが行った変更を他のトランザクションがどの段階で読み取れるようになるのかを定めたもの。ISOでは以下の4つを定めている。

READ UNCOMMITTED
あるトランザクションでのコミットしていない変更を、他のトランザクションから読める。
READ COMMITED
あるトランザクションでのコミットしていない変更は、他のトランザクションから読めない。コミットした変更は読める。
REPEATABLE READ
他のトランザクションで値を変更しても、1つのトランザクションの同じ場所は常に同じ値を返す。
SERIALIZABLE
トランザクションを1つ1つ順に実行していく。最もデータの整合性は高いがロック待ち時間も多くなる。

InnoDBでのデフォルトは REPEATABLE READ である。

SAVE POINT

InnoDBにはトランザクションの特定の位置まで戻るためのSAVE POINTが実装されている。
以下の文でSAVE POINTをセットする。

SAVEPOINT <名前>

以下の文でSAVE POINTまで戻る。

ROLLBACK [WORK] TO [SAVEPONT] <名前>

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t3 VALUES ('c');
Query OK, 1 row affected (0.00 sec)

mysql> SAVEPOINT sp1;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t3 VALUES ('d');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM t3;
+------+
| col1 |
+------+
| b    |
| c    |
| d    |
+------+
3 rows in set (0.00 sec)

mysql> ROLLBACK TO sp1;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM t3;
+------+
| col1 |
+------+
| b    |
| c    |
+------+
2 rows in set (0.00 sec)

mysql> COMMIT;
Query OK, 0 rows affected (0.03 sec)

mysql> SELECT * FROM t3;
+------+
| col1 |
+------+
| b    |
| c    |
+------+
2 rows in set (0.00 sec)

暗黙的にコミットを実行する文

以下の文は実行すると暗黙的にコミットする。

  • ALTER TABLE
  • CREATE INDEX
  • DROP DATABASE
  • DROP INDEX
  • DROP TABLE
  • LOAD MASTER DATA
  • LOCK TABLES
  • RENAME TABLE
  • SET AUTOCOMMIT=1
  • BEGIN / START TRANSACTION
  • TRUNCATE TABLE

2012年4月新アニメ雑感 #anime

聖闘士星矢Ω
以前、単独の記事でも書いたが、オリジナルの聖闘士星矢とあまり厳密に繋がっていない感じ。かと言って新しいおもしろさも感じない。プリキュアっぽい絵柄で(敵キャラ、聖衣の薄っぺらい感じ)で余計そう感じる。
1話で視聴終了。

宇宙兄弟
原作通りで面白い。でも放送時間が間違ってるだろうw日曜日の朝7時ってww
エンディングのおまけコーナーと放送時間は子供向けみたいな作りだが、OPがユニコーンなのは大人(おっさん)向け。なんかチグハグな感じが。
面白いけど原作と全く同じに進んでいるので、敢えてアニメで見ることもない気もする。
視聴継続だが、忙しくなったら切る可能性あり。

銀河へキックオフ!!
たまたまやっていたので見たが、イナズマイレブンみたいなあり得ないサッカーじゃなくてw、まとものサッカーアニメ。
面白いとは感じなかったので録画予約からは消した。けど家にいて暇ならたまに見るかも。主人公のCVが小林ゆうなのと、おまけの「Jリーガーに挑戦」が見たいから。

めだかボックス
原作はたしか3巻まで読んだ。やっぱり豊崎愛生は合ってないと感じた。でも豊崎だから見るって人がたくさんいるんだろうなあ。
面白いなら原作読めばいいと思うのでアニメは視聴終了。

謎の彼女X
原作未読。名前は知ってたけどこういう話なのかw
変態っぽい話でなかなか面白い。しかしヒロインのCV、OP・EDの歌を歌っているけど、歌手なのか?演技は素人だ。
視聴継続。

黄昏乙女×アムネジア
原作未読。
メインヒロインが幽霊のハーレム話?この手はあまり見ないが、これは絵柄とCVがけっこう好きだし、ミステリーっぽいストーリーになりそう?なので視聴継続。
#学校に死体というと「ファミコン探偵倶楽部2」という傑作ゲームを思い出す。

ヨルムンガンド
原作既読。今期一番の期待作。これは原作通りであってもアニメで見る価値があると思う。脚本が黒田洋介だし、戦闘シーンをアニメーションで見れるところも。
ココ役の伊藤静、ヨナ役の田村睦心は合っている。第1話でごろごろ転がるココがかわいかったw
視聴継続。

つり球
第1話は不条理ギャグみたいだったが、まったく笑えなかった。掴みは最悪。
監督が中村健治だからこれからちゃんとしたストーリーがはじまって面白くなっていくんだろうけど、そこまで待てない。
監督を信じて待ってくれる視聴者がいるという自信があるのかもしれないが、自分は今期は見る作品が多いのでそこまで待ってられない。
視聴終了。

エウレカセブンAO
前作は現代から数千年とか数万年後の地球だったと思うのだが、この作品は西暦202X年とか言っていた。前作とのつながりがわからない。
もしかして劇場版の続き?劇場版は見てないけどテレビ版とは設定が大きく異なる別物だって話を聞いたことがある。
あと、1話みて思ったのが主人公が「島を守る」とかいいつつ島に被害が及ぶような戦闘をしていること。これ、「輪廻のラグランジェ」と第1話と全く同じだ。主人公がパイロットとして未熟だからそうなってしまったという解釈も出来るが、島を背にして敵と正対し敵の砲撃を避けたらどこに着弾するかぐらいわかるだろう。
沖縄離島好きの人間としてはああいう島が破壊されていくのを見るのはなんだかなあ。
あと2,3話見て面白くありそうにないならそこで切る。


他に、新作ではないが「CANAAN」を見ている。自分は初見。原案の「428」はダウンロードしたけどほとんどやってない^^;


と言うわけで、現在見ているアニメは
続いている作品が「アクエリオンEVOL」、「HUNTER×HUNTER」
再開された作品が「Fate/Zero」
新作が「宇宙兄弟」、「謎の彼女X」、「黄昏乙女×アムネジア」、「ヨルムンガンド」、「エウレカセブンAO」
再放送が「CANAAN」
9作品。多いw
今後の状況によっては「エウレカセブンAO」と「宇宙兄弟」は切るかも。

磐田は山田スーパーゴールで勝利、新潟は完封負け

J's GOAL:試合詳細:2012 J1 第7節 ジュビロ磐田 1-0 横浜Fマリノス

山田すげー。スーパーゴール。
その前の宮崎、コースケとのコンビネーションも良い。
宮崎はこのまま仮パクできないかな?w


J's GOAL:試合詳細:2012 J1 第7節 サガン鳥栖 1-0 アルビレックス新潟

7節でもう4敗。多くの人が言ってるけど、あの先発はどうなの?亜土夢と貴章はどちらか一人は入れないとだめなんじゃない?2人とも入れてもいいけど。
今日ガンバが勝つと16位に落ちる。清水頑張ってくれ^^;

April 19, 2012

MySQLメモ005:テーブルの変更

既存のテーブルに変更を加えるには"ALTER TABLE"を使用する。

カラムの追加
ALTER TABLE <テーブル名> ADD [COLUMN] <追加カラム名> <データ型> [AFTER <カラム名>]
・"AFTER <カラム名>" でカラムを追加する位置を指定できる。

カラムの変更
ALTER TABLE <テーブル名> MODIFY|CHANGE [COLUMN] <カラム名> <型や制約など>

カラム名の変更
ALTER TABLE <テーブル名> CHANGE COLUMN <元のカラム名> <新しいカラム名> <型や制約など>

カラムの削除
ALTER TABLE <テーブル名> DROP <カラム名>

インデックスの追加
ALTER TABLE <テーブル名> ADD INDEX|UNIQUE|PRIMARY KEY|FOREIGN KEY <インデックスの定義>

インデックスの削除
ALTER TABLE <テーブル名> DROP INDEX|UNIQUE|PRIMARY KEY|FOREIGN KEY <インデックス名>

テーブル名の変更
・"RENAME TABLE" でも変更できる。
ALTER TABLE <テーブル名> RENAME [TO] <新テーブル名>
RENAME TABLE <テーブル名1> TO <新テーブル名1> [,<テーブル名2> TO <新テーブル名2> ...]


実行例
mysql> CREATE TABLE customers (
    ->   customer_id INT,
    ->   customer_name VARCHAR(10),
    ->   prefectural_id INT,
    ->   address VARCHAR(30));
Query OK, 0 rows affected (0.11 sec)

mysql> ALTER TABLE customers ADD customer_class_id INT AFTER customer_name;
Query OK, 0 rows affected (0.36 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE customers ADD comment VARCHAR(50);
Query OK, 0 rows affected (0.23 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC customers;
+-------------------+-------------+------+-----+---------+-------+
| Field             | Type        | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| customer_id       | int(11)     | YES  |     | NULL    |       |
| customer_name     | varchar(10) | YES  |     | NULL    |       |
| customer_class_id | int(11)     | YES  |     | NULL    |       |
| prefectural_id    | int(11)     | YES  |     | NULL    |       |
| address           | varchar(30) | YES  |     | NULL    |       |
| comment           | varchar(50) | YES  |     | NULL    |       |
+-------------------+-------------+------+-----+---------+-------+
6 rows in set (0.03 sec)

mysql> ALTER TABLE customers MODIFY customer_name VARCHAR(20);
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE customers CHANGE COLUMN prefectural_id area_id INT;
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC customers;
+-------------------+-------------+------+-----+---------+-------+
| Field             | Type        | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| customer_id       | int(11)     | YES  |     | NULL    |       |
| customer_name     | varchar(20) | YES  |     | NULL    |       |
| customer_class_id | int(11)     | YES  |     | NULL    |       |
| area_id           | int(11)     | YES  |     | NULL    |       |
| address           | varchar(30) | YES  |     | NULL    |       |
| comment           | varchar(50) | YES  |     | NULL    |       |
+-------------------+-------------+------+-----+---------+-------+
6 rows in set (0.03 sec)

mysql> ALTER TABLE customers ADD PRIMARY KEY (customer_id);
Query OK, 0 rows affected (0.25 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE customers ADD INDEX customers_index_1 (area_id);
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> SHOW INDEX FROM customers;
+-----------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table     | Non_unique | Key_name          | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-----------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| customers |          0 | PRIMARY           |            1 | customer_id | A      |           0 |     NULL | NULL   |      | BTREE      |         |      |
| customers |          1 | customers_index_1 |            1 | area_id     | A      |           0 |     NULL | NULL   | YES  | BTREE      |         |      |
+-----------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)

mysql>

mysql> CREATE TABLE t1 (col1 VARCHAR(5));
Query OK, 0 rows affected (0.10 sec)

mysql> SHOW TABLES LIKE 't%';
+-------------------------------+
| Tables_in_java_sample_db (t%) |
+-------------------------------+
| t1                            |
+-------------------------------+
1 row in set (0.00 sec)

mysql> ALTER TABLE t1 RENAME t2;
Query OK, 0 rows affected (0.06 sec)

mysql> SHOW TABLES LIKE 't%';
+-------------------------------+
| Tables_in_java_sample_db (t%) |
+-------------------------------+
| t2                            |
+-------------------------------+
1 row in set (0.01 sec)

mysql> RENAME TABLE t2 TO t3;
Query OK, 0 rows affected (0.06 sec)

mysql> SHOW TABLES LIKE 't%';
+-------------------------------+
| Tables_in_java_sample_db (t%) |
+-------------------------------+
| t3                            |
+-------------------------------+
1 row in set (0.01 sec)

mysql>

MySQLメモ004:テーブルの作成

テーブルの作成
CREATE TABLE <テーブル名>
  (<カラムの定義>
   [,<インデックスの定義>])
  [<オプション>]
カラムの定義
<カラム名> <データ型>[(桁数)] [NOT NULL] [DEFAULT <デフォルト値>] [AUTO_INCREMENT] [[PRIMARY] KEY] [COMMENT '<コメント>']
[,...]

インデックスの定義
PRIMARY KEY [<インデックス名>] [<インデックスの型>] (<カラム名>[,...])
| INDEX [<インデックス名>] [<インデックスの型>] (<カラム名>[,...])
| UNIQUE [<インデックス名>] [<インデックスの型>] (<カラム名>[,...])
| FULL TEXT [<インデックス名>] [<インデックスの型>] (<カラム名>[,...])
| FOREIGN KEY [<インデックス名>] [<インデックスの型>] (<カラム名>[,...]) [<参照の定義>]
[,...]
・"FULL TEXT"は全文検索用の特殊なインデックス。日本語非対応?
参照の定義
REFERENCES <テーブル名> [(<カラム名>[,...])
  [MATCH FULL| MATCH PARTIAL]
  [ON DELETE [RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT]]
  [ON UPDATE [RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT]]
・FOREIGN KEYの後に付ける。
・RESTRICT は親テーブルで参照されている行の削除または更新を許可しない。
・CASCADE は親テーブルで参照されている行が削除または更新されるときに、子テーブルの関連する行も削除または更新される。
オプション
ENGINE = <ストレージエンジン名>
COMMENT = '<コメント>'
MAX_ROWS = <最大行>

テーブルのデータ付きコピー
・テーブル構造とデータをコピーする。
CREATE TABLE <新規テーブル>
 [AS] SELECT *
    FROM <コピー元テーブル>
    [<WHERE句>]
・WHERE句を指定すればデータを抜粋してコピーできる。

テーブルの構造のみコピー
・テーブルの構造だけをコピーする。データは引き継がない。
CREATE TABLE <新規テーブル> LIKE <コピー元テーブル>

CREATE TABLE文の表示
・テーブルを指定してそのテーブルを作成するCREATE TABLE文を表示することができる。
SHOW CREATE TABLE <テーブル名>

インデックスの情報の表示
SHOW INDEX FROM <テーブル名>

実行例
mysql> CREATE TABLE products
    ->  (product_id INT,
    ->   name VARCHAR(10),
    ->   price INT,
    ->   manufacturer_id INT,
    ->   category_id INT,
    ->   comment VARCHAR(30),
    ->   PRIMARY KEY (product_id),
    ->   INDEX products_index_1 (manufacturer_id),
    ->   INDEX products_index_2 (category_id));
Query OK, 0 rows affected (0.11 sec)

mysql> SHOW CREATE TABLE products;
+----------+------------------------------------+
| Table    | Create Table                       |
+----------+------------------------------------+
| products | CREATE TABLE `products` (
  `product_id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(10) DEFAULT NULL,
  `price` int(11) DEFAULT NULL,
  `manufacturer_id` int(11) DEFAULT NULL,
  `category_id` int(11) DEFAULT NULL,
  `comment` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`product_id`),
  KEY `products_index_1` (`manufacturer_id`),
  KEY `products_index_2` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+----------+------------------------------------+
1 row in set (0.00 sec)

mysql> SHOW INDEX FROM PRODUCTS;
+----------+------------+------------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table    | Non_unique | Key_name         | Seq_in_index | Column_name     | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+----------+------------+------------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| products |          0 | PRIMARY          |            1 | product_id      | A        |           0 |     NULL | NULL   |      | BTREE      |         |        |
| products |          1 | products_index_1 |            1 | manufacturer_id | A        |           0 |     NULL | NULL   | YES  | BTREE      |         |        |
| products |          1 | products_index_2 |            1 | category_id     | A        |           0 |     NULL | NULL   | YES  | BTREE      |         |        |
+----------+------------+------------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (0.00 sec)

mysql>

April 16, 2012

MySQLメモ003:システム変数

MySQLにはシステム変数というものがあり、設定がどのようなっているかを示している。

システム変数の表示
SHOW VARIABLES;

特定のシステム変数の表示
SHOW VARIABLES LIKE '変数名';
SELECT @@変数名;

SELECTで参照する場合は "@@変数名" と書く。

システム変数の設定
SET [GLOBAL|SESSION] 変数名=値

  GLOBAL:サーバー全体に影響する。
  SESSION:現在のスレッド(接続)にのみ影響する。

システム変数の一部
名前 意味 スコープ 動的
autocommit オートコミットモード 両方
charcter_set_server サーバのデフォルトのキャラクタセット 両方
language エラーメッセージに使用する言語 global
log クエリのログを有効にしているか global
time_zone 現在のタイムゾーン 両方
version サーバのバージョン番号 global

実行例
mysql> show variables;
+---------------------------------------------------+------------
| Variable_name                                     | Value      
+---------------------------------------------------+------------
| auto_increment_increment                          | 1          
| auto_increment_offset                             | 1          
| autocommit                                        | ON         
| automatic_sp_privileges                           | ON         
| back_log                                          | 50         
| basedir                                           | C:\applications\MySQL\MySQL Server 5.5\                                                                     | big_tables                                        | OFF        
| binlog_cache_size                                 | 32768      
| binlog_direct_non_transactional_updates           | OFF        
| binlog_format                                     | STATEMENT  
| binlog_stmt_cache_size                            | 32768      
| bulk_insert_buffer_size                           | 8388608    
| character_set_client                              | utf8       
| character_set_connection                          | utf8       
| character_set_database                            | utf8       
| character_set_filesystem                          | binary     
| character_set_results                             | utf8       
| character_set_server                              | utf8       
| character_set_system                              | utf8       

<<<省略>>>>

| time_format                                       | %H:%i:%s   
| time_zone                                         | SYSTEM     
| timed_mutexes                                     | OFF        
| timestamp                                         | 1334409667 
| tmp_table_size                                    | 16777216   
| tmpdir                                            | C:\Windows\TEMP
| transaction_alloc_block_size                      | 8192       
| transaction_prealloc_size                         | 4096       
| tx_isolation                                      | REPEATABLE-READ
| unique_checks                                     | ON         
| updatable_views_with_limit                        | YES        
| version                                           | 5.5.19     
| version_comment                                   | MySQL Community Server (GPL)
| version_compile_machine                           | x86        
| version_compile_os                                | Win32      
| wait_timeout                                      | 28800      
| warning_count                                     | 1          
+---------------------------------------------------+------------
327 rows in set, 1 warning (0.00 sec)

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'version';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| version       | 5.5.19 |
+---------------+--------+
1 row in set (0.00 sec)

mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 5.5.19    |
+-----------+
1 row in set (0.00 sec)

mysql>

April 15, 2012

静岡ダービージュビロ敗れる、新潟今季初勝利 #jubilo #albirex #jleague

J's GOAL:試合詳細:2012 J1 第6節 清水エスパルス 3-2 ジュビロ磐田

今期初黒星。大前にやられた。1点目はうまいことフリーになられたし、2点目はドリブルでかわされて押し込まれた。
負けたけどコースケが終了間際に得点。コースケは覚醒したか?本当に好調だ。


J's GOAL:試合詳細:2012 J1 第6節 セレッソ大阪 0-1 アルビレックス新潟

キショー!!今季初勝利!!これで13位に浮上。大宮より上だ^^
Jリーグタイムを見る限りだとだいぶチャンスはあったみたい。やはりミシェウがいると違うのか。
ミシェウが戻ってきて今後、ブラジルトリオの先発は確定か。あと1枠は亜土夢、貴章、平井のうちの誰か。今日は途中出場の貴章が結果を出した。今日は出番なかった平井は早いうちに結果出さないとますます厳しい状況になりそうだな。
守備陣は2試合連続完封。途中で本間に代わって大井健太郎が入ってるけど、これって大井がボランチやったんだろうか?ボランチできるんだっけ?
いっぱいイエローもらってしまったけど、勝てばいいのさ。次もアウェイで勝利だ^^/

April 13, 2012

本当にてんかんか?

暴走時、発作起きていなかった可能性…祇園事故 : 社会 : YOMIURI ONLINE(読売新聞)

てんかん」と聞いた時、変だと思った。まっすぐな道とはいえ、運転者がてんかん発作により運転できない状態で320mも走れるだろうか?もっと手前で建物や電柱などにぶつかって止まるんじゃないだろうか。
それに最初にタクシーと接触した後、目撃者が「横をすり抜けて逃げた」と言っていた。それってハンドルを切って車を操作したってことだろう。
途中からてんかん発作が起きたのかもしれないが、事故の最初の段階では意識があった可能性も十分考えられるんじゃないだろうか。


まあ何にせよ、てんかん患者の運転免許取得は禁止すべきだ。患者団体が文句言いそうだが、自由というのは世間に迷惑かけない範囲で認められるものだ。
今回の事故はまだてんかん発作が原因と断定されたわけではないが、栃木の小学生6人が死亡した事故とか、過去にはそういう事故が起きてるんだから。

April 11, 2012

相馬監督解任 #jleague

【川崎F】「期待下回る」と相馬監督解任 - J1ニュース : nikkansports.com

まだ序盤戦のJで3人目の監督解任。今までこんなことあっただろうか。
浮上の兆しが見えないとはいえ思い切ったことだ。


で、浮上の兆しが見えないといえばアルビもそうなんだけど、黒崎監督は解任されないだろうし、して欲しくない。
別に黒崎監督がいい監督だと思っているわけではない。だけどG大阪や川崎と違って新潟はもともとJ1で戦力的には下位な訳で、監督だけに責任を求めてもしょうがない。
監督代えても補強がなければ成績が劇的に向上しないだろう。
それにGは監督と選手間に溝ができていたみたいだけど、新潟に関してはそんなことなさそうだし。

信じるしかない。信じて応援するしかないんだよ。

April 08, 2012

磐田は首位奪取失敗、新潟まだ勝利なし #jubilo #albirex #jleague

J's GOAL:試合詳細:2012 J1 第5節 ベガルタ仙台 2-2 ジュビロ磐田

8年ぶりの首位目前、「90+5分」に追いつかれたorz
仙台も強いけど磐田負けてないよ。前田、駒野の実力は言うまでもないけど、2年目の山田もすばらしい。
松浦は去年福岡で1年レギュラーを張って成長したし、山本コースケは早くも2ゴール、ボランチながらゴールまえの冷静さが光る。
川口が長期離脱しちゃったけど八田が頑張っているし、今シーズンはマジでACL狙えるんじゃないか?


J's GOAL:試合詳細:2012 J1 第5節 ベガルタ仙台 2-2 ジュビロ磐田

シュート5本って。。。
札幌、ガンバが負けたから順位は上がったけど、チームの調子はまったく上向いてなさそうだなあ。
ミシェウが今期初出場。これがなんとか浮上のきっかけになってほしい。


BSで広島vsガンバを見た。スコアだけみたらガンバが大敗だけど、ガンバのPKが決まってたらどうなってたかわからない。2ゴールの佐藤寿人もすごいけど、MOMはGK西川だろう。

April 07, 2012

日本語プロパティファイル

Java6ではプロパティファイルにマルチバイト文字を含む場合に native2ascii を使わなくてもそのまま読み込めるようになった。

プロパティファイル
name=犀川創平

プロパティファイルを読むコード
public static void main(String[] args) {
	Properties properties = new Properties();
	InputStream is = Sample.class.getResourceAsStream("..\\Sample.properties");
	if (is == null) {
		System.out.println("file not found.");
		return;
	}
	try {
		properties.load(new InputStreamReader(is, "UTF-8"));
		System.out.println(properties.get("name"));
	} catch (UnsupportedEncodingException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
}
上記コードの出力
犀川創平

Propertiesクラスの load(Reader) が新しく追加されたメソッド。
Class#getResourceAsStream()の引数はソースファイルのある場所からの相対パスで指定する。

参考ページ:第13夜 Java SE 6はnative2ascii使わなくていいのはみんな知っていると思うが - しんさんの出張所 はてな編

Java復習(3)アサーション

アサーションは想定した条件を満たしているかをチェックするために使う。条件を満たさなかったときに AssertionError が発生する。
条件には以下のようなものがある。

  • 内部の不変条件
  • 制御フローの不変条件
  • 事前条件・事後条件・クラスの不変条件

シンタックスは以下。

assert <条件式>;
assert <条件式>: <詳細情報>;

条件式は条件を満たす場合にtrue、つまり実行時にありえない状況になったときに false になるようなブール式である。
2つ目の書式の詳細情報は、条件式が false になったときに java.lang.AssertionError のコンストラクタの引数となる。

次のコードは内部の不変条件の例。iは常に正であることが想定しており、i が負の場合はアサーションが失敗して AssertionError が発生する。

if (i % 3 == 0) {
  ...
} else if (i % 3 == 1) {
  ...
} else {
  assert i % 3 == 2 : i;
  ...
}

次のコードは内部の不変条件の例で。for文でreturn するものと想定しているので、for文を抜けたところにアサーションを置いている。

for (...) {
  if (...) {
    return;
  }
}
assert false; // Execution should never reach this point!

1.4ではコンパイル時にアサーションを有効にするにはjavacにオプション "-source 1.4" をつけなければならなかった。
5以降ではsourceオプションをつけなくてもアサーションは有効である。

実行時にアサーションを有効/無効にするには java に -ea/-da オプションを付ける。パッケージ名、クラス名を指定することで特定のパッケージ、クラスに対してアサーションを有効/無効にすることができる。

-ea[:<パッケージ名>...|:<クラス名>]
-enableassertions[:<パッケージ名>...|:<クラス名>]
    アサーションを有効にする。

-da[:<パッケージ名>...|:<クラス名>]
-disableassertions[:<パッケージ名>...|:<クラス名>]
    アサーションを無効にする。

サンプルコード
public class AssertionTest {

  public static void main(String args[]) {
    assert args != null && args.length != 0 : "no args";
  }
}

実行結果
C:\data\programs\java>javac AssertionTest.java

C:\data\programs\java>java AssertionTest

C:\data\programs\java>java -ea AssertionTest
Exception in thread "main" java.lang.AssertionError: no args
        at AssertionTest.main(AssertionTest.java:4)

C:\data\programs\java>java -ea AssertionTest aaa

C:\data\programs\java>

参考ページ:
アサーションを使用したプログラミング
Java 入門 | アサーション

April 06, 2012

第39回将棋大賞発表

第39回将棋大賞が決まる! | お知らせ|お知らせ・イベント情報:日本将棋連盟

最優秀棋士賞は5年連続で羽生二冠。
「なんで渡辺竜王が最優秀棋士じゃないんだ」と騒いでいる奴がいるが、僅差だろうけどやはり羽生二冠で妥当だと思う。
確かに渡辺竜王は王座を羽生二冠の20連覇を阻止して奪取したが、日本シリーズとNHK杯は羽生二冠に負けている。順位戦でも羽生二冠が勝っている。
それに羽生二冠は名誉NHK杯と順位戦10戦全勝がある。この2つはデカイと思う。

April 04, 2012

サーブレット・JSPメモ018:Struts:Struts設定ファイルを分割した際のパス

環境
JDK 1.6.0_24
Struts 1.3.10

Struts関連の記事:
サーブレット・JSPメモ015:Struts:StrutsタグライブラリでInvalidCancelException
サーブレット・JSPメモ016:Struts:validator-rules.xml
サーブレット・JSPメモ017:Struts:Tilesの利用

モジュール分割するとモジュールごとにStruts設定ファイルを指定できる。下記は web.xml のモジュール分割の設定の例である。

<servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
  </init-param>
  <init-param>
    <param-name>config/admin</param-name>
    <param-value>/WEB-INF/struts-config-admin.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

上記の設定の場合、アプリケーションルートが "http://localhost:8080/example/" の場合、adminモジュールには "http://localhost:8080/example/admin/" 以下のURLでアクセスでき、その設定ファイルは struts-config-admin.xml である。
その struts-config-admin.xml のaction要素やforward要素のパス(path属性の値ではなく実際のパスを指定する値)は /admin からの相対パスになる。

<action path="/toTestAction" type="org.apache.struts.actions.ForwardAction" parameter="/user.jsp" />
<action path="/testAction" type="chap06.TestAction" name="sample_userForm"
  parameter="method">
	<forward name="success" path="/sub/result.jsp" />
</action>

struts-config.admin.xml の上記のようなaction要素がある場合、parameter属性の値 "/user.jsp" の user.jsp はadminディレクトリに、forward要素のpath属性の値 "/result.jsp" の result.jsp はadmin/subディレクトリになければならない。

April 02, 2012

サーブレット・JSPメモ017:Struts:Tilesの利用

環境
JDK 1.6.0_24
Struts 1.3.10

Struts関連の記事:
サーブレット・JSPメモ015:Struts:StrutsタグライブラリでInvalidCancelException
サーブレット・JSPメモ016:Struts:validator-rules.xml

Tilesを利用するには struts-config.xml のplug-in要素での設定のほかに、web.xml のinit-param要素で以下の設定をする必要がある。

<init-param>
	<param-name>chainConfig</param-name>
	<param-value>org/apache/struts/tiles/chain-config.xml</param-value>
</init-param>

参考ページ:Struts1.3でTilesタグライブラリを使う|localhost:1981

聖闘士星矢Ω 第1話 「星矢が救った命!甦れ聖闘士伝説!」

絵はプリキュアだ^^;
赤ちゃん光牙とか、敵ボスのアレスは特にそう感じる。

CVについて。
古谷徹は「特別出演」ってなってるけどどういう意味なんだろう?今後出番はないのかな。次回予告だけとか?
主人公は緑川光。なんというか微妙な^^;
最近の若い人気声優ってわけでもなければ、大ベテランでもない。いやまあベテランで演技力とかは別に文句はないけど、あんまり熱血主人公のイメージがないな。緑川というと自分の中ではサイバーフォーミュラの新城が思い浮かぶ。
シャイナさんはオリジナルから変わらずの小山茉美。なんか小山さんは自分の中ではおばさんキャラ、そしてニュース番組のナレーションのイメージがついちゃって^^;ここは若い声優に代えても良かったんじゃないかと個人的には思う。
しょこたんはうーん。タレントとしてのしょこたんは可愛くて大好きなんだけど、声優としてはやはり素人。
素人声優でも遊戯王の主人公の人はやっているうちにだんだん上手くなっていったけど、この作品のアテナに上達するほど出番あるとは思えないし。

お話・設定的にはマンガ・テレビアニメの「聖闘士星矢」の続編とは考えない方がいいのかも。
星矢以外のかつての青銅聖闘士は出てきそうにない。お子さんの視聴者には「かつて星矢っていうすごい聖闘士がいて、アテナと光牙を守ってアレスと戦って死んだ」くらいの認識を持ってもらえればいいという感じ。
意外とおっさん向きには作られてないのか。そりゃそうかw
聖衣もあの箱に入っているオブジェが分離して鎧になって装着!というものじゃなくなってるし、なんかペラペラの薄くてかっこよくない。特に、まだ出てきてないけど女青銅聖闘士(ヒロイン?)の聖衣は鎧的な感じがほとんどない。そのままプリキュアに出てきても違和感ないくらい。

第1話ではあんまり魅力を感じる作品ではなかったけど、とりあえずもうしばらく見てみようと思う。

VW第1章クリア、など #FF11

昨日、VWをウィンダスルートの募集があったので詩人で参加。
バスとサンドの時は初VWの人がいて始める前に詳しい説明があったが、今回は初めての人はいないようで人が集まったらすぐに始まって、順調にステップ4まで完了。
これで第1章をクリアヽ(´Д`)ノ

戦利品でリフトサンドと銀境ってのがあってこれなんだろ?と思っていたが、メイジャンで必要なのか。店売りできないし競売にも出せない。バザーしてもそんなに売れるわけでもなく邪魔だ^^;

他に先週はアビセア-アットワで悠然の翠色ジェイドと金爪のアートマをゲット。
アットワのジェイドがそろった。

それからアートマ目当てでブンカールのレディバグNM「Xan」にソロで挑んだ。
以前シーフでやったら強力なブレイズスパイクで黒コゲに^^;トリプルアタックの時の反撃ダメージが半端ない。
なので今回はシーフはやめてまず召喚やってみたが2戦って勝てなかった。ただ全然かなわないという感じではなかった。慎重にやれば勝てそう。
次に赤/忍で。こちらは初戦負けたが2戦目で初勝利。弱体が入る。パライズ2で結構麻痺してくれた。
召の時と較べて忙しいが戦闘時間は召でやるよりは短くて済みそうなので、このNM戦は今後は赤/忍でやっていくことにする。

« March 2012 | Main | May 2012 »

May 2017
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof