— 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述
/*
分析:
1.员工编号,员工姓名,工资 信息在emp表
2.职务名称,职务描述 信息在job表
3.job职务表和emp员工表是一对多的关系 emp.job_id=job.id

/
— 隐式内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description
FROM
emp t1,
job t2
WHERE
t1.job_id = t2.id;
— 显示内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description
FROM
emp t1
INNER JOIN job t2 ON t1.job_id = t2.id;
— 2. 有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置
/

分析:
1.员工编号,员工姓名,工资 信息在emp表
2.职务名称,职务描述 信息在job表
3.job职务表和emp员工表是一对多的关系 emp.job_id=job.id
4.部门名称和部门位置来自于部门表dept表
5.dept和emp一对多的关系 dept.id=emp.dept_id

/
— 隐式内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description,
t3.dname,
t3.loc
FROM
emp t1,
job t2,
dept t3
WHERE
t1.job_id = t2.id
AND t3.id = t1.dept_id;
— 显示内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description,
t3.dname,
t3.loc
FROM
emp t1
INNER JOIN job t2 ON t1.job_id = t2.id
INNER JOIN dept t3 ON t3.id = t1.dept_id;
–3.查询员工姓名,工资,工资等级 /

分析:
1.员工姓名,工资 信息在emp表
2.工资等级 信息在salarygrade 工资等级表
3.emp.salary>=salarygrade.losalary and emp.salary <= salarygrade.hisalary

*/

SELECT
emp.ename,
emp.salary,
t2.*
FROM
emp,
salarygrade t2
WHERE
emp.salary >= t2.losalary
AND emp.salary <= t2.hisalary;

— 使用between and 优化
SELECT
emp.ename,
emp.salary,
t2.*
FROM
emp,
salarygrade t2
WHERE
emp.salary
BETWEEN t2.losalary
AND t2.hisalary;

— 4.查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级
/*
分析:
1.员工编号,员工姓名,工资 信息在emp表
2.职务名称,职务描述 信息在job表
3.job职务表和emp员工表是一对多的关系 emp.job_id=job.id
4.部门名称和部门位置来自于部门表dept表
5.dept和emp一对多的关系 dept.id=emp.dept_id
6工资等级 信息在salarygrade 工资等级表
7emp.salary>=salarygrade.losalary and emp.salary <= salarygrade.hisalary

*/
— 显示内连接
SELECT
t1.id,
t1.ename,
t1.salary,
t2.jname,
t2.description,
t3.dname,
t3.loc,
t4.grade
FROM
emp t1
INNER JOIN job t2 ON t1.job_id = t2.id
INNER JOIN dept t3 ON t3.id = t1.dept_id
INNER JOIN salarygrade t4 oN t1.salary BETWEEN t4.losalary and t4.hisalary
;

-- 查询出部门的编号,部门名称,部门位置,部门人数

/*
分析:
	1.部门的编号,部门名称,部门位置 在dept部门表
	2.部门人数:在emp表中按照对应的dept_id 分组 用count(*)统计数量
	3.使用子查询让部门表和分组后的表进行内连接

*/
select * from dept ;

SELECT dept_id,count(*) from emp GROUP BY dept_id;

SELECT
dept.id,
dept.dname,
dept.loc,
t1.count
FROM
dept,(
SELECT
dept_id,
count(*) count
FROM
emp
GROUP BY
dept_id
) t1
WHERE
dept.id = t1.dept_id;

原文地址:http://www.cnblogs.com/cy-xt/p/16929579.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性