#目的
Webシステム構築を目的として、超基礎的なDBサーバの構築と動作を確認する。
(DBサーバとしてはMySQLを利用する。)
#環境条件
- DBサーバ
- EC2:t2.micro
- OS:Red Hat Enterprise Linux 8 (HVM), SSD Volume Type
- Disk:汎用SSD(GP2) 10GB
- MySQL:MySQL 8
セキュリティグループの設定等はいい感じに。
#構築手順
ec2-userでログイン
rootユーザにスイッチ
$ sudo su -
rpmの存在確認
# yum info mysql*server
インストール
# yum install mysql-server
インストールされたMySQLのバージョン確認
# mysqld --version
/usr/libexec/mysqld Ver 8.0.17 for Linux on x86_64 (Source distribution)
MySQLサービスの停止を確認
# service mysqld status
Active: inactive (dead)の出力を確認する。
MySQLサービスを起動する
# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
MySQLのrootユーザのパスワード設定
# mysql -uroot
> use mysql;
> ALTER USER 'root'@'localhost' identified BY 'password';
(PASSWORD関数はMySQL8では廃止されている様。)
設定したパスワードでログインできることを確認
# mysql -uroot -ppassword
尚、実運用のMySQLではないので、mysql_secure_installationの設定などは実施しない。
#DBサーバの基本動作
以下の簡単な操作だけ実施する。
- DB作成
- 表作成
- 行の挿入
- 行の更新
- 行の削除
- 複数表を結合した検索
- 表のトランケート
- 表の削除
- DBの削除
##1. DB作成
既存のDBの確認
> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
新しいDBの作成
> create database test;
新しいDBが作成されていることを確認
> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
##2. 表の作成
利用するDBを指定する
> use test;
既存の表を確認する
> show tables;
Empty set
表を作成する
> create table customer (
-> id int,
-> name varchar(255),
-> age int,
-> sex tinyint);
新しく作成した表の存在を確認する
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| customer |
+----------------+
##3. 行の挿入
新しく作成した表に存在する行を確認する
> select * from customer;
Empty set
行を追加する
> insert into customer values (1,"山田太郎",30,1);
新しく追加した行を確認する
> select * from customer;
+------+--------------+------+------+
| id | name | age | sex |
+------+--------------+------+------+
| 1 | 山田太郎 | 30 | 1 |
+------+--------------+------+------+
この後のオペレーションのために数行追加
> insert into customer values (2,"田中花子",25,2);
> insert into customer values (3,"鈴木大輔",43,1);
> insert into customer values (4,"与謝野晶子",99,2);
> select * from customer;
+------+-----------------+------+------+
| id | name | age | sex |
+------+-----------------+------+------+
| 1 | 山田太郎 | 30 | 1 |
| 2 | 田中花子 | 25 | 2 |
| 3 | 鈴木大輔 | 43 | 1 |
| 4 | 与謝野晶子 | 99 | 2 |
+------+-----------------+------+------+
##4. 行の更新
更新対象の与謝野晶子さんの情報を確認する
> select * from customer where id=4;
+------+-----------------+------+------+
| id | name | age | sex |
+------+-----------------+------+------+
| 4 | 与謝野晶子 | 99 | 2 |
+------+-----------------+------+------+
与謝野晶子さんの年齢を99から141に変更する
> update customer set age=141 where id=4;
年齢が変更されていることを確認する
> select * from customer where id=4;
+------+-----------------+------+------+
| id | name | age | sex |
+------+-----------------+------+------+
| 4 | 与謝野晶子 | 141 | 2 |
+------+-----------------+------+------+
##5. 行の削除
現在表に格納されている行を確認する
> select * from customer;
+------+-----------------+------+------+
| id | name | age | sex |
+------+-----------------+------+------+
| 1 | 山田太郎 | 30 | 1 |
| 2 | 田中花子 | 25 | 2 |
| 3 | 鈴木大輔 | 43 | 1 |
| 4 | 与謝野晶子 | 141 | 2 |
+------+-----------------+------+------+
与謝野晶子さんの行を削除する
> delete from customer where id=4;
削除後の表に格納されている行を確認する
> select * from customer;
+------+--------------+------+------+
| id | name | age | sex |
+------+--------------+------+------+
| 1 | 山田太郎 | 30 | 1 |
| 2 | 田中花子 | 25 | 2 |
| 3 | 鈴木大輔 | 43 | 1 |
+------+--------------+------+------+
##6. 複数表を結合した検索
もう一つ表を作成し、行を追加する
> create table sex(
-> id tinyint,
-> sex varchar(10));
> insert into sex values (1,"男性");
> insert into sex values (2,"女性");
> select * from sex;
+------+--------+
| id | sex |
+------+--------+
| 1 | 男性 |
| 2 | 女性 |
+------+--------+
customer表とsex表をcustomer表のsexとsex表のidで結合し、
名前と性別の日本語名称を検索する
> select customer.name, sex.sex from customer, sex where customer.sex=sex.id;
+--------------+--------+
| name | sex |
+--------------+--------+
| 山田太郎 | 男性 |
| 田中花子 | 女性 |
| 鈴木大輔 | 男性 |
+--------------+--------+
##7. 表のトランケート
存在する表の確認
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| customer |
| sex |
+----------------+
customer表に格納されている行の確認
> select * from customer;
+------+--------------+------+------+
| id | name | age | sex |
+------+--------------+------+------+
| 1 | 山田太郎 | 30 | 1 |
| 2 | 田中花子 | 25 | 2 |
| 3 | 鈴木大輔 | 43 | 1 |
+------+--------------+------+------+
customer表のトランケート
> truncate table customer;
customer表がトランケートされていることを確認
> select * from customer;
Empty set
##8. 表の削除
存在する表の確認
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| customer |
| sex |
+----------------+
sex表の削除
> drop table sex;
sex表が削除されていることを確認
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| customer |
+----------------+
##9. DBの削除
存在するDBの確認
> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
testDBの削除
> drop database test;
testDBが削除されていることを確認
> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
次回は、
Webシステム構築(超基礎)④:Webシステムの構築
です。