sql语句 联系客服

发布时间 : 星期二 文章sql语句更新完毕开始阅读b0dac27cfe4733687e21aafd

----------------------------第二章----------------------- --1.查询员工表中所有员工的信息。 SELECT * FROM employees;

--2.查询员工表中员工的员工号、姓名、每个员工涨工资100元以后的年工资(按12个月计算)。

SELECT employee_id,last_name,(100+salary)*12 FROM employees;

--3.查询员工first_name和last_name,要求结果显示为“姓last_name名first_name”格式。 SELECT '姓'||last_name||'名'||first_name 员工姓名 FROM employees;

--4.查询所有员工所从事的工作有哪些类型(要求去掉重复值)。 SELECT DISTINCT job_id FROM employees;

SELECT DISTINCT department_id,job_id FROM employees; ----------------------------第三章-------------------------- --1.查询last_name是Chen的员工的信息。 SELECT *

FROM employees

WHERE last_name='Chen';

--2.查询参加工作时间在1997-7-9之后,并且不从事IT_PROG工作的员工的信息。 SELECT *

FROM employees

WHERE hire_date>'09-7月-1997' AND job_id NOT IN ('IT_PROG');

SELECT * FROM employees WHERE hire_date>='9-7月-97' and job_id not like 'IT_PROG';

--3.查询员工last_name的第三个字母是a的员工的信息。 --(oracle中的模糊通配符是%,单字通配符_) SELECT *

FROM employees

WHERE last_name LIKE '__a%';

--4.查询除了10、20、110号部门以外的员工的信息。 SELECT *

FROM employees

WHERE department_id NOT IN (10,20,110);

--5.查询部门号为50号员工的信息,先按工资降序排序,再按姓名升序排序。 SELECT *

FROM employees

WHERE department_id=50

ORDER BY salary DESC,last_name;

SELECT * FROM employees WHERE department_id=50

order by salary desc,first_name asc,last_name ASC; --6.查询没有上级管理的员工(经理号为空)的信息。 SELECT *

FROM employees

WHERE manager_id IS NULL;

--7.查询员工表中工资大于等于4500并且部门为50或者60的员工的姓名(last_name), 工资,部门号。

SELECT last_name,salary,manager_id FROM employees

WHERE salary>=4500 AND department_id IN (50,60);

SELECT last_name,salary,department_id FROM employees WHERE salary>=4500 and department_id in (50,60) --------------------------------第四章---------------------

--1.计算2000年1月1日到现在有多少月,多少周(四舍五入)。

select round(months_between(sysdate,to_date('2000-01-01','yyyy-mm-dd')),0) from dual; select round((sysdate - to_date('2000-01-01','yyyy-mm-dd'))/7) from dual; --2.查询员工last_name的第三个字母是a的员工的信息(使用2个函数)。 SELECT last_name,salary,job_id FROM employees

WHERE last_name LIKE '__a%';

SELECT last_name,salary,job_id FROM employees

WHERE substr(last_name,3,1)='a';

--3.使用trim函数将字符串?hello?、? Hello ?、?bllb?、? hello ?分别处理得到下列字符串ello、Hello、ll、hello。

SELECT TRIM('h' FROM 'hello') ello, TRIM(' ' FROM 'Hello') Hello, TRIM('b' FROM 'bllb') LL,

TRIM(' ' FROM 'hello ') AS HELLO FROM dual;

--4.将员工工资按如下格式显示:123,234.00 RMB

SELECT last_name,to_char(salary,'999,999.00')||'RMB' \FROM employees;

select employee_id ,

to_char(salary,'999,999,999,99.00L')as salary from employees

--5.查询员工的last_name及其经理(manager_id),要求对于没有经理的显示“No Manager”字符串。

SELECT last_name,nvl(to_char(manager_id),'No Manager') Manager FROM employees;

--6.将员工的参加工作日期按如下格式显示:月份/年份。

SELECT last_name,extract(MONTH FROM hire_date)||'/'||extract(YEAR FROM hire_date) FROM employees;

--注意:to_char方法可以这样用

select last_name,to_char(hire_date,'mm/yyyy')as hire_date from employees; --7.在employees表中查询出员工的工资,并计算应交税款: --如果工资小于1000,税率为0,

--如果工资大于等于1000并小于2000,税率为10%, --如果工资大于等于2000并小于3000,税率为15%, --如果工资大于等于3000,税率为20%。 SELECT last_name,salary, CASE (salary/1000) WHEN 0 THEN 0

WHEN 1 THEN salary*0.1 WHEN 2 THEN salary*0.15 ELSE salary*0.2 END TAX FROM employees;

--------------------------------第五章---------------------------

--1.查询员工的编号,姓名,以及部门名称(分别使用Oracle语法,自然连接,using子句,on子句)。

select employee_id,last_name,first_name,department_name from employees,departments

select employee_id,last_name,first_name,department_name from employees

natural join departments

select employee_id,last_name,first_name,department_name from employees join departments using(department_id)

SELECT e.employee_id,e.last_name,e.first_name ,d.department_name FROM employees e JOIN departments d

ON (e.department_id = d.department_id);

--2.查询部门名称为Shipping的员工的编号、姓名及所从事的工作。 SELECT employee_id,last_name, job_title FROM employees e JOIN jobs j

ON e.job_id = j.job_id JOIN departments d

ON e.department_id=d.department_id WHERE department_name='Shipping';

--3.查询所有工资大于等于6000元的员工姓名及其直接领导人的姓名、工资。要求查询结果中在员工和直接领导人之间加入字符串“works for”。

select e1.last_name,e1.salary,e1.last_name ||' works for '|| e2.last_name work_for,e2.last_name,e2.salary

from employees e1,employees e2

where e1.manager_id=e2.employee_id and e1.salary>=6000 order by e1.salary;

--4.查询员工的编号,姓名,以及部门名称,包括没有员工的部门。 select employee_id,last_name,department_name from employees e,departments d

where e.department_id(+) = d.department_id

select employee_id,last_name,department_name from employees e

RIGHT OUTER JOIN departments d

ON e.department_id= d.department_id;

--5.查询员工的编号,姓名,以及部门名称,包括不属于任何部门的员工。 select employee_id,last_name,department_name FROM employees e

LEFT OUTER JOIN departments d

ON e.department_id= d.department_id;

--6.显示比员工?Abel?参加工作时间晚的员工姓名,工资,参加工作时间。 select e1.last_name,e1.salary,e1.hire_date from employees e1,employees e2 where e1.hire_date>e2.hire_date and e2.last_name like 'Abel'; ----------------------------第六章----------------------

--1.查询各部门平均工资在8000元以上的部门名称及平均工资。 select d.department_name,avg(e.salary) from employees e,departments d

where e.department_id=d.department_id group by d.department_name having avg(e.salary)>8000;

--2.查询工作编号中不含有“SA_”字符串及平均工资在8000元以上的工作编号及平均工资,并按平均工资降序排序。 select j.job_id,avg(e.salary) from jobs j,employees e where j.job_id=e.job_id group by j.job_id

having j.job_id not like'SA_'and avg(e.salary)>8000 order by avg(e.salary) desc

--3.查询部门人数在4人以上的部门的部门名称及最低工资和最高工资。 select d.department_name,min(e.salary),max(e.salary) from employees e,departments d