DB、すなわちデータベース*1。普段あまり触れることがないDB。黒い画面(ターミナル)でコマンド打ってゴニョゴニョ操作するイメージのDB。おそらく一番身近な入り口である「Local by Flywheel」の「Adminer」から、WordPressのDBをSQL文でコチョコチョ操作したい!
※目次:
- WordPressとMySQL
- WordPressのローカル環境「Local by Flywheel」
- DBにアクセスするAdminer
- WordPressのDBのダンプ(sql)ファイル
- SQL文の三種類(DDL、DML、DCL)
- まとめと次回予告
WordPressとMySQL
「サーバサイドの中でのWordPressの位置付け」でも解説しましたがサーバサイドにはプログラミング言語とデータベース言語があります。
※参考:サーバサイドの中でのWordPressの位置付け - クモのようにコツコツと
プログラミング言語PHPで構成されたCMS(コンテンツマネジメントシステム)にWordpressがあります。
データベース言語SQLで構成されたRDBMS(リレーショナルデータベースマネジメントシステム)にMySQLがあります。
- CMS:WordPress(プログラミング言語PHPで構成)
- RDBMS:MySQL(データベース言語SQLで構成)
※参考:PHPの解説(JSとの比較)
PHPの基本を理解するためにJSと比較する - クモのようにコツコツと
通常MySQLはCUIツール(いわゆる黒い画面)であるターミナルで操作をする必要があります。
MySQLをブラウザで操作するためのGUIツールとしてデータベース接続クライアント「phpMyAdmin」「Adminer」などがあります。
- CUI:ターミナル(黒い画面)
- GUI:phpMyAdmin、Adminer
phpMyAdminは最もメジャーで、ほとんどのレンタルサーバにインストールされています。
WordPressのローカル環境「Local by Flywheel」
WordPressは通常はサーバ上でしか動きませんが、ローカル環境で動かすためのツールとして「Local by Flywheel」があります。
※参考: Local by Flywheelのダウンロードからインストールまでの手順│G-NOTE
インストールをして、WordPressサイトを作るとこのような画面になります。よく使うのは赤枠で囲っている1〜3の部分と思います。
1はWordPressのファイル一式があるディレクトリです。クリックするとphpファイルを個別に開くことができます。テーマのカスタマイズなどはこちらで行います。
※参考:WordPressのファイル構成
ざっくりWordPress:PHP書式とテンプレートタグの識別-前編 - クモのようにコツコツと
2の「ADMIN」はWordPressのダッシュボードのログイン画面が開きます。
3の「VIEW SITE」はWordPressサイトのブラウザでのプレビューです。
DBにアクセスするAdminer
さて、次はあまり馴染みがないDBへアクセスしてみましょう。「DATA BASE」というタブを開きます。
Local by Flywheelでデータベースにアクセスするツールは「phpMyAdmin」ではなく「Adminer」です。機能はほとんど同じです。*2
開いてみるとこのような画面です。 「Table」の中にある「wp_commentmeta」「wp_comments」などのテーブルは一つ一つ種類がことなります。
※参考:Wordpressのテーブル一覧
WordPressのデータベースの構造について理解しておこう | 株式会社bridge
DBの基礎用語に「テーブル」「カラム」「レコード」「フィールド」などがあります。 RDB(リレーショナルデータベース)はエクセルのように行、列がある表形式のデータベースです。
※参考:DBとエクセルの比較
データベースの用語を理解しよう 「テーブル」「レコード」「カラム」「フィールド」とは?
DBの中身を見てみたいですね。サイドメニューにある「Export」をクリックして書き出します。
DBのエクスポート画面。ファイル形式は「sql」でいいでしょう。テーブルは全選択。「Export」をクリックするとファイルがダウンロードできます。*3
WordPressのDBのダンプ(sql)ファイル
エクスポートされたファイルはこのようなコードでした。
-- Adminer 4.2.6-dev MySQL dump SET NAMES utf8; SET time_zone = '+00:00'; SET foreign_key_checks = 0; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; SET NAMES utf8mb4; DROP TABLE IF EXISTS `wp_commentmeta`; CREATE TABLE `wp_commentmeta` ( `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0', `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `meta_value` longtext COLLATE utf8mb4_unicode_520_ci, PRIMARY KEY (`meta_id`), KEY `comment_id` (`comment_id`), KEY `meta_key` (`meta_key`(191)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; (後略)
1行目はコメントですね。頭にハイフン2つ--
がつきます。
-- Adminer 4.2.6-dev MySQL dump
「Adminerのバージョン4.2.6から書き出したMySQLのダンプファイル」という意味です。ダンプファイルとはまるごと書き出したデータ、といった意味でバックアップファイルのこと。
その次のSET
はファイル自体の設定のようです。
SET NAMES utf8; SET time_zone = '+00:00'; (後略)
文字コードがUTF8だよ、タイムゾーン(時差)は+00:00だよ、とか。
そのあとにDROP TABLE
、CREATE TABLE
などの命令が続きます。
SQL文の三種類(DDL、DML、DCL)
sqlファイルは「SQL文」というデータベースへの命令文で書かれています。命令は冒頭に書かれます。SQL文は下記の3つの種類があります。
- データ定義言語(DDL:Data Definition Language)
データベースのデータ構造を定義する言語
CREATE(表の創成、定義)、DROP(表の削除)など- データ操作言語(DML:Data Manipulation Language)
既存表からのデータ検索・追加・更新・削除を行うための言語
SELECT(検索)、INSERT(追加)、UPDATE(更新)、DELETE(削除)など- データ制御言語(DCL:Data Control Language)
データベースへのアクセス制御に関する言語
GRANT(アクセス権付与)やREVOKE(権限破棄)など
※参考:データベース言語(SQL)の体系 DDL/DML/DCL<データベース<情報技術の基礎<Web教材<木暮
ダンプファイルは「データ定義言語(DDL)」が中心のように見受けられる。
例えば下記はCREATE
(表の作成)です。
CREATE TABLE `wp_commentmeta` ( `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, -- (中略) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
「テーブルwp_commentmeta
を作成し、その中のレコードmeta_id
の設定値をbigint(20) unsigned NOT NULL AUTO_INCREMENT
にする」という意味。
Adminerの「wp_commentmeta」を開くと確かに設定されています。
Adminierを開いたときにすでに「wp_commentmeta」などのテーブルがあったように、基本的にはテーブルの作成(CREATE)、削除(DROP)などはWordPressが自動的にやってくれます。
まとめと次回予告
Wordpressをローカルで動かすLocal by flywheel。そこからデータベースMySQLにアクセスするAdminer。そこから書き出したダンプ(sql)ファイル。
ダンプファイルの中のSQL文はCREATE
、DROP
などの「データ定義言語(DDL)がメインでした。
SELECT
、INSERT
などの「データ操作言語(DML)」は見当たらなかった。
DMLは投稿本文の文字を検索置換するなど、もう少し細かい部分に対する操作です。Adminerの画面から行うことができます。
次回はDML命令を自力で手動でやってみます!
※参考:続き書きました!
AdminerからSQL文で「我輩は猫である」を「犬」にしてみる(WordPressのDB操作:その2) - クモのようにコツコツと
※参考:サーバサイドの基本まとめました!
【WordPress、PHP、SQL文】Webデザイナーでもわかるサーバサイドの基本まとめ!(6記事) - クモのようにコツコツと
idr-zz.hatenablog.com
※参考:【WordPress、PHP、SQL文】サーバサイドの基本まとめ
qiita.com