非エンジニアでも知っておきたい!データベース・MySQLの基礎

データベース・MySQLの基礎を、初心者向けに紹介した記事です。データベースとは何かの説明から、MySQLを実際に使う方法まで解説しています。SELECT、WHEREを使ったデータ抽出の例も紹介。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回のテーマは、データベース・MySQLの基礎です。

よくいろいろな企業ブログで紹介されますが、SQLは非エンジニアであっても覚えておくと何かと便利な知識です。

なお本記事の内容は、TechAcademyのPHPオンライン講座でも扱っています。

 

大石ゆかり

田島メンター!データベースって何ですか?

田島悠介

データを安全に、そして検索などしやすいように別にわけて管理するためのソフトなんだ。

大石ゆかり

ファイルに簡単にメモしておくだけで良いんじゃないのかな~って思うんですけど、違いはあるんですか?

田島悠介

データが小さい内は、何とかなるかもしれないけど、件数が増えたり、データに同時処理が入ると、整合性が取れなくなるんだ。データベースがどんなものか簡単に見てみよう!

 

データベースとは

まずは、そもそもデータベースとはどんなものなのか知っておきましょう。

データベースとは、たくさんの情報を一元的に管理でき、いろいろな目的のために使用(検索・抽出・加工)できるようにするものです。

 

もともと、第二次大戦後のアメリカ軍が、複数に点在する資料を一箇所に集約し、そこに行けば全てのデータを取得できるように効率化を図るために作られました。この一箇所に集約された場所を、情報(Data)の基地(Base)と呼ぶことが、データベースの語源とされています。

 

また、データベースに求められる要件として、下記のようなものがあります。

  • データの正確性
  • データの独立性
  • データの整合性
  • データの可用性
  • 冗長性の排除
  • 同時処理の制御

 

データベースのうち、1970年代に登場した「リレーショナルデータベース」が現在も一般的に使われています。

リレーショナルデータベース

 

リレーショナルデータベースとは、各データを 2次元の表(テーブル)によって表現しているデータベースのことです。Microsoft Excelをイメージするとわかりやすいかもしれません。

複数の表のデータを関連付けることで、データをひとつの巨大なデータベースとして活用することができます。

 

また、リレーショナルデータベースの列のことを「フィールド(カラム)」、行のことを「レコード」と呼びます。フィールドは、文字列や数値などの型を持っています。

リレーショナルデータベースの要素

 

大石ゆかり

表になってて見やすいですね。

田島悠介

そうだね。ただ、実際の中身はデータベースなので、色々な機能があるんだ。

大石ゆかり

どんな機能があるんですか?

田島悠介

件数がたくさん増えても短い時間で検索してくれたり、銀行の送金のように、相手の口座も含めて増減するような異なる処理を切り離せない処理として実行することも出来るんだ。データベースの1つであるMySQLの基礎を簡単に見てみよう!

 

MySQLの基礎

データベースについて理解したところで、MySQLの基礎を実践的に学んでいきましょう。

まずMySQLとは、世界でもっとも普及しているオープンソースのリレーショナルデータベースです。現在はオラクル社により開発されています。

 

Mysqlのインストール

Mysqlをインストールするためには、Windows環境、Mac環境、Linux環境ではそれぞれ異なる操作方法が必要です。

Windows環境でのインストール方法については初心者向け!MySQLをインストールする方法を御覧ください。

Mac環境のインストール方法についても、Windows環境とほぼ同じになります。

Linux環境の場合は、ターミナル上でコマンドを利用してインストールする必要があります。

今回はUbuntuとCentOSというLinuxでのインストール方法についてご紹介します。

 

Ubuntu 16.04 LTSの場合

sudo apt install mysql-server

sudoは管理者権限で操作する方法です。

aptはUbuntuで用意されているアプリケーションのパッケージ管理コマンドです。

installはUbuntuで管理されたパッケージをインストールするコマンドです。

mysql-serverはMysqlを指定してインストールするコマンドです。

 

CentOS7の場合

sudo yum -y install mysql-community-server

sudoは管理者権限で操作する方法です。

yumはCentOSで用意されているアプリケーションのパッケージ管理コマンドです。

installはCentOSで管理されたパッケージをインストールするコマンドです。

mysql-community-serverはMysqlを指定してインストールするコマンドです。

 

このMySQLなどのリレーショナルデータベースの操作を行うために使われる言語を「SQL」と呼びます。

MySQLの基本操作であるデータの取得(SELECT)、データの挿入(INSERT)、データの更新(UPDATE)、データの削除(DELETE)などのデータ操作について説明していきます。

 

データの取得(SELECT文)

データの取得は、SELECTで行います。

具体的には下記のように記述します。

SELECT
カラム名1,
カラム名2,

FROM
テーブル名;

 

この時に、全てのカラムを指定する場合は「*(アスタリスク)」を使うことができます。

例えば、 customerというテーブルにある全てのカラムのレコードを抽出する場合は以下のようになります。

SELECT * FROM customer;

すると、このように抽出されます。

select

 

データの挿入(INSERT)

新たにデータを作成挿入します。具体的には下記のように記述します。

INSERT INTO
  テーブル名 (
    カラム名1,
    カラム名2,
    …
  ) 
  VALUES (
    値1, 
    値2, 
    ...
  )
;

 

例えば、 customerというテーブルにstore_idとfirst_nameとlast_nameとemailとaddress_idとactiveを挿入する場合は次のようになります。

INSERT INTO
  customer (
    customer_id,
    store_id,
    first_name,
    last_name,
    email,
    address_id,
    active,
    create_date,
    last_update
  ) 
  VALUES (
   '',
   '15',
   '徳川',
   '家康',
   'ieyasu@tokugawa.com',
   '4',
   '1',
   '',
   ''
 )
;

 

表示結果

 

データの更新(UPDATE)

既存データを更新します。具体的には下記のように記述します。

UPDATE
  テーブル名
  SET
    カラム名1 = 値1,
    カラム名2 = 値2,
    ...
;

 

例えば、 customerというテーブルに挿入した徳川家康のデータを徳川秀忠にUPDATEすると次のようになります。

UPDATE
  customer 
  SET
    customer_id=2,
    store_id=19,
    first_name='徳川',
    last_name='秀忠',
    email=!hidetada@tokugawa.com",
    address_id=11,
    active=1,
    create_date="1605-04-16-00:00:00",
    last_update="1605-04-16-00:00:49"
;

表示結果

データの削除(DELETE)

データの削除をします。具体的には下記のように記述します。

DELETE FROM
  テーブル名
;

今回はテーブル自体を削除しますので次のように記載して実行します。

DELETE FROM
  customer
;

表示結果

表示結果としては、該当レコードが削除され、表示されなくなります。

 

抽出条件の指定(WHERE句)

続いて、抽出条件を指定する方法です。

WHERE句を使うと、指定した条件にマッチするレコードのみを抽出することができます。

 

例えば、customerというテーブルから「active」のカラムが1のレコードのみを抽出する場合は、下記のようになります。

SELECT * FROM customer WHERE active = 1;

これで、activeが1のレコードだけが抽出されました。

WHERE

この際、比較演算子(=、<、>、<=、>=など)やANDやORなどを使うことができます。

 

また、「LIKE」を使うことで特定の文字が含まれるレコードを抽出することも可能です。

例えば、last_nameのカラムが「家」で始まるレコードのみを抽出する場合は下記のようになります。

SELECT * FROM customer WHERE last_name like ‘家%’;

これで、last_nameが家で始めるレコードが抽出できました。

like

 

データの集計

MySQLでは、カラムの行数を数えられるcount関数や、カラムの値を合計できるsum関数などあらかじめ準備された関数があります。関数を使うことでデータの集計が可能です。

例えば、paymentというテーブルからamountのカラムの合計値を集計したい場合は、下記のように記述します。

SELECT sum(amount) FROM payment;

実行すると、このように集計されました。

sum

このように、sum(カラム名)、count(カラム名)のように記述して使うことができます。

集計を行うことで、ユーザーの登録数を数えるなどデータの分析などでも役立つことでしょう。

 

今回は初心者向けということもあって簡単なものばかりでしたが、実際に手を動かしながらデータの抽出などを行うことができました。

 

[PR] プログラミングで挫折しない学習方法を動画で公開中

おわりに

 

大石ゆかり

SQLっていうんですか?1行でデータを検索して取得できるんですねー。

田島悠介

そうそう。並べ替えたりもしながら簡単に目的のデータを検索して取得できるんだよ。

大石ゆかり

値段の順番に並べ替えたり、アクセスが多いものから順に表示したりなど出来そうですね。

田島悠介

そうそう。そういうのにも便利なんだ。また、安全性も抜群なんだ。データベースという専用のデータ管理ソフトを使うのが一般的になってるね。

 

MySQLを勉強していて、
・もっと効率的に勉強したい
・誰かに聞きながら学びたい
・自分でWebサービスを作りたい
と思ったことはないでしょうか?

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。