Skip to content

DDL数据库表操作

DDL 数据库表操作

简介

DDL(Data Definition Language)是数据库操作中的一种语言,用于定义和管理数据库中的表、列、索引等对象。DDL 数据库表操作是指使用 DDL 语言对数据库表进行的一系列操作,包括创建表、修改表和删除表等。

MySQL 的数据类型

  • 字符串数据类型
  • 日期类型
  • 整型类型
  • 浮点型

数字类型

数据类型 说明
TINTINT 0 ~ 255 或 -128 ~ 127,1 字节,最小的整数
SMALLINT 0 ~ 65535 或 -32768 ~ 32767,2 字节,小型整数
MEDIUMINT 0 ~ 16777215 或 -8388608 ~ 8388607,3 字节,中型整数
INT 0 ~ 4294967295 或 -2147683648 ~ 2147683647,4 字节,标准整数
BIGINT 8 字节,大整数
FLOAT 单精度浮点值
DOUBLE 双精度浮点值
BOOLEAN 布尔值
字符串类型
数据类型 说明
CHAR 1 ~ 255 个字符,固定长度字符串
VARCHAR 长度可变,最多不超过 255 个字符
TEXT 最大长度为 64K 的变长文本
TINYTEXT 与 TEXT 相同,但最大长度为 255 字节
MEDIUMTEXT 与 TEXT 相同,但最大长度为 16K
LONGTEXT 与 TEXT 相同,但最大长度为 4GB
日期和时间数据类型
数据类型 说明
DATE 日期,格式 YYYY-MM-DD
TIME 时间,格式 HH:MM:SS
DATETIME 日期和时间,格式 YYYY-MM-DD HH:MM:SS
TIMESTAMP 时间标签,功能和 DATETIME 相同,但范围较小
YEAR 年份可指定两位数字和四位数字的格式
常用数据类型
  • int:整型
  • double:浮点型
  • varchar:字符串型
  • date:日期类型,给是为 yyyy-MM-dd ,只有年月日,没有时分秒

使用场景

  1. 数据建模和设计:在数据库设计和开发过程中,DDL 用于创建、修改和删除表、视图、索引等数据库对象。通过 DDL,数据库管理员或开发人员可以定义数据结构,如列名、数据类型、约束等,以满足业务需求。
  2. 数据迁移和同步:当从一个数据库系统迁移到另一个系统时,DDL 可以用来创建目标数据库中的表结构,以确保数据能够正确地导入和导出。此外,在数据库同步过程中,DDL 也可以用来创建或更新表结构以匹配源数据库。
  3. 数据库维护:在进行数据库维护任务时,例如优化性能、调整大小或更改数据结构时,DDL 是必要的工具。通过修改表结构,例如添加或删除列,可以优化查询性能或调整数据存储方式。
  4. 数据完整性管理:在维护数据完整性方面,DDL 可以用来创建或修改约束,如主键、外键、唯一性约束等,确保数据的准确性和一致性。
  5. 数据安全:通过 DDL,管理员可以定义用户对表、视图或索引的访问权限。这包括授予特定用户对特定表的读取、写入或修改权限,以控制对敏感数据的访问。
  6. 业务规则实现:在某些情况下,业务规则可能需要动态地修改表结构。例如,根据某些条件或时间要求添加或删除列。DDL 在这种情况下是实现这些业务规则的关键工具。
  7. 数据库重构:随着业务需求的变化,数据库结构可能需要更改。例如,重新组织表或添加新的关联表。DDL 提供了一种有效的方法来管理和实施这些更改。

总的来说,DDL 数据库表操作在数据库管理、开发、维护和优化中起着核心作用,是确保数据库完整性和有效性的关键工具。

创建

创建表语法

CREATE TABLE 表名(
  列名1 字段类型(长度),
  列名2 字段类型 注意 最后一列不要加逗号
)

列属性

  • NOT NULL | NULL:指出该列是否允许是空值,系统一般默认允许为空值,所以如果不允许为空值的时候,必须使用 NOT NULL
  • DEFAULT default_value:表示默认值
  • AUTO_INCREMENT:表示是否是自动编号。一个表只能有一个自动编号的列,并且必须被索引
  • PRIMARY KEY:表示是否为主键。一个表只能有一 个 PRIMARY KEY。如果表中没有 PRIMARY KEY,而某些应用程序又需要 PRIMARY KEY 的话,MySQL 将返回第一个没有任何 NULL 值的列作为 PRIMARY KEY
列名 类型 [NOT NULL | NULL] [DEFAULT 默认值] [AUTO_INCREMENT]
[PRIMARY KEY ] [注释]

复制表语法

  • 数据表名:表示新创建的数据表的名
  • LIKE 源数据表名:必选项,指定依照哪个数据表来创建新表
-- 复制表
CREATE TABLE数据表名
{LIKE 源数据表名 | (LIKE 源数据表名)}
CREATE TABLE bookms_copy LIKE bookms;

创建表的 CREATE TABLE 还有另外一种语法结构,就是在一张已经存在的数据表的基础上创建一份该表的备份,也就是复制表。

复制表结构相同的表

-- 创建一个表结构与 student 相同的 s2 表
CREATE TABLE s2 LIKE student;

查看

查看表语法

-- 查看当前数据库中所有的表名
SHOW TABLES;

查看表结构语法

DESCRIBE 数据表名;
DESCRIBE 数据表名 列名;
-- 简写
DESC 数据表名;
DESC 数据表名 列名;

查看某一张表的结构的话,使用 DESCRIBE 语句

可以使用 DESCRIBE 的简写形式 DESC

在查看表结构时,也可以只列出某一列的信息。

示例

-- 选择数据库
USE db1;
-- 查看数据库中的表
SHOW TABLES;
-- 查看学员表的表结构
DESC student;
-- 查看学员表中 name 列的信息
DESC student name;

修改

添加新列表语法

-- 添加新列
ALTER TABLE 表名 ADD 列名 列属性;

修改表结构使用 ALTER TABLE 语句。修改表结构就是指增加或者删除字段、修改字段名称或者字段类型等等。

而且 ALTER TABLE 语句允许指定多个动作,其动作间使用逗号分隔,每个动作表示对表的一个修改。

示例

-- 选择数据库 db1
USE db1;
-- 添加新列
ALTER TABLE student ADD email varchar(50) NOT NULL;
-- 查看表结构
DESC student;

修改列定义语法

-- 修改列定义
ALTER TABLE 表名 MODIFY 列名 列属性;

这个时候就可以使用 MODIFY 这个语法,后面跟上要修改的列。

-- 添加分数列,先定义为字符类型
ALTER TABLE student ADD score varchar(10);
-- 查看表结构
DESC student;
-- 修改字段类型
ALTER TABLE student modify score int;
-- 查看表结构
DESC student;

score 列的数据类型从 varchar 变成了 int。

修改列名
ALTER TABLE 表名 CHANGE 旧列名 新列名 列属性;

如果想要修改表中的列名,可以使用 ALTER TABLE 语句,这个语法可以修改列名或者列属性。

示例

-- 修改列名并指定列的默认值
ALTER TABLE student
CHANGE COLUMN stu_name stu_name_new VARCHAR(30) DEFAULT 'student name';
-- 查看表结构
DESC student;

删除列

-- 删除列
ALTER TABLE 表名 DROP 列名;

示例

-- 将数据表 student 中的列 score 删除
ALTER TABLE student DROP score;
-- 查看表结构
DESC student;

修改表名语法

-- 方式一
ALTER TABLE 旧表名 RENAME AS 新表名;
-- 方式二
RENAME TABLE 旧表名 To 新表名;

示例

-- 将数据表 student 更名为 stu
ALTER TABLE student RENAME AS stu;
-- 查看表名
SHOW TABLES;
-- 将数据表 stu 更名为 stu_table
RENAME TABLE stu TO stu_table;
-- 查看表名
SHOW TABLES;

删除

删除表语法

  • IF EXISTS:可选项,先判断是否存在要删除的表,存在时才执行删除操作。
  • 数据表名:用于指定要删除的数据表名。
DROP TABLE [IF EXISTS] 数据表名;
  • [IF EXISTS]:可选项,用于在删除表前先判断是否存在要删除的表,只有存在时,才执行删除操作,这样可以避免要删除的表不存在时出现错误信息。
  • 数据表名:用于指定要删除的数据表名,可以同时删除多张数据表,多个数据表名之间用英文半角的逗号“,”分隔。

示例

-- 切换到数据库 db1
USE db1;

-- 创建 student 表
CREATE TABLE student (id INT, NAME VARCHAR(20));

-- 直接删除 student 表
DROP TABLE student;

避免在删除表时出现表不存在而出错的情况

-- 创建 student 表
CREATE TABLE student (id INT, NAME VARCHAR(20));

-- 先判断再删除 student 表
DROP TABLE IF EXISTS student;

总结

DDL 数据库表操作是指使用 DDL 语言对数据库表进行的一系列操作,包括创建表、修改表和删除表等。这些操作是数据库管理的重要组成部分,用于定义和管理数据库中的数据结构和属性。