创建数据库有以下三种方式:
CREATE DATABASE 数据库名;
创建的此数据库使用的是默认字符集。
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
此方式显式地指明了要创建的数据库的字符集。
举个例子:
我要创建一个字符集为 gbk
的数据库,名称为 mytest2
。如下代码所示:
CREATE DATABASE mytest2 CHARACTER SET 'gbk';
创建成功后,我们使用下列语句查看该数据库的字符集:
SHOW CREATE DATABASE mytest2;
输出:
可以看到数据库 mytest2
的字符集为 gbk
。
CREATE DATABASE IF NOT EXISTS 数据库名;
如果MySQL中已经存在相关的数据库,则会忽略创建语句,不再创建数据库。
方式3与方式2可以结合使用。
因为,假设已经存在了一个名为 mytest2
的数据库,此时如果再创建一个同名的数据库,MySQL就会报错,使用方式3可以在避免报错的同时,保证该数据库一定被创建。注意,执行之后并不会覆盖已经存在的数据库。
举个例子:
创建一个名为 mytest2
(已经存在) ,字符集为 utf8
的数据库:
CREATE DATABASE IF NOT EXISTS mytest2 CHARACTER SET 'utf8';
执行完毕后,再通过下列语句查看数据库 mytest2
的字符集:
SHOW CREATE DATABASE mytest2;
输出:
可以看到,数据库 mytest2
并没有被覆盖为字符集为 utf8
的新数据库,而是保持原来字符集为 gbk
的旧数据库。
1.查看当前连接中的有哪些数据库
SHOW DATABASES;
输出:
2.选定要使用的数据库
USE mytest2;
在可视化软件如 SQLyog 中可以看到已经切换为 mytest2
数据库:
3.查看当前数据库下都有哪些表
SHOW TABLES;
输出:
4.查看当前使用的数据库
如果你不清楚当前自己正在使用的是哪个数据库,可以通过下列语句来查询:
SELECT DATABASE() FROM DUAL;
输出:
5.查看其他数据库下都有哪些表
假设你当前在 mytest2
数据库,你想不切换数据库的前提下查看数据库 atguigudb
下都有那些表,可以使用下列语句:
SHOW TABLES FROM atguigudb;
输出:
在实际开发中,我们并不会对一个使用了很久的数据库进行修改操作。因为里面已经存储了大量的数据,贸然修改是一个既危险又昂贵的举动。
1.修改数据库的字符集
修改数据库的场景,更多是刚创建好新的数据库后,发现字符集设置错了,去进行修改。
举个栗子:
把字符集为 gbk
的数据库 mytest2
的字符集修改为 utf8
。
ALTER DATABASE mytest2 CHARACTER SET 'utf8';
执行完毕后执行下列语句查看 mytest2
的字符集:
SHOW CREATE DATABASE mytest2;
输出:
可以看到字符集已经从原来的 gbk
修改为 utf8
了。
2.修改数据库的名称
【注意】
DATABASE是不能改名的。一些可视化工具虽然可以改名,但是它底层是先新建另一个数据库,再把所有表复制到新库,再删除旧库来实现的。
删除数据库是一个非常严重的行为,一定要慎之又慎。因为MySQL数据库一般是没有回滚操作的,删掉了就再也无法找回来了。所以在企业中都会对一般的开发者设置权限,普通员工是没有权限删除数据库的。
提一句,删除数据库是构成危害信息安全罪的,是要承担刑事责任的。网上说的 “删库跑路” 是一句玩笑话,切勿当真。
删除数据库有两种方式:
DROP DATABASE mytest2;
DROP DATABASE IF EXISTS mytest2;