3、SQL语言入门:SQL概述、数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)

好,咱们今天来聊聊SQL。说实话,很多刚接触材料数据库的朋友,一听到「SQL」三个字母就觉得头大。我当年也是这样,觉得这玩意儿是DBA(数据库管理员)才需要学的。直到我自己动手搭第一个材料数据库时,才发现——不会SQL,你连数据都查不出来,更别提什么高效查询了。

SQL,全称是Structured Query Language,结构化查询语言。说白了,它就是你和数据库对话的「普通话」。你告诉它:我要找什么、怎么找、找出来之后怎么处理。它就能把结果给你。

我个人习惯把SQL分成三大块来学:DDL(数据定义语言)DML(数据操作语言)DQL(数据查询语言)。这三块搞明白了,日常工作中90%的需求你都能搞定。

核心观点:SQL不是编程语言,它是声明式语言。你只需要告诉数据库「要什么」,不用告诉它「怎么找」。数据库自己会优化执行计划。

SQL语言知识体系 SQL 语言 DDL 数据定义语言 CREATE / ALTER / DROP DML 数据操作语言 INSERT / UPDATE / DELETE DQL 数据查询语言 SELECT / FROM / WHERE CREATE TABLE ALTER TABLE DROP TABLE INSERT INTO UPDATE SET DELETE FROM SELECT WHERE 条件 JOIN 连接 三大核心模块:定义结构 → 操作数据 → 查询分析

3.1 SQL概述:它到底是什么?

SQL是一种专门用来管理关系型数据库的语言。你想想看,材料数据库里存的是什么?是材料名称、成分、性能参数、测试条件……这些数据天然就是「关系型」的——一种材料有多个性能,一个测试批次包含多种材料。SQL就是用来处理这种关系的。

我记得刚入行时,带我的老工程师跟我说过一句话:「SQL学好了,你查数据的速度能比别人快10倍。」当时我不信,后来自己踩了坑才明白——不会SQL,你只能靠Excel手动筛选,几千条数据就能让你崩溃。

小提示:SQL不区分大小写,但行业惯例是关键字大写(SELECT、FROM),表名和字段名小写。这样代码可读性更好。我个人一直这么写,推荐你也试试。

3.2 数据定义语言(DDL)——搭好数据库的骨架

DDL,说白了就是「建表」的语言。你要存材料数据,总得先有个「容器」吧?这个容器就是表(Table)。DDL就是用来创建、修改、删除这些表的。

核心命令就三个:

  • CREATE —— 创建表或数据库
  • ALTER —— 修改表结构
  • DROP —— 删除表或数据库

举个例子,我们要建一个材料基本信息表:

CREATE TABLE materials (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    category VARCHAR(50),
    density DECIMAL(10,3),
    create_date DATE
);

这段代码干了什么?它创建了一个叫 materials 的表,里面有5个字段。id是主键,不能重复;name不能为空;density是带3位小数的数字。

我在项目中遇到过一个问题:表建好了,但后来发现需要加一个「供应商」字段。怎么办?用ALTER:

ALTER TABLE materials ADD COLUMN supplier VARCHAR(100);

警告:DROP TABLE 会直接删除整张表和数据,没有撤回键!我曾经有一次在测试环境执行 DROP,结果连到了生产库……嗯,从那以后我每次执行 DROP 前都会再三确认当前连的是哪个数据库。

3.3 数据操作语言(DML)——往骨架里填数据

表建好了,接下来就是往里塞数据。DML就是干这个的。

三个核心操作:

  • INSERT —— 插入新数据
  • UPDATE —— 修改已有数据
  • DELETE —— 删除数据

插入一条材料记录:

INSERT INTO materials (id, name, category, density, create_date)
VALUES (1, '304不锈钢', '金属材料', 7.930, '2024-01-15');

修改数据:

UPDATE materials
SET density = 7.950
WHERE name = '304不锈钢';

这里有个坑——UPDATE 和 DELETE 一定要加 WHERE 条件。不加的话,整张表的数据都会被改掉或删掉。我刚开始学的时候犯过这个错,一条 UPDATE 下去,整个材料表的所有密度值都变成了7.95……那叫一个酸爽。

经验之谈:执行 UPDATE 或 DELETE 之前,先跑一遍 SELECT 看看 WHERE 条件选中的是不是你要的数据。这是保命操作。

3.4 数据查询语言(DQL)——从数据里挖金子

DQL,其实就是 SELECT 语句。这是SQL里最常用、也最强大的部分。你想想看,材料数据库里存了几万条数据,你要找出「密度大于7.0的所有金属材料」,怎么办?

SELECT name, density, category
FROM materials
WHERE density > 7.0 AND category = '金属材料';

就这么简单。但SELECT远不止这些,它还能:

  • 排序ORDER BY density DESC 按密度从高到低排
  • 分组统计GROUP BY category 按类别统计材料数量
  • 多表连接JOIN 把材料表和测试数据表关联起来

举个例子,你想看每种材料类别下有多少种材料:

SELECT category, COUNT(*) AS material_count
FROM materials
GROUP BY category;

结果大概是这样:

category material_count
金属材料 152
高分子材料 89
陶瓷材料 47
复合材料 33

为什么会这样?因为GROUP BY把相同类别的数据归到了一起,COUNT(*)统计了每组有多少条记录。这在材料数据库的统计分析中非常实用。

技巧:SELECT 后面用 * 会查出所有字段,但在生产环境中尽量别这么干。明确写出你要的字段名,性能更好,也更容易维护。我一般只在快速调试时用 *

3.5 避坑指南——我踩过的那些坑

最后分享几个我亲身经历过的坑,希望能帮你少走弯路:

  1. 字段类型选错:存材料密度用 VARCHAR?别闹。数值就该用 DECIMAL 或 FLOAT,不然排序和计算都会出问题。
  2. 忘记加索引:几万条数据查起来慢得像蜗牛?多半是没加索引。WHERE 条件里常用的字段,记得建索引。
  3. DELETE 不写 WHERE:这个前面说过了,血的教训。每次执行前默念三遍「加条件、加条件、加条件」。
  4. 字符串引号搞混:SQL里字符串用单引号 ' ',不是双引号。双引号在有些数据库里是给字段名用的。

好了,SQL的三大块——DDL、DML、DQL,咱们今天就聊到这儿。说白了,DDL是搭架子,DML是填数据,DQL是查数据。这三板斧学会了,材料数据库的基本操作你就拿下了。


公众号:蓝海资料掘金营,微信deep3321