無料Wikiサービス | デモページ
Linuxなどのメモ書き
検索

Adsense

MySQL 基本的なDB作成 の差分
Rev.17→Rev.18  追加箇所 削除箇所


データベースの作成

CREATE DATABASEで作成する。作成には権限が必要。作成後、useで使用するデータベースを選択する。

mysql> CREATE DATABASE friendDB
Query OK, 1 row affected (0.00 sec)
mysql> use friendDB
Database changed

テーブルの作成

以下のような友人リストを登録するテーブルを作る場合。

friendsテーブル
No. フィールド名
内容
1
id
識別子
2
name
氏名
3
address
住所(省略可)
4
birthday
生年月日(省略可)

以下のようにしてテーブルを作成する。

mysql>  CREATE TABLE friends (id INT UNSIGNED PRIMARY KEY,
name VARCHAR(30) NOT NULL, address VARCHAR(100),
birthday DATETIME);


◎PRIMARY KEY

PRIMARY KEYを設定したカラムには以下の特徴がある。
  • 他のレコードと重複した値は格納できない
  • NOT NULL属性を持つ
  • 自動的にインデックスが設定される
  • PRIMARY KEYを設定したカラムはテーブルに1つしか存在できない

テーブルレコード作成登録

データ登録するには以下のような友人リスト登録するテーブル場合のようにする

friendsテーブルNo.フィールド名内容1id識別子2name氏名3address住所(省略可)4birthday生年月日(省略可)
mysql> INSERT INTO friends (id, name, address, birthday)
VALUES(1, "tomita", "Kamata xxxx", "2006-05-13 12:34:56");

自動採番したいカラム

上記テーブルだとid毎回自分採番しないといけないid自動採番したい場合以下のようにしてのようにidSERIAL属性をつけてテーブルを作成するっておけばよい(SERIALBIGINTNOT NULL AUTO_INCREMENT UNIQUE)

mysql> CREATE TABLE friends (id SERIAL, name VARCHAR(30) NOT
NULL,
address CREATEVARCHAR(100), TABLEbirthday friends (id INT UNSIGNED PRIMARY KEY,DATETIME); name VARCHAR(30) NOT NULL, address VARCHAR(100), birthday DATETIME);

このようにしておけば、以下のようにしてidを省略して1から順番に自動採番させて登録できる。なおidは自動的にインデックス設定される。

mysql> INSERT INTO friends (name, address, birthday)
VALUES("tomita", "Kamata xxxx", "2006-05-13 12:34:56");

インデックスをつける

PRIMARY KEYnameカラムインデックスをつけてテーブル場合以下のようにする(name最初10文字インデックス使用)

PRIMARY KEYを設定したカラムには以下の特徴がある。他のレコードと重複した値は格納できないNOT NULL属性を持つ自動的にインデックスが設定されるPRIMARY KEYを設定したカラムはテーブルに1つしか存在できない
mysql> CREATE TABLE friends (id SERIAL, name VARCHAR(30) NOT
NULL,
address VARCHAR(100), birthday DATETIME,
INDEX name_idx (name(10)));

既存のテーブルに後からインデックスを追加する場合

mysql> CREATE INDEX name_idx ON friends (name(10));

インデックスを削除する場合は以下。

mysql> DROP INDEX  name_idx ON friends;

レコードの登録データを登録するには以下のようにする。mysql> INSERT INTO friends (id, name, address, birthday) VALUES(1, "tomita", "Kamata xxxx", "2006-05-13 12:34:56");自動採番したいカラム上記のテーブルだとidを毎回自分で採番しないといけない。idを自動採番したい場合は以下のようにidにSERIAL属性をつけてテーブルを作っておけばよい。(SERIALはBIGINTNOT NULL AUTO_INCREMENT UNIQUEと同じ)mysql> CREATE TABLE friends (id SERIAL, name VARCHAR(30) NOTNULL, address VARCHAR(100), birthday DATETIME);このようにしておけば、以下のようにしてidを省略して1から順番に自動採番させて登録できる。なおidは自動的にインデックス設定される。mysql> INSERT INTO friends (name, address, birthday) VALUES("tomita", "Kamata xxxx", "2006-05-13 12:34:56");インデックスをつけるnameカラムにインデックスをつけてテーブルを作る場合は以下のようにする。(nameの最初の10文字をインデックスに使用。)mysql> CREATE TABLE friends (id SERIAL, name VARCHAR(30) NOTNULL, address VARCHAR(100), birthday DATETIME, INDEX name_idx (name(10)));既存のテーブルに後からインデックスを追加する場合mysql> CREATE INDEX name_idx ON friends (name(10));インデックスを削除する場合は以下。mysql> DROP INDEX name_idx ON friends;