MariaDB講座 / MariaDBとは?データベース・SQL・MySQLとの関係

MariaDBは、データを表に保存し、SQLで検索・更新するリレーショナルデータベース管理システムです。保存やアクセス制御を担当するサーバーと、命令を送るクライアントは、同じパソコンにあっても別のプログラムとして動きます。

データベースと管理システムを区別する

データベースは関連する情報を整理した集合です。DBMS(Database Management System)は、その保存、検索、権限、同時実行や復旧の仕組みを管理するソフトウェアです。MariaDB ServerはDBMSの一つで、一つのサーバー内に複数のデータベースを作れます。

リレーショナルデータベースでは、行と列を持つ表を使います。顧客の名前は顧客表に保存し、注文には顧客の識別子を記録すると、注文ごとに名前を複写する必要がありません。ただし、表を分けるだけで整合性が保証されるわけではなく、主キーや外部キーを含む設計が必要です。

表・行・列・主キーの意味

用語 商品管理の例
データベース shopcourse:実習用の表を入れる領域
表 products:同じ構造を持つ商品の集合
列 product_name、price、stockなど、値の種類
行 一つの商品について名前・価格・在庫を記録したもの
主キー product_id:各行を区別する識別子

列にはデータ型と制約を定めます。商品名には文字列、価格には目的に合った数値型を使います。同名の商品が複数あっても、主キーが違えば別の行です。「名前が同じだから同じ商品」とは決めつけません。大文字小文字の扱いで環境差を増やさないよう、この講座ではデータベース名と表名を小文字で統一します。

サーバーとクライアントの役割

サーバープロセスはデータを管理して要求を処理します。コマンドラインのmariadbは、接続してSQLを送り、返された結果を表示するクライアントです。GUIのデータベースツールも同じ立場です。クライアントだけをインストールしても、ローカルのサーバーは作成されません。

同じパソコンで学ぶ場合も、サービスとして動くサーバーと、端末で起動するクライアントを分けて確認します。サーバーが停止していてもクライアント自体は起動できますが、接続には失敗します。OSのログイン名、MariaDBのユーザー、データベース名も別の概念です。Ubuntuの管理者接続にはOSの身元を利用するsocket認証が使われる場合があります。

MariaDBサーバーの中にshopcourseデータベースがあり、products表が商品行と列を持つ階層図

SQLで命令し、結果を受け取る

SQLはStructured Query Languageの略で、データ構造やデータ操作を記述する言語です。SELECTは読み取り、INSERTは行の追加、UPDATEは値の変更、DELETEは行の削除、CREATE TABLEは表の定義を行います。読み取るだけの命令と、保存内容を変える命令を区別してください。

接続後、クライアント内で次のSQLを実行します。この式は表を必要としません。セミコロンが文の終わり、ASは結果列の名前を示します。

SELECT 1 + 1 AS result, 'Learning MariaDB' AS message;

resultは2、messageはLearning MariaDBになります。これは計算結果であり、商品を保存したわけではありません。保存するには表を作り、INSERTなどで行を追加します。

MySQLとの関係と互換性の限界

MariaDBはMySQLを起源に持ちますが、別の製品として開発されています。基本SQLや接続方法に共通点があっても、すべてのバージョンの機能、認証、設定、データファイルが交換可能とは限りません。MySQL向けの手順を使うときは、実際のMariaDBのバージョンと機能別の公式説明を照合します。

データディレクトリをそのまま差し替えることは、単なるインストール操作ではありません。製品の移行にはバックアップ、互換性の確認と復元検証が必要です。この講座ではMariaDB ServerとMariaDBクライアントを基準に説明します。

実習環境と最初の到達点

WindowsへのインストールまたはUbuntuへのインストールを済ませ、コマンドライン接続で接続先を確認します。Windowsのパス例は12.3系、Ubuntuの手順は24.04 LTSの標準APTパッケージが対象です。両者のバージョンを無理にそろえる必要はありません。

端末のmariadb --versionはクライアント、接続後のSELECT VERSION()はサーバーのバージョンです。実際の値を記録し、公式配布元でサポートされる安定版を選びます。基本編はshopcourseとcourse_user、Dockerを使う応用編はmariadb:11.8とappops_lab、app_userを使います。shopcourseの権限はappops_labには及びません。

最初の目標は三つの商品を保存し、条件を付けて取り出すことです。Webアプリケーションや複数サーバーの設定を先に行う必要はありません。データベースの作成と商品表の実習で、保存場所と検索結果の違いを確かめられます。

関連する公式リファレンス