のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,297人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレMySQL 総合 Part12

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    501 : 483 - 2007/11/27(火) 18:59:37 ID:??? (-22,-30,-102)
    すみません、先日質問させてもらった者です。WHERE節で
    WHERE column_name LIKE '%DVDプレーヤー%' OR ('%ビデオ%' AND '%デッキ%')
    のように式を書いて、エラーもなく動作したのですが、
    その後、この記法についてマニュアルで見つけることができません・・・
    ここにそれらしき記法を見つけたんですが(WHERE節の最適化の例のひとつとして)
    http://dev.mysql.com/doc/refman/5.1/ja/where-optimizations.html

    また、手探りで式を変えながら試してみると、
    上記の例の場合も、エラーは出ないものの、最初のDVDプレーヤーしか対象になっていないようなんです。

    該当のマニュアルページを教えていただけるとありがたいのですが・・
    502 : NAME IS - 2007/11/27(火) 19:50:41 ID:??? (+17,+26,+0)
    文字コードがあってないんジャマイカ
    503 : NAME IS - 2007/11/27(火) 19:51:55 ID:??? (-27,-30,-38)
    予想はしていたが
    これはひどいw

    WHERE column_name LIKE '%DVDプレーヤー%' OR ((column_name LIKE '%ビデオ%') AND (column_name LIKE '%デッキ%'))
    504 : NAME IS - 2007/11/27(火) 20:12:28 ID:??? (+23,+28,-18)
    >>501
    http://dev.mysql.com/doc/refman/5.1/ja/string-comparison-functions.html
    like は演算子にしか見えないけど、なんで関数になってるんだろ
    505 : NAME IS - 2007/11/27(火) 20:25:15 ID:??? (+0,+0,+0)
    >>500 なんでだろう・・・・自分のだとこうなる。


    mysql> desc table1;
    +--------+---------------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +--------+---------------------+------+-----+---------+-------+
    | field1 | date | YES | | NULL | |
    | field2 | varchar(3) | YES | | NULL | |
    | field3 | varchar(11) | NO | PRI | | |
    | field4 | varchar(11) | NO | PRI | | |
    | field5 | bigint(20) unsigned | YES | | NULL | |
    | field6 | char(1) | NO | PRI | | |
    +--------+---------------------+------+-----+---------+-------+
    6 rows in set (0.02 sec)

    mysql> select * from table1 where field3 = '00000000002' and field4 = '0' and field6 = 'N';
    +------------+--------+-------------+--------+--------+--------+
    | field1 | field2 | field3 | field4 | field5 | field6 |
    +------------+--------+-------------+--------+--------+--------+
    | 2007-11-27 | aaa | 00000000002 | 0 | 100 | N |
    +------------+--------+-------------+--------+--------+--------+
    1 row in set (0.00 sec)

    mysql> update table1 set field2 = 'bbb' where field3 = '00000000002' and field4 = '0' and field6 = 'N';
    Query OK, 0 rows affected (0.00 sec)
    Rows matched: 0 Changed: 0 Warnings: 0

    mysql> delete from table1 where field3 = '00000000002' and field4 = '0' and field6 = 'N';
    Query OK, 0 rows affected (0.00 sec)
    506 : 483 - 2007/11/27(火) 20:48:24 ID:??? (-20,-20,-39)
    >>502-504
    ありがとうございます。
    並列のLIKE検索式に対してカッコを使用するのですね。あうっ・・
    今度は結果も確認できました。
    案内いただいたページも参考にさせていただきますm(_ _)m
    507 : NAME IS - 2007/11/27(火) 21:04:52 ID:??? (+29,+29,-100)
    >>494
    libmysqlでも何でも使ってDBにアクセスする「サーバ」を作れ。

    それに接続するクライアントとしてお前のプログラムを作ればいい。
    ソケット越しの連携は何をどうやってもGPLとは関係が無いからな。
    そのサーバは公開義務があるけど、別にただのラッパだから
    公開しても痛くも痒くもないだろ
    508 : NAME IS - 2007/11/27(火) 23:17:31 ID:??? (+0,+0,+0)
    >>505
    mysql> desc tb1;
    +-------+---------------------+------+-----+---------+-------+
    | Field | Type                | Null | Key | Default | Extra |
    +-------+---------------------+------+-----+---------+-------+
    | f1    | date                | YES  |     | NULL    |       |
    | f2    | varchar(3)          | YES  |     | NULL    |       |
    | f3    | varchar(11)         | NO   | PRI |         |       |
    | f4    | varchar(11)         | NO   | PRI |         |       |
    | f5    | bigint(20) unsigned | YES  |     | NULL    |       |
    | f6    | char(1)             | NO   | PRI |         |       |
    +-------+---------------------+------+-----+---------+-------+
    6 rows in set (0.55 sec)
    509 : NAME IS - 2007/11/28(水) 08:55:01 ID:??? (+0,+22,+2)
    510 : NAME IS - 2007/11/28(水) 21:34:21 ID:??? (-26,-29,-48)
    パフォーマンスを向上させるために、
    複数のINSERT文を一つのマルチプルINSERT文に書き換える予定です。
    ただ、SQL文が非常に長くなってしまいますが、
    MYSQL5.0で、一つのSQL文の長さの制限ってどれ位でしょうか?
    お願いします。
    511 : NAME IS - 2007/11/28(水) 22:33:22 ID:fitDzhSE (+13,+23,-5)
    SQLの長さに制限なんてあるの?
    512 : NAME IS - 2007/11/29(木) 00:06:24 ID:??? (+0,+0,+0)
    とりあえずmax_allowed_packetで制限されてるみたいだよ。
    max_allowed_packetのデフォルトは1MB。

    $ ls -l long.sql
    -rw-rw-r-- 1 xxxxx xxxxx 16921095 11月 29 00:04 long.sql
    $ head long.sql
    insert into ltest values
    (default), (default), (default), (default), (default), (default), (default),
    (default), (default), (default), (default), (default), (default), (default),
    (default), (default), (default), (default), (default), (default), (default),
    (default), (default), (default), (default), (default), (default), (default),
    (default), (default), (default), (default), (default), (default), (default),
    (default), (default), (default), (default), (default), (default), (default),
    (default), (default), (default), (default), (default), (default), (default),
    (default), (default), (default), (default), (default), (default), (default),
    (default), (default), (default), (default), (default), (default), (default),
    $ mysql test < long.sql
    ERROR 1153 (08S01) at line 1: Got a packet bigger than 'max_allowed_packet' bytes
    513 : NAME IS - 2007/11/29(木) 00:14:27 ID:??? (+0,-30,+0)
    1MBギリギリで実験。

    $ ls -l long.sql
    -rw-rw-r-- 1 taira taira 1048546 11月 29 00:12 long.sql

    $ mysql test
    Server version: 5.0.46-enterprise MySQL Enterprise Server (Commercial)
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql> show variables like '%allow%';
    +--------------------+---------+
    | Variable_name | Value |
    +--------------------+---------+
    | max_allowed_packet | 1048576 |
    +--------------------+---------+
    1 row in set (0.00 sec)

    mysql> source long.sql
    Query OK, 95320 rows affected (1.53 sec)
    Records: 95320 Duplicates: 0 Warnings: 0

    大丈夫。
    514 : NAME IS - 2007/11/29(木) 13:13:13 ID:??? (+0,-29,-12)
    >>512>>513
    わざわざ、検証までして下さってお忙しい中、どうもありがとうございました。
    max_allowed_packetの設定値だったんですね。ちなみに、私が使っているxreaでは8MBに設定されていました。
    とても参考になりました。
    どうもどうも、ありがとうございました。
    515 : NAME IS - 2007/11/29(木) 21:45:50 ID:??? (-12,-30,-45)
    SELECT * FROM t INNER JOIN a ON t.aid = a.aid INNER JOIN b ON t.bid = b.bid
    3つのテーブルを結合しているのですが、USINGを使って書き換え方が分かりません、、

    よろしくお願いいたします
    516 : NAME IS - 2007/11/29(木) 22:01:52 ID:??? (+24,+29,+0)
    >>515
    何がしたいのかもう少しkwsk
    517 : 515です - 2007/11/29(木) 22:18:52 ID:??? (-27,-30,-41)
    どうもすみません
    テーブル2つ(t,a)だったら
    SELECT * FROM t INNER JOIN a USING (aid)
    のように書けたのですが、3つになったとき
    SELECT * FROM t INNER JOIN a USING (aid) INNER JOIN b USING (bid)
    はエラーになります

    USING句を知ってシンプルに書けるなあと思い使ってみようと思いました
    518 : NAME IS - 2007/11/29(木) 22:23:14 ID:??? (-26,-29,-6)
    select t.* from t, a where t.aid=a.aid;
    select t.* from t, a, b where t.aid=a.aid and a.aid=b.aid;

    じゃダメなの?
    519 : NAME IS - 2007/11/30(金) 00:35:50 ID:??? (+0,+0,+0)
    テーブルaにbidという列があるとダメみたい。

    mysql> desc t1;
    +-------+---------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | col1 | int(11) | YES | | NULL | |
    | col2 | int(11) | YES | | NULL | |
    +-------+---------+------+-----+---------+-------+
    2 rows in set (0.00 sec)

    mysql> desc t2;
    +-------+---------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | col1 | int(11) | YES | | NULL | |
    | col3 | int(11) | YES | | NULL | |
    +-------+---------+------+-----+---------+-------+
    2 rows in set (0.00 sec)

    mysql> desc t3;
    +-------+---------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | col1 | int(11) | YES | | NULL | |
    | col2 | int(11) | YES | | NULL | |
    +-------+---------+------+-----+---------+-------+
    2 rows in set (0.00 sec)

    mysql> select t1.col1 from t1 inner join t2 using (col1) inner join t3 using (co
    l2);
    +------+
    | col1 |
    +------+
    | 1 |
    | 2 |
    +------+
    2 rows in set (0.00 sec)

    t2にcol2列が無い場合は、こんなかんじでちゃんと動く。
    でもONで書くのが自然だと思うぞー
    520 : NAME IS - 2007/11/30(金) 04:06:08 ID:??? (-27,-30,-79)
    MySQLで、

    INSERT INTO `hoge_t` (`test_c`) VALUES (' ');

    みたいなSQL文を実行した場合、
    `test_c` に " " (半角スペース1つ) では無く、"" (文字列無し) が入ってしまいます。

    これは何故でしょうか?
    また、解決策はあるのでしょうか?

    教えて下さい。
    522 : NAME IS - 2007/11/30(金) 11:36:39 ID:??? (-21,-30,-31)
    where文を作成する時に、INとORだったら、どちらが速いでしょうか?

    WHERE FIELD IN ('a', 'b', 'c')
    WHERE FIELD A OR FIELD B OR FIELD C

    FIELDには、indexを貼っています。
    523 : NAME IS - 2007/11/30(金) 11:38:16 ID:??? (+25,+29,-56)
    >>522
    ためしに、何回かクライアントで実行してみましたが、
    実行するタイミングによって処理速度がちがって、
    有意な差が見られないような気がしました。
    524 : NAME IS - 2007/11/30(金) 13:09:58 ID:??? (+23,+25,-6)
    explain取ってみてプランが同じなら同じってことでいいと思う。
    こっちで試した限りは同じだった。
    526 : NAME IS - 2007/12/01(土) 23:04:56 ID:??? (-27,-30,+0)
    mysql> create table ctest (c1 varchar(2));
    Query OK, 0 rows affected (0.06 sec)

    mysql> insert into ctest values ('abc');
    Query OK, 1 row affected, 1 warning (0.00 sec)

    mysql> show warnings;
    +---------+------+-----------------------------------------+
    | Level | Code | Message |
    +---------+------+-----------------------------------------+
    | Warning | 1265 | Data truncated for column 'c1' at row 1 |
    +---------+------+-----------------------------------------+
    1 row in set (0.00 sec)

    mysql> set @@sql_mode = 'strict_all_tables';
    Query OK, 0 rows affected (0.00 sec)

    mysql> insert into ctest values ('def');
    ERROR 1406 (22001): Data too long for column 'c1' at row 1

    mysql> select * from ctest;
    +------+
    | c1 |
    +------+
    | ab |
    +------+
    1 row in set (0.00 sec)

    mysql> update ctest set c1 = 'abc' where c1 = 'ab';
    ERROR 1406 (22001): Data too long for column 'c1' at row 1
    528 : NAME IS - 2007/12/02(日) 12:29:29 ID:??? (+2,+4,-3)
    質問者の使用バージョンも判らんのに。
    529 : NAME IS - 2007/12/02(日) 15:48:26 ID:??? (+22,+29,-1)
    んなもん、書かない方が悪い
    532 : NAME IS - 2007/12/04(火) 01:39:25 ID:??? (+0,+5,-25)
    >>531
    %は抜けていました。すみません。

    あと、GROUP BYはいらなかったんですね。
    これを削除したら希望通り、件数が表示されました。
    ありがとうございました。
    534 : NAME IS - 2007/12/04(火) 09:53:01 ID:??? (-27,-30,-57)
    ここよめ
    http://dev.mysql.com/doc/refman/5.0/en/windows-installation.html

    Windows 95/98/ME and versions of Windows
    older than these are no longer supported.

    Windows 95/98/MEおよびそれより古いバージョンの
    Windowsはもうサポートされていません。
    535 : NAME IS - 2007/12/04(火) 11:43:29 ID:??? (+17,+23,-56)
    >>533
    非NT系Windowsにはサービスって概念がないから
    それ関係の項目が表示されないだけだと思う
    インストール開始時のOSチェックで蹴られないなら動く可能性はある
    インストール終了したら手動でMySQLを起動/終了する方法を試してみて
    http://dev.mysql.com/doc/refman/5.0/en/windows-start-command-line.html

    まあ本当に動かないかもしれないので動いたら儲けものぐらいで
    536 : NAME IS - 2007/12/04(火) 23:42:28 ID:??? (-3,+3,-2)
    MEとか久々に見たな。
    537 : 533 - 2007/12/05(水) 02:46:04 ID:??? (+47,+29,-31)
    あれから調べましたが、コマンドラインが起動してすぐに強制終了するので、
    何かをするとか無理ですかね?
    やっぱりパスワード設定出来ないと駄目なのかなぁ…
    538 : NAME IS - 2007/12/05(水) 06:59:54 ID:??? (+36,+29,-47)
    > コマンドラインが起動してすぐに強制終了するので
    本当に強制終了?なんらかのプログラム(mysql.exeとか)を起動後
    コマンドプロンプトが一瞬だけ表示されてすぐ消えるとかじゃなくて?
    文面からしてコマンドライン自体よくわかってないように見えるけど
    539 : NAME IS - 2007/12/05(水) 07:11:16 ID:??? (+28,+27,-5)
    素直に.4.1以前を使った方がいいと思う(本に添付されているやつとか
    540 : 537 - 2007/12/05(水) 12:34:10 ID:??? (+38,+29,-30)
    >>538
    それです。一瞬表示されて消えてしまいます。
    お察しの通りSQLの勉強始めたばかりなのでよく分かってません…

    >>539
    4.1以前ならMEでも動くんですか?
    それならそちらを探し出して使います。
    541 : NAME IS - 2007/12/05(水) 12:58:02 ID:??? (+26,+29,-2)
    542 : 537 - 2007/12/05(水) 13:40:38 ID:??? (+24,+22,+1)
    >>541
    超助かります。ありがとうございました。
    543 : NAME IS - 2007/12/05(水) 20:10:40 ID:??? (+29,+29,-55)
    mysql サーバーを外付けhddなどに入れて macとwindowsで共有することは出来るでしょうか?
    2台のネットワークにつながっていないパソコンにhddをつないで
    mysqlを持ち運ぼうとおもっています
    一つのデータベースを2種類のサーバをつかって共有するという感じです
    実行は別々の時間です
    windowsだけならば何でもできるけど macなんで良い方法ないですか?
    544 : NAME IS - 2007/12/06(木) 09:29:06 ID:??? (-27,-29,-3)
    >>543
    DBをFATに作れば可能
    545 : NAME IS - 2007/12/08(土) 22:42:32 ID:AP+yiBIl (+25,+15,-67)
    すみません、お聞きします
    今、スケジューラみたいのものを作っていて、
    month=12&day=9 のような形でサーバに送って、それぞれまともにmonthカラムとdayカラムに
    突っ込んでいます。
    これを、date型に成形して、mysqlの方でもその形で1カラムにまとめたとしたら、
    運営上どのような利点があるんでしょうか? 厨質問かも知れないですが、回答お願いします
    検索などの速度が向上するとかあるんでしょうか、、
    546 : NAME IS - 2007/12/08(土) 23:33:53 ID:??? (+27,+29,-44)
    日付型にしとくと、日付の演算が可能になるでしょ
    月と日が別カラムだと、月をまたぐ計算が面倒
    547 : 545 - 2007/12/09(日) 00:30:25 ID:??? (+27,+29,-7)
    ありがとうございます そういう効果があるんですね
    日付型の特長について、調べてみます!
    548 : NAME IS - 2007/12/09(日) 18:05:35 ID:??? (-26,-29,-63)
    MySQLのデータを、一般公開できるくらいのデザインで
    簡単に整理して表示するWebスクリプトはありますか?
    phpMyAdminなどの管理用のユーティリティソフトは導入していますが、
    ・検索や優先順位付きのソートだけでよい
    ・ユーティリティだけにデザインが難しい
    という問題があります。
    スクリプトをいちから組むのはめんどくさくて…
    550 : NAME IS - 2007/12/09(日) 18:48:03 ID:??? (+20,+26,+0)
    >>549
    了解です。スレ汚しすみませんでした。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について