MySQL数据库
在SQL语言中,数据库相当于文件夹。
1.查看数据库
- 查看所有数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test01 |
+--------------------+
5 rows in set (0.16 sec)
- 查看数据库定义
mysql> show create database test01;
+----------+--------------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------------+
| test01 | CREATE DATABASE `test01` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)
- 查看正在使用的数据库
mysql> use test01;
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() |
+------------+
| test01 |
+------------+
1 row in set (0.00 sec)
2.创建数据库
- 释义
1.<数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。
2.IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
3.[DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。
4.[DEFAULT] COLLATE:指定字符集的默认校对规则。
- 格式
CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>]
[[DEFAULT] COLLATE <校对规则名>];
- 案例
mysql> CREATE DATABASE IF NOT EXISTS world CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test01 |
| world |
+--------------------+
6 rows in set (0.00 sec)
3.修改数据库
在 MySQL 数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 db.opt 文件中。
注:字符集和校验规则是存储数据库的一种方式。
在 MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。
修改数据库的语法格式为:
ALTER DATABASE [数据库名] {
[ DEFAULT ] CHARACTER SET <字符集名> |
[ DEFAULT ] COLLATE <校对规则名>}
#语法说明如下:
1.ALTER DATABASE 用于更改数据库的全局特性。
2.使用 ALTER DATABASE 需要获得数据库 ALTER 权限。
3.数据库名称可以忽略,此时语句对应于默认数据库(最新指定数据库)。
4.CHARACTER SET 子句用于更改默认的数据库字符集。
- 案例
mysql> show create database world;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| world | CREATE DATABASE `world` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> ALTER DATABASE world
-> CHARACTER SET utf8mb4
-> COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> show create database world;
+----------+-------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------+
| world | CREATE DATABASE `world` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
4.指定数据库
在 MySQL 中就有很多系统自带的数据库,那么在操作数据库之前就必须要确定是哪一个数据库。在 MySQL 中,USE 语句用来完成一个数据库到另一个数据库的跳转。
当用 CREATE DATABASE 语句创建数据库之后,该数据库不会自动成为当前数据库,需要用 USE 来指定当前数据库。其语法格式为:
USE [数据库名称];
#注:该语句可以通知 MySQL 把<数据库名>所指示的数据库作为当前数据库。该数据库保持为默认数据库,直到语段的结尾,或者直到遇见一个不同的 USE 语句。只有使用 USE 语句来指定某个数据库作为当前数据库之后,才能对该数据库及其存储的数据对象执行操作。
- 案例
mysql> use test01;
Database changed
5.删除数据库
当数据库不再使用时应该将其删除,以确保数据库存储空间中存放的是有效数据。删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。
在 MySQL 中,当需要删除已创建的数据库时,可以使用 DROP DATABASE 语句。
其语法格式为:
DROP DATABASE [ IF EXISTS ] <数据库名>
#语法说明如下:
1.<数据库名>:指定要删除的数据库名。
2.IF EXISTS:用于防止当数据库不存在时发生错误。
3.DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。
- 案例
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test01 |
| world |
+--------------------+
6 rows in set (0.00 sec)
mysql> drop database world;
Query OK, 0 rows affected (0.35 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test01 |
+--------------------+
5 rows in set (0.00 sec)
注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。
6.库外操作
库外建库
root@db02 ~]# mysqladmin -uroot -p create linux
Enter password:
[root@db02 ~]# mysql -uroot -p
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| database |
| linux |
| mysql |
| performance_schema |
| sys |
| test01 |
| world |
+--------------------+
8 rows in set (0.00 sec)
库外删库
[root@db02 ~]# mysqladmin -uroot -p drop linux
Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the 'linux' database [y/N] y
Database "linux" droppe
刷新授权表
[root@db02 ~]# mysqladmin -uroot -p reload
Enter password:
刷新binlog
#查看binlog信息 需要开启bin-log
[root@db02 ~]# cat /etc/my.cnf
[mysqld]
#添加以下内容
server_id=1
log_bin=mysql-bin
[root@db02 ~]# mysql -uroot -p -e "show master status"
Enter password:
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
#刷新binlog
[root@db02 ~]# mysqladmin -uroot -p flush-logs
Enter password:
#再次查看
[root@db02 ~]# mysql -uroot -p -e "show master status"
Enter password:
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
7.数据库注释
1)单行注释可以使用#注释符,#注释符后直接加注释内容。
格式如下:
#注释内容
单行注释使用注释符#的示例如下:
#从结果中删除重复行
SELECT DISTINCT product_id, purchase_price FROM Product;
2)单行注释可以使用--注释符,--注释符后需要加一个空格,注释才能生效。
格式如下:
-- 注释内容
单行注释使用注释符--的示例如下:
-- 从结果中删除重复行
SELECT DISTINCT product_id, purchase_price FROM Product;
#和--的区别就是:#后面直接加注释内容,而--的第 2 个破折号后需要跟一个空格符在加注释内容。
3)MySQL 多行注释
多行注释使用/ /注释符。/用于注释内容的开头,*/用于注释内容的结尾。
多行注释格式如下:*
/*
第一行注释内容
第二行注释内容
*/