MySQL中SQL语句的分类及常用语法详解
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进阶资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









