6.显示能挣得奖金的雇员的姓名、工资、奖金,并以工资和奖金降序排列。
select ename,sal,comm
from emp
WHERE comm>0
order by sal desc,comm desc;
8. 显示姓名中两次出现字母L并且在30部门工作,或者其管理员编号是7782的雇员的姓名。
SELECT ename
FROM emp
WHERE ename LIKE '%L%L%'
AND deptno=30 OR mgr=7782;
7. 显示雇员的姓名、受雇日期及受雇当天是星期几(列标题为DAY),并以DAY升序排列
SELECT ename,hiredate,TO_CHAR(hiredate,'DAY') "DAY"
FROM EMP
ORDER BY TO_CHAR(hiredate,'D');
5.查询员工的姓名及其经理编号,要求对于没有经理的显示“No Manager”字符串。
SELECT * FROM emp;
SELECT ename,nvl(to_char(mgr),'NULL')
FROM emp
8.显示姓名中两次出现字母L并且在30部门工作或者其管理员编号是7782的雇员的姓名。
select ename
FROM emp
where ename like '%L%L%'
4. 编写一个以下面的形式输出的查询:
<employee name> earns <salary> monthly but wants <3 times salary>.
列标题为Dream Salaries。
SELECT '<employee ' || ename || '> earns <' || sal || '> monthly but wants <' || 3*sal || '>.' "Dream Salaries"
from emp;
SELECT ename || ' earns ' || sal || ' monthly but wants ' || sal * 3 "Dream Salaries"
FROM emp;
--7.显示姓名中第三个字母为A的雇员的姓名。
select ename
FROM emp
where instr(substr(ename,3,1),'A')>0;
(3)显示雇员姓名并以*为指示符代表工资数额(列标题为EMPLOYEE_AND_THEIR_SALARIES),一个指示符代表一百美元,并以工资数额降序排列。
SELECT ename || rpad('*',trunc(sal/100),'*') EMPLOYEE_AND_THEIR_SALARIES
FROM emp
ORDER BY sal desc;
一、多表查询
SELECT 列名,列名...
FROM 表名 表的别名,表名 表的别名....
WHERE 条件
ORDER BY 排序字段。。。
1、笛卡尔积:是多张表记录的乘积。
SELECT *
FROM emp,dept
WHERE ename='SMITH';
SELECT * FROM emp;
SELECT * FROM dept;
SELECT ename,emp.deptno,dname
FROM emp,dept;
2、等值连接,两张表中存在含义相同,值相等的列的
SELECT *
FROM emp,dept
WHERE emp.deptno=dept.deptno;
SELECT a.deptno,ename,dname
FROM emp a,dept b
WHERE A.deptno=b.deptno
ORDER BY A.deptno;
3、不等值连接
SELECT * FROM salgrade;
SELECT *
FROM emp A,salgrade b
--WHERE a.sal >=b.losal and a.sal<=b.hisal;
WHERE sal between losal and hisal;
---查询员工的姓名,员工的部门名称,员工的工资等级
SELECT ename,dname,grade
FROM emp,dept,salgrade
select ename,sal,comm
from emp
WHERE comm>0
order by sal desc,comm desc;
8. 显示姓名中两次出现字母L并且在30部门工作,或者其管理员编号是7782的雇员的姓名。
SELECT ename
FROM emp
WHERE ename LIKE '%L%L%'
AND deptno=30 OR mgr=7782;
7. 显示雇员的姓名、受雇日期及受雇当天是星期几(列标题为DAY),并以DAY升序排列
SELECT ename,hiredate,TO_CHAR(hiredate,'DAY') "DAY"
FROM EMP
ORDER BY TO_CHAR(hiredate,'D');
5.查询员工的姓名及其经理编号,要求对于没有经理的显示“No Manager”字符串。
SELECT * FROM emp;
SELECT ename,nvl(to_char(mgr),'NULL')
FROM emp
8.显示姓名中两次出现字母L并且在30部门工作或者其管理员编号是7782的雇员的姓名。
select ename
FROM emp
where ename like '%L%L%'
4. 编写一个以下面的形式输出的查询:
<employee name> earns <salary> monthly but wants <3 times salary>.
列标题为Dream Salaries。
SELECT '<employee ' || ename || '> earns <' || sal || '> monthly but wants <' || 3*sal || '>.' "Dream Salaries"
from emp;
SELECT ename || ' earns ' || sal || ' monthly but wants ' || sal * 3 "Dream Salaries"
FROM emp;
--7.显示姓名中第三个字母为A的雇员的姓名。
select ename
FROM emp
where instr(substr(ename,3,1),'A')>0;
(3)显示雇员姓名并以*为指示符代表工资数额(列标题为EMPLOYEE_AND_THEIR_SALARIES),一个指示符代表一百美元,并以工资数额降序排列。
SELECT ename || rpad('*',trunc(sal/100),'*') EMPLOYEE_AND_THEIR_SALARIES
FROM emp
ORDER BY sal desc;
一、多表查询
SELECT 列名,列名...
FROM 表名 表的别名,表名 表的别名....
WHERE 条件
ORDER BY 排序字段。。。
1、笛卡尔积:是多张表记录的乘积。
SELECT *
FROM emp,dept
WHERE ename='SMITH';
SELECT * FROM emp;
SELECT * FROM dept;
SELECT ename,emp.deptno,dname
FROM emp,dept;
2、等值连接,两张表中存在含义相同,值相等的列的
SELECT *
FROM emp,dept
WHERE emp.deptno=dept.deptno;
SELECT a.deptno,ename,dname
FROM emp a,dept b
WHERE A.deptno=b.deptno
ORDER BY A.deptno;
3、不等值连接
SELECT * FROM salgrade;
SELECT *
FROM emp A,salgrade b
--WHERE a.sal >=b.losal and a.sal<=b.hisal;
WHERE sal between losal and hisal;
---查询员工的姓名,员工的部门名称,员工的工资等级
SELECT ename,dname,grade
FROM emp,dept,salgrade