データベース---mysql(02)--データベース操作

MYSQL

1. mysql にログイン --- mysql コマンドを使用してデータベースにログインします

構文: mysql -u ユーザー名 -p パスワード -h 接続されているデータベースサーバーの IP [-D] データベース名 -P ポート

# 登录本地的mysql
[root@localhost ~]# mysql -u root -p
Enter password:
mysql> select version(); -- 获取当前版本信息
+-----------+
| version() |
+-----------+
| 8.0.33    |
+-----------+
1 row in set (0.00 sec)

mysql> select database(); -- 查询当前数据库名
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)

mysql> use sys; -- 使用sys数据库

Database changed
mysql> select user(); -- 返回当前用户名和主机名的组合
+-----------------+
| user()          |
+-----------------+
| root@localhost  |
+-----------------+
1 row in set (0.00 sec)

mysql> select current_user(); -- 获取当前用户身份
+-----------------------------------+
| current_user()                    |
+-----------------------------------+
| skip-grants user@skip-grants host |
+-----------------------------------+
1 row in set (0.00 sec)

2. SQL ステートメントの基本

(1 はじめに:

SQL: 構造化照会言語 (Structured Query Language)。リレーショナル データベースでデータ操作、データ取得、データ保守を実行するための標準言語です。

<1> 機能

  • データベースの構造を変更する
  • システムのセキュリティ設定を変更する
  • データベースまたはテーブルに対するユーザー権限を増やす
  • データベースから必要な情報を取得する
  • データベース内の情報を更新する

<2>分類

SQL ステートメントは主に次のカテゴリに分類できます。

DDL (データ定義言語): データベース オブジェクト (ライブラリ、テーブル、列、インデックス) に対する操作を定義するデータ定義言語。作成、削除、変更、名前変更、切り捨てなど。

DML (データ操作言語): データベース レコードに対する操作を定義するデータ操作言語。挿入、削除、更新など。

DQL (データクエリ言語) データクエリ言語: SELECT ステートメント。

DCL (データ制御言語): データベース、テーブル、フィールド、ユーザーのアクセス権とセキュリティ レベルを定義するデータ制御言語。許可、取り消しなど

TCL (トランザクション制御): トランザクション制御。コミット、ロールバック、セーブポイントなど。

注: ヘルプを使用すると、これらのステートメントのヘルプ情報を表示できます。

<3>仕様書の書き方

  • データベース システムでは、SQL ステートメントでは大文字と小文字が区別されません (大文字を推奨)。
  • ただし、文字列定数では大文字と小文字が区別されます。
  • SQL ステートメントは 1 行以上で記述し、「;」で終わることができます。
  • キーワードは複数行にまたがったり、省略したりすることはできません。
  • スペースとインデントを使用してステートメントを読みやすくします。

<4> コメント

[1]一行コメント:「--」

mysql> -- select user,host from mysql.user;
mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

mysql> select user,host from mysql.user where user='root'; -- 获取user字段为root的列
+------+-----------+
| user | host      |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.01 sec)

mysql> select user,host from mysql.user -- where user='root';
    -> ;
-- mysql.user后面的都被注释了,所以在下一行得添加;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

[2]複数行コメント: /* 複数行コメント内容 */

mysql> select user,host from mysql.user /*
   /*> 12345678u
   /*> sfgwrhrdhnt */
    -> ;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

(2) データベースの操作

<1>ビュー

文法:SHOW DATABASES [LIKE wild];

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

mysql> show databases like 'mysql';
+------------------+
| Database (mysql) |
+------------------+
| mysql            |
+------------------+
1 row in set (0.01 sec)

-- % : 任意0个或多个任意字符
-- _ : 任意单个字符
mysql> show databases like '__s%';
+-----------------+
| Database (__s%) |
+-----------------+
| mysql           |
| sys             |
+-----------------+
2 rows in set (0.00 sec)

<2> 作成:

文法:CREATE DATABASE [IF NOT EXISTS] 数据库名;

mysql> create database mysql; -- mysql数据库存在,所以创建失败
ERROR 3552 (HY000): Access to system schema 'mysql' is rejected.
mysql> create database student;
Query OK, 1 row affected (0.00 sec)

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

mysql> show create database student; -- 查看创建数据库的流程
+----------+----------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                    |
+----------+----------------------------------------------------------------------------------------------------+
| student  | CREATE DATABASE `student` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

<3> 削除:

文法:DROP DATABASE [IF EXISTS]数据库名;

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

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

<4>スイッチ:

文法:USE 数据库名;

mysql> use mysql; 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select database(); -- 查看当前使用的数据库
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)

-- 设置提示符显示当前使用的数据库名称
[root@localhost ~]# vim /etc/my.cnf
[mysql]
prompt=mysql8.0 [\\d]>
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# mysql -u root -p
Enter password:

mysql8.0 [(none)]>use mysql;
Database changed
mysql8.0 [mysql]>use sys; -- 已显示当前使用的数据库名
Database changed
mysql8.0 [sys]> -- 数据库切换,显示依旧切换

<5> システムコマンドを実行します。

構文:システムコマンド

mysql8.0 [sys]>system ls;
20230605         cron_task    Desktop    Downloads  initial-setup-ks.cfg  mysql80-community-release-el8-4.noarch.rpm  Public     Videos
anaconda-ks.cfg  dead.letter  Documents  echo       Music                 Pictures                                    Templates
mysql8.0 [sys]>system ls -l;
total 32
drwxr-xr-x. 2 root root    21 Jun  5 09:14 20230605
-rw-------. 1 root root  1488 Oct 21  2022 anaconda-ks.cfg
-rw-r--r--. 1 root root    12 Jun  5 10:34 cron_task
...

おすすめ

転載: blog.csdn.net/weixin_62443409/article/details/131679480
おすすめ