Help us understand the problem. What is going on with this article?

PHPをやってみたいので、MySQLもやってみる(その2)

More than 3 years have passed since last update.

はじめに

この記事は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

まとめ

フィールドの型の種類や、オプションの設定について少しわかったので、レコード設定についても調べていこうと思います。

nogson
へっぽこデザイナーです。
https://satofaction.net/
willgroup
個と組織をポジティブに変革する「チェンジエージェントグループ」
https://willgroup.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away