SQL 面试题 一
题目一:
有两张表:部门表department 部门编号dept_id 部门名称dept_name
员工表employee 员工编号emp_id 员工姓名emp_name 部门编号dept_id 工资emp_wage
根据下列题目写出sql:
1、列出工资大于5000的员工所属的部门名、员工id和员工工资;
2、列出员工表中的部门id对应的名称和员工id(左连接)
3、列出员工大于等于2人的部门编号
4、列出工资最高的员工姓名
5、求各部门的平均工资
6、求各部门的员工工资总额
7、求每个部门中的最大工资值和最小工资值,并且它的最小值小于5000,最大值大于10000
8、假如现在在库中有一个和员工表结构相同的空表employee2,请用一条sql语句将employee表中的所以记录插入到employee2表中。
answer:
1:列出工资大于5000的员工所属的部门名、员工id和员工工资;
select emp_id,emp_wage,dept_name from employee as e inner join department as d on e.dept_id=d.dept_id where e.emp_wage>5000 group by e.emp_id;
2:列出员工表中的部门id对应的名称和员工id(左连接)
select dept_name,emp_id from department d left join employee e on e.dept_id=d.dept_id group by e.emp_id;
+------------+--------+
| dept_name | emp_id |
+------------+--------+
| 咨询部 | NULL |
| 软件开发部 | 1001 |
| 市场策划部 | 1002 |
| 销售部 | 1003 |
| HR | 1004 |
| HR | 1005 |
| HR | 1006 |
| 软件开发部 | 1007 |
+------------+--------+
3:列出员工大于等于2人的部门编号
select dept_name from department d [inner] join employee e on d.dept_id=e.dept_id group by dept_name
having count(e.dept_id) >=2;
&nb
相关文档:
在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范,将会影响以后的系统维护困难和大SP逻辑的难以理解,另外如果数据库的数据量大或者项目对SP的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过亲身经验,一个经 ......
使用PowerDesigner生成数据库
建表SQL
脚
本时,尤其是Oracle数据库时,表名一般会带引号。其实加引号是PL/SQL的规范,数据库会严格按照“”中的名称建表,如果没有“”,会按照
ORACLE默认的设置建表(DBA
STUDIO里面),默认是全部大写,这样,在ORACLE数据库里的字段就如“Column_1&rdqu ......
SET TIMING ON | OFF
SQL> set timing on
SQL> select * from emp where empno = 7369;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ----------- ---------- ----------
DEPTNO
----------
7369 SMITH CLERK ......
SQL语句的优化就是将性能较低的SQL语句转换达成同样目的性能优异的SQL语句
下面我们一起来看看一些可以优化SQL的方法,希望大家多提出意见我们共同学习或者是大家有什么好的优化方法可以提出来共享一下。
第一种优化(使用指定列代替”*”)
使用“*&rdquo ......