在MySQL中,临时表是一种特殊类型的表,允许我们存储一个临时结果集,并将其在一次会话中多次进行使用。
比如,在employees数据库中,表employees存储了员工的基本信息,表departments存储了部门的信息,表dept_emp存储了全时段下员工和部门的从属关系,表salaries存储了全时段下员工的薪资情况,表titles存储了全时段下员工的职级信息。这种充分分散式的存储方式满足了关系型数据库设计理论的要求,但如果我们想要刻画不同部门,不同职级的当前在职员工的统计特征时,就会十分不便。该数据库中共有约30w名员工,属于一个中型数据库。我们可以创建一个临时表以完成统计任务。
CREATE TEMPORARY TABLE employees2
SELECT d.dept_no AS dept_no, de.emp_no AS emp_no, e.gender AS gender,
s.salary AS salary, t.title AS title
FROM (SELECT * FROM salaries WHERE to_date = '9999-01-01') s
INNER JOIN (SELECT * FROM titles WHERE to_date = '9999-01-01') t USING(emp_no)
INNER JOIN dept_emp de USING(emp_no)
INNER JOIN departments d USING(dept_no)
INNER JOIN employees e USING(emp_no);
SELECT * FROM employees2;
<< · Back Index ·>>