数据库(Database)由一组相关的对象组成,主要包括表、索引、视图、存储过程等。为了方便对象的管理和访问,数据库通常使用模式(Schema)来组织这些对象;模式是一个逻辑单元,或者一个存储对象的容器;它们之间的关系如下图所示:
一个数据库由多个模式组成,一个模式由许多对象组成;在不同模式中可以创建同名的对象。
MySQL 中的模式和数据库是相同的概念,一个数据库对应一个同名的模式
DDL 创建数据库
当我们连接到数据库服务器时,需要指定一个目标数据库。如果需要创建一个新的数据库,可以使用 CREATE DATABASE 语句:
CREATE DATABASE mydb;
以上语句将会创建一个名为 mydb 的数据库。对于 Oracle 而言,通常只有一个数据库;因此很少手动创建数据库。
Oracle 12c 以及更高版本,如果采用容器数据库(Container Database)模式,可以创建多个可插拔的数据库(Pluggable Database)。
我们可以使用以下命令或语句查看 MySQL 中已有的数据库:
-- MySQL 实现
SHOW DATABASES;
SELECT schema_name AS database_name
FROM information_schema.schemata;
Database |
------------------|
hrdb |
information_schema|
mydb |
mysql |
performance_schema|
sys |
其中,hrdb 是我们使用的数据库;mydb 是刚刚创建的数据库;其他都是系统数据库。information_schema 系统数据库存储了 MySQL 服务器中所有数据库的信息,例如数据库名称、表的结构以及访问权限等。
对于 SQL Server 可以使用以下命令:
-- SQL Server 实现
SELECT name AS database_name
FROM sys.databases;
database_name|
-------------|
master |
tempdb |
model |
msdb |
mydb |
hrdb |
其中,hrdb 是我们使用的数据库;mydb 是刚刚创建的数据库;其他都是系统数据库。sys.databases 是 SQL Server 中的一个系统表,存储了关于数据库的信息。
PostgreSQL 数据库使用以下命令:
-- PostgreSQL 实现
SELECT datname AS database_name
FROM pg_database;
database_name|
-------------|
postgres |
hrdb |
template1 |
template0 |
mydb |
其中,hrdb 是我们使用的数据库;mydb 是刚刚创建的数据库;其他都是系统数据库。pg_database 是 PostgreSQL 中的一个系统表,存储了关于数据库的信息。
最后,Oracle 使用以下命令:
-- Oracle 实现
SELECT name AS database_name
FROM v$database;
DATABASE_NAME|
-------------|
ORCL |
其中,ORCL 是我们使用的数据库。v$database 是 Oracle 中的一个系统视图,提供了关于数据库的信息。
DDL 删除数据库
如果确认不再需要,可以使用 DROP DATABASE 语句删除数据库:
DROP DATABASE mydb;
DROP DATABASE 命令将会删除该数据库中的所有对象,而且操作无法恢复,使用时千万小心!
如果有用户正在连接,无法删除数据库;可以等待用户断开连接,或者强制断开连接后删除。