のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,626,055人
昨日: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:??? (+24,+29,-31)
>>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:??? (-21,-21,-39)
>>502-504
ありがとうございます。
並列のLIKE検索式に対してカッコを使用するのですね。あうっ・・
今度は結果も確認できました。
案内いただいたページも参考にさせていただきますm(_ _)m
507 : NAME IS - 2007/11/27(火) 21:04:52 ID:??? (+29,+29,-101)
>>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,-49)
パフォーマンスを向上させるために、
複数の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,-7)
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:??? (+22,+24,-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,+6,-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:??? (+16,+22,-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:??? (-2,+4,-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 (+20,+10,-67)
すみません、お聞きします
今、スケジューラみたいのものを作っていて、
month=12&day=9 のような形でサーバに送って、それぞれまともにmonthカラムとdayカラムに
突っ込んでいます。
これを、date型に成形して、mysqlの方でもその形で1カラムにまとめたとしたら、
運営上どのような利点があるんでしょうか? 厨質問かも知れないですが、回答お願いします
検索などの速度が向上するとかあるんでしょうか、、
546 : NAME IS - 2007/12/08(土) 23:33:53 ID:??? (+27,+29,-54)
日付型にしとくと、日付の演算が可能になるでしょ
月と日が別カラムだと、月をまたぐ計算が面倒
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 スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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