クモのようにコツコツと

フロントエンドエンジニア イイダリョウの技術ブログ。略称「クモコツ」

SQL文はLocal by FlywheelのAdminerから慣れよう(WordPressのDB操作:その1)

DB、すなわちデータベース*1。普段あまり触れることがないDB。黒い画面(ターミナル)でコマンド打ってゴニョゴニョ操作するイメージのDB。おそらく一番身近な入り口である「Local by Flywheel」の「Adminer」から、WordPressのDBをSQL文でコチョコチョ操作したい!

※目次:

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の部分と思います。

f:id:idr_zz:20181023214252j:plain

1はWordPressのファイル一式があるディレクトリです。クリックするとphpファイルを個別に開くことができます。テーマのカスタマイズなどはこちらで行います。

f:id:idr_zz:20181023214656j:plain

※参考:WordPressのファイル構成
ざっくりWordPress:PHP書式とテンプレートタグの識別-前編 - クモのようにコツコツと

2の「ADMIN」はWordPressのダッシュボードのログイン画面が開きます。

f:id:idr_zz:20181023214927j:plain

3の「VIEW SITE」はWordPressサイトのブラウザでのプレビューです。

f:id:idr_zz:20181023215040j:plain

DBにアクセスするAdminer

さて、次はあまり馴染みがないDBへアクセスしてみましょう。「DATA BASE」というタブを開きます。

f:id:idr_zz:20181023215236j:plain

Local by Flywheelでデータベースにアクセスするツールは「phpMyAdmin」ではなく「Adminer」です。機能はほとんど同じです。*2

開いてみるとこのような画面です。 「Table」の中にある「wp_commentmeta」「wp_comments」などのテーブルは一つ一つ種類がことなります。

f:id:idr_zz:20181023215707j:plain

※参考:Wordpressのテーブル一覧
WordPressのデータベースの構造について理解しておこう | 株式会社bridge

DBの基礎用語に「テーブル」「カラム」「レコード」「フィールド」などがあります。 RDB(リレーショナルデータベース)はエクセルのように行、列がある表形式のデータベースです。

f:id:idr_zz:20200802145306p:plain

※参考:DBとエクセルの比較
データベースの用語を理解しよう 「テーブル」「レコード」「カラム」「フィールド」とは?

DBの中身を見てみたいですね。サイドメニューにある「Export」をクリックして書き出します。

f:id:idr_zz:20181023220723j:plain

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 TABLECREATE 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」を開くと確かに設定されています。

f:id:idr_zz:20181023225023j:plain

Adminierを開いたときにすでに「wp_commentmeta」などのテーブルがあったように、基本的にはテーブルの作成(CREATE)、削除(DROP)などはWordPressが自動的にやってくれます。

まとめと次回予告

Wordpressをローカルで動かすLocal by flywheel。そこからデータベースMySQLにアクセスするAdminer。そこから書き出したダンプ(sql)ファイル。

ダンプファイルの中のSQL文はCREATEDROPなどの「データ定義言語(DDL)がメインでした。
SELECTINSERTなどの「データ操作言語(DML)」は見当たらなかった。

DMLは投稿本文の文字を検索置換するなど、もう少し細かい部分に対する操作です。Adminerの画面から行うことができます。
次回はDML命令を自力で手動でやってみます!

※参考:続き書きました!
AdminerからSQL文で「我輩は猫である」を「犬」にしてみる(WordPressのDB操作:その2) - クモのようにコツコツと


※参考:サーバサイドの基本まとめました!
【WordPress、PHP、SQL文】Webデザイナーでもわかるサーバサイドの基本まとめ!(6記事) - クモのようにコツコツと idr-zz.hatenablog.com

※参考:【WordPress、PHP、SQL文】サーバサイドの基本まとめ
qiita.com

*1:ドラゴンボールではない

*2:もう一つの「SEQUEL Pro」はネイティブアプリです

*3:私の環境だけでしょうか?ファイルがダウンロードできず、ブラウザにコードが表示されました。そこから別名保存でダウンロードできますが…