MySQL中SQL语句的分类及常用语法详解

许南星
许南星
发布时间:2026-10-13 | 2人浏览过
原创

SQL语句在MySQL中主要分为四大类:DDL用于定义结构,DML用于操作数据,DQL用于查询数据,DCL用于控制权限。理解这些分类及其对应的关键字(如CREATE, INSERT, SELECT, GRANT)是掌握数据库操作的基础,本文将逐一介绍各类命令的具体用法和常见场景。

1. 数据定义语言 (DDL)

数据定义语言(Data Definition Language,简称DDL)主要用于定义或改变表的结构、数据类型、表之间的链接和约束等初始化工作。它是建立数据库骨架的关键。

第1步:管理数据库与表结构

DDL的核心操作包括创建、修改和删除数据库对象。以下是常用的操作指令:

  • 创建数据库/表:使用 CREATE DATABASE 或 CREATE TABLE。例如创建一个包含主键的学生表:
    CREATE TABLE Student(
        Id INT PRIMARY KEY,
        Name VARCHAR(50)
    );
  • 修改表结构:使用 ALTER TABLE。可以添加新列、修改列定义或删除列。
    -- 添加新列
    ALTER TABLE Friends ADD Address VARCHAR(50);
    -- 删除列
    ALTER TABLE Friends DROP COLUMN PhoneNo;
  • 删除对象:使用 DROP 关键字。注意区分全量删除和保留结构的清空(见下文对比)。
    DROP DATABASE db_name;
    DROP TABLE table_name;

第2步:处理索引与表复制

索引能显著提升查询速度,而表复制常用于备份或构建临时测试环境。

  • 创建索引:
    -- 普通索引
    CREATE INDEX NameIndex ON Friend(Name);
    -- 唯一索引
    CREATE UNIQUE INDEX NameIndex ON Friend(Name);
  • 表复制技巧:
    • 复制结构和数据:
      SELECT * INTO Student2 FROM Student;
    • 仅复制结构(不含数据):
      SELECT * INTO NewTable FROM OldTable WHERE 1=0;

2. 数据操作语言 (DML)

数据操作语言(Data Manipulation Language,简称DML)用于检索、插入、更新和删除数据库中的数据。这是日常开发中使用频率最高的部分。

第3步:插入与批量导入数据

通过 INSERT 语句向表中添加数据。支持单行插入和多行从查询结果插入。

-- 单行插入
INSERT INTO Student(id, name) VALUES (1, '张三');

-- 多行插入(从其他表查询数据)
INSERT INTO Student(id, name) SELECT id+2, name FROM Students;

第4步:更新与删除数据

操作数据时必须谨慎,特别是删除操作,建议先通过 SELECT 确认影响范围。

  • 更新数据:使用 UPDATE 配合 WHERE 子句指定条件。
    UPDATE Student SET age = 20 WHERE name = '张三';
  • 删除数据:
    在 MySQL 中,删除数据主要有两种方式,需根据需求选择:

Q: DROP 和 DELETE 的区别?
A:

  • DROP:用于删除整个表结构或数据库结构。执行后数据连同结构一起消失。
  • DELETE:用于删除表中的特定行数据(需加 WHERE 条件)或删除所有数据(不加 WHERE)。若需清空表且重置自增ID,推荐使用 TRUNCATE TABLE 表名,其效率高于 DELETE FROM 表名。

3. 数据查询语言 (DQL)

数据查询语言(Data Query Language,简称DQL)专门用于从数据库中检索数据,核心关键字是 SELECT。

第5步:基础查询与过滤

掌握基本的选取、别名、去重和条件过滤。

-- 基础查询
SELECT id FROM Student;

-- 排除重复数据
SELECT DISTINCT name FROM Student;

-- 条件与范围查询
SELECT * FROM Student WHERE age BETWEEN 18 AND 25;
SELECT * FROM Student WHERE name LIKE '张%'; -- 模糊查询

第6步:高级查询:聚合、分组与连接

当需要统计分析或多表关联时,会用到以下高级特性:

  • 聚合函数:COUNT, SUM, AVG, MAX, MIN。
  • 分组与筛选:使用 GROUP BY 进行分组,使用 HAVING 对分组后的结果进行筛选(不同于 WHERE 用于行级筛选)。
    SELECT StudentID, AVG(Mark) AS AverageMark 
    FROM StudentExam 
    GROUP BY StudentID 
    HAVING AVG(Mark) > 70;
  • 表连接 (JOIN):
    • 内连接 (INNER JOIN):返回两个表中匹配的行。
    • 外连接:LEFT JOIN (左外连接) 返回左表所有行;RIGHT JOIN (右外连接) 返回右表所有行;FULL OUTER JOIN 返回两表所有行。

4. 数据控制语言 (DCL)

数据控制语言(Data Control Language,简称DCL)用于控制用户对数据库的访问权限,保障数据安全。

第7步:权限管理

DBA 通常使用 DCL 来授予或撤销用户的特权。

  • 授予权限:
    GRANT SELECT, INSERT ON database.* TO 'username'@'host';
  • 撤销权限:注意拼写为 REVOKE 而非 REMOKE。
    REVOKE INSERT ON database.* FROM 'username'@'host';

补充:保证数据完整性的约束

在设计表时,除了业务逻辑,还需通过约束保证数据的准确性和一致性。主要约束类型如下:

  • 实体完整性:通常由 PRIMARY KEY (主键) 实现,确保每行数据唯一且非空。
  • 域完整性:包括 NOT NULL (非空), DEFAULT (默认值), CHECK (检查约束) 等。
  • 参照完整性:由 FOREIGN KEY (外键) 实现,维护表与表之间的一致性。
  • 唯一性:使用 UNIQUE 约束确保列值不重复。

以上就是关于MySQL中SQL语句分类及详细用法的详细内容,更多关于MySQL进阶资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表