查找所有已经分配部门的员工的last_name和first_name
2017-12-31 11:32
399 查看
题目地址
题目描述
查找所有已经分配部门的员工的last_name和first_name
解法
知识补充
上述的查询方式是
1.为什么这样设计关系表
如果把部门信息都存放在雇员表中
每个雇员属于一个部门,每个部门会有N多个部员,会造成大量的数据冗余
当部门信息发生改变的时候,需要修改表中所有与这个部门有关的记录
在雇员表中大量重复出现相同部门信息,很难保证每次输入信息的格式和内容相同,导致数据不一致性
设计成两张表
修改部门信息只需要修改部门表
只通过部门编号和雇员表关联减少数据冗余
查询信息的时候通过联结查询
这样设计提高了可升缩性
注意
上面的代码可以写成下面用where字句
使用的时候要注明合适的where条件和on条件,不然返回的笛卡尔积会有许多不必要的数据降低性能。一遍等值联结的条件就是相等的键值(外键,主键)
题目描述
查找所有已经分配部门的员工的last_name和first_name
CREATE TABLE `dept_emp` ( `emp_no` int(11) NOT NULL, `dept_no` char(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`dept_no`)); CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));
解法
select e.last_name,e.first_name,d.dept_no from employees as e inner join dept_emp as d on e.emp_no = d.emp_no
知识补充
上述的查询方式是
等值联结查询。一般用于查询的列来自于不同的表,表与表之间用某个键值关联。
1.为什么这样设计关系表
如果把部门信息都存放在雇员表中
每个雇员属于一个部门,每个部门会有N多个部员,会造成大量的数据冗余
当部门信息发生改变的时候,需要修改表中所有与这个部门有关的记录
在雇员表中大量重复出现相同部门信息,很难保证每次输入信息的格式和内容相同,导致数据不一致性
设计成两张表
修改部门信息只需要修改部门表
只通过部门编号和雇员表关联减少数据冗余
查询信息的时候通过联结查询
这样设计提高了可升缩性
注意
上面的代码可以写成下面用where字句
select e.last_name,e.first_name,d.dept_no from employees as e,dept_emp as d where e.emp_no = d.emp_no
使用的时候要注明合适的where条件和on条件,不然返回的笛卡尔积会有许多不必要的数据降低性能。一遍等值联结的条件就是相等的键值(外键,主键)
相关文章推荐
- 【数据库SQL实践】查找所有已经分配部门的员工的last_name和first_name
- 《数据库SQL实战》查找所有已经分配部门的员工的last_name和first_name
- 查找所有已经分配部门的员工的last_name和first_name
- 查找所有已经分配部门的员工的last_name和first_name
- 查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工
- 查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工
- 《数据库SQL实战》查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工
- 【数据库SQL实战】查找所有员工的last_name和first_name(以及对应部门编号dept_no)
- 查所有员工last_name和first_name及对应部门编号及展示没有分配部门的员工
- 《数据库SQL实战》查找所有员工的last_name和first_name以及对应的dept_name
- 查找所有员工的last_name和first_name以及对应的dept_name
- 将employees表的所有员工的last_name和first_name拼接起来作为Name
- [牛客网]将employees表的所有员工的last_name和first_name拼接起来作为Name
- 获取所有部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary
- 查找所有员工入职时候的薪水给出emp_no以及salary并按照emp_no进行逆序
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 【数据库SQL实战】查找入职员工时间排名倒数第三的员工所有信息
- 一个老员工对中软国际的痛与诉,与所有中软国际在职、准备要走的和已经走了的同学们共享
- 查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序
- 解决员工更换工号后通过SPContext.Current.Web.CurrentUser.LoginName查找当前登录用户还是原来工号的问题