数据库操作三基石:DDL、DML、DQL 技术入门指南

简介: 本文围绕数据库操作核心语言 DDL、DML、DQL 展开入门讲解。DDL 作为 “结构建筑师”,通过CREATE(建库 / 表)、ALTER(修改表)、DROP(删除)等命令定义数据库结构;DML 作为 “数据管理员”,以INSERT(插入)、UPDATE(更新)、DELETE(删除)操作数据表记录,需搭配WHERE条件避免误操作;DQL 作为 “数据检索师”,通过SELECT结合WHERE、ORDER BY、LIMIT等子句实现数据查询与统计。三者相辅相成,是数据库操作的基础,使用时需注意 DDL 的不可撤销性、DML 的条件约束及 DQL 的效率优化,为数据库学习与实践奠定基础。



在数据库管理与开发中,DDL(数据定义语言)、DML(数据操纵语言)、DQL(数据查询语言)是最基础且核心的三类操作语言,它们共同支撑起数据库的结构搭建、数据管理与信息提取。无论是初学者入门,还是资深开发者日常工作,都离不开对这三类语言的灵活运用。本文将从概念解析、基础语法、实际案例三个维度,带大家快速掌握 DDL、DML、DQL 的核心知识,为数据库操作打下坚实基础。​

一、DDL:定义数据库结构的 “建筑师”​


DDL(Data Definition Language,数据定义语言)主要用于创建、修改和删除数据库中的对象,如数据库、数据表、视图、索引等,它决定了数据库的 “骨架”,操作后会直接影响数据库的结构。常见的 DDL 命令包括CREATE(创建)、ALTER(修改)、DROP(删除)、TRUNCATE(清空),这些命令执行后通常无法撤销,需谨慎操作。​​

1. 核心语法与实例​


创建数据库:使用CREATE DATABASE命令,用于初始化一个新的数据库空间。​
语法:
>CREATE DATABASE [数据库名] [CHARACTER SET 字符集] [COLLATE 排序规则];​

示例:创建一个名为student_db、字符集为utf8mb4的数据库:​
CREATE DATABASE student_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;​


创建数据表:使用CREATE TABLE命令,在指定数据库中定义数据表的结构,包括字段名、数据类型、约束条件(如主键、非空、唯一等)。​
>语法:CREATE TABLE [表名] (字段1 数据类型 [约束], 字段2 数据类型 [约束], ...);​

示例:在student_db中创建student表,包含学号(主键)、姓名(非空)、年龄、性别字段:​
USE student_db; -- 切换到目标数据库​ CREATE TABLE student (​ id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自动增长​ name VARCHAR(50) NOT NULL, -- 姓名,非空​ age INT DEFAULT 0, -- 年龄,默认值0​ gender CHAR(2) CHECK (gender IN ('男', '女')) -- 性别,仅允许“男/女”​ );​

修改数据表:使用ALTER TABLE命令,可添加字段、修改字段类型、删除字段或修改表名。​
示例 1:为student表添加 “班级” 字段:​
ALTER TABLE student ADD class VARCHAR(50);​
示例 2:将 “年龄” 字段的数据类型改为TINYINT:​
ALTER TABLE student MODIFY age TINYINT;​
删除数据表 / 数据库:使用DROP命令,删除后数据与结构会完全清除,需格外小心。​
示例 1:删除student表:DROP TABLE IF EXISTS student;(IF EXISTS避免表不存在时报错)​
示例 2:删除student_db数据库:DROP DATABASE IF EXISTS student_db;​

二、DML:操纵数据的 “管理员”​


DML(Data Manipulation Language,数据操纵语言)用于对数据库表中的数据进行增、删、改操作,它不改变数据库结构,只作用于表中的具体记录。常见的 DML 命令包括INSERT(插入)、UPDATE(更新)、DELETE(删除),这些操作默认会开启事务,可通过COMMIT(提交)或ROLLBACK(回滚)确认或撤销。​

1. 核心语法与实例​


插入数据:使用INSERT INTO命令,向数据表中添加一条或多条记录。​
>语法 1(单条插入):INSERT INTO [表名] (字段1, 字段2, ...) VALUES (值1, 值2, ...);​
>语法 2(多条插入):INSERT INTO [表名] (字段1, 字段2, ...) VALUES (值1, 值2, ...), (值3, 值4, ...);​

示例:向student表插入 2 条学生记录:​
​ INSERT INTO student (name, age, gender, class) ​ VALUES ​ ('张三', 18, '男', '高一(1)班'),​ ('李四', 17, '女', '高一(2)班');​ ​
更新数据:使用UPDATE命令,修改表中符合条件的记录,必须搭配WHERE子句,否则会更新表中所有记录。​
>语法:UPDATE [表名] SET 字段1=值1, 字段2=值2, ... WHERE [条件];​
示例:将 “张三” 的年龄改为 19:​
UPDATE student SET age = 19 WHERE name = '张三';​
删除数据:使用DELETE命令,删除表中符合条件的记录,同样需搭配WHERE子句,避免误删全表数据。​
>语法:DELETE FROM [表名] WHERE [条件];​

示例:删除 “李四” 的记录:​
DELETE FROM student WHERE name = '李四';​
注意:若需清空表中所有数据且保留表结构,也可使用TRUNCATE TABLE 表名;,但它属于 DDL 命令,执行后无法回滚。​

三、DQL:提取数据的 “检索师”​


DQL(Data Query Language,数据查询语言)用于从数据库表中查询所需数据,是日常开发中使用最频繁的语言,核心命令为SELECT。通过SELECT搭配FROM、WHERE、GROUP BY、ORDER BY、LIMIT等子句,可实现精准的数据筛选、排序、分组与分页,满足多样化的查询需求。​

1. 核心语法与实例​


DQL 基础语法结构:SELECT [字段/表达式] FROM [表名] [WHERE 条件] [GROUP BY 字段] [HAVING 分组条件] [ORDER BY 字段 排序方式] [LIMIT 分页参数];​
基础查询:查询表中指定字段或所有字段的数据。​
示例 1:查询student表中所有学生的姓名和年龄:​
SELECT name, age FROM student;​
示例 2:查询student表中所有字段的数据(表示所有字段,不推荐在复杂表中使用,效率较低):​
`SELECT
FROM student;

条件查询:使用WHERE子句筛选符合条件的记录,支持=(等于)、>(大于)、<(小于)、IN(在范围内)、LIKE(模糊匹配)等运算符。​
示例 1:查询年龄大于 17 的学生:​
SELECT name, age FROM student WHERE age > 17;​
示例 2:查询 “高一 (1) 班” 或 “高一 (3) 班” 的学生(IN用法):​
SELECT name, class FROM student WHERE class IN ('高一(1)班', '高一(3)班');​
示例 3:查询姓名以 “张” 开头的学生(LIKE用法,%表示任意字符):​
SELECT name FROM student WHERE name LIKE '张%';​
排序与分页:使用ORDER BY排序(ASC升序,默认;DESC降序),LIMIT实现分页(避免一次性查询大量数据)。​
示例:查询所有学生,按年龄降序排序,只显示前 10 条记录:​
SELECT * FROM student ORDER BY age DESC LIMIT 10;​
聚合查询:搭配COUNT(计数)、SUM(求和)、AVG(平均值)等聚合函数,实现数据统计。​
示例 1:统计 “高一 (1) 班” 的学生人数:​
SELECT COUNT(*) AS class_count FROM student WHERE class = '高一(1)班';(AS给结果字段起别名)​
示例 2:计算所有学生的平均年龄:​
SELECT AVG(age) AS avg_age FROM student;​

四、三者关系与使用注意事项​


DDL、DML、DQL 虽功能不同,但在实际开发中相辅相成:先用 DDL 搭建数据库与表结构,再用 DML 录入和维护数据,最后通过 DQL 提取所需信息。使用时需注意以下几点:​
- DDL 命令(如DROP、TRUNCATE)执行后无法撤销,操作前务必确认数据备份;​
- DML 的UPDATE和DELETE必须加WHERE条件,避免误操作全表数据;​
- DQL 查询时尽量指定具体字段,避免使用*,同时合理使用索引优化查询效率。

相关文章
|
8天前
|
监控 Java 关系型数据库
HikariCP 高性能数据库连接池技术详解与实践指南
本文档全面介绍 HikariCP 高性能数据库连接池的核心概念、架构设计和实践应用。作为目前性能最优异的 Java 数据库连接池实现,HikariCP 以其轻量级、高性能和可靠性著称,已成为 Spring Boot 等主流框架的默认连接池选择。本文将深入探讨其连接管理机制、性能优化策略、监控配置以及与各种框架的集成方式,帮助开发者构建高性能的数据访问层。
56 8
|
7天前
|
监控 Java 关系型数据库
HikariCP 高性能数据库连接池技术详解与实践指南
本文档全面介绍 HikariCP 高性能数据库连接池的核心概念、架构设计和实践应用。作为目前性能最优异的 Java 数据库连接池实现,HikariCP 以其轻量级、高性能和可靠性著称,已成为 Spring Boot 等主流框架的默认连接池选择。本文将深入探讨其连接管理机制、性能优化策略、监控配置以及与各种框架的集成方式,帮助开发者构建高性能的数据访问层。
46 1
|
5月前
|
Cloud Native 关系型数据库 分布式数据库
|
5月前
|
存储 关系型数据库 分布式数据库
|
6月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
5月前
|
存储 关系型数据库 分布式数据库
|
1月前
|
缓存 关系型数据库 MySQL
MySQL数据库性能调优:实用技术与策略
通过秉持以上的策略实施具体的优化措施,可以确保MySQL数据库的高效稳定运行。务必结合具体情况,动态调整优化策略,才能充分发挥数据库的性能潜力。
106 0
|
5月前
|
SQL 人工智能 数据可视化
16.1k star! 只需要DDL就能一键生成数据库关系图!开源神器ChartDB让你的数据结构"看得见"
ChartDB是一款开源的数据库可视化神器,通过一句智能查询就能自动生成专业的数据库关系图。无需安装客户端、不用暴露数据库密码,打开网页就能完成从数据建模到迁移的全流程操作,堪称开发者的"数据库透视镜"。
1125 67
|
3月前
|
存储 人工智能 关系型数据库
诚邀您参加《智启云存:AI时代数据库RDS存储新突破》线上闭门技术沙龙!
诚邀您参加6月11日(周三)14:00在线上举行的《智启云存:AI时代数据库RDS存储新突破》闭门活动。免费报名并有机会获得精美礼品,快来报名吧:https://hd.aliyun.com/form/6162
|
4月前
|
人工智能 关系型数据库 分布式数据库
媒体声音|从亚太到欧美,阿里云瑶池数据库凭何成为中企出海的技术底气?
在中企出海的时代浪潮中,瑶池数据库正凭借其技术创新、场景化解决方案、智能化能力、全球化布局,成为企业跨越挑战、构建全球竞争力的关键伙伴;同时也以硬核的技术实力证明了中国数据库的国际竞争力。