SQL核心操作全解析
SQL语句主要分为四大类:DQL(数据查询)、DML(数据操作)、DDL(数据定义)和DCL(数据控制)。核心操作包括SELECT查询(支持聚合、分组、排序)、多表连接和子查询。实用技巧涵盖索引优化、事务控制和常用函数使用。需注意不同数据库的语法差异,并采用参数化查询防止SQL注入。这些基础语法和技巧是数据库操作的核心,适用于MySQL、PostgreSQL等主流数据库系统。
·
一、SQL语句分类
-
数据查询语言 (DQL)
核心命令:SELECT
示例:SELECT name, salary FROM employees WHERE department = 'IT'; -
数据操作语言 (DML)
包含:INSERT(插入数据)INSERT INTO employees (id, name, department) VALUES (101, '张三', 'HR');UPDATE(更新数据)UPDATE employees SET salary = 8000 WHERE id = 101;DELETE(删除数据)DELETE FROM employees WHERE id = 101;
-
数据定义语言 (DDL)
包含:CREATE(创建表)CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), salary DECIMAL(10,2) );ALTER(修改表结构)ALTER TABLE employees ADD COLUMN department VARCHAR(20);DROP(删除表)DROP TABLE employees;
-
数据控制语言 (DCL)
包含:GRANT(授权)GRANT SELECT ON employees TO user1;REVOKE(撤销权限)REVOKE DELETE ON employees FROM user2;
二、核心操作详解
1. 数据查询 (SELECT)
SELECT
department,
AVG(salary) AS avg_salary -- 聚合函数
FROM employees
WHERE hire_date > '2020-01-01' -- 条件过滤
GROUP BY department -- 分组
HAVING avg_salary > 7000 -- 分组后过滤
ORDER BY avg_salary DESC; -- 排序
2. 多表连接
SELECT
e.name,
d.department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.id; -- 内连接
3. 子查询
SELECT name
FROM employees
WHERE salary > (
SELECT AVG(salary) FROM employees -- 嵌套查询
);
三、实用技巧
-
索引优化
加速查询的常见方法:CREATE INDEX idx_name ON employees (name); -
事务控制
保证数据一致性:BEGIN TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- 或 ROLLBACK 回滚 -
常用函数
- 字符串:
CONCAT(),SUBSTRING() - 数值:
ROUND(),ABS() - 日期:
NOW(),DATE_ADD()
- 字符串:
四、注意事项
-
不同数据库(MySQL, PostgreSQL, SQL Server)存在语法差异
-- MySQL 自增ID CREATE TABLE t (id INT AUTO_INCREMENT PRIMARY KEY); -- PostgreSQL 自增ID CREATE TABLE t (id SERIAL PRIMARY KEY); -
防止SQL注入
使用参数化查询而非字符串拼接:# Python示例 cursor.execute("SELECT * FROM users WHERE name = %s", (user_input,))
更多推荐
所有评论(0)