数据库是专门存储数据对象的容器,这里的数据对象包括表、视图、触发器、存储过程等,其中表是最基本的数据对象。
创建数据库
在 MySQL 数据库中存储数据对象之前,先要创建好数据库。
语法:
create database [if not exists]
[[default] character set ] [[default] collate ];:数据库名称不可与SQL关键字相同,同一个数据库管理系统中数据库名称不可重复。
if not exists:在创建数据库之前进行判断,只有该数据库不存在时才能执行创建的操作。此选项可以用来避免数据库已经存在而重复创建的错误。
[default] character set :指定数据库的默认字符集。
[default] collate :指定字符集的默认校对规则。
字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式,解决排序和字符分组的问题。
字符集和校对规则是一对多的关系,每个字符集至少对应一个校对规则,MySQL 支持 39 种字符集的将近 200 种校对规则。
示例1:创建一个名为test的数据库
mysql> create database test;
示例2:避免重复创建的错误
mysql> create database if not exists test;
示例3:指定字符集和校对规则
mysql> create database if not exists test
-> default character set utf8
-> default collate utf8_general_ci;
为防止字符乱码的情况,MySQL 有时需要在创建数据库时明确指定字符集;在中国大陆地区,常用的字符集有 utf8 和 gbk。utf8 能够存储全球的所有字符,在任何国家都可以使用,默认的校对规则为 utf8_general_ci。
gbk 只能存储汉语涉及到的字符,不具有全球通用性,默认的校对规则为 gbk_chinese_ci。
查看数据库
在 MySQL 中,可查看当前用户权限范围以内的数据库。
语法:
show databases [like '数据库名'];like 子句是可选项,用于匹配指定的数据库名称,可以模糊匹配,也可以精确匹配。
示例1:查看当前用户权限内的所有数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| test |
| test1 |
| test2 |
| world |
+--------------------+
示例2:使用like子句查看包含’test’的所有数据库
mysql> show databases like '%test%';
+-------------------+
| Database (%test%) |
+-------------------+
| test |
| test1 |
| test2 |
+-------------------+
示例3:查看数据库test的定义声明
mysql> show create database test;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
修改数据库
创建好数据库也可以修改字符集和校对规则。
语法:
ALTER DATABASE [数据库名]
[[ DEFAULT ] CHARACTER SET ] [[ DEFAULT ] COLLATE ]数据库名称可以忽略,此时语句对应于默认数据库。
示例:修改test数据库的字符集和校对规则
mysql> alter database test
-> default character set gbk
-> default collate gbk_chinese_ci;
选择数据库
在 MySQL 中,use 语句用来完成一个数据库到另一个数据库的跳转。创建数据库之后,该数据库不会自动成为当前数据库,需要用 USE 来指定当前数据库,才能对该数据库及其存储的数据对象执行操作。
语法:
use ;
示例:将test指定为当前数据库
use test;
删除数据库
在 MySQL 中,删除数据库的同时会删除数据库中存储的所有对象和数据,因此需谨慎使用。
语法:
drop database [if exists] ;if exists:防止当数据库不存在时发生错误。
MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。
示例1:删除test数据库
mysql> drop database test;
示例2:避免数据库不存在的错误
mysql> drop database if exists test;