好的,SQL常用语句可以分为以下几大类,我将为您详细介绍并附上示例。这些语句是操作和查询关系型数据库的基础。
1. 数据查询语句 (DQL - Data Query Language)
主要用于从数据库中查询数据,核心是 SELECT
语句。
语句 | 功能 | 示例 |
---|---|---|
SELECT |
从表中查询数据 | SELECT name, email FROM users; |
DISTINCT |
返回唯一不同的值 | SELECT DISTINCT country FROM customers; |
WHERE |
过滤记录,指定条件 | SELECT * FROM products WHERE price > 100; |
ORDER BY |
对结果集排序 | SELECT * FROM employees ORDER BY salary DESC; |
LIMIT |
限制返回的记录数 | SELECT * FROM articles LIMIT 10; |
JOIN |
连接多个表 | SELECT o.order_id, c.customer_name FROM orders o JOIN customers c ON o.customer_id = c.id; |
GROUP BY |
将数据分组,通常与聚合函数一起使用 | SELECT department, AVG(salary) FROM employees GROUP BY department; |
HAVING |
过滤分组后的结果(WHERE 用于分组前) |
SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 5000; |
一个综合查询示例:
SELECT department, COUNT(*) as employee_count,AVG(salary) as avg_salary
FROM employees
WHERE hire_date > '2020-01-01'
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY avg_salary DESC
LIMIT 10;
2. 数据操作语句 (DML - Data Manipulation Language)
用于对表中的数据进行增、删、改操作。
语句 | 功能 | 示例 |
---|---|---|
INSERT |
向表中插入新记录 | INSERT INTO users (name, email) VALUES ('John', 'john@example.com'); |
UPDATE |
修改表中已存在的记录 | UPDATE products SET price = price * 1.1 WHERE category = 'Electronics'; |
DELETE |
从表中删除记录 | DELETE FROM orders WHERE status = 'cancelled'; |
3. 数据定义语句 (DDL - Data Definition Language)
用于定义和修改数据库结构,如创建、修改、删除表、索引等。
语句 | 功能 | 示例 |
---|---|---|
CREATE TABLE |
创建新表 | CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(100) NOT NULL); |
ALTER TABLE |
修改表结构(添加、修改或删除列) | ALTER TABLE students ADD COLUMN birth_date DATE; |
DROP TABLE |
删除表 | DROP TABLE temp_table; |
CREATE INDEX |
在表上创建索引以提高查询速度 | CREATE INDEX idx_customer_email ON customers(email); |
DROP INDEX |
删除索引 | DROP INDEX idx_customer_email; |
4. 数据控制语句 (DCL - Data Control Language)
用于控制数据库的访问权限和安全。
语句 | 功能 | 示例 |
---|---|---|
GRANT |
授予用户访问权限 | GRANT SELECT, INSERT ON database.table TO 'username'@'host'; |
REVOKE |
撤销用户的访问权限 | REVOKE INSERT ON database.table FROM 'username'@'host'; |
5. 事务控制语句 (TCL - Transaction Control Language)
用于管理数据库的事务。
语句 | 功能 | 示例 |
---|---|---|
START TRANSACTION 或 BEGIN |
开始一个事务 | START TRANSACTION; |
COMMIT |
提交事务,使所有数据修改成为永久性的 | COMMIT; |
ROLLBACK |
回滚事务,撤销所有未提交的修改 | ROLLBACK; |
SAVEPOINT |
在事务中设置保存点,可以回滚到此处 | SAVEPOINT point1; |
事务示例:
BEGIN;
UPDATE account SET balance = balance - 100 WHERE user_id = 1;
UPDATE account SET balance = balance + 100 WHERE user_id = 2;
-- 如果两条更新都成功,则提交
COMMIT;
-- 如果任何一条失败,则回滚
-- ROLLBACK;
6. 高级和实用语句
语句 | 功能 | 示例 |
---|---|---|
CASE |
在查询中实现条件逻辑,类似 if-else | SELECT name, CASE WHEN score >= 60 THEN 'Pass' ELSE 'Fail' END AS result FROM students; |
UNION / UNION ALL |
合并多个 SELECT 语句的结果集 |
SELECT city FROM suppliers UNION SELECT city FROM customers; |
EXISTS |
测试子查询是否返回任何行 | SELECT name FROM products WHERE EXISTS (SELECT 1 FROM orders WHERE orders.product_id = products.id); |
LIKE |
在 WHERE 子句中搜索特定模式 |
SELECT * FROM users WHERE name LIKE 'A%'; (查找以A开头的名字) |
IN |
指定多个可能的值 | SELECT * FROM customers WHERE country IN ('USA', 'UK', 'Canada'); |
BETWEEN |
选取介于两个值之间的数据 | SELECT * FROM products WHERE price BETWEEN 10 AND 100; |
总结表格
类别 | 核心语句 | 主要用途 |
---|---|---|
数据查询 (DQL) | SELECT , FROM , WHERE , JOIN , GROUP BY , ORDER BY |
从数据库检索数据 |
数据操作 (DML) | INSERT , UPDATE , DELETE |
增加、修改、删除数据 |
数据定义 (DDL) | CREATE , ALTER , DROP |
创建、修改、删除数据库对象(如表、索引) |
数据控制 (DCL) | GRANT , REVOKE |
管理用户权限和安全 |
事务控制 (TCL) | COMMIT , ROLLBACK , SAVEPOINT |
管理数据库事务 |
这些语句涵盖了SQL日常使用的绝大部分场景。熟练掌握它们,您就能高效地与关系型数据库进行交互。