MySQL, SQL

ソート条件を付けない場合、以下のように出力されるテーブルでageがNULLのレコードは常に最下位にしてソートさせたい。
+—-+———+——+
| id | name | age |
+—-+———+——+
| 1 | 名前1 | NULL |
| 2 | 名前2 | 20 |
| 3 | 名前3 | ...

MySQL, Solaris

Solaris 11 にGUIを入れた環境でMySQLをインストールする手順

パッケージマネージャを起動

mysqlでパッケージを絞り込む

この中から

mysql-51
mysql-51/library

をチェック。

インストール/更新ボタンをクリック。

これで、パッケージはインストールされる。

mysqlをサービスとして設定する。

mysqlの起動確認

my ...

MySQL, SQL

MySQLで任意の順番にソートをするにはfieldを使う

idname1一郎2二郎3三郎4四郎5五郎6六郎7七郎8八郎9九郎

というテーブルがあるとする。

とすれば、

id123456789

という一覧が返ってくる

とすると

id123789456

という結果が返ってくる。

なぜか、fieldで指定していないIDが最初に表示され、最後にfieldで指定したレコードが順番に並ぶようだ。

希望としては ...

MySQL

mysqldumpをする時に

when using LOCK TABLES

と言われたりしてダンプ出来ない時がある。

こんな場合は

–skip-lock-tablesオプションをつける

 

MySQL, ubuntu

UbuntuはパッケージでMySQLを入れるとすぐに起動しますが

外部からの接続が出来ないように設定されています。

/etc/mysql/my.cnf

このファイルの中に

という行があります。

これは、IPが127.0.0.1からの接続しか受け付けないですよ、という設定で

127.0.0.1は自分自身のことなので、そのマシンの中からしかつなぐことが出来ません。

この設定行をコメントアウトすることで、そ ...

MySQL

MySQLのデフォルトのキャラセットをUTF-8にセットする

Linuxの場合

/etcにmy.cnfか、/etc/mysqlにmy.cnfがあるので、それを開く

の下に

を追記

の下にも

を追記

2012年09月13日追記
※MySQL5.5からはで使用するキャラセットの設定はdefault-character-setではなく
character-set-s

MySQL

MySQLで巨大なSQLを送信したときに

「Got a packet bigger than ‘max_allowed_packet’ bytes」

というエラーが出る。

これは、MySQLサーバの設定で「max_allowed_packet」があり、ここで指定したサイズよりも大きいパケットを送信したときに出るエラーのようだ。

解決方法としてはmy.cnfののところに

といった感じで大きいサイズを指定 ...

MySQL, SQL

MySQL で ビットマスク を扱う

MySQL, SQL

先ほど、仕事でなぜか違うデータが抽出されるんだけど…という不具合を報告され

よくよく調査したら、

という条件を見つけた。

前任者は、2001_1001_202_100とか、2001_1001_202_の後にコードが付いたデータを抽出したかったのであろうが

この条件だと2001_1001_2023というデータもヒットしてしまう。

これは、likeでは「_」は任意の一文字を意味する記号であるからである。

仕方が無いの ...

MySQL, SQL

MySQLにはmysqldumpというダンプツールがあるが、CSVファイルでデータを出力できると、加工もしやすい。

また、CSV出力時には基本、SQL構文での出力となるため、条件指定も容易になる。

書き方としては

FIELDSオプション

TERMINATED BY
項目の区切り文字を指定する
ENCLOSED BY
項目を囲む文字(たとえばダブルクォーテーション)
ESCAPED BY
エスケープする文字を ...

MySQL, SQL

MySQLでユーザを削除する手順

権限を削除

REVOKEで、削除したいユーザの権限を削除する

REVOKE構文について

参考に、guestユーザの権限を削除する実際の構文は

ユーザを削除