MYSQL 数据库的基本操作

举报
CoderX 发表于 2022/04/18 15:25:11 2022/04/18
【摘要】 创建数据库 在 MySQL中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下: CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>] [ ]中的内容是可选的。语法说明如下:<数据库名>:创建数据库的名称。MySQL 的数据...

创建数据库

在 MySQL中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下:

 CREATE DATABASE [IF NOT EXISTS] <数据库名>
 [[DEFAULT] CHARACTER SET <字符集名>] 
 [[DEFAULT] COLLATE <校对规则名>]

[ ]中的内容是可选的。语法说明如下:

  • <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。

  • IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。

  • [DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。

  • [DEFAULT] COLLATE:指定字符集的默认校对规则。

  • MySQL 不允许在同一系统下创建两个相同名称的数据库 ,加上IF NOT EXISTS校验数据库名称是否已经存在,不存在才会创建

MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。后面我们会单独讲解 MySQL 的字符集和校对规则。

示例1:最简单的创建 MySQL 数据库的语句

在 MySQL 中创建一个名为 test_db 的数据库。在 MySQL 命令行客户端输入 SQL 语句CREATE DATABASE IF NOT EXISTS test_db;即可创建一个数据库,输入的 SQL 语句与执行结果如下。

 mysql> CREATE DATABASE IF NOT EXISTS test_db;
 Query OK, 1 row affected (0.12 sec);

如果不写IF NOT EXISTS且已经存在与要创建的相同库名时,会报出一下错误:

 ERROR 1007 (HY000): Can't create database 'test_db'; database exists


示例2:创建 MySQL 数据库时指定字符集和校对规则

使用 MySQL 命令行工具创建一个测试数据库,命名为 test_db,指定其默认字符集为 utf8,默认校对规则为 utf8_chinese_ci(简体中文,不区分大小写),输入的 SQL 语句与执行结果如下所示:

不指定默认字符集可能会出现存储的中文内容出现乱码。

 mysql> CREATE DATABASE IF NOT EXISTS test_db
     -> DEFAULT CHARACTER SET utf8
     -> DEFAULT COLLATE utf8_chinese_ci;
 Query OK, 1 row affected (0.03 sec)

创建后可以使用SHOW CREATE DATEBASE<数据库名>来查看数据库的声明定义 发现该数据库的指定字符集为 utf8,运行结果如下所示:

 mysql> SHOW CREATE DATABASE test_db;
 +--------------+-----------------------------------------------------+
 | Database     | Create Database                                     |
 +--------------+-----------------------------------------------------+
 | test_db | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8 */ |
 +--------------+-----------------------------------------------------+
 1 row in set (0.00 sec)


查看数据库

在 MySQL 中,可使用 SHOW DATABASES 语句来查看或显示当前用户权限范围以内的数据库。查看数据库的语法格式为:

 SHOW DATABASES [LIKE '数据库名'];
 # LIKE从句是可选项,用于匹配显示指定的数据库。LIKE从句可以部分匹配或完全匹配。
 # 数据库名由单引号‘’包围
 ​
 #like用法:
 #1. 搭配 % 使用:%代表一个或多个字符的通配符
 #2. 搭配 _ 使用:_白标一个字符的通配符

示例1:查看所有数据库

列出当前用户可查看的所有数据库:

 mysql> SHOW DATABASES;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | mysql              |
 | performance_schema |
 | sakila             |
 | sys                |
 | world              |
 +--------------------+
 6 row in set (0.22 sec)

可以发现,在上面的列表中有 6 个数据库,它们都是安装 MySQL 时系统自动创建的,其各自功能如下:

  • information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息等。

  • mysql:MySQL 的核心数据库,类似于 SQL Server 中的 master 表,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。常用的比如在 mysql 数据库的 user 表中修改 root 用户密码。

  • performance_schema:主要用于收集数据库服务器性能参数。

  • sakila:MySQL 提供的样例数据库,该数据库共有 16 张表,这些数据表都是比较常见的,在设计数据库时,可以参照这些样例数据表来快速完成所需的数据表。

  • sys:MySQL 5.7 安装完成后会多一个 sys 数据库。sys 数据库主要提供了一些视图,数据都来自于 performation_schema,主要是让开发者和使用者更方便地查看性能问题。

  • world:world 数据库是 MySQL 自动创建的数据库,该数据库中只包括 3 张数据表,分别保存城市,国家和国家使用的语言等内容。

示例2:LIKE匹配数据库

首先创建两个数据库

 CREATE DATABASE IF NOT EXIST test_db;
 CREATE DATABASE IF NOT EXIST db_test;
 CREATE DATABASE IF NOT EXIST db_test_db;

再使用含有LIKE从句的查询

 #与 test_db 完全匹配的数据库
 mysql> SHOW DATABASES LIKE 'test_db';
 +--------------------+
 | Database (test_db) |
 +--------------------+
 | test_db            |
 +--------------------+
 1 row in set (0.03 sec)
 ​
 #名字包含test的数据库
 mysql> SHOW DATABASES LIKE '%test%';
 +--------------------+
 | Database (%test%)  |
 +--------------------+
 | db_test            |
 +--------------------+
 | db_test_db         |
 +--------------------+
 | test_db            |
 +--------------------+
 3 row in set (0.03 sec)



修改数据库

MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:

 ALTER DATABASE [数据库名] { 
 [ DEFAULT ] CHARACTER SET <字符集名> |
 [ DEFAULT ] COLLATE <校对规则名>}
  • ALTER DATABASE 用于更改数据库的全局特性。

  • 使用 ALTER DATABASE 需要获得数据库 ALTER 权限。

  • 数据库名称可以忽略,此时语句对应于默认数据库。

  • CHARACTER SET 子句用于更改默认的数据库字符集。

示例:修改数据库的字符集和校验规则

查看 test_db 数据库的定义声明的执行结果如下所示:

 mysql> SHOW CREATE DATABASE test_db;
 +----------+--------------------------------------------------------+
 | Database | Create Database                                        |
 +----------+--------------------------------------------------------+
 | test_db  | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8 */|
 +----------+--------------------------------------------------------+
 1 row in set (0.05 sec)

使用命令行工具将数据库 test_db 的指定字符集修改为 gbk,默认校对规则修改为 gbk_chinese_ci,输入 SQL 语句与执行结果如下所示:

 mysql> ALTER DATABASE test_db
     -> DEFAULT CHARACTER SET gbk
     -> DEFAULT COLLATE gbk_chinese_ci;
 mysql> SHOW CREATE DATABASE test_db;
 +----------+--------------------------------------------------------+
 | Database | ALTER Database                                        |
 +----------+--------------------------------------------------------+
 | test_db  | ALTER DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET gbk */|
 +----------+--------------------------------------------------------+
 1 row in set (0.00 sec)


删除数据库

在MySQL已创建的数据库时,可以使用 DROP DATABASE 语句。其语法格式为:

 DROP DATABASE [ IF EXISTS ] <数据库名>
  • <数据库名>:指定要删除的数据库名。

  • IF EXISTS:用于防止当数据库不存在时发生错误。

  • DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。

注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。 

示例:创建测试数据库并删除

 # 创建测试数据库test_db_del
 mysql> CREATE DATABASE test_db_del;
 Query OK, 1 row affected (0.08 sec)
 #查看全部数据库
 mysql> SHOW DATABASES;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | mysql              |
 | performance_schema |
 | sakila             |
 | sys                |
 | test_db            |
 | test_db_char       |
 | test_db_del        |#<---
 | world              |
 +--------------------+
 9 rows in set (0.00 sec)
 #删除数据库
 mysql> DROP DATABASE test_db_del;
 Query OK, 0 rows affected (0.57 sec)
 #删除后查看数据库是否还存在
 mysql> SHOW DATABASES;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | mysql              |
 | performance_schema |
 | sakila             |
 | sys                |
 | test_db            |
 | test_db_char       |
 | world              |
 +--------------------+
 8 rows in set (0.00 sec) 
 ​
 #删除后,在执行相同命令,系统会报错
 mysql> DROP DATABASE test_db_del;
 ERROR 1008 (HY000): Can't drop database 'test_db_del'; database doesn't exist
 #如果是用IF EXISTS可以防止报错
 mysql> DROP DATABASE IF EXISTS test_db_del;
 Query OK, 0 rows affected, 1 warning (0.00 sec)

使用 DROP DATABASE 命令时要非常谨慎,在执行该命令后,MySQL 不会给出任何提示确认信息。DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。因此最好在删除数据库之前先将数据库进行备份。 

选择数据库

在MySQL 中就有很多系统自带的数据库,那么在操作数据库之前就必须要确定是哪一个数据库。 USE 语句用来完成一个数据库到另一个数据库的跳转。

当用 CREATE DATABASE 语句创建数据库之后,该数据库不会自动成为当前数据库,需要用 USE 来指定当前数据库。其语法格式为

 USE <数据库名>

该语句可以通知 MySQL 把<数据库名>所指示的数据库作为当前数据库。该数据库保持为默认数据库,直到语段的结尾,或者直到遇见一个不同的 USE 语句。 只有使用 USE 语句来指定某个数据库作为当前数据库之后,才能对该数据库及其存储的数据对象执行操作。

示例: 切换选择数据库

使用命令行工具将数据库 test_db 设置为默认数据库后,切换test1_db为默认数据库。输入的 SQL 语句与执行结果如下所示:

 mysql> USE test_db;
 Database changed
 #此时默认的数据库为test_db,接下来做出的操作是针对于此数据库
 mysql> USE test1_db;
 Database changed
 #此时默认的数据库为test_db,接下来做出的操作是针对于此数据库
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。