はじめに
この記事はPHPをやってみたいので、MySQLもやってみるの続きです。
備忘録なので、足りない分や、もっとこうしたらよかったとかは、後から追加修正していきます。
作業ユーザーをつくる
なんで作業ユーザーを作るの?
rootユーザーは特別なユーザーで、すべてのデータベースにアクセスすることができる為、間違った操作を行なった場合、すべてのデータベースに影響を及ぼしてしまう。
通常はrootユーザーでの作業は行わなず、そのデータベースにだけアクセスできる作業ユーザーを作るのが一般的だそうな。
作業ユーザー作成手順
まずはデータベースを作成。
//mysqlにログイン
sudo mysql -u root -p
//データベースを作成
mysql> create database test;
作業ユーザーを作成。
mysql> grant all on test.* to testuser@localhost identified by 'password';
上記コマンドの意味は。
grant all on(許可を与える)
test.*(testというデータベースのすべてのテーブル))
testuser@localhost(testuserというユーザーに対して))
identified by 'password'(パスワードは'password'))
作成した作業ユーザーで、ログインできるか試す。
//一旦ログアウトする。
mysql> exit
//作った作業ユーザーでログインしてみる
mysql -u testuser -p
//ログインできた!
mysql>
テーブルを作る
データベースも、作業ユーザーもできたところで、次はテーブルを作ってみる。
create table {DB名} ({フィールド名} {レコードの型});
create table mytable (
id int,
name varchar(100)
)
もし、下記のようなエラーがでたら use {データベース名}
でデータベースを切り替えてください。
ERROR 1046 (3D000): No database selected
作成したテーブルを確認する
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| mytable |
+----------------+
テーブルを削除する
mysql> drop table mytable;
テーブルの構造を見る
//desc {table名}
mysql> desc mytable;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------
テーブルのレコードで使える型(よく使うもの)
MySQLのデータ型でよく使うものは下記のようです。下記記載以外にも沢山あります。
数値
型名 | 説明 | 例 |
---|---|---|
int | 整数 | 123 |
double | 浮動小数点数 | 1.23 |
文字列
型名 | 説明 |
---|---|
char(n) | 固定長の文字列(255文字以下) |
varchar(n) | 可変長文字列 |
text | どのくらいの文字列が入るかわからない場合 |
日付
型名 | 説明 | 例 |
---|---|---|
date | 日付 | 2016-10-10 |
datetime | 日付と時刻 | 2009-10-04 15:25:07 |
その他
型名 | 説明 | 例 |
---|---|---|
enum('value1','value2',...) | 文字列定数リスト | 男性 女性 |
フィールドのオプション設定
入力値を必須にする
not null
はnullを許可しないオプション。指定することによってそのレコードを挿入する際にフィールドがnull入力ができなくなる。
id int not null
デフォルト値
レコードのデフォルト値を設定できる。ただし、設定することができるのは 定数のみ。
例外としてTIMESTAMP型が設定できるっぽい。
sex enum('male', 'female') default 'male'
自動連番
auto_increment は整数型のみ指定できるオプション。
自動的に連番の値を設定してくれる。
id int auto_increment
索引(インデックス)
インデックスをフィールドに設定しておくと、そのフィールドで検索した場合動作が早くなる。
ただし、挿入する場合はインデックスを貼り過ぎていると、インデックスを作りなおす処理が走るため動作が重くなる。
主キー
レコード一意に特定する、idなどに使用する。
主キーとはユニークなレコードを作りたいときに使用します。
主キーの条件
- 値の重複がない
- データは必須入力。
id int not null auto_increment primary key,
キー
よく検索するフィールドに設定する。いくつでも設定できる。
//key {keyの名前} {フィールド名}
key mynumber(mynumber)
ユニークキー
ユニークキーが設定されたフィールドでは値を重複設定することができない。emailなどで使われる。
email varchar(255) unique
まとめ
フィールドの型の種類や、オプションの設定について少しわかったので、レコード設定についても調べていこうと思います。