一、基础查询
在日常工作中,基础查询是最常用的操作之一。以下是一个简单的示例,展示如何从数据库中查询数据:
-- 查询所有用户信息
SELECT * FROM Users;
运行结果可能如下所示(这里仅展示部分字段):
UserID | UserName | |
---|---|---|
1 | Alice | alice@example.com |
2 | Bob | bob@example.com |
… | … | … |
二、条件查询
条件查询允许我们根据特定条件筛选数据。例如,查询所有年龄大于30岁的用户:
-- 查询年龄大于30岁的用户
SELECT * FROM Users WHERE Age > 30;
运行结果:
UserID | UserName | Age | |
---|---|---|---|
3 | Charlie | 35 | charlie@example.com |
… | … | … | … |
三、排序与分页
排序和分页是提升查询结果可读性的关键。以下示例展示如何按年龄升序排序并分页显示结果:
-- 按年龄升序排序,每页显示10条记录,显示第2页数据
SELECT * FROM Users ORDER BY Age ASC LIMIT 10 OFFSET 10;
这里假设数据库支持LIMIT
和OFFSET
语法。运行结果将显示年龄最小的第11至第20位用户。
四、聚合函数与分组
聚合函数如COUNT
、SUM
、AVG
等常与分组操作一起使用,以计算分组内的统计数据。例如,计算每个部门的员工数量:
-- 计算每个部门的员工数量
SELECT DepartmentID, COUNT(*) AS EmployeeCount FROM Employees GROUP BY DepartmentID;
运行结果:
DepartmentID | EmployeeCount |
---|---|
1 | 50 |
2 | 30 |
… | … |
五、多表连接
多表连接是SQL中处理关联数据的关键。以下示例展示如何通过内连接查询用户及其订单信息:
-- 查询用户及其订单信息
SELECT Users.UserName, Orders.OrderID, Orders.OrderDate
FROM Users
INNER JOIN Orders ON Users.UserID = Orders.UserID;
运行结果可能如下所示:
UserName | OrderID | OrderDate |
---|---|---|
Alice | 1001 | 2023-01-01 |
Bob | 1002 | 2023-01-02 |
… | … | … |
六、子查询与嵌套查询
子查询允许在一个查询中嵌套另一个查询。以下示例展示如何查找订单金额最高的用户:
-- 查找订单金额最高的用户
SELECT UserName
FROM Users
WHERE UserID = (SELECT UserID FROM Orders ORDER BY OrderAmount DESC LIMIT 1);
假设Orders
表中有一个OrderAmount
字段表示订单金额。运行结果将显示订单金额最高的用户名。
七、事务处理
事务处理是确保数据库操作原子性、一致性、隔离性和持久性的关键。以下示例展示如何使用事务处理更新用户余额并插入交易记录:
START TRANSACTION;
-- 更新用户余额
UPDATE Users SET Balance = Balance - 100 WHERE UserID = 1;
-- 插入交易记录
INSERT INTO Transactions (UserID, TransactionAmount, TransactionDate)
VALUES (1, -100, NOW());
COMMIT;
在事务处理中,如果任何一步失败,可以使用ROLLBACK
回滚所有更改。