非エンジニアでも知っておきたい!データベース・MySQLの基礎を現役エンジニアが解説【初心者向け】
データベース・MySQLの基礎を、初心者向けに紹介した記事です。データベースとは何かの説明から、MySQLを実際に使う方法まで解説しています。SELECT、WHEREを使ったデータ抽出の例も紹介。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,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;
すると、このように抽出されます。
データの挿入(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のレコードだけが抽出されました。
この際、比較演算子(=、<、>、<=、>=など)やANDやORなどを使うことができます。
また、「LIKE」を使うことで特定の文字が含まれるレコードを抽出することも可能です。
例えば、last_nameのカラムが「家」で始まるレコードのみを抽出する場合は下記のようになります。
SELECT * FROM customer WHERE last_name like ‘家%’;
これで、last_nameが家で始めるレコードが抽出できました。
データの集計
MySQLでは、カラムの行数を数えられるcount関数や、カラムの値を合計できるsum関数などあらかじめ準備された関数があります。関数を使うことでデータの集計が可能です。
例えば、paymentというテーブルからamountのカラムの合計値を集計したい場合は、下記のように記述します。
SELECT sum(amount) FROM payment;
実行すると、このように集計されました。
このように、sum(カラム名)、count(カラム名)のように記述して使うことができます。
集計を行うことで、ユーザーの登録数を数えるなどデータの分析などでも役立つことでしょう。
今回は初心者向けということもあって簡単なものばかりでしたが、実際に手を動かしながらデータの抽出などを行うことができました。
おわりに
SQLっていうんですか?1行でデータを検索して取得できるんですねー。
そうそう。並べ替えたりもしながら簡単に目的のデータを検索して取得できるんだよ。
値段の順番に並べ替えたり、アクセスが多いものから順に表示したりなど出来そうですね。
そうそう。そういうのにも便利なんだ。また、安全性も抜群なんだ。データベースという専用のデータ管理ソフトを使うのが一般的になってるね。
MySQLを勉強していて、
・もっと効率的に勉強したい
・誰かに聞きながら学びたい
・自分でWebサービスを作りたい
と思ったことはないでしょうか?
そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、オリジナルWebサービスを開発することが可能です。
独学に限界を感じている場合はご検討ください。
この記事を監修してくれた方
中本賢吾(なかもとけんご) 開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。 その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。 |