好看的网站模板,工程网站建设方案,亚马逊网站 如何做站内seo,如何登录我的wordpressMySQL DML 基础语法及优化技巧
一、DML#xff08;数据操作语言#xff09;概述
DML 是数据库操作语言的子集#xff0c;用于数据的增、删、改、查四个基本操作。MySQL 中的 DML 操作通常是指以下四种基本操作#xff1a;
INSERT#xff1a;插入数据SELECT#xff1a;…MySQL DML 基础语法及优化技巧
一、DML数据操作语言概述
DML 是数据库操作语言的子集用于数据的增、删、改、查四个基本操作。MySQL 中的 DML 操作通常是指以下四种基本操作
INSERT插入数据SELECT查询数据UPDATE更新数据DELETE删除数据
二、增INSERT语法
在 MySQL 中插入数据的语法使用 INSERT INTO 关键字。
语法
-- 向表中插入一行数据
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);示例
INSERT INTO employees (name, age, position)
VALUES (Alice, 28, Engineer);如果插入所有列可以省略列名
INSERT INTO employees
VALUES (1, Alice, 28, Engineer);三、删DELETE语法
删除表中的记录使用 DELETE 语句。
语法
DELETE FROM table_name WHERE condition;示例
DELETE FROM employees WHERE name Alice;如果没有 WHERE 条件DELETE 会删除表中所有记录。注意 这种操作是不可恢复的。
四**、改UPDATE语法**
更新表中现有的数据使用 UPDATE 语句。
语法
UPDATE table_name
SET column1 value1, column2 value2, ...
WHERE condition;示例
UPDATE employees
SET position Senior Engineer
WHERE name Alice;五、查SELECT语法
MySQL 中的查询操作用于从表中检索数据通常使用 SELECT 语句。
单表查询
SELECT column1, column2 FROM table_name WHERE condition;示例
SELECT name, age FROM employees WHERE position Engineer;联合查询联表查询 联表查询是指从多个表中检索数据最常见的类型是 内连接INNER JOIN 和 外连接LEFT JOIN, RIGHT JOIN。
内连接INNER JOIN 返回两个表中匹配的记录。
SELECT A.name, B.department_name
FROM employees A
INNER JOIN departments B
ON A.department_id B.id;左外连接LEFT JOIN 返回左表的所有记录以及右表中匹配的记录。如果右表没有匹配则返回 NULL。
SELECT A.name, B.department_name
FROM employees A
LEFT JOIN departments B
ON A.department_id B.id;右外连接RIGHT JOIN 返回右表的所有记录以及左表中匹配的记录。如果左表没有匹配则返回 NULL。
SELECT A.name, B.department_name
FROM employees A
RIGHT JOIN departments B
ON A.department_id B.id;全外连接FULL JOIN 返回两个表的所有记录。如果没有匹配的记录另一个表会返回 NULLMySQL 不直接支持 FULL OUTER JOIN但可以使用 UNION 来模拟。
六、聚合函数Aggregation Functions
MySQL 提供了一些聚合函数来对数据进行汇总处理常见的聚合函数包括
COUNT计算记录数SUM计算和AVG计算平均值MAX查找最大值MIN查找最小值
示例
SELECT AVG(age) FROM employees WHERE position Engineer;七、GROUP BY 和 HAVING
GROUP BY 用于将查询结果按某列进行分组而 HAVING 用于过滤分组后的结果。
示例
SELECT department_id, COUNT(*) AS num_employees
FROM employees
GROUP BY department_id
HAVING num_employees 5;WHERE用于对原始数据进行过滤应用于 GROUP BY 前。HAVING用于过滤分组后的结果应用于 GROUP BY 后。
八、连接优化
联表查询中尤其是当数据量大的时候如何优化查询性能是非常重要的。常见的优化技巧包括 使用合适的索引 索引可以显著提高查询速度尤其是联表查询时。确保联接条件ON 或 WHERE 条件中涉及的字段有索引。 小表驱动大表 在联表查询时尽量使用小表作为驱动表外层表减少查询中涉及大表的扫描次数。 避免使用 SELECT * 使用 SELECT * 会返回表中的所有字段而如果只需要部分字段应该显式列出。这不仅可以提高查询效率还能减少内存使用。示例 SELECT name, age FROM employees WHERE position Engineer;优化连接算法 嵌套循环连接Nested Loop Join这是最常见的连接算法但性能较低尤其是当表非常大的时候。块嵌套循环连接Block Nested Loop Join通过缓存小表的数据减少对大表的多次扫描。哈希连接Hash Join适用于没有索引的连接操作通过构建哈希表进行连接。 使用合适的连接类型 内连接INNER JOIN在大多数情况下使用内连接可以减少返回的结果集优化查询性能。外连接LEFT JOIN, RIGHT JOIN当需要保留一个表中的所有记录时使用外连接尽量避免不必要的外连接。 避免笛卡尔积 笛卡尔积发生在没有连接条件时会返回两个表中所有可能的组合结果集行数等于两个表行数的乘积这通常不是我们想要的结果。
九、DML 的事务控制
对于数据库操作中的增、删、改等 DML 操作MySQL 提供了事务控制可以确保数据的一致性和完整性。常见的事务控制语句有
BEGIN TRANSACTION开始一个事务。COMMIT提交事务永久保存数据变更。ROLLBACK回滚事务撤销事务中的所有操作。
示例
BEGIN TRANSACTION;UPDATE employees
SET salary salary * 1.1
WHERE department_id 2;COMMIT;结论
熟悉并掌握 MySQL 的 DML 基础语法对于数据库开发至关重要。通过合理运用 INSERT、SELECT、UPDATE、DELETE以及各种查询优化技巧可以显著提高数据库的性能和查询效率。在实际开发过程中合理的索引设计、联表查询优化以及事务管理是提升应用性能和数据一致性的重要手段。 希望这个笔记对你有所帮助如果你有任何问题或需要进一步探讨某个内容欢迎随时提问。