「MySQL関係」の編集履歴(バックアップ)一覧はこちら

MySQL関係」(2012/03/20 (火) 17:27:54) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*sjisでの文字化けを回避するための方法 **MySQLの設定 -下記のような状態になるように設定する。 -MySQLとconnectした後にset names sjis;を発行する。 mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | character_set_client | cp932 | | character_set_connection | cp932 | | character_set_database | cp932 | | character_set_filesystem | binary | | character_set_results | cp932 | | character_set_server | cp932 | | character_set_system | utf8 | +--------------------------+-------- 7 rows in set (0.00 sec) ● システム変数の用途 character_set_system "indentifiers" (テーブル名とかカラム名?) を格納するのに使われる。 utf8で 固定。 character_set_server character_set_database のデフォルト値に影響する。 character_set_database CREATE DATABASE で文字コードが指定されなかった場合、database の文字コー ドはこれになる。 character_set_connection の値に影響する character_set_client クライアントから渡された SQL 文はこの文字コードであると解釈される。 character_set_connection キャラクタセットイントロデューサ (例えば『_ujis'ほげ'』)が省略された SQL 文中の文字列リテラルはこの文字コードであると解釈される。 character_set_results サーバーがクライアントに返す結果をこの文字コードに変換する。 この変数を NULL にセットすると、結果に対する文字コード変換をしないよ うにできる。 **Linux での mysql.cnfの設定 win用と同じ設定にしてもうまくいかなっかった。グローバル値は上記のようになったが、セッション値はujisになった。よって自動変換をしないようにskipしたら直った。 **null の演算 -Accessの場合はNz()関数 -MySQLではcoalesce() 関数は、最初の null でないデータを返す。 coalesce($変数,0) select coalesce(null, 'abc', 'def'); +------------------------------+ | coalesce(null, 'abc', 'def') | +------------------------------+ | abc | +------------------------------+ **別名での定義(レスポンスに差があるのか) -別名を使用したとき select seisank_ns.katasikic from seisank_ns inner join (select seisank_nsh.katasikic from seisank_nsh) as H on seisank_ns.katasikic = H.katasikic |id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|h |1|PRIMARY||ALL|||||507|| |1|PRIMARY|seisank_ns|index||alt2|58||4340|Using where; Using index | |2|DERIVED|seisank_nsh|index||atl1|58||507|Using index | -使用しなかったとき select seisank_ns.katasikic from seisank_ns inner join seisank_nsh on seisank_ns.katasikic = seisank_nsh.katasikic |id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|h |1|SIMPLE|seisank_nsh|index||atl1|58||507|Using index | |1|SIMPLE|seisank_ns|index||alt2|58||4340|Using where; Using index | やっぱり、副問い合わせの分が余分にかかっている。 **2つのカラムでLike句を使う 2つのテーブル顧客住所と住所があります。 |顧客ID|住所1|住所2|h |1|北海道|札幌市手稲区○○| |2|北海道|旭川市△■| |住所ID|市区町村名|文字数|h |1|札幌市手稲区|6| |2|旭川市|3| 住所テーブルを使って、顧客テーブルの住所1の北海道(都道府県)を市区町村に置き換えます。 Accessでは UPDATE 顧客, 住所 SET 顧客.住所1 = 住所!市区町村名, 顧客.住所2 = Right([住所2],Len([住所2])-住所!文字数) WHERE (((顧客.住所2) Like [住所]![市区町村名] & "*")); MySQLでは UPDATE 顧客, 住所 SET 顧客.住所1 = 住所!市区町村名, 顧客.住所2 = Right(住所2,CHAR_LENGTH(住所2-住所.文字数) WHERE (((顧客.住所2) Like concat(住所.市区町村名,'%') )); ポイントは文字列の連結にconcatを使うことと、文字列の長さを求めるのにCHAR_LENGTHを使うこと~ SQLServerではうまく行きませんでした。直積の書き方が違うみたい。「UPDATE 顧客, 住所」のところでエラーが出る。 結果は |顧客ID|住所1|住所2|h |1|札幌市手稲区|○○| |2|旭川市|△■| nonプログラミングでこんな処理ができます。SQLは便利だ。 ** ODBCドライバー:[MySQL][ODBC 3.51 Driver]Lost connection to MySQL server at 'reading initial communication packet', system error: 0 新しいPCにODBCドライバーをインストールしましたが、上記エラーで繋がりません?何でだろう?~ このページを読むと http://stackoverflow.com/questions/961928/could-not-connect-lost-connection-to-mysql-server-at-reading-initial-communica やはりセキュリティの関係のようでした。MySQLが動いているLinuxサーバーのhosts関係に新しくつなぐPCを登録して事なきを得ました。
*sjisでの文字化けを回避するための方法 **MySQLの設定 -下記のような状態になるように設定する。 -MySQLとconnectした後にset names sjis;を発行する。 mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | character_set_client | cp932 | | character_set_connection | cp932 | | character_set_database | cp932 | | character_set_filesystem | binary | | character_set_results | cp932 | | character_set_server | cp932 | | character_set_system | utf8 | +--------------------------+-------- 7 rows in set (0.00 sec) ● システム変数の用途 character_set_system "indentifiers" (テーブル名とかカラム名?) を格納するのに使われる。 utf8で 固定。 character_set_server character_set_database のデフォルト値に影響する。 character_set_database CREATE DATABASE で文字コードが指定されなかった場合、database の文字コー ドはこれになる。 character_set_connection の値に影響する character_set_client クライアントから渡された SQL 文はこの文字コードであると解釈される。 character_set_connection キャラクタセットイントロデューサ (例えば『_ujis'ほげ'』)が省略された SQL 文中の文字列リテラルはこの文字コードであると解釈される。 character_set_results サーバーがクライアントに返す結果をこの文字コードに変換する。 この変数を NULL にセットすると、結果に対する文字コード変換をしないよ うにできる。 **Linux での mysql.cnfの設定 win用と同じ設定にしてもうまくいかなっかった。グローバル値は上記のようになったが、セッション値はujisになった。よって自動変換をしないようにskipしたら直った。 **null の演算 -Accessの場合はNz()関数 -MySQLではcoalesce() 関数は、最初の null でないデータを返す。 coalesce($変数,0) select coalesce(null, 'abc', 'def'); +------------------------------+ | coalesce(null, 'abc', 'def') | +------------------------------+ | abc | +------------------------------+ **別名での定義(レスポンスに差があるのか) -別名を使用したとき select seisank_ns.katasikic from seisank_ns inner join (select seisank_nsh.katasikic from seisank_nsh) as H on seisank_ns.katasikic = H.katasikic |id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|h |1|PRIMARY||ALL|||||507|| |1|PRIMARY|seisank_ns|index||alt2|58||4340|Using where; Using index | |2|DERIVED|seisank_nsh|index||atl1|58||507|Using index | -使用しなかったとき select seisank_ns.katasikic from seisank_ns inner join seisank_nsh on seisank_ns.katasikic = seisank_nsh.katasikic |id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|h |1|SIMPLE|seisank_nsh|index||atl1|58||507|Using index | |1|SIMPLE|seisank_ns|index||alt2|58||4340|Using where; Using index | やっぱり、副問い合わせの分が余分にかかっている。 **2つのカラムでLike句を使う 2つのテーブル顧客住所と住所があります。 |顧客ID|住所1|住所2|h |1|北海道|札幌市手稲区○○| |2|北海道|旭川市△■| |住所ID|市区町村名|文字数|h |1|札幌市手稲区|6| |2|旭川市|3| 住所テーブルを使って、顧客テーブルの住所1の北海道(都道府県)を市区町村に置き換えます。 Accessでは UPDATE 顧客, 住所 SET 顧客.住所1 = 住所!市区町村名, 顧客.住所2 = Right([住所2],Len([住所2])-住所!文字数) WHERE (((顧客.住所2) Like [住所]![市区町村名] & "*")); MySQLでは UPDATE 顧客, 住所 SET 顧客.住所1 = 住所!市区町村名, 顧客.住所2 = Right(住所2,CHAR_LENGTH(住所2-住所.文字数) WHERE (((顧客.住所2) Like concat(住所.市区町村名,'%') )); ポイントは文字列の連結にconcatを使うことと、文字列の長さを求めるのにCHAR_LENGTHを使うこと~ SQLServerではうまく行きませんでした。直積の書き方が違うみたい。「UPDATE 顧客, 住所」のところでエラーが出る。 結果は |顧客ID|住所1|住所2|h |1|札幌市手稲区|○○| |2|旭川市|△■| nonプログラミングでこんな処理ができます。SQLは便利だ。 ** ODBCドライバーのエラー [MySQL][ODBC 3.51 Driver]Lost connection to MySQL server at 'reading initial communication packet', system error: 0~ 新しいPCにODBCドライバーをインストールしましたが、上記エラーで繋がりません?何でだろう?~ このページを読むと http://stackoverflow.com/questions/961928/could-not-connect-lost-connection-to-mysql-server-at-reading-initial-communica やはりセキュリティの関係のようでした。MySQLが動いているLinuxサーバーのhosts関係に新しくつなぐPCを登録して事なきを得ました。

表示オプション

横に並べて表示:
変化行の前後のみ表示:
人気記事ランキング
目安箱バナー