MySQL数据库的创建选择与删除命令详解

作者:袖梨 2022-11-14

创建数据库:

MySQL的任何事情都是以数据库开始的,数据库我们可以理解为"书架",表则可以理解为"书架上的书",而表中的数据则可以理解为"书中的内容"。也就是说数据库是容器。当我们输入完用户名密码连接到MySQL后,可以使用CREATE DATABASE命令来创建一个新的MySQL数据库。例如:

代码如下 复制代码


create database xiaoxiaozi;
/*
Query OK, 1 row affected (0.06 sec)
*/


这样就创建了一个数据库,数据库名为"xiaoxiaozi"。在文件系统中,MySQL的数据存储区将以目录方式表示MySQL数据库。也就是说其实数据库在文件系统中的表现为"文件夹"。所以说我们在给数据库命名的时候一定要小心,再小心。其命名规范与操作系统的红豆目录名字的规范相一致。

例如:在Windows系统中不允许文件和目录名中有",/,:,*,?,<,>,|"这些字符,在MySQL数据库名字中这些字母会被自动删除。且数据库的名字不能太长(不能超过64个字符),一般除非故意搞破坏,没有人建这么长名字的数据库,也不好记不是。且包含特殊字符的名字或者是全部由数字或保留字组成的名字必须用反引号包起来。

代码如下 复制代码


create database xiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozi;
/*
数据库名过长
ERROR 1102 (42000): Incorrect database name 'xiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozi'
*/

create database 123456;
/*
数据库名为纯数字,需要用反引号包起来
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123456' at line 1
*/

create database `123456`;
/*
正确创建数据库名,用反引号将纯数字包起来
Query OK, 1 row affected (0.00 sec)
*/


且数据库的名字不能相同,如果创建一个库名与现有数据库名重复,系统会提示该数据库已经存在,创建失败。

代码如下 复制代码


create database `123456`;
/*
第一次创建,创建成功
Query OK, 1 row affected (0.01 sec)
*/
create database `123456`;
/*
第二次创建,创建失败
ERROR 1007 (HY000): Can't create database '123456'; database exists
*/


那我们创建数据库的时候,怎么样避免库名已经存在这个错误信息呢?有两种方式:

•在创建数据库之前先用 show databases;语句查询现有数据库名都有哪些,避免建立失败。
•在创建数据库时,使用if not exists语句指明,只有当数据库不存在时才创建。

代码如下 复制代码

/*if not exists*/
create database `123456`;
/*
第一次创建数据库,成功
Query OK, 1 row affected (0.00 sec)
*/
create database if not exists `123456`;
/*
如果数据库不存在才创建,执行SQL成功,有一个警告
Query OK, 0 rows affected, 1 warning (0.00 sec)
*/

/*show databases示例*/
show databases;
/*
+------------+
| Database |
+------------+
| 123456 |
| log |
| manager |
| mysql |
| qhcms |
| test |
| xiaoxiaozi |
+------------+
7 rows in set (0.00 sec)
*/


选择需要的数据库:

使用USE语句将会选择一个数据库,使它成为所有事务的当前数据库。

代码如下 复制代码


use xiaoxiaozi;
/*
提示数据库已改变
Database changed
*/


同时,我们也可以在查询表的时候再告诉MySQL我们这些表是哪些数据库里的表。

代码如下 复制代码
select Host, Db, User From mysql.db;
/*
指明,在mysql数据库的db表中查询Host,Db,User字段
+----------------------------+---------+-------+
| Host | Db | User |
+----------------------------+---------+-------+
| % | test | |
| % | test_% | |
| 192.168.0.133 | qhcms | cms |
| www.111com.net | qhcms | cms |
| localhost | log | log |
| localhost | manager | mambo |
| localhost | qhcms | cms |
+----------------------------+---------+-------+
7 rows in set (0.05 sec)
*/


上面这条语句,与如下两条语句组合的作用是相同的

代码如下 复制代码


use mysql;
/*
选择mysql数据库
Database changed
*/
select Host, Db, User From db;
/*
在db表里面选择Host, Db, User字段
+----------------------------+---------+-------+
| Host | Db | User |
+----------------------------+---------+-------+
| % | test | |
| % | test_% | |
| 192.168.0.133 | qhcms | cms |
| www.111com.net | qhcms | cms |
| localhost | log | log |
| localhost | manager | mambo |
| localhost | qhcms | cms |
+----------------------------+---------+-------+
7 rows in set (0.00 sec)
*/


删除数据库:

这是一个危险的动作,如果大家要使用的话,一定要先确认这个数据库是自己的,并且是自己真的想删的,因为一旦删除数据库,是连其内部的表数据一起删除的。一旦删除就真的没了,所以一定要小心,再小心。

其实删除数据库的命令很是简单 drop database database_name; 不过要删一个数据库,如果其不存在的话,系统是会报错的,这个时候我们可以借助if exists来判断一下数据库是否存在。

代码如下 复制代码


drop database xiaoxiaozi;
/*
第一次删除xiaoxiaozi数据库
Query OK, 0 rows affected (0.00 sec)
*/
drop database xiaoxiaozi;
/*
第二次删除失败,因为此时该数据库已经不存在了
ERROR 1008 (HY000): Can't drop database 'xiaoxiaozi'; database doesn't exist
*/
drop database if exists xiaoxiaozi;
/*
删除的时候先判断存不存在,如果不存在执行删除
Query OK, 0 rows affected, 1 warning (0.00 sec)
*/

相关文章

精彩推荐