mySQLの基本

mySQLの本を先生に借りたので、ピックアップしてメモ

【フィールドの型】
INT…整数32bit
DOUBLE…倍精度浮動小数
VARCHAR…文字列255文字
TEXT…文字列64KB
MEDIUMTEXT…文字列16MB
BLOB…画像などバイナリ64KB
MEDIUMBLOB…画像などバイナリ16MB
DATETIME…日付と時刻

【その他の設定】
インデックス…検索が高速になる。
ユニーク…重複データを受け付けない。

【レコードに対する操作一覧】
●追加
insert into テーブル名 value(データ1,データ2,データ3) //フィールド並び順に?すべてのフィールドにデータを追加する。
insert into テーブル名 (フィールド名) value(データ) //特定にフィールドを追加する。
「補足」…データは「’」を両サイドにつけてクエリを作らないといけないので、
$name = "'" . mysql_real_escape_string($name) . "'";
こんな感じであらかじめ「’」これを付加した文字列を作っておいてクエリに登録する。

●削除
delete from テーブル名 where 条件 //条件を指定しないとテーブルのデータが全部消える。
(条件というのは、たとえばidというフィールドのデータが5の行だけという場合であれば「id = 5」。if文と同じ。)
●変更
update テーブル名 set フィールド = データ where 条件 //条件に合致する行のフィールドをデータに書き換える。
●取り出し
select フィールド名 from テーブル名 //複数のフィールドを指定する時は「,」でつなぐ
select フィールド名 from テーブル名 where 条件 //条件をつけて特定の行を指定してフィールドデータを取り出す。
select フィールド名 from テーブル名 limit 10,5 //取り出す件数を制限 例は10個目のデータから5個取り出す。

「補足」・・・SQLを実行した時、結果はリソース番号で返ってくる。データが見つからなかった場合もどうやらリソースの番号だけは返ってくるのでマッチするデータの有無を調べたい時は結果をフェッチしないといけない?っぽい。
●並び替え
select * from テーブル名 order by フィールド名 //フィールド名を基準に指定テーブルのすべてのフィールドを昇順で並び替え
select * from テーブル名 order by フィールド名 desc //並び替え降順
●計算
select フィールド名1 + フィールド名2 as 新しいフィールド名 from テーブル名 //フィールドを加算した新しいフィールドを作る。
●レコードの件数を数える
select count(フィールド名) from テーブル名 where 条件 //条件に合致するレコード件数を数える
●グループ化
select フィールド名 from テーブル名 where 条件 group by グループ化の基準フィールド

    • -

≪条件のバリエーション≫
○where フィールド名1 = データ1 and フィールド名 = データ2 //複数条件
○where フィールド名 between 3 and 5 //範囲指定
○where フィールド名 in (データ1,データ2) //複数条件
○where フィールド名 like '「%」をワイルドカードに使った曖昧検索' //あいまい検索
○where フィールド名 is null //null判定


●最大値の取り方
$sql = "SELECT MAX(id) FROM campus";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);

echo "最大値は".$row['MAX(id)'];

【正規化と結合】
同じ文字列データが何個も何個もデータベースに入ってるのは効率が悪い。
何度もでてくる文字列データには、見出し番号みたいなものを振って別のテーブルに置いておく。
文字列を数値に変換してるということ。データ量が減るからね。ということみたい。

●結合
テーブルのリレーション設定