SQLスクリプトで商品や顧客などの情報を格納したデータベースを作成する。
今回は「shop」データベースのなかに複数のテーブルを作成していきます。
phpMyAdminからSQLスクリプトを実行し入力していきます。
drop database if exists shop; create database shop default character set utf8 collate utf8_general_ci; drop user if exists ‘staff’@’localhost’; create user ‘staff’@’localhost’ identified by ‘password’; grant all on shop.* to ‘staff’@’localhost’; use shop; | 「データベースとユーザーの作成」 ・drop database if exists shop;でshopデータベースが既に存在する場合は削除します。 ・create database shop ~;でshopデータベースを新規に作成します。 ・drop user if exists ‘staff’@’localhost’;でstaffユーザが既に存在する場合はユーザーを削除します。 ・create user ‘staff’@’localhost’ identified by ‘password’;でstaffユーザーを新規に作成します。パスワードはpasswordとします。 ・grant all on shop.* to ‘staff’@’localhost’;でstaffユーザーにshopデータベースを操作する権限を与えます。 ・use shop;で作成したデータベースに接続します。 |
create table product ( id int auto_increment primary key, name varchar(200) not null, price int not null ); | 「商品テーブルの作成」 商品番号、商品名、価格 |
create table customer ( id int auto_increment primary key, name varchar(100) not null, address varchar(200) not null, login varchar(100) not null unique, password varchar(100) not null ); | 「顧客テーブルの作成」 顧客番号、顧客名、住所、ログイン名、パスワード uniqueという記述は「ユニーク制約」。ユニーク制約を指定した列は、行ごとに全て異なる値になり、他の行と同じ値を格納することができなくなる。 |
create table purchase ( id int not null primary key, customer_id int not null, foreign key(customer_id) references customer(id) ); | 「購入テーブル」 購入番号、顧客番号 foreign keyは外部キー制約と呼ばれます。外部キー制約を指定した列には、外部のテーブルにある指定した列に含まれる値だけが格納できるようになる。 つまり「purchaseテーブルのcustomer_id列には、costomerテーブルのid列に存在する値だけ格納できる」という意味になります。 |
create table purchase_detail ( purchase_id int not null, product_id int not null, count int not null, primary key(purchase_id, product_id), foreign key(purchase_id) references purchase(id), foreign key(product_id) references product(id) ); | 「購入詳細テーブル」 購入番号、商品番号、個数 primary keyは主キーと呼ばれ、行ごとに異なる値を割り当てます。 |
create table favorite ( customer_id int not null, product_id int not null, primary key(customer_id, product_id), foreign key(customer_id) references customer(id), foreign key(product_id) references product(id) ); | 「お気に入りテーブル」 顧客番号、商品番号 |
insert into product values(null, ‘松の実’, 700); insert into product values(null, ‘くるみ’, 270); insert into product values(null, ‘ひまわりの種’, 210); insert into product values(null, ‘アーモンド’, 220); insert into product values(null, ‘カシューナッツ’, 250); insert into product values(null, ‘ジャイアントコーン’, 180); insert into product values(null, ‘ピスタチオ’, 310); insert into product values(null, ‘マカダミアナッツ’, 600); insert into product values(null, ‘かぼちゃの種’, 180); insert into product values(null, ‘ピーナッツ’, 150); insert into product values(null, ‘クコの実’, 400); | 「商品テーブル」 商品番号、商品名、価格 insert intoコマンドを使って、テーブルにデータを追加していきます。 nullには自動的に番号が作成されます。 |
insert into customer values(null, ‘熊木 和夫’, ‘東京都新宿区西新宿2-8-1’, ‘kumaki’, ‘BearTree1’); insert into customer values(null, ‘鳥居 健二’, ‘神奈川県横浜市中区日本大通1’, ‘torii’, ‘BirdStay2’); insert into customer values(null, ‘鷺沼 美子’, ‘大阪府大阪市中央区大手前2’, ‘saginuma’, ‘EgretPond3’); insert into customer values(null, ‘鷲尾 史郎’, ‘愛知県名古屋市中区三の丸3-1-2’, ‘washio’, ‘EagleTail4’); insert into customer values(null, ‘牛島 大悟’, ‘埼玉県さいたま市浦和区高砂3-15-1’, ‘ushijima’, ‘CowIsland5’); insert into customer values(null, ‘相馬 助六’, ‘千葉県地足中央区市場町1-1’, ‘souma’, ‘PhaseHorse6’); insert into customer values(null, ‘猿飛 菜々子’, ‘兵庫県神戸市中央区下山手通5-10-1’, ‘sarutobi’, ‘MonkeyFly7’); insert into customer values(null, ‘犬山 陣八’, ‘北海道札幌市中央区北3西6’, ‘inuyama’, ‘DogMountain8’); insert into customer values(null, ‘猪口 一休’, ‘福岡県福岡市博多区東公園7-7’, ‘inokuchi’, ‘BoarMouse9’); | 「顧客テーブル」 顧客番号、顧客名、住所、ログイン名、パスワード |
確認するとshopデータベースが作成され、各テーブルとデータが作成されています。
「構造」タグより「unique」や「主キー」を設定する
unique(ユニーク)や主キーの設定は「構造」タグより簡単に行えます。まずは構造タグをクリックし、設定したいカラム(列)の「その他」をクリックすると主キーやユニークなどが設定できます。設定できればそれぞれのイラストが付きます。
SQL文を使わずに商品、顧客データベースを作る
新規作成をクリックし、データベース名を入力する。
「作成」をクリックすれば新たなデータベースが作られます。次は商品データベースを作っていきましょう。テーブル名とカラム数(列)を決めていきます。ここではID、商品名、価格とするので3としました。
idにはprimary keyは主キーと呼ばれ、行ごとに異なる値を割り当てます。AIのところにチェックを付けます。下にスクロールすると「保存」がありますのでクリックします。
構造が表示されました。shop2のデータベースの中にproductというテーブルが作成されました。idには主キーが設定された証に鍵マークがつきました。
データを入れていきます。「挿入」タグをクリックし、商品名、価格を入れ、右下の「実行」をクリックします。
このような画面になります。行を挿入されたことがわかります。
「表示」タグでも確認ができます。
このようにどんどん挿入していくことが出来ます。いろいろ作ってみて慣れてみてください。