1. ホーム
  2. mysql

Mysql 5.7のインストールと基本的な構文

2022-02-11 17:03:10
<パス

データベース紹介

データベース構造モデル

主なデータベース構造モデルは以下の通りです。

  • 階層型モデル
  • メッシュ構造
  • リレーションシップモデル

リレーションシップモデル。
2次元の関係:行(rows)、列(columns)
データベース管理システム。DBMS (データベース管理システム)
リレーショナル・データベース・マネジメント・システム。RDBMS (リレーショナル・データベース・マネジメント・システム)

RDBMS用語集

一般的なデータベース

  • リレーショナルデータベース
    • マイスル
      • 5.7 (オリジナル開発チームの最終バージョン、無料)
      • 8.0 (オラクル買収後の最初のバージョン、有料)
    • mariadb10.0 (オリジナルのmysql開発チームによる最初のバージョン、無料)
    • オラクル
    • MSSQL
  • nosqlデータベース。
    • mongodb
      • キャッシュデータベース。
        • レディス
        • メモキャッシュ
  • 軽量なデータベース。
    • sqlite

一般的なリレーショナルデータベース管理システム

  • MySQL MySQL、MariaDB、Percona-Server
  • PostgreSQL:略してpgsql
  • オラクル

  • MSSQL

SQLです。構造体問合せ言語

制約:制約、データテーブルに供給されるデータが従うべき制限事項

<テーブル 制約条件名 役割 主キーの制約事項 1つ以上のフィールドの組み合わせで、このテーブルのこの行を一意に識別する必要があるデータが入力されています。
テーブルは1つしか存在できない 例えばIDなどです。 一意の制約条件 このテーブルでこの行を一意に識別する必要があるデータが入力された、1つ以上のフィールドの組み合わせ。Nullは許される。(NULL)です。
には複数のテーブルが存在することができます。 . 外部キー制約 あるテーブルのフィールドに入力できるデータは、別のテーブルの主キーにすでに存在するデータに依存する チェック可能な制約事項 制約条件は、カラム内の値の範囲を制限するために使用されます。

インデックス:テーブルの1つまたは複数のフィールドのデータのコピーを作成し、特定の順序で保存すること。

リレーショナルデータベースの共通構成要素

リレーショナル・データベースの一般的な構成要素は次のとおりです。

  • データベース:データベース
  • テーブル:表
  • インデックス:インデックス
  • ビュー:ビュー
  • ユーザー:ユーザー
  • 特権: 特権
  • プロシージャー:手続き
  • トリガー:トリガー
  • イベントスケジューラ:イベントスケジューラ

SQLステートメント

SQL文には3つの種類があります。

  • DDL:データ定義言語
  • DML データ操作言語
  • DCL:データ制御言語
<テーブル SQL文の種類 対応する操作 DDL CREATE:作成
DROP: 削除
ALTER: 変更 DML INSERT:テーブルにデータを挿入する
DELETE:テーブルからデータを削除する
UPDATE:テーブルのデータを更新する
SELECT: テーブルのデータを問い合わせる DCL GRANT: 権限
REVOKE: 権限を削除する

mysqlのインストールと設定

mysqlのインストール

CentOS8のyumリポジトリにはMysql8しかないので、Mysql5.7をインストールする場合は、以下の設定が必要です。

まず、CentOS8 の Mysql 用のデフォルトの yum リポジトリを閉じます。

[root@localhost ~]# dnf remove @mysql
Warning: failed loading '/etc/yum.repos.d/mssql-server.repo', skipping.
Last metadata expiration check: 2 days, 4:32:54 ago on Apr 26, 2021 17:30:44 CST.
Unable to match profile in argument mysql
Dependencies resolved.
Nothing to do.
Complete!
[root@localhost ~]# dnf module reset mysql && sudo dnf module disable mysql
Warning: failed loading '/etc/yum.repos.d/mssql-server.repo', skipping.
CentOS Stream 8 - AppStream 7.0 kB/s | 4.4 kB 00:00    
CentOS Stream 8 - BaseOS 6.7 kB/s | 3.9 kB 00:00    
CentOS Stream 8 - Extras 2.6 kB/s | 1.5 kB 00:00    
Dependencies resolved.
Nothing to do.
Complete!
Warning: failed loading '/etc/yum.repos.d/mssql-server.repo', skipping.
Last metadata expiration check: 0:00:01 ago on Apr 28, 2021 22:03:46 CST.
Dependencies resolved.
====================================================================
 Package Architecture Version Repository Size
====================================================================
Disabling modules:
 mysql                                                             
Transaction Summary
====================================================================
Is this ok [y/N]: y
Complete!


このディレクトリにはまだ EL8 バージョンの Mysql リポジトリがないので、ここでは代わりに EL7 を使用し、新しいリポジトリファイルを

[root@localhost ~]# vim /etc/yum.repos.d/mysql-community.repo
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch
/
enabled=1
gpgcheck=0

[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$b
asearch/
enabled=1
gpgcheck=0

[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basear
ch/
enabled=1
gpgcheck=0



Mysql バージョン 5.7 のインストールを開始し、一時的にリポジトリを使用します。

[root@localhost ~]# dnf --enablerepo=mysql57-community install mysql-community-server
Warning: failed loading '/etc/yum.repos.d/mssql-server.repo', skipping.
MySQL 5.7 Community Server 942 kB/s | 2.2 MB 00:02    
MySQL Connectors Community 115 kB/s | 107 kB 00:00    
MySQL Tools Community 444 kB/s | 630 kB 00:01    
Dependencies resolved.
====================================================================
 Package Arch Version Repository Size
====================================================================
Installing:
 mysql-community-server x86_64 5.7.34-1.el7 mysql57-community 173 M
Installing dependencies:
 mysql-community-client x86_64 5.7.34-1.el7 mysql57-community 25 M
 mysql-community-common x86_64 5.7.34-1.el7 mysql57-community 310 k
 mysql-community-libs x86_64 5.7.34-1.el7 mysql57-community 2.4 M
 ncurses-compat-libs x86_64 6.1-7.20180224.el8
                                            baseos 331 k
 net-tools x86_64 2.0-0.52.20160912git.el8
                                            baseos 322 k
Transaction Summary
====================================================================
Install 6 Packages

Total download size: 202 M
Installed size: 877 M
Is this ok [y/N]: y
Downloading Packages:
(1/6): net-tools-2.0-0.52.20160912g 716 kB/s | 322 kB 00:00    
(2/6): ncurses-compat-libs-6.1-7.20 724 kB/s | 331 kB 00:00    
(3/6): mysql-community-common-5.7.3 328 kB/s | 310 kB 00:00    
(4/6): mysql-community-libs-5.7.34- 807 kB/s | 2.4 MB 00:02    
(5/6): mysql-community-client-5.7.3 2.2 MB/s | 25 MB 00:11    
(6/6): mysql-community-server-5.7.3 3.2 MB/s | 173 MB 00:54    
--------------------------------------------------------------------
Total 3.6 MB/s | 202 MB 00:56     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing : 1/1 
  Installing : mysql-community-common-5.7.34-1.el7.x86_ 1/6 
  Installing : mysql-community-libs-5.7.34-1.el7.x86_64 2/6 
  Running scriptlet: mysql-community-libs-5.7.34-1.el7.x86_64 2/6 
  Installing : net-tools-2.0-0.52.20160912git.el8.x86_6 3/6 
  Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_6 3/6 
  Installing : ncurses-compat-libs-6.1-7.20180224.el8.x 4/6 
  Installing : mysql-community-client-5.7.34-1.el7.x86_ 5/6 
  Running scriptlet: mysql-community-server-5.7.34-1.el7.x86_ 6/6 
  Installing : mysql-community-server-5.7.34-1.el7.x86_ 6/6 
  Running scriptlet: mysql-community-server-5.7.34-1.el7.x86_ 6/6 
[/usr/lib/tmpfiles.d/mysql.conf:23] Line references path below legacy directory /var/run/, updating /var/run/mysqld → /run/mysqld; please update the tmpfiles.d/ drop-in file accordingly.
  Verifying : ncurses-compat-libs-6.1-7.20180224.el8.x 1/6 
  Verifying : net-tools-2.0-0.52.20160912git.el8.x86_6 2/6 
  Verifying : mysql-community-client-5.7.34-1.el7.x86_ 3/6 
  Verifying : mysql-community-common-5.7.34-1.el7.x86_ 4/6 
  Verifying : mysql-community-libs-5.7.34-1.el7.x86_64 5/6 
  Verifying : mysql-community-server-5.7.34-1.el7.x86_ 6/6 
Installed products updated.
Installed:
  mysql-community-client-5.7.34-1.el7.x86_64                        
  mysql-community-common-5.7.34-1.el7.x86_64                        
  mysql-community-libs-5.7.34-1.el7.x86_64                          
  mysql-community-server-5.7.34-1.el7.x86_64                        
  ncurses-compat-libs-6.1-7.20180224.el8.x86_64                     
  net-tools-2.0-0.52.20160912git.el8.x86_64                         
Complete!


mysqlの設定

インストール完了後、Mysql5.7を起動するようにブート設定する。

[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# systemctl enable mysqld
[root@localhost ~]# systemctl status mysqld
mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled;>
   Active: active (running) since Wed 2021-04-28 22:10:46 CST; 10s >
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
 Main PID: 55422 (mysqld)
    Tasks: 27 (limit: 8756)
   Memory: 301.0M
   CGroup: /system.slice/mysqld.service
           └─55422 /usr/sbin/mysqld --daemonize --pid-file=/var/run>
Apr 28 22:10:43 localhost.localdomain systemd[1]: Starting MySQL S>
April 28 22:10:46 localhost.localdomain systemd[1]: Started MySQL Se>
lines 1-13/13 (END)



mysqlの初期パスワードの取得

[root@localhost ~]# grep 'A temporary password' /var/log/mysqld.log |tail -1
2021-04-28T14:10:44.097144Z 1 [Note] A temporary password is generated for root@localhost: tGeuN79wUX/O


Mysqlのパスワードと設定の変更

[root@localhost ~]# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: 
The existing password for the user account root has expired.

New password: 

Re-enter new password: 
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
The subsequent steps will run with the existing configuration of the plugin.
Using existing password for root.

Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y//Change the password for root user

New password: 

Re-enter new password: 

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y //Confirm using this password?
By default, a MySQL installation has an anonymous user,
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have
This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
You should remove them before moving into a production environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y //Remove anonymous users
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
This ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n // Disallow root login remotely?

 ... ... skipping.
By default, MySQL comes with a database named 'test' that
This is also intended only for testing,
This is also intended only for testing, and should be removed before moving into a production
This is also intended only for testing, and should be removed before moving into a production environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y // Remove test database?
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y //reload privilege tables
Reload privilege tables now?

All done! 


mysqlのプログラム構成

  • クライアント
    • mysql CLI 対話型クライアントアプリケーション
    • mtsql_secure_installation: 安全な初期化、WOWインストール後にこのコマンドを実行することを強く推奨
    • mysqldump: mysqlバックアップツール
    • mysqladmin
  • サーバーサイド
    • mysqld

mysqlツールの使用

// Syntax: mysql [OPTIONS] [database]
//Commonly used OPTIONS.
	-u[USERNAME] //specify username, default is root
	-h[HOST] //specify the server host, default is localhost, recommend using ip address
	-p[PASSWORD] //specify the password of the user
	-P[PORT] //Specify the port the database is listening on
	-V //View the current mysql version in use
	-e //exit after executing sql statements without logging into mysql


mysqlのバージョンを確認する

[root@localhost ~]# mysql -V
mysql Ver 14.14 Distrib 5.7.34, for Linux (x86_64) using EditLine wrapper


ユーザー名とパスワードを指定する

[root@localhost ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor. commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.34 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 


サーバーがリッスンする2つのソケットアドレス

<テーブル ソケットタイプ 説明 IPソケット デフォルトではtcpの3306番ポートでリスニング、リモート通信をサポート ユニックスソックス sockファイル(/tmp/mysql.sock,/var/lib/mysql/mysql.sock)でリスニングしています。
ローカル通信のみサポート
サーバーのアドレスは、localhost、127.0.0.1 のみ使用可能です。

mysqlデータベースの構文

DDL構文

データベースの構文

データベースを見る

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)


データベースの作成

mysql> create database hanao;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql
| mysql |
| performance_schema |
| sys |
--------------------+
5 rows in set (0.00 sec)



データベースの削除

mysql> DROP DATABASE hanao
    -> ;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)


テーブル操作

データベースへのアクセス

mysql> use hanao
Database changed


データテーブルを作成する

mysql> create table student(id int(11) not null auto_increment primary key,name varchar(100) not null,age tinyint(4));
Query OK, 0 rows affected (0.01 sec)

mysql> desc student;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+


データテーブルの削除

mysql> show tables;
+ -----------------+
| Tables_in_hanao |
+-----------------+
| student |
+-----------------+
1 row in set (0.00 sec)

mysql> drop table student;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;

Empty set (0.00 sec)


ユーザーアクション

mysqlのユーザーアカウントは、'USERNAME'@'HOST'のような2つの部分からなり、このUSERNAMEはこのHOSTからしかリモートでログインできないことを意味します。
ここでのHOST('USERNAME'@'HOST')は、このユーザーがmysqlプログラムにリモートで接続できるホストを制限するために使用され、その値は以下のようになります。
ipアドレス、例:192.168.247.1
ワイルドカード

  • %: 任意の長さの文字にマッチし、任意のホストからのログインを許可する設定によく使われます。
  • _: 任意の一文字にマッチ

データベースユーザーを作成する

mysql> create user 'hanao'@'192.168.247.137' identified by 'Ha153624;
Query OK, 0 rows affected (0.00 sec)


新しく作成したアカウントのパスワードでログインする

[root@localhost ~]# mysql -uhanao -pHa153624. -h192.168.247.137
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.7.34 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


データベースユーザーの削除

mysql> drop user 'hanao'@'192.168.247.137';
Query OK, 0 rows affected (0.00 sec)


表示コマンド SHOW

サポートされているすべてのエンコーディングの種類を表示する

mysql> show character set;
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
......


現在のデータベースでサポートされているすべてのストレージエンジンを表示します。

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+----------- -+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+----------- ++
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | NO |

| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | NO
| NO | NO | NO | YES | MyISAM storage engine | NO | NO | NO | NO | CSV
| CSV | YES | CSV storage engine | NO | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | NO | FEDERATED
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | NULL |
+ --------------------+---------+--------------------------------------------------------------

データベースを見る

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql
| mysql |
| performance_schema |
| sys |
+ --------------------+


テーブルの構造を見る

mysql> desc hanao.student;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+


テーブル作成コマンドを表示する

mysql> show create table hanao.student;
+---------+----------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+----------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `age` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1 |
+ ---------+----------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------+


テーブルの状態を表示する

mysql> show table status like 'student'\G
*************************** 1. row ***************************
           Name: student
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 11
 Avg_row_length: 1489
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: 12
    Create_time: 2021-04-29 17:15:26
    Update_time: 2021-04-29 17:21:04
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)

mysql> help create table;
Name: 'CREATE TABLE'
Description:
Syntax:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [partition_options]

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options]
    [partition_options]
    [IGNORE | REPLACE]
    [AS] query_expression


ヘルプを表示する

mysql> insert student(name,age) values('hanao',22),('ha',22);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from student;
+----+-------------+------+
| id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 5 | zhangshan | 26 |
| 6 | zhangshan | 20 |
| 7 | lisi | 50 |
| 8 | chenshuo | 10 |
| 9 | wangwu | 3 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |
| 12 | hanao | 22 |
| 13 | ha | 22 |
+ ----+-------------+------+
13 rows in set (0.00 sec)


DML構文

DML操作には、(挿入)、削除、更新、選択などがあり、これらはすべてテーブル固有の操作である。

挿入構文

mysql> select * from student where age between 5 and 30 order by age desc limit 1,7;
+ ----+-----------+------+
| id | name | age |
+----+-----------+------+
| 5 | zhangshan | 26 |
| 3 | wangqing | 25 |
| 2 | jerry | 23 |
| 12 | hanao | 22 |
| 13 | ha | 22 |
| 1 | tom | 20 |
| 6 | zhangshan | 20 |
----+-----------+------+
7 rows in set (0.00 sec)


セレクトシンタックス

フィールド表現

<テーブル 文字を示す 意味 * すべてのフィールド として フィールドエイリアス

という条件付き判定文

<テーブル 操作の種類 共通演算子 演算子 >、<、>=、<=、=、!
column]と[column]の間
like: あいまい一致
rlike: 正規表現に基づくパターンマッチ
はヌルでない:ヌルでない
がNULLの場合:NULL 条件付きロジック操作 とか、そうでないとか

order by: ソート順、デフォルトは昇順(ASC)

<テーブル ステートメントによる順序 意味 カラム]による順序 フィールドで昇順に並べ替え カラム]で注文する フィールドの降順で並べ替える カラム]の順序で制限2 フィールドの昇順でソートし、最初の2行のみを取得します。 順序:[列] 制限 1,2 昇順にソートするフィールドを追加し、最初の結果を省略して次の2つの結果を取得します。

select query statement //学生テーブルの年齢を5歳から30歳まで逆順で直接問い合わせる、最初の1人は表示されず、7人だけが表示される

mysql> update student set age = 25 where name = 'zhangshan';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0

mysql> select * from student;
+----+-------------+------+
| id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 5 | zhangshan | 25 |
| 6 | zhangshan | 25 |
| 7 | lisi | 50 |
| 8 | chenshuo | 10 |
| 9 | wangwu | 3 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |
| 12 | hanao | 22 |
| 13 | ha | 22 |
+ ----+-------------+------+
13 rows in set (0.00 sec)


アップデートシンタックス

update syntax //student テーブルの shangshan という名前の学生の年齢を 25 に変更します。

mysql> delete from student where name = 'zhangshan' and id = 5;
Query OK, 1 row affected (0.00 sec)

mysql> select * from student;
+ ----+-------------+------+
| id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 6 | zhangshan | 25 |
| 7 | lisi | 50 |
| 8 | chenshuo | 10 |
| 9 | wangwu | 3 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |
| 12 | hanao | 22 |
| 13 | ha | 22 |
+ ----+-------------+------+
12 rows in set (0.00 sec)


削除構文

delete syntax //名前zhangshan、id 5のデータを削除します。

mysql> select * from student;
+ ----+-------------+------+
| id | name | age |
+----+-------------+------+
| 1 | tom | 20 |
| 2 | jerry | 23 |
| 3 | wangqing | 25 |
| 4 | sean | 28 |
| 6 | zhangshan | 25 |
| 7 | lisi | 50 |
| 8 | chenshuo | 10 |
| 9 | wangwu | 3 |
| 10 | qiuyi | 15 |
| 11 | qiuxiaotian | 20 |
| 12 | hanao | 22 |
| 13 | ha | 22 |
+ ----+-------------+------+
12 rows in set (0.00 sec)

mysql> truncate student;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from student;
Empty set (0.00 sec)


切り捨て構文

truncateとdeleteの違い。

<テーブル ステートメントタイプ 特徴 削除 テーブルを削除する場合、内容のみを削除し、テーブルの構造は維持されます。
delete文は一度に1行ずつ削除します。
そして、削除された各行に対してトランザクションログにエントリを記録します。
トランザクションログをロールバックすることにより、データを復元することができる
非常に大きなスペースを必要とする 切り捨てる テーブルからすべてのデータを削除し、復元できないようにします。
テーブルの構造、制約、インデックスなどは変更されず、新たに追加された行数の値は初期値にリセットされます
deleteよりも実行速度が速く、システムリソースやトランザクションログリソースの使用量も少なくて済む
テーブルのデータを保存するためのデータページを解放してデータを削除します。
トランザクションログにのみページの解放を記録
外部キー制約によって参照されるテーブルでは、truncate table を使用してデータを削除することができない
インデックス付きビューを持つテーブルには使用できない
mysql> grant all on *. * to 'root'@'%' identified by 'Ha153624.';
Query OK, 0 rows affected, 1 warning (0.00 sec)


DCL構文

オーソライズグラントの作成

パーミッションの種類

<テーブル パーミッションの種類 意味 すべて すべての権限 選択 コンテンツ閲覧の許可 挿入 コンテンツ挿入のためのパーミッション 更新 コンテンツを変更するための権限 削除 コンテンツ削除の許可

操作するオブジェクトを指定する

<テーブル 方法を示す 意味

* .

全ライブラリの全テーブル データベース 指定したライブラリの全テーブル データベース.テーブル 指定されたライブラリの指定されたテーブル

rootユーザーに全拠点の全データベースへのリモートログイン権限を与え、ログインパスワードを設定する。

mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *. * TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)


現在のユーザーの権限情報を表示する

mysql> show grants for 'root'@'%';
+-------------------------------------------+
| Grants for root@% |
+-------------------------------------------+
| GRANT ALL PRIVILEGES ON *. * TO 'root'@'%' |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> revoke all on *. * from 'root'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


指定したユーザーの権限情報を表示する

mysql> show grants for 'root'@'%';
+-------------------------------------------+
| Grants for root@% |
+-------------------------------------------+
| GRANT ALL PRIVILEGES ON *. * TO 'root'@'%' |
+-------------------------------------------+
1 row in set (0.00 sec)


認証解除 REVOKE

mysql> revoke all on *. * from 'root'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


mysql サービスプロセスは、起動時に mysql ライブラリからすべての認証テーブルをメモリに読み込みます。

  • 許可や取り消しなどの実行権限操作はテーブルに格納され、mysqlサービスプロセスが自動的に権限テーブルを再読み込みしてメモリに更新します
  • 特権テーブルを適時に再読み込みしない、あるいはできないコマンドについては、フラッシュ特権コマンドを使用して、mysql サービスプロセスに特権テーブルを手動で再読み込みさせるか、mysql サービスを再起動します(本番環境では通常サービスを再起動することはありません)。