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 ,只有年月日,没有时分秒
使用场景
- 数据建模和设计:在数据库设计和开发过程中,DDL 用于创建、修改和删除表、视图、索引等数据库对象。通过 DDL,数据库管理员或开发人员可以定义数据结构,如列名、数据类型、约束等,以满足业务需求。
- 数据迁移和同步:当从一个数据库系统迁移到另一个系统时,DDL 可以用来创建目标数据库中的表结构,以确保数据能够正确地导入和导出。此外,在数据库同步过程中,DDL 也可以用来创建或更新表结构以匹配源数据库。
- 数据库维护:在进行数据库维护任务时,例如优化性能、调整大小或更改数据结构时,DDL 是必要的工具。通过修改表结构,例如添加或删除列,可以优化查询性能或调整数据存储方式。
- 数据完整性管理:在维护数据完整性方面,DDL 可以用来创建或修改约束,如主键、外键、唯一性约束等,确保数据的准确性和一致性。
- 数据安全:通过 DDL,管理员可以定义用户对表、视图或索引的访问权限。这包括授予特定用户对特定表的读取、写入或修改权限,以控制对敏感数据的访问。
- 业务规则实现:在某些情况下,业务规则可能需要动态地修改表结构。例如,根据某些条件或时间要求添加或删除列。DDL 在这种情况下是实现这些业务规则的关键工具。
- 数据库重构:随着业务需求的变化,数据库结构可能需要更改。例如,重新组织表或添加新的关联表。DDL 提供了一种有效的方法来管理和实施这些更改。
总的来说,DDL 数据库表操作在数据库管理、开发、维护和优化中起着核心作用,是确保数据库完整性和有效性的关键工具。
创建
创建表语法
CREATE TABLE 表名(
列名1 字段类型(长度),
列名2 字段类型 注意 最后一列不要加逗号
);
列属性
NOT NULL | NULL
:指出该列是否允许是空值,系统一般默认允许为空值,所以如果不允许为空值的时候,必须使用 NOT NULLDEFAULT 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 语言对数据库表进行的一系列操作,包括创建表、修改表和删除表等。这些操作是数据库管理的重要组成部分,用于定义和管理数据库中的数据结构和属性。