DDL数据库操作
DDL 数据库操作
简介
DDL(Data Definition Language)被称为数据库定义语言,主要包含三个方面的内容:对数据库的常见操作、对表结构的常见操作以及修改表结构。
具体来说,DDL 允许用户创建新表,指定表的列、数据类型、约束条件等;修改现有表的结构,例如添加新列、删除列、修改列的数据类型等;删除不再需要的表,以释放数据库资源。
此外,DDL 还用于创建和删除索引,创建和删除视图,定义约束条件(如主键、外键、唯一约束等)以及管理数据库中的模式。
DDL 主要负责对数据库和表的整体结构进行操作,但不涉及数据本身。
使用场景
DDL(Data Definition Language)数据库操作在以下使用场景中特别有用:
- 数据建模和设计:在数据库开发过程中,DDL 被广泛用于定义和创建数据库结构。这包括创建表、视图、索引、约束和其他数据库对象。
- 数据完整性维护:通过定义主键、外键、唯一性约束等,DDL 有助于维护数据的完整性。这确保了数据的准确性和可靠性,防止了无效或不完整的数据被存储在数据库中。
- 修改现有结构:当现有数据库结构需要更改时,例如添加、删除或修改列,添加或删除约束等,DDL 允许数据库管理员进行这些更改,而无需直接操作数据。
- 简化数据管理:通过使用 DDL,数据库管理员可以定义复杂的对象关系映射,使数据存储、检索和使用更为简单和高效。
- 备份和迁移:通过创建数据库结构和定义,DDL 也可以用于创建备份和迁移数据。这使得在不同系统或平台之间迁移数据变得简单和可靠。
优点
- 结构化查询:DDL 提供了结构化的查询语言,使得数据库操作更加规范和一致。
- 数据完整性:通过使用约束、触发器等机制,DDL 有助于确保数据的准确性和完整性。
- 简化操作:通过定义数据库结构,DDL 简化了数据的存储、检索和使用。
- 可移植性:在不同的数据库管理系统(DBMS)中,DDL 具有很高的可移植性,使得数据管理更为灵活。
- 安全性:通过定义用户权限和角色,DDL 可以控制对数据库的访问,增强数据的安全性。
创建数据库
IF NOT EXISTS
:可选项,创建前先判断,未存在时才执行创建语句。- 数据库名:必须指定的。
CHARACTER SET = 字符集
:可选项,用于指定数据库的字符集。
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] 数据库名
[
CHARACTER SET [=] 字符集
];
在 MySQL 中,可以使用 CREATE DATABASE
语句和CREATE SCHEMA
语句创建 MySQL 数据库。
- [IF NOT EXISTS]:可选项,表示在创建数据库前进行判断,只有该数据库目前尚未存在时才执行创建语句。
- 数据库名:必须指定的,在文件系统中,MySQL 的数据存储区将以目录方式表示 MySQL 数据库,不区分大小写的。
CHARACTER SET [=]字符集
:可选项,用于指定数据库的字符集。
创建指定字符集的数据库
-- 创建名为 test_db2 的数据库,并指定字符集为 utf8
CREATE DATABASE test_db2 CHARACTER SET utf8;
创建数据库前判断是否存在同名数据库
-- 如果数据库 test_db3 不存在,则创建名为 test_db3 的数据库
CREATE DATABASE IF NOT EXISTS test_db3 CHARACTER SET utf8;
创建数据库注意事项
在创建数据库时,数据库命名有以下几项规则。
- 不能与其他数据库重名,否则将发生错误。
- 名称可以由任意字母、阿拉伯数字、下划线(_)和“$”组成,可以使用上述的任意字符开头,但不能使用单独的数字,否则会造成它与数值相混淆。
- 名称最长可为 64 个字符,而别名最多可长达 256 个字符。
- 不能使用 MySQL 关键字作为数据库名。
- 默认情况下,在 Windows 下数据库名、表名的大小写是不敏感的,而在 Linux 下数据库名、表名的大小写是敏感的。为了便于数据库在平台间进行移植,建议采用小写来定义数据库名。
查看数据库
连接到 MySQL 数据库后,可以使用 SHOW
命令查看 MySQL 服务器中的所有数据库信息
-- 查看所有数据库
SHOW DATABASES;
DATABASES
:表示必须有一个是必选项,用于列出当前用户权限范围内所能查看到的所有数据库名称。
选择数据库
-- 选择数据库为当前数据库
USE 数据库名;
查看数据库的定义信息
-- 查看数据库定义信息
SHOW CREATE DATABASE 数据库名;
修改数据库语法
DATABASES
:必选项。- 数据库名:可选项,如果不指定要修改的数据库,那么将表示修改当前(默认)的数据库。
CHARACTER SET =字符集
:可选项,用于指定数据库的字符集。
-- 修改数据库相关参数
ALTER {DATABASE} [数据库名]
CHARACTER SET [=] 字符集
修改数据库可以使用 ALTER DATABASE
或者 ALTER SCHEMA
语句来实现。
- {DATABASES}:是必选项
- [数据库名]:可选项,如果不指定要修改的数据库,那么将表示修改当前(默认)的数据库。
CHARACTER SET [=] 字符集
:可选项,用于指定数据库的字符集。如果不想指定数据库所使用的字符集,那么就可以不使用该项,这时 MySQL 会根据 MySQL 服务器默认使用的字符集来创建该数据库。这里的字符集可以是 GB2312 或者 GBK(简体中文)、UTF8(针对 Unicode 的可变长度的字符编码,也称万国码)、BIG5(繁体中文)、Latin1(拉丁文)等。其中最常用的就是 UTF8。
- 注意,在使用
ALTER DATABASE
或者ALTER SCHEMA
语句时,用户必须具有对数据库进行修改的权限。
修改数据库字符集
-- 创建数据库 db1,指定字符集为 GBK
CREATE DATABASE db1 CHARACTER SET GBK;
-- 将数据库 db1 的字符集修改为 utf8
ALTER DATABASE db1 CHARACTER SET utf8;
删除数据库语法
- DATABASES:必选项
IF EXISTS
:用于指定在删除数据前,先判断该数据库是否已经存在,可以避免删除不存在的数据库时产生异常
-- 删除数据库
DROP DATABASE [IF EXISTS] 数据库名;
在 MySQL 中,可以通过使用 DROP DATABASE
语句来删除已经存在的数据库。使用该命令删除数据库的同时,该数据库中的表,以及表中的数据也将永久删除,因此,在使用该语句删除数据库时一定要小心,以免误删除有用的数据库。
参数说明如下。
DATABASES
:必选项。- [IF EXISTS]:用于指定在删除数据前,先判断该数据库是否已经存在,只有已经存在时,才会执行删除操作,这样可以避免删除不存在的数据库时,产生异常。
- 注意在使用
DROP DATABASE
时,用户必须具有对数据库进行删除的权限。
删除某个数据库
-- 查看当前所有数据库
SHOW DATABASES;
-- 删除某个数据库
DROP DATABASE test_db;
-- 如果某个数据库存在,则删除这个数据库
DROP DATABASE IF EXISTS test_db2;
注意事项
MySQL 安装后,系统会自动创建两个名称分别为 performance_schema 和 mysql 的系统数据库,MySQL 把与数据库相关的信息存储在这两个系统数据库中,如果删除了这两个数据库,那么 MySQL 将不能正常工作,所以这两个数据库一定不能删除。
总结
DML 主要是对数据库中的数据进行操作,包括查询、插入、更新和删除等操作,是对数据进行操作的集合。