DDL

はじめに

本チュートリアルをはじめる前に、MySQL超入門 でMySQLの基本を学習する必要があります。

DDLとは

DDL(Data Definition Language) は、データベースの操作言語の一つで、データベースの構造を定義するためのSQLです。DDLは主に、テーブルの作成、変更、削除など、データベーススキーマを操作します。

CREATE

テーブルやデータベースを作成します。

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

ALTER

テーブルの構造を変更します。

ALTER TABLE users ADD COLUMN email VARCHAR(100);

DROP

テーブルやデータベースを削除します。

DROP TABLE users;

TRUNCATE

テーブルのデータを削除しますが、テーブル自体は削除しません。

TRUNCATE TABLE users;

テーブル設計

データベースのDDL(テーブル定義) をします。データベース php_snsDDL は以下のとおりです。

ER図

users

項目 カラム名 データ型 オプション 外部キー
ID id bigint Primary Key, auto_increment
Email email varchar(255) NOT NULL, UNIQUE
パスワード password varchar(255) NOT NULL
アカウント名 account_name varchar(255) NOT NULL, UNIQUE
ディスプレイ名 display_name varchar(255) NOT NULL
自己紹介 profile TEXT DEFAULT NULL
作成日 created_at datetime DEFAULT CURRENT_TIMESTAMP
更新日 updated_at datetime NULL

tweets

項目 カラム名 データ型 オプション 外部キー
ID id bigint Primary Key, auto_increment
メッセージ message TEXT NOT NULL
ユーザID user_id bigint NOT NULL user_id -> users.id
作成日 created_at datetime DEFAULT CURRENT_TIMESTAMP
更新日 updated_at datetime NULL

likes

項目 カラム名 データ型 オプション 外部キー
ID id bigint Primary Key, auto_increment
ユーザID user_id bigint NOT NULL
投稿ID tweet_id bigint NOT NULL
作成日 created_at datetime DEFAULT CURRENT_TIMESTAMP
更新日 updated_at datetime NULL

データベースクライアント

データベースクライアントは、データベースを管理・操作するためのクライアントツールで、各OSのスタンドアローンアプリやブラウザなどで利用できます。MySQLで利用できるクライアントツールは以下の通りです。

phpMyAdmin

phpMyAdminは、PHPで動作するMySQL専用クライアントツールです。 ブラウザ上でデータベース管理・操作できるのが特徴です。今回は phpMyAdmin で説明します。

公式サイト

phpMyAdminは、

DBeaver

DBeaver はMySQLだけでなく一般的なDBに対応したデータベースクライアントツールです。 エンタープライズ版は NoSQL にも対応しています。

公式サイト

DBeaver

MySQLWorkBench

MySQLWorkBenchは、MySQL公式で公開される無償のMySQL専用クライアントツールです。

公式サイト

MySQLWorkBench

データベース作成

phpMyAdmin へのアクセス

phpMyAdmin を開きます。

XAMPP

XAMPPは「MySQL > Admin」でアクセスします。

MAMP

MAMPは「WebStart」でブラウザを開き、「Tools > phpMyAdmin」でアクセスします。

新規データベース

MySQLデータベースを新規作成します。phpMyAdminのメニューから「新規作成」を選択します。

php_sns データベースを作成します。

テーブル作成

テーブルインポート

php_sns のDDLファイルを準備をします。

schema.sql
CREATE TABLE users (
    id bigint PRIMARY KEY AUTO_INCREMENT,
    account_name varchar(255) UNIQUE NOT NULL,
    email varchar(255) UNIQUE NOT NULL,
    password varchar(255) NOT NULL,
    display_name varchar(255) NOT NULL,
    profile text DEFAULT NULL,
    created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at datetime NULL DEFAULT NULL
);

CREATE TABLE tweets (
  id bigint Primary KEY AUTO_INCREMENT,
  message text NOT NULL,
  user_id bigint NOT NULL,
  image_path text DEFAULT NULL,
  created_at timestamp NULL DEFAULT current_timestamp(),
  updated_at timestamp  NULL DEFAULT NULL
);

CREATE TABLE likes (
  id bigint Primary KEY AUTO_INCREMENT,
  user_id bigint NOT NULL,
  tweet_id bigint NOT NULL,
  created_at timestamp NULL DEFAULT current_timestamp(),
  updated_at timestamp NULL DEFAULT NULL
);

ALTER TABLE likes ADD CONSTRAINT likes_user_id_fk FOREIGN KEY (user_id) 
  REFERENCES users(id) 
  ON DELETE CASCADE 
  ON UPDATE CASCADE;

ALTER TABLE likes ADD CONSTRAINT likes_tweet_id_fk FOREIGN KEY (tweet_id) 
  REFERENCES tweets(id) 
  ON DELETE CASCADE 
  ON UPDATE CASCADE;

テーブルインポート

php_sns データベースにSQLファイルをインポートします。 データベース一覧から php_sns を選択します。

「インポート」タブから【ファイルを選択...】します。

インポートする SQL ファイルを schema.sql を選択します。

ファイルを選択したら画面下の【実行】または【インポート】ボタンをクリックします。

テーブルの確認

データベース一覧にテーブルが作成されたかを確認します。

レコード作成

ユーザレコードインポート

users テーブルにレコードをインポートします。 「インポート」タブから【ファイルを選択...】します。

インポートする SQL ファイルを選択します。

mysqlコマンドでインポートする場合

mysqlコマンド でDDLファイルをインポートすることもできます。

ターミナル
mysql -u root -p php_sns < database/sql/schema.sql 

ユーザデータ確認

users テーブルを選択して「表示」でデータを確認してみましょう。

PHP + MySQL Webサーバプログラミング