【MySQL】入门篇—SQL基础:数据定义语言(DDL)

数据定义语言(DDL,Data Definition Language)是SQL(结构化查询语言)的一部分,主要用于定义和管理数据库的结构。

DDL允许用户创建、修改和删除数据库及其对象(如表、索引、视图等)。以下是一些DDL在实际应用中的重要性和场景:

  • 创建数据库和表:在应用程序开发初期,需要设计和创建数据库结构以存储数据。例如,电商平台需要创建用户、商品和订单等表来管理数据。

  • 修改数据库结构:随着业务需求的变化,可能需要调整数据库结构,比如添加新字段、修改数据类型或删除不再需要的列。

  • 删除数据库和表:在不再需要某个数据库或表时,可以将其删除以释放资源。例如,当一个项目结束时,相关的测试数据库可能会被删除。

掌握DDL的基本操作是数据库管理员和开发者的基本技能。接下来,我们将通过具体示例详细介绍DDL的主要命令:创建(CREATE)、修改(ALTER)和删除(DROP)。

1. 创建数据库和表

1.1 创建数据库

创建数据库是指在数据库管理系统中创建一个新的数据库实例。每个数据库可以包含多个表和其他对象。创建数据库的语法相对简单,通常只需要指定数据库的名称。

示例:创建数据库

-- 创建一个名为 'my_database' 的数据库
CREATE DATABASE my_database;

-- 选择使用该数据库
USE my_database;
  • CREATE DATABASE my_database;:此命令创建一个名为my_database的数据库。数据库是存储数据的容器,通常一个应用程序会有一个或多个数据库。

  • USE my_database;:选择当前使用的数据库。之后的所有操作(如创建表、插入数据等)都将在my_database中进行。

1.2 创建表

创建表是指在数据库中定义一个新的数据结构,用于存储特定类型的数据。每个表由行和列组成,行表示记录,列表示属性。表的设计需要考虑数据的完整性和约束条件。

示例:创建用户表

-- 创建一个名为 'users' 的表
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 用户ID,主键,自动递增
    username VARCHAR(50) NOT NULL,      -- 用户名,非空
    email VARCHAR(100) NOT NULL UNIQUE   -- 邮箱,非空且唯一
);
  • CREATE TABLE users (...):创建一个名为users的表。

  • id INT PRIMARY KEY AUTO_INCREMENT:定义一个名为id的列,数据类型为整数(INT),作为主键并自动递增。主键确保每条记录的唯一性。

  • username VARCHAR(50) NOT NULL:定义一个名为username的列,数据类型为变长字符串,最大长度为50,且不能为空(NOT NULL)。

  • email VARCHAR(100) NOT NULL UNIQUE:定义一个名为email的列,数据类型为变长字符串,最大长度为100,且不能为空且唯一(UNIQUE),确保没有重复的邮箱地址。

2. 修改数据库和表

2.1 修改表结构

修改表结构是指对已存在的表进行更改,以适应新的业务需求。这可能包括添加新列、修改现有列的属性或删除不再需要的列。

示例:向表中添加新列

-- 向 'users' 表中添加一个新列 'created_at'
ALTER TABLE users ADD created_at DATETIME DEFAULT CURRENT_TIMESTAMP;
  • ALTER TABLE users:指定要修改的表为users

  • ADD created_at DATETIME DEFAULT CURRENT_TIMESTAMP:添加一个名为created_at的新列,数据类型为日期时间(DATETIME),默认值为当前时间戳(CURRENT_TIMESTAMP)。这个列用于记录用户创建的时间。

2.2 修改现有列

修改现有列是指更改表中已存在列的定义,例如改变数据类型或约束条件。这通常是在业务需求变化时进行的调整。

示例:修改列的数据类型

-- 修改 'username' 列的长度
ALTER TABLE users MODIFY username VARCHAR(100) NOT NULL;
  • MODIFY username VARCHAR(100) NOT NULL:将username列的数据类型修改为最大长度100的变长字符串,并保持非空约束。这种修改可能是因为我们希望允许更长的用户名。
2.3 删除列

删除列是指从表中移除一个不再需要的列。这通常是在数据结构优化或业务需求变化时进行的。

示例:从表中删除列

-- 从 'users' 表中删除 'created_at' 列
ALTER TABLE users DROP COLUMN created_at;
  • DROP COLUMN created_at:从users表中删除名为created_at的列。如果我们不再需要记录用户创建时间,可以使用此命令进行删除。

3. 删除数据库和表

3.1 删除表

删除表是指从数据库中完全移除一个表及其所有数据。此操作是不可逆的,执行后无法恢复。

示例:删除表

-- 删除 'users' 表
DROP TABLE users;
  • DROP TABLE users;:删除名为users的表及其所有数据。此操作不可逆,执行后无法恢复,因此在执行之前应确保该表的数据不再需要。
3.2 删除数据库

删除数据库是指从数据库管理系统中移除一个数据库及其所有表和数据。此操作也不可逆,需谨慎使用。

示例:删除数据库

-- 删除 'my_database' 数据库
DROP DATABASE my_database;
  • DROP DATABASE my_database;:删除名为my_database的数据库及其所有表和数据。删除数据库会清空所有数据,因此需谨慎操作。

结论

数据定义语言(DDL)是管理数据库结构的关键工具。通过创建、修改和删除数据库及其对象,开发者和数据库管理员能够灵活地设计和维护数据存储结构。掌握DDL的基本命令对于有效地管理和优化数据库至关重要。

相关推荐
永乐春秋9 分钟前
WEB-通用漏洞&SQL注入&CTF&二次&堆叠&DNS带外
数据库·sql
打鱼又晒网43 分钟前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
大白要努力!1 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
tatasix2 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。2 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了2 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度2 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮2 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9993 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️3 小时前
华为ASP与CSP是什么?
服务器·前端·数据库