MySQLについてざっくりと
SQLはどうなの?
ANSI SQL92準拠ということで、一般的な処理をするSQL文にはあまり戸惑わない。むしろいろいろ拡張されていて便利に使えるようだ。
細かい記述にちらほら違いはあるものの、リファレンスがあり、使うのにそれほどこまらない程度。よかった。
テーブル型?
それ以前にストレージエンジン(テーブル型)というものの種類が豊富で面食らう(テーブルの種類に選択肢があるという概念がない・・・)。しかも種類が多い。
Web経由で使用することが主な目的なのだが、ネット上の情報だとWebアプリにはMyISAMという種類のデータベースで十分だ、という意見がちらほらみられて、調査当初はその方針に決めそうになった。
詳しく調べると、MyISAMだとトランザクションが使えないとのこと。そこまで単純なつくりではないためトランザクションなしはありえないので、トランザクションのあるほうのInnoDBというタイプを使うことに即決。
データベースの用途によってテーブル型を使い分ける必要があるので最初に熟慮が必要なのでした。後から変更なんてうんざりよ〜
インストール
MySQL5.1が当時の最新だったのでそちらを使用。開発を行うWindows機にはすんなりインストールできた。
パスワードを設定したり、手順があるがチュートリアルが豊富なのでどこかを見ながら進めればOK。
@ITとか画像つきで説明してる個人さんのサイトとかを参考にしつつ進めたらすんなりできます。
インストール時にデフォルトの文字セットを指定するのだが、
MS SQLServer使いとしてはSJISに馴染みがあるところだが
最終的にLinux環境になるなどの理由でUTF8を選択する。とはいえ
データベースの作成時に文字コードを選択できるので
データベースのデフォルトの文字コードについてはあまり気にしなくてよいようだ。
最近ではunicodeを使用している一般のサイトも多いのですね。昔は文字コードでいろんなトラブルに見舞われたものですが長らく仕事でブランクを空けていたうちに時代も変わったなあ・・・
ためしにLinux機(Ubuntu)でも試してみるが、もともと古いバージョンのMySQLが入っていたりするせいかなかなかうまくいかない。インストールするパッケージがいくつかに分かれていたり、情報が少ないということもあり、そもそもLinuxがよく分からないのでさっさとあきらめました。
基本的な設定
パスワードなどの基本的な設定はインストールの流れでできてしまう。
後から変更したくなっても簡単。
テキスト形式の設定ファイルmy.cnfがインストール先にできていて、こちらを直接編集すれば簡単に設定を変えられる。
パスワードはここから変えられないけど。
MS SQLServerだと、付属のGUIやコマンドを駆使して設定を変えていたので、簡単に変更できる点でよいですね。でも設定できるパラメータは豊富にあって、自分で把握していないと変更できないので、詳しい設定をする必要があれば勉強しなきゃいけませんね。私は開発どまりなのであまり踏み込みませんでしたが、サーバ管理屋さんは要チェックかも。
また、サーバの規模4段階ごとに設定ファイルのサンプルがあるようだ。
MySQLの使用(基本的なこと)
MySQL単体をインストールしただけだとGUIはついてきません。GUIはなくはないようですが、とりあえずデータベースのクライアント側操作はコマンドプロンプトを駆使して使うことにしました。
UTF8だと・・・
unicodeを選択してしまったので、コマンドプロンプト上で日本語データが文字化けします。
これは対処方法があって、
set character_set_results = sjis;
というコマンドを使えばコマンドプロンプト上での表示をsjisに変換できて、日本語データも正しく表示できます。
日本語を登録したいときは
set character_set_client = sjis;
というコマンドを使ってからINSERTなどを行えばOK。
Linuxだとどうなのだろう・・・?
showコマンド
確認したいときに便利なshowコマンドがあります。show databasesやshow create tableなどの組み合わせがあり、いろんな情報を確認できるので必須。
MS SQLServerだとGUIでみれてよかったけど、ないものはしょうがない。多用するのですぐ慣れます。
データ型
データ型についてはほとんど困らず使えました。Money型はないけど。リファレンスに説明があるので用途に最適なものを選んでいけば困りません。
シノニムなものも多くて名前から用途がすんなりわかります。
今回使ったデータ型はこんな風でした↓
| カラムの特徴 | データ型 |
| キー情報などの整数 | INT |
| パーセンテージなどの少なめの桁の整数情報 | TINYINT |
| 可変長文字列 | VARCHAR |
| 固定長文字列 | CHAR |
| 日時 | DATETIME |
| 日付 | DATE |
| 金額 | DECIMAL |
| 1か0のフラグデータ | BOOL |
MySQLの使用(細かいこと)
プロシージャ
プロシージャでやりたいことがあったんですが、できなかったので断念(><)。
トランザクションを扱えないのですね。
それも含め、MS SQLServerと比べると、
プロシージャでできる操作が少ない感じです。
夜間処理などをプロシージャの実行で考えている場合は調査が必要でしょう。
ファイル操作
LOAD DATAコマンドでCSVファイルをデータベースに取り込むことができます。
逆に、CSV形式でデータベースから出力するにはSELECT文から行うことができます。
バックアップ
mysqldumpコマンドでデータベースシュをバックアップできます。
バックアップファイルから復元するには、mysqlコマンドを使います。
ぬかりはないですね。