SukeBlog

プログラマーSukeによるブログ

【SQL】No.0 はじめに

【SQL】No.0 はじめに
この記事は約16分で読めます

対象者

対象者はデータベースやSQLが何かわからないが、勉強してみたい方です。
前提知識は必要ありません。プログラミング未経験者でも勉強可能です。

データベース(DB)とは

データベース(DB)とは、値を格納しておくシステムのことを言い、DBサーバとはDBミドルウェアがインストールされているサーバのことを指します。
データベースは大きく、リレーショナルデータベースと、NoSQLに分けることができます。
本記事では、リレーショナルデータベースについて扱います。

リレーショナルデータベース(RDB)

リレーショナルデータベース(RDB)とは、エクセルのようにデータを2次元の表で表すデータベースのことです。
RDBのミドルウェアは色々なものがあります。
  • Oracle
  • MySQL
  • PostgreSQL
  • SQL Server
本記事では、PHPとよく一緒に使用されるMySQLを扱います。

SQLとは

SQL(Structured Query Language)とは、RDBを操作するために使用する言語です。
RDBの操作(SQLでできること)には、下記のものがあります。
  • DBを作成、削除する
  • テーブルを作成、削除する
  • データを作成、変更、削除する

環境構築(MySQLのインストール)

MySQLをインストールするには、XAMPPをインストールするのがおすすめです。
※XAMPPとは、PHP、Apache、MySQLをパッケージとしてひとまとめにしたものです。XAMPPをインストールすることで、MySQLはもちろん、PHPを開発する環境まで整えることができます。

ダウンロードはこちらからできます
 →https://www.apachefriends.org/jp/index.html

MySQLの起動、停止方法

MACの場合

XAMPPを起動し、Manage Serversタブをクリックします。
MySQL Databaseを選択した状態で、Startボタンをクリックします。これだけです。
停止は、Stopボタンを押すだけです。

MySQLのパスワード設定

MySQLには、デフォルトでrootというユーザが作成されています。
下記のコマンドを実行し、rootユーザのパスワードを設定しておきましょう。
/Applications/XAMPP/bin/mysqladmin -u root password

環境構築(MySQL WorkBenchのインストール)

MySQL WorkBenchとは、MySQLを扱いやすくするツールです。
データベースの作成や、SQLの実行がわかりやすく、簡単にできます。

ダウンロードはこちらからできます
 →https://www.mysql.com/jp/products/workbench/

スキーマの作成

スキーマとは、DBのテーブルをまとめた概念です。
スキーマを作成するには、下記のSQLを実行します(ここでは試しに勉強用であるtestスキーマを作成しています)。
CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */

テーブルの作成

テーブルとは、2次元の表のことです。

例えば、データ操作の練習用に下記のようなテーブルを作成しておきます。
  • 社員テーブル
  • 部署テーブル
  • 駅リストテーブル

テーブル作成SQLの実行

勉強用のテーブルを作成するには、下記のSQLを実行します。
SQLを実行することにより、テーブルが作成され、さらにテーブル内にデータが登録されます。
-- MySQL dump 10.16  Distrib 10.1.26-MariaDB, for osx10.6 (i386)
--
-- Host: localhost    Database: test
-- ------------------------------------------------------
-- Server version	10.1.26-MariaDB

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `customer`
--

DROP TABLE IF EXISTS `customer`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `customer` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `氏名` varchar(45) DEFAULT NULL,
  `カナ` varchar(45) DEFAULT NULL,
  `性別` varchar(3) DEFAULT NULL,
  `年齢` int(11) DEFAULT NULL,
  `住所` varchar(45) DEFAULT NULL,
  `電話番号` varchar(45) CHARACTER DEFAULT NULL,
  `部署id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `customer`
--

LOCK TABLES `customer` WRITE;
/*!40000 ALTER TABLE `customer` DISABLE KEYS */;
INSERT INTO `customer` VALUES (1,'山田太郎','ヤマダタロウ','男',20,'東京都江東区','09011111111',1),(2,'山田花子','ヤマダハナコ','女',21,'東京都江戸川区','08011112222',2),(3,'チーバ君','チーバクン','男',15,'千葉県','08012341111',2),(4,'江戸川コナン','エドガワコナン','男',7,'東京都江戸川区','08083638566',3),(5,'白石麻衣','シライシマイ','女',25,'東京都','07055555555',4),(6,'松本潤','マツモトジュン','男',30,'神奈川県','07066666666',5);
/*!40000 ALTER TABLE `customer` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `division`
--

DROP TABLE IF EXISTS `division`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `division` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `部署名` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `division`
--

LOCK TABLES `division` WRITE;
/*!40000 ALTER TABLE `division` DISABLE KEYS */;
INSERT INTO `division` VALUES (1,'経理部'),(2,'総務部'),(3,'人事部'),(4,'システム開発部'),(5,'技術部'),(6,'カスタマーサービス部');
/*!40000 ALTER TABLE `division` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `station`
--

DROP TABLE IF EXISTS `station`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `station` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `駅名` varchar(45) DEFAULT NULL,
  `次駅id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `station`
--

LOCK TABLES `station` WRITE;
/*!40000 ALTER TABLE `station` DISABLE KEYS */;
INSERT INTO `station` VALUES (1,'東京',2),(2,'有楽町',3),(3,'新橋',4),(4,'浜松町',5),(5,'田町',6),(6,'品川',7),(7,'大崎',8),(8,'五反田',9),(9,'目黒',10),(10,'恵比寿',11),(11,'渋谷',12),(12,'原宿',13),(13,'代々木',14),(14,'新宿',15),(15,'新大久保',16),(16,'高田馬場',17),(17,'目白',18),(18,'池袋',19),(19,'大塚',20),(20,'巣鴨',21),(21,'駒込',22),(22,'田端',23),(23,'西日暮里',24),(24,'日暮里',25),(25,'鶯谷',26),(26,'上野',27),(27,'御徒町',28),(28,'秋葉原',29),(29,'神田',1);
/*!40000 ALTER TABLE `station` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-01-14  1:41:43