とっかかり:データベースメモ


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

データベースメモ

  • データベースシステムとはミドルウェア。
  • オブジェクト指向のオブジェクト図における集約と関連のような関係で互いのテーブルが作用しあう。
  • 普通のファイル書き込みだとパーサーが必要だけど、データベースだと必要ない
  • 言語が違ってもデータベースだと割と楽にデータを引っ張ってこれる
  • 近年では安全性と使い勝手の問題で各プログラム向けのAPIを利用する場合がある

他いろいろ。MySQLのメモ。

サーバを立てないで利用できるデータベース風ファイルシステムSQLiteもあるのでそっちも。

サーバ・クライアント型のアプリケーションについて

通常のアプリケーションでもサーバ・クライアント型の形式を取るものがあって、MySQLもそのうちに入る。

Windowsでも多くなってきたが、目に見えるのはLinuxのウインドウシステムとか。

導入はlampが入りますよ!って唱ってる某ディストリを利用すればOK.

xamppというものもある。


コマンド遊び

mysql -u root

で起動。

意味は今はわからないけども次のコマンドを打つと現在登録されているユーザを見れる

SELECT host,user,password FROM mysql.user;

ルートユーザ(root@localhost)にパスワードをかける。

SET PASSWORD FOR root@localhost=PASSWORD('hogehoge');

''の文字列がパスワードになる。

EXIT;

で終了。デフォルトでパスワードなしで通過してしまうユーザがいるので、そいつらを消去する。

DELETE FROM user WHERE password='';

呼び出しコマンドは次の通り

mysql [-u usrename][-p [password]][-h host][databasename]

SQLはみんな大好き手続き型の命令で処理されます。

命令は;までとして、C言語同様に;が入力されるまで文が認識されません。

SELECT VERSION();

↑バージョンチェック。

?

SQLを起動した状態で?を打つとHELPです。

GRANT

ユーザの作成を行う。

GRANT permittion ON databasename.tablename TO user IDENTIFIED BY 'pasword'

小文字の部分が弄れる箇所です。権限のしていは今のところ良くわかっていません。

ユーザはデータベースのテーブルに関係付けられるようですね。

CREATE DATABASE

CREATE DATABASE databasename

新しくデータベースを作成します。この中にテーブルを作ってくみたいです。

消すときはドロップします。

DROP DATABASE databasename

USE

USE database

カレントディレクトリに入るみたいな感じですか。

CREATE TABLE

CREATE TABLE tablename(

fieldname type option

...

fieldname type

)

fieldはデータを格納する場所で次のtypeのデータを格納できる。

INT 4byte
INT UNSIGNED 4byte
CHAR(num) num分の文字を格納可能、文字自体は255byte
VARCHAR(num) 可変長文字列、今のところ意味不明
TEXT 可変長文字列、最大65535byte
DATE 日付、1000-1-1から9999-12-31

指定できるオプションは次の通り

IS NOT NULL NULLデータを許可しない
DEFAULT デフォルト値を設定する
PRIMARY KEY 主キー(値が唯一になることを保証するモノ)として設定をする
AUTO_INCREMENT 自動的に小さい整数から順に値を割り当てる

写しまんまだと能がないので次のテーブルを作ってみます。

name type option 備考
id INT UNSGNED AUTO_INCREMENT 管理番号
name VARCHAR(20) NOT NULL 名前
match INT UNSIGNED NOT NULL マッチ回数
win INT UNSIGNED NOT NULL 勝利回数

対戦のデータって眺めてるだけでも

結構面白いって某クリエイタが仰ってましたが、

僕もその通りだと思います。

...とおもったらmatchは予約後でしたね。

厨二チックにduelとか使ってみます。

既にあるテーブルへFiledを追加するには

ALTER TABLE tablename ADD fieldname type;

デーブルを見るときには

SHOW FIELDS FROM tablename

で見れます。

+-------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------+------------------+------+-----+---------+----------------+

| id | int(10) unsigned | NO | PRI | NULL | auto_increment |

| name | varchar(20) | NO | | NULL | |

| duel | int(10) unsigned | YES | | NULL | |

| win | int(10) unsigned | NO | | NULL | |

+-------+------------------+------+-----+---------+----------------+

こんなかんじ。ここでduelのNULLを許可してしまってるのでイカンので変えます。

名前からさらにテーブルを引っ張って…みたいなのがRDBなのかもしれませんがとりあえずこれで(笑)

ALTER TABLE tablename MODIFY tablename type option...;

MODIFY(,,,)で複数FIELDの変更ができます。

ADDでもできますね。

オプションの部分に

DEFAULT hoge

とやるとdefaultが変わります。

データの登録

INSERT INTO tablename(fieldname,...,fieldname) VALUES(value,...,value);

でデータの登録。

データベースの正規化

参考

改訂新版、基礎PHP ISBN4-8443-2005-X

中見出し