元组运算详解及SQL示例

发布于:2025-06-26 ⋅ 阅读:(15) ⋅ 点赞:(0)

元组运算详解及SQL示例

元组运算在关系数据库中是指对元组(表中的行)进行的各种操作。以下是主要的元组运算及其SQL实现示例:


1. 元组选择(Tuple Selection)

从关系中选择满足特定条件的元组。

-- 选择工资大于5000的员工
SELECT * FROM employees WHERE salary > 5000;

-- 选择部门为'IT'且工资大于6000的员工
SELECT * FROM employees 
WHERE department = 'IT' AND salary > 6000;

2. 元组投影(Tuple Projection)

从关系中选择特定的属性(列)。

-- 选择所有员工的姓名和部门
SELECT name, department FROM employees;

-- 选择不同部门(去重)
SELECT DISTINCT department FROM employees;

3. 元组连接(Tuple Join)

将两个关系的元组基于相关条件组合起来。

-- 内连接:员工和部门表
SELECT e.name, e.salary, d.department_name 
FROM employees e
JOIN departments d ON e.department_id = d.id;

-- 左外连接:显示所有员工,即使没有分配部门
SELECT e.name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.id;

4. 元组并集(Tuple Union)

合并两个关系的元组(去重)。

-- 合并全职和兼职员工
SELECT name, position FROM full_time_employees
UNION
SELECT name, position FROM part_time_employees;

5. 元组交集(Tuple Intersection)

找出两个关系中都存在的元组。

-- 找出既是全职又是兼职的员工
SELECT name FROM full_time_employees
INTERSECT
SELECT name FROM part_time_employees;

6. 元组差集(Tuple Difference)

找出在一个关系中存在但在另一个关系中不存在的元组。

-- 找出只是全职但不是兼职的员工
SELECT name FROM full_time_employees
EXCEPT
SELECT name FROM part_time_employees;

7. 元组排序(Tuple Ordering)

对元组进行排序。

-- 按工资降序排列员工
SELECT name, salary FROM employees
ORDER BY salary DESC;

-- 按部门升序,工资降序排列
SELECT name, department, salary FROM employees
ORDER BY department ASC, salary DESC;

8. 元组分组与聚合(Tuple Grouping and Aggregation)

对元组进行分组并计算聚合值。

-- 计算每个部门的平均工资
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department;

-- 计算每个部门工资最高的员工
SELECT department, MAX(salary) as max_salary
FROM employees
GROUP BY department;

9. 元组插入(Tuple Insertion)

向关系中添加新元组。

-- 插入一条新员工记录
INSERT INTO employees (id, name, department, salary)
VALUES (101, '张三', 'IT', 7500);

-- 从另一个表插入多条记录
INSERT INTO retired_employees
SELECT * FROM employees WHERE retirement_date IS NOT NULL;

10. 元组更新(Tuple Update)

修改关系中现有元组的值。

-- 给IT部门所有员工加薪10%
UPDATE employees
SET salary = salary * 1.1
WHERE department = 'IT';

-- 更新特定员工的部门
UPDATE employees
SET department = 'HR'
WHERE id = 101;

11. 元组删除(Tuple Deletion)

从关系中移除元组。

-- 删除工资低于3000的员工
DELETE FROM employees
WHERE salary < 3000;

-- 删除特定部门的员工
DELETE FROM employees
WHERE department = 'Finance';

这些SQL示例展示了关系数据库中常见的元组运算操作,涵盖了从简单查询到复杂数据操作的各种场景。


网站公告

今日签到

点亮在社区的每一天
去签到