mysql ヘルプ!
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
02/01/22 16:08ID:kMbsTQE3状況を詳しく書きます
PHPが動くプロバイダーのディレクトリにおいた自分の家の
mysqlサーバを操作するPHPに
$db = mysql_connect("mysqlサーバのip:3306","ゆーざ","ぱす");
と書いたのですが、駄目でした。
どうすればいいのでしょうか?
0101nobodyさん
03/05/24 16:38ID:oDSDORJVhttp://yahooo.s2.x-beat.com/linkvp/linkvp.html
0103山崎渉
03/05/28 17:07ID:???ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0104質問その�@
03/05/29 00:52ID:???以下のような二つのテーブルがあります。
テーブル名 j_table
+----+-------+
| id | jusho |
+----+-------+
| 1 | 新宿 |
| 2 | 渋谷 |
| 3 | 新宿 |
| 4 | 新宿 |
+----+-------+
テーブル名 k_table
+----+-------+
| id | konomi |
+----+-------+
| 1 | giko |
| 2 | giko |
| 3 | giko |
| 4 | mona |
+----+-------+
0105質問その�A
03/05/29 00:52ID:???mysql> select count(*) from k_table where konomi="giko"; だと3
�Agikoが好きで新宿住まいの人は何人か?
mysql> select count(*) from k_table a,j_table b where a.konomi="giko" && b.jusho LIKE "%新宿%"; だと3
�Bgikoが好きで渋谷住まいの人は何人か?
mysql> select count(*) from k_table a,j_table b where a.konomi="giko" && b.jusho LIKE "%渋谷%"; だと3
�Cgikoが好きで中野住まいの人は何人か?
mysql> select count(*) from k_table a,j_table b where a.konomi="giko" && b.jusho LIKE "%中野%"; だと0
テーブルを結合させると該当する行があると、住所の条件に関係なくgiko好きが3人と出てしまうのですがこれは何故でしょうか?
該当する行が無い場合はキチンと0になるのですが・・・
普通�Aは2、�Bは1になるはずなのですが、結合の仕方がまずいのでしょうか?
だれかぜひ教えてください・・・おながいします!
0106nobodyさん
03/05/29 01:16ID:???aのidとbのidはどのような関係が?
countしないでどこかに出力してごらん。
SQLの基本なので良い機会なので入門書を買って味噌。
0108nobodyさん
03/05/29 10:44ID:???いや言いたかったのはWHEREの条件に混ぜるんじゃなくて、
必要ならリレーション(関係)を張っては?ということ。
"外部キー"とか"JOIN"とかその辺の単語でぐぐーる。
0109nobodyさん
03/06/17 12:58ID:0HXSsTQYテーブル作成時にauto_incrementをカラムに指定した場合、
初期値は1になります。この初期値を0にしたいんですが、できますか?
1以上の正整数に指定するのは、次のような方法でできました。
create table table1 (
id integer not null auto_increment,
value varchar(64),
primary key(id)
)
auto_increment = 100;
しかし100を0にしても、初期値は1にしかなりません。
auto_incrementの初期値を0にする方法があれば、
教えてください。
0110nobodyさん
03/06/17 13:22ID:???A B
aa 11
bb 11
aa 22
cc 22
aa 11 ←こいつはINSERTさせたくない
イメージ的にはABの2カラムを合わせてPRIMARY KEYにしたいのです。
こういう場合はどうすればいいんでしょうか。
0111nobodyさん
03/06/17 14:49ID:???You can use "primary key(A, B)".
----
create table sample (
A varchar,
B integer,
primary key(A, B)
);
----
0112nobodyさん
03/06/18 18:04ID:???めちゃサンクス。primary key(A, B) でいけました。
#実際にはAがBLOBなのでprimary key(A(128), B) としました。
0113nobodyさん
03/06/18 23:51ID:TnNRaExh追加されるのでしょうか?
0114nobodyさん
03/06/18 23:57ID:???0115nobodyさん
03/06/19 00:34ID:70FTCJ+VA
ID1りんご
ID3みかん
ID4ぶどう
B
ID2メロン
ID3みかん
ID4ぶどう
この二枚のテーブルでどちらかのテーブルに存在すればヒットする
ようなselec文はどう書いたらいいのでしょうか。重複する行は、
一行のみ抜き出したいです。
こういうかんじにです。
ID1りんご
ID2メロン
ID3みかん
ID4ぶどう
よろしくお願いします。
0116113
03/06/19 02:25ID:70FTCJ+V追加されました。確認もせずに投稿してしまいました。
すいませんでした。
0117nobodyさん
03/06/19 02:36ID:tb30wkPm罪と罰のゲーム、皆さんもやりませんか?
http://gekiya77.gi-ga.net/cgi/
以下から、新規登録出来ますので。
http://gekiya77.gi-ga.net/cgi/ore_reg.cgi
<注>私は管理人ではなく、ただの利用者です。
0118nobodyさん
03/06/22 22:04ID:xUqQ3nDmleft outer join
0119nobodyさん
03/06/27 20:50ID:HoNlAHtVどんな感じでインデックスがはられているのかみたいのです。
0120nobodyさん
03/06/28 01:44ID:???バイナリーエディタ…
MYDとかと同じ。つかバイナリー見ても理解できんでしょ。
インデックス情報見るなら素直にSHOW INDEXコマンド。
有効にインデックスが機能しているかはEXPLAIN SELECTでチェックすれ
0121119
03/06/28 17:10ID:3aXiHYmQインデックスが英語のFULLTEXTインデックスなんです。
どんなワードがインデックスに入っているのか確認したかったのです。
stringsというコマンドでバイナリにはいっている文字列がみえるのが
わかりましたが、MYIファイルをきれいに表示する方法はないでしょうか?
ないとは思うのですが、もしあって知らなかったらとおもって聞いてしまいました。
0122nobodyさん
03/06/30 12:25ID:5tKrGL8Qhttp://pc2.2ch.net/db/
0123nobodyさん
03/07/10 00:05ID:yUDG6lLtsplitみたいな。
no|key|
1|a,b,c|
でkeyを「,」で区切って「b」があるかどうかで検索…。
正規表現を使う事も考えましたが、できるならうれしいなっと。
0124無料動画直リン
03/07/10 00:14ID:YKCrjqtm0126125
03/07/11 01:30ID:???本音を言えば「外部キーくらい正規化すれ。」
0127123
03/07/11 04:21ID:ET0riVu5「外部キーくらい正規化すれ。」 について勉強してきました。
こんな効率的なやり方思い浮かびませんでした。
そして、新たなる壁に当たりました…。
例えば、keyを別テーブルの置き、keyにbが含まれているものを検索した場合…
普通にヒットしますが、このとき、ヒットしたnoのそれ以外のキーをSELECT時に取得する事は出来るでしょうか?
ちなみに、テーブル構成はこのような感じです。
--TableA
no|省略
1 |省略
--TableB(キー)
no|key|
1 |b|
1 |a|
1にはaとbが登録されているとして、bで検索した場合、それ以外の「a」も取得できるようにしたいのです。
一生懸命検索もしたんですが、どうしても分かりませんでした(T.T)
参考サイトでも良いので誰か助けてー
0128123
03/07/11 08:52ID:???が、欲しいのは中身なのれす…。
0129123
03/07/11 15:18ID:???0130山崎 渉
03/07/15 11:07ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0131nobodyさん
03/07/31 19:38ID:AJvCrkltテーブルを作成する時にデフォルト値を設定できますが、
NOW()をデフォルトにはできないのでしょうか。
create table member(
username varchar(60) NULL,
createdate datetime default "NOW()"
);
とし、
insert into member (username) values('AAA');
実行しても
mysql> select * from member;
+----------+---------------------+
| username | createdate |
+----------+---------------------+
| AAA | 0000-00-00 00:00:00 |
+----------+---------------------+
となり、入力した日時が入ってくれません。
どうすれば良いのでしょうか。。
0132nobodyさん
03/07/31 21:57ID:VMyHT8tghttp://ninkirank.misty.ne.jp/19/enter.cgi?id=okyaku
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.
0135nobodyさん
03/08/01 17:59ID:???http://pc2.2ch.net/test/read.cgi/tech/1008316065/642
から勝手に移動してきました。重複して見る方スマソ。
質問をコピペします。
↓ここから
GROUP化したタプルに現れるデータに条件付けするにはどうすればよいですか?
No ID 名前
--------------
2 a あほ
1 a ばか
3 a まぬけ
SELECT * FROM table GROUP BY ID
で取り出すとき、3つのタプルのどれが出てくるかを制御したいんです。
例えばNoの1番小さいやつ(1 a ばか)を取り出す、とか。
↑ここまで
よろしくです。
0136nobodyさん
03/08/01 19:12ID:???できないんじゃねーの
っていうか、そもそもそんなことができるDBってあるわけ?
ちなみに
http://allabout.co.jp/computer/database/closeup/CU20020307/?FM=glcct
を見ると、
SQL> select empno,ename,job,sal,deptno from emp group by job;
select empno,ename,job,sal,deptno from emp group by job
*
1行でエラーが発生しました。
ORA-00979: GROUP BYの式ではありません
SELECTの後ろの列名にグループ化した列、集計関数で集計した列でない列を指定したために
エラーとなっている
だそうだが...。
0137nobodyさん
03/08/01 20:22ID:???やっぱできないのかなあ。
自分で調べた限りではできなかったけど、調べ方が悪いのかと思って2chを頼ってみた。
>>135が実際に必要となる場面としては、
----------------------------
UserName Date EMail Amount
----------------------------
というテーブルがあって、UserNameごとの合計金額をSUM(Amount) GROUP BY UserNameで集計しているんですけど、
その時ついでにEMailも出力しているのです。
ところが、同じUserNameでも複数のEMailが存在する場合があるんです。
その場合はDateが最新であるタプルのEMailを出力したい。
というわけだったのです(最初からこれを書いた方が分かりやすかったですね。すいません)
今は一旦UserNameを取り出して、各UserNameに対してDateが最新であるタプルのEMailを取得しているんですが
UserNameが多くなってきたので時間がかかるようになってしまいました。
何かアドバイスがあればよろしくおながいします。
0138nobodyさん
03/08/02 01:50ID:???これではだめ?
実際に試してないから、このままで実行できるかわからないけど、
テーブル名をlogとした場合、
CREATE TEMPORARY TABLE temp
AS SELECT UserName, MAX(Date) AS Date, SUM(Amount) AS Amout
FROM log GROUP BY UserName;
SELECT * FROM temp, log
WHERE temp.UserName = log.UserName AND temp.Date = log.Date;
適切なインデックスを作成してあれば、速いはず。
ただ、設計自体が間違っているような気がしないでもないが...。
0139山崎 渉
03/08/02 02:22ID:???( ^^ )< ぬるぽ(^^)
0140ぼるじょあ ◆ySd1dMH5Gk
03/08/02 04:50ID:???ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
0141nobodyさん
03/08/02 12:08ID:???あ、なるほど。
MAX(Date)をSELECTするとDateがMAXなタプルのEMailが取り出せるんですね。
今実験環境がないのでできませんが今度試して報告します。ありが�d。
この最新のEMailが欲しいという要望は後から出てきたので
今までのプログラムに付け足す形でやったので
>>137に書いてあるようになってしまったんです。
>ただ、設計自体が間違っているような気がしないでもないが...。
・・・うーん。特に変な設計したつもりはないんですけどねぇ。
0142nobodyさん
03/08/09 06:13ID:ykXF7Sbd/usr/local/mysql/var/
配下の目的のDBのディレクトリをコピーするだけでOKですか?
復元時は、このディレクトリを戻してやるだけで使えるのでしょうか?
何となく、乱暴すぎる気もするし…どうなんでしょう?
0144山崎 渉
03/08/15 22:39ID:???│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0145nobodyさん
03/08/28 21:47ID:???みたいに一文字検索って出来るのですか?
0147nobodyさん
03/09/02 15:19ID:nC941VScdrop user hogehoge; じゃだめだった。
マニュアル読んでも、どこにかいてあるのかさっぱり。
0148nobodyさん
03/09/02 15:59ID:???パスワードありではログインできず、なしだとログインできる。
パスワードを設定したにもかかわらずだ。
## MySQLにrootでログインし、ユーザを作成する
bash$ mysql -u root -p
Enter password:
mysql> grant all on *.* to user1 identified by 'passwd1';
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
Bye
## 作成したユーザでログインすると、パスワードありではログインできず、
## パスワードなしだとログインできる。なぜ?
bash$ mysql -u user1 -p
Enter password:
ERROR 1045: Access denied for user: 'user3@localhost' (Using password: YES)
bash$ mysql -u user1
mysql>
なぜ?どっか抜けてる?
0149nobodyさん
03/09/02 16:11ID:???ユーザ名だけでなくホスト名も指定する。
mysql> grant all on *.* to user1@localhost identified by 'passwd1';
mysql> grant all on *.* to user1@"%" identified by 'passwd1';
0150nobodyさん
03/09/03 02:32ID:uWREVGUNMySQLはユーザ管理をデータベースのテーブルで行っているので、
該当するユーザにマッチする行を削除する。
具体的には、
USE mysql;
DELETE FROM user WHERE User='該当ユーザ';
FLUSH PRIVILEGES;
確かにマニュアルではそれらしい記述が見つかんないな。
とは言え、ユーザ管理を自身のデータベースデーブルで行うという
MySQLのちょっと変わった部分は、MySQLの本を買えばどこにでも
出ているような内容なので、何か本買った方がいい。
0151nobodyさん
03/09/03 07:25ID:???さんくす。
そうか。やっぱり入門書かなんか買おうかな。
お勧めの本とか、逆に勧めない本とかあれば教えて。
田舎なんで、本屋にいっても置いてなくて読めないんだ。
0152nobodyさん
03/09/03 12:16ID:737CDtFnInnoDBって、なんて発音するんでしょうか?
0153nobodyさん
03/09/04 00:17ID:???MySQLの入門なのか、スクリプト言語をつかって
RDBMSにアクセスするアプリケーションの入門なのかによるな。
MySQLの入門なら「MYSQL徹底攻略ガイド」が良いかな。
また、これには言語毎の接続と簡単なアクセスの仕方も
載ってるので「マニュアルが読める」様なので問題なく
理解できるレベルだと思います。MySQLの使い方メインで
もっと深めるなら「MySQL徹底活用」。
これは本当にRDBMSとしてのMySQLの話(運用とかツールも)に
限定してちゃんと書いてある。
RDBMSにアクセスするアプリケーションの入門が欲しいなら、
言語毎に色々出てるのを適当に選んでも支障はないと思います。
http://www.mysql.gr.jp/books.html
の中で、その言語もタイトルに書いてある奴。
あとユーザ削除の追記で正確にはmysqlという名の管理データベースに
ある全てのテーブル(何個かある)のUser='hoge'にマッチする行を
DELETEする必要があります。ユーザ単位に細かく、特定データベースや
テーブルのアクセス権を設定していない場合は不要ですけど。
0154nobodyさん
03/09/04 08:25ID:???オライリーのMySQL & mSQL買って必要な事項をひきつつ前に進んだ方が、あとあと良いだろ。
0155nobodyさん
03/09/04 17:48ID:???MySQL & mSQLは内容が古い。
0157nobodyさん
03/09/14 00:03ID:kQoNWvNkXOOPSの集まりに行ったら、MySQLの開発者Montyさんが来てたので聞いてみた。
MyISAM=マイアイサム(いさむじゃないのか...)、
InnoDB=イノディービー
で良し。ソフトエージェンシーの立岡さんも同じなので、日本語でもいっしょ。
0158nobodyさん
03/09/14 00:32ID:???#152じゃないけど、さんくす
0159nobodyさん
03/09/27 17:43ID:kMMUBk/8さらにそれをプライマリキーにしたいんだけど
簡単な方法を教えてください。
0161_
03/09/27 18:00ID:???http://mona.h.fc2.com/jaz03.html#.2ch.net
http://mona.h.fc2.com/jaz11.html#.2ch.net
http://mona.h.fc2.com/jaz02.html#.2ch.net
http://mona.h.fc2.com/jaz08.html#.2ch.net
http://mona.h.fc2.com/jaz09.html#.2ch.net
http://mona.h.fc2.com/jaz05.html#.2ch.net
http://mona.h.fc2.com/jaz06.html#.2ch.net
http://mona.h.fc2.com/jaz01.html#.2ch.net
http://mona.h.fc2.com/jaz10.html#.2ch.net
http://mona.h.fc2.com/jaz07.html#.2ch.net
http://mona.h.fc2.com/jaz04.html#.2ch.net
0162nobodyさん
03/10/10 14:59ID:wsQ4ga7cDBのデータを月ごとにバックアップしたいんですが、どんな方法が最良かご教授下さい。
毎月、cronでCGI版PHPを動かし、
先月分のデータはCSVでバックアップ。
バックアップした分のデータはDBから削除。
なんですけど、普通にselectで取り出してCSVで保存→deleteで削除
で良いんですかね?
一月分のデータ量は1000件も無いとおもいます。
なにかいい方法があれば教えて下さい。
0163nobodyさん
03/10/10 21:22ID:???0164162
03/10/11 11:56ID:kzrER8VPmysqldumpで指定したレコードだけバックアップできましたっけ?
ざっと調べてみたんですが、それらしいことは見つからず。
月ごとにバックアップファイルを分けたいんですよ。
0165162
03/10/11 12:00ID:kzrER8VP--whereオプションがありました。
すみません・・・
これでやってみます。
0166nobodyさん
03/10/11 16:26ID:???>
> データベースの文字型の扱いをUTF-8にしたいってんなら、
> MySQL4あたりだと出来るはずだよ。
Blobを使うのじゃなくて、データベースの文字コードをUTF-8にできるの?
マニュアル読んだけどわからん。
ヒントをください。
0167nobodyさん
03/10/15 18:40ID:???(http://www.mysql.com/newsletter/2003-04/a0000000148.html にまとまってるけど)
全ての設定が可能なのはMySQL4.1から。それ以前はサーバ単位までだと考えてよい。
だから日本語のマニュアルにはサーバ単位の設定についてしか書いてないよ。
あと次の新しいバージョンではカラム単位の文字コードのサポートが強化される。
0168nobodyさん
03/10/15 18:54ID:???http://www.mysql.com/doc/en/News-4.0.6.html
Added syntax support for CHARACTER SET xxx and CHARSET=xxx table options
(to be able to read table dumps from 4.1).
となってるので、4.0.xでも一部サポートしてるかも知れぬ。
4.0固有の機能をちゃんと使ったこと無いので判らんが。
0170166
03/10/19 08:48ID:???遅レススマソ。
あれからマニュアルあさって4.1からサポートされるのを知って、
今4.1でテスト運用してます。
漢字はちゃんと3バイト消費するんだね。でもアルファベットなんかは
元のままと。
しかし、4.0.X系でもサーバ全体でならUTF-8が使えるって言うのは
初耳ですね。もう一度マニュアル読んでみます。
0171nobodyさん
03/10/26 22:56ID:???0172nobodyさん
03/10/26 23:05ID:???次からはそっちで野郎。
0173nobodyさん
03/10/27 01:09ID:???DB板って今は正常に機能してるの?
0175nobodyさん
03/10/31 23:08ID:???うん。出来てすぐのころドラゴンボール板だとか
結構わやくちゃだったんだけど...今はそうでもないみたいだね。
0176nobodyさん
03/11/01 06:23ID:???_,..,_ ノ´//⌒ ミヾヽ、_
_____ ,r'´ ``'' - 、ーニ三彡´〃 ! ゙ゞヾ、_`ヽ
[|<|____├{ /´ { l | // ヽ`ーr' }
″ ! `、 ' ノ l. ||l i l / l ああっ、つ、つらいです...
', | ̄``''''ー―- ,'´l l |!` ‐--| l l l
', | l l | リ,! l
', | | | ,! ' リ
,.r''ヽ、 _ ', | |. |
,' ` ' ' ' ' ' ' ´ `ヽ ! | |
/ ,.r'´ ̄ '''''' ─−-........__ ,.r' | '''"''‐-、
~´  ̄ ̄ ̄
0177nobodyさん
03/11/05 18:13ID:ETjgtmUYテーブルBにはタイトル・内容などの掲示板の書き込みがあります。
この時、どのメンバーが投稿したかを判断するのに、テーブルB側にはメンバーID
も記録していますが、記録時に一緒に名前・メールアドレス・URLもテーブルAからコピーし
内容と一緒に保存した方が良いのか、それとも
読み込み時毎に、AとBを結合させてメンバーIDから名前やメールアドレスを呼び出したらいいのか迷い中です。
後者のメリットとしては、容量の軽減と、メンバーデータを編集した時に投稿記事にも反映される
と言う感じですが、テーブル結合は、どの程度負担が掛かる物なんでしょうか?
#全てのパターンを一時的に作成するようなので、素人考えて、データ数が多くなった時に
かなり負担が掛かってしまうんじゃないかと考えて、踏み切れないんですが…。
0180nobodyさん
03/11/13 05:34ID:XrP6U/53一回のクエリーでは無理ですか?
今はロックしてから、selectで読んで1を足してupdateしています。
0181nobodyさん
03/11/13 05:44ID:???UPDATE table_name SET hoge = hoge+1 WHERE ・・・
みたいなことってできなかったっけ?
0182nobodyさん
03/11/13 05:52ID:???0183nobodyさん
03/11/13 07:00ID:XrP6U/53本当だー。ありがとうございます。
この場合もやっぱりロックはしておいた方がいいでしょうか?
0185nobodyさん
03/11/13 10:12ID:???ロック→更新→ロック解除
が自動的に行われる
0188nobodyさん
03/11/15 06:00ID:ZDgVRzRDPHPなどで出来た、
MySQLをウェブ上でいじれるプログラムなんてないでしょうか?
0189nobodyさん
03/11/15 10:23ID:???軟弱モノめ
phpMyAdmin - http://www.phpmyadmin.net/
0191nobodyさん
03/11/15 12:18ID:???0192189
03/11/15 13:31ID:???入れてみたら今まで何だったんだってくらい便利です。日本語でも使えるし。
いいものを教えて頂きありがとうございます。
>>191
http://www.hi-ho.ne.jp/tsumiki/
これですね。これも見てみます。ありがとうございます。
0193nobodyさん
03/12/02 15:23ID:???カラムA カラムB
232 0
422 0
433 0
↓
カラムA カラムB
232
422
433
MySQLでそのまま移動できれ良いのですが。
0197nobodyさん
03/12/03 18:39ID:TwnN/agAコネクションが多すぎて接続できない、というようなエラーが出たので、
maxconnectionを2500にして再起動しました。
今のところ、正常に動作しているようですが、
maxconnectionの妥当な値とか限界ってどのくらいなのでしょう?
0198nobodyさん
03/12/03 20:17ID:???おいおい、2500たぁすげえな。
サーバ資源追いつくのか(笑
デフォの100は少ないやね。直ぐに限界がくる。
#ウチは500。
0200nobodyさん
03/12/03 23:21ID:TwnN/agAえっ…!!
100→500→とあげてきたので、もう一気にずばーんといってやれって感じで
5倍にしました。多すぎますかね?今のところは普通に動作しているようですが…。
>>199
topで見ると一つのmysqlがメモリ6〜7%くらいくってます。
全部のmysqlの数字が同じようなのですが、
これは全部まとめて6%ということでしょうか?
やばい数字ってtopで見ていくつくらいになりますか?
0201nobodyさん
03/12/03 23:25ID:???サーバの能力にも拠るが、DBへの問い合わせの負荷(テーブル設計に依存)にも
拠るので、単純にnコネクションなら大丈夫とか言えないということ。
■ このスレッドは過去ログ倉庫に格納されています