12. MySQL入門

使用しているバージョン情報

1
2
3
4
5
6
7
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
$ mysql -V
mysql  Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using  EditLine wrapper

データベースとユーザを作成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ mysql -u root -p
Enter password:                     /* パスワード入力 */
mysql> create database college;      /* DB作成 */
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| college            |              /* collegeDBが追加 */
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
 
/* testユーザを作成し、該当DBへ全権限を付与 */
mysql> grant all on college.* to test@localhost identified by 'test';
mysql> select user from mysql.user;          /* testユーザ登録確認 */
+------------------+
| user             |
+------------------+
| debian-sys-maint |
| mysql.session    |
| mysql.sys        |
| root             |
| test             |                /* testユーザが追加 */
| wordpress        |
+------------------+
mysql> exit

作業用ユーザでテーブル作成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$ mysql -u test -p
Enter password:             /* パスワード入力 */
mysql> show databases;       /* 作業ユーザで利用できるDBを確認 */
+--------------------+
| Database           |
+--------------------+
| information_schema |
| college            |
+--------------------+
mysql> use college;          /* 利用するDBを設定 */
 
/* staff_registerテーブル作成 */
mysql> create table staff_register(
id int(4) auto_increment primary key,
department varchar(32) not null,
section varchar(32) not null,
name varchar(32) not null,
phone int(8),
email varchar(32)
);
 
mysql> show tables;                          /* テーブル作成確認 */
+-------------------+
| Tables_in_college |
+-------------------+
| staff_register    |
+-------------------+
 
mysql> desc staff_register;                  /* カラムを表示 */
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id         | int(4)      | NO   | PRI | NULL    | auto_increment |
| department | varchar(32) | NO   |     | NULL    |                |
| section    | varchar(32) | NO   |     | NULL    |                |
| name       | varchar(32) | NO   |     | NULL    |                |
| phone      | int(8)      | YES  |     | NULL    |                |
| email      | varchar(32) | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+

作業用ユーザでレコードの追加/参照/更新/削除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* レコードの追加 */
mysql> insert into staff_register (id, department, section, name, phone, email) values (1, 'Technology', 'Applied Science', 'John Brawn', 74111111, 'aaa@gmail.com');
 
/* 全てのカラムに値を指定する場合に限って、カラムの記述を省略可能 */
mysql> insert into staff_register values (1, 'Technology', 'Applied Science', 'John Brawn', 74111111, 'aaa@gmail.com');
 
mysql> select * from staff_register;                 /* レコードの追加を確認 */
+----+------------+-----------------+------------+----------+---------------+
| id | department | section         | name       | phone    | email         |
+----+------------+-----------------+------------+----------+---------------+
|  1 | Technology | Applied Science | John Brawn | 74111111 | aaa@gmail.com |
+----+------------+-----------------+------------+----------+---------------+
 
/* John Brawn の名前を Jack Brawn に変更 */
mysql> update staff_register set name = 'Jack Brawn' where name = 'John Brawn';
mysql> select * from staff_register;                 /* レコードの更新を確認 */
+----+------------+-----------------+------------+----------+---------------+
| id | department | section         | name       | phone    | email         |
+----+------------+-----------------+------------+----------+---------------+
|  1 | Technology | Applied Science | Jack Brawn | 74111111 | aaa@gmail.com |   /* Jackに変更された */
+----+------------+-----------------+------------+----------+---------------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* 続けて幾つかレコードを追加してみます */
mysql> insert into staff_register (department, section, name, phone, email) values ('Technology', 'ICT', 'Jacob', 74111112, 'bbb@gmail.com');
mysql> insert into staff_register (department, section, name, phone) values ('Technology', 'ICT Support', 'Jackson', 74111113);
mysql> insert into staff_register (department, section, name, email) values ('Administration', 'Administration', 'Noah', 'ddd@gmail.com');
mysql> insert into staff_register (department, section, name) values ('Administration', 'Finance', 'Lucas');
mysql> insert into staff_register (department, section, name) values ('Administration', 'Learning Resouces Centre', 'Sophia');
mysql> insert into staff_register (department, section, name, email) values ('Administration', 'Maintenance', 'Chloe', 'fff@yahoo.com');
mysql> insert into staff_register (department, section, name, email) values ('Administration', 'Supplies & Contracts', 'George', 'ggg@yahoo.com');
 
mysql> select * from staff_register;                 /* レコードの追加を確認 */
+----+----------------+--------------------------+------------+----------+---------------+
| id | department     | section                  | name       | phone    | email         |
+----+----------------+--------------------------+------------+----------+---------------+
|  1 | Technology     | Applied Science          | Jack Brawn | 74111111 | aaa@gmail.com |
|  2 | Technology     | ICT                      | Jacob      | 74111112 | bbb@gmail.com |
|  3 | Technology     | ICT Support              | Jackson    | 74111113 | NULL          |
|  4 | Administration | Administration           | Noah       |     NULL | ddd@gmail.com |
|  5 | Administration | Finance                  | Lucas      |     NULL | NULL          |
|  6 | Administration | Learning Resouces Centre | Sophia     |     NULL | NULL          |
|  7 | Administration | Maintenance              | Chloe      |     NULL | fff@yahoo.com |
|  8 | Administration | Supplies & Contracts     | George     |     NULL | ggg@yahoo.com |
+----+----------------+--------------------------+------------+----------+---------------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* レコードの削除 */
mysql> delete from staff_register where section = 'Finance';
mysql> select * from staff_register;                 /* レコードの削除を確認 */
+----+----------------+--------------------------+------------+----------+---------------+
| id | department     | section                  | name       | phone    | email         |
+----+----------------+--------------------------+------------+----------+---------------+
|  1 | Technology     | Applied Science          | Jack Brawn | 74111111 | aaa@gmail.com |
|  2 | Technology     | ICT                      | Jacob      | 74111112 | bbb@gmail.com |
|  3 | Technology     | ICT Support              | Jackson    | 74111113 | NULL          |
|  4 | Administration | Administration           | Noah       |     NULL | ddd@gmail.com |
|  6 | Administration | Learning Resouces Centre | Sophia     |     NULL | NULL          |
|  7 | Administration | Maintenance              | Chloe      |     NULL | fff@yahoo.com |
|  8 | Administration | Supplies & Contracts     | George     |     NULL | ggg@yahoo.com |
+----+----------------+--------------------------+------------+----------+---------------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* where句で抽出条件を指定できます */
mysql> select * from staff_register where department = "Administration";
+----+----------------+--------------------------+--------+-------+---------------+
| id | department     | section                  | name   | phone | email         |
+----+----------------+--------------------------+--------+-------+---------------+
|  4 | Administration | Administration           | Noah   |  NULL | ddd@gmail.com |
|  6 | Administration | Learning Resouces Centre | Sophia |  NULL | NULL          |
|  7 | Administration | Maintenance              | Chloe  |  NULL | fff@yahoo.com |
|  8 | Administration | Supplies & Contracts     | George |  NULL | ggg@yahoo.com |
+----+----------------+--------------------------+--------+-------+---------------+
 
/* LIKE演算子とワイルドカード文字「%」を使用して、文字列の部分一致条件を指定することもできます */
mysql> select * from staff_register where email like '%yahoo.com';
+----+----------------+----------------------+--------+-------+---------------+
| id | department     | section              | name   | phone | email         |
+----+----------------+----------------------+--------+-------+---------------+
|  7 | Administration | Maintenance          | Chloe  |  NULL | fff@yahoo.com |
|  8 | Administration | Supplies & Contracts | George |  NULL | ggg@yahoo.com |
+----+----------------+----------------------+--------+-------+---------------+

作業用ユーザでテーブルとデータベースを削除

1
2
3
4
5
6
7
8
mysql> truncate table staff_register;    /* staff_registerテーブル内データ削除 */
mysql> select * from staff_register;     /* データ削除確認 */
mysql> drop table staff_register;        /* staff_registerテーブル削除 */
mysql> show tables;                      /* テーブル削除確認 */
 
mysql> drop database college;            /* collegeDB削除 */
mysql> show databases;                   /* DB削除確認 */
mysql> exit

ユーザ削除

1
2
3
4
5
6
7
$ mysql -u root -p
Enter password:                         /* パスワード入力 */
mysql> revoke all privileges on *.* from test@localhost; /* testユーザから全てのデータベースへのアクセス権限を剥奪 */
mysql> drop user test@localhost;         /* testユーザ削除 */
mysql> select user from mysql.user;      /* testユーザ削除確認 */
mysql> flush privileges;                 /* testユーザの削除をMySQLサーバーへ反映 */
mysql> exit                              /* データベースから抜ける */

参考
MySQLでテーブルを作成する方法
MySQLの操作

WordPressのレコードの文字列置換

HTML上でリンクにtarget=”_blank”を指定することには「セキュリティとパフォーマンスの点で問題がある」と、グーグルのエンジニアが注意している記事を見つけたので対応。
https://webtan.impress.co.jp/e/2020/03/13/35510

1
2
3
4
5
6
7
8
9
10
# target="_blank" を使用して任意のページから別のページへのリンク数
mysql> select post_title from wp_posts where post_content like '%_blank%';
2652 rows in set (0.13 sec)
 
# target="_blank" がついた(信用できるとは限らない外部向け)リンクに rel="noopener" が付いていないリンク数
mysql> select post_title from wp_posts where post_content like '%_blank%' and not post_content like '%noopener%';
896 rows in set (0.27 sec)
 
# 上記のリンクに rel="noopener" を付け加える
mysql> UPDATE wp_posts SET post_content=REPLACE(post_content, 'target="_blank"', 'target="_blank" rel="noopener"') WHERE post_content like '%_blank%' and not post_content like '%noopener%';
[siteorigin_widget class=”AdWidgetItem”][/siteorigin_widget]
[siteorigin_widget class=”WP_Widget_Pages”][/siteorigin_widget]
[siteorigin_widget class=”AdWidgetItem”][/siteorigin_widget]
タイトルとURLをコピーしました