select?a.ename?员工名字,b.ename?上级名字?from?emp?a,emp?b?where?a.mgr=b.empno(◆)
方法如下:
输入select * from dba_users; 即可.
常用语句:
一,查看数据库里面所有用户:
select * from dba_users;
前提是你是有dba权限的帐号,如sys,system.
二,查看你能管理的所有用户:
select * from all_users;
三,查看当前用户信息 :
select * from?user_users;
扩展资料:
此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层.
Oracle数据库具有完整的数据管理功能:
①.)数据的大量性
参考资料:百度百科:Oracle数据库
这是oracle中默认用户scott下的表.
本问题涉及到三张表,数据分别如下:
emp表:
dept表:
salgrade表:
按题目要求,sql语句如下:
select b.dname 部门名称,b.counts 部门员工数,b.avgsal 部门平均工资,b.minsal 部门最低工资,a.ename 姓名,c.grade 工资等级
from emp a,
from emp a,dept b,salgrade c
where a.deptno=b.deptno and a.deptno=b.deptno
and a.sal between c.losal and hisal
group by ?b.deptno,b.dname) b,
salgrade c
where a.sal=b.minsal
and a.sal between c.losal and c.hisal
结果如图:
每个部门俯场碘渡鄢盗碉醛冬互大于所有人平均工资的员工:
Select BM,YG From TB WHERE Salary(Select Avg(Salary) From TB)
每个部门大于所在部门所有人平均工资的员工:
Select BM,YG From TB
Join (Select BM,Avg(Salary) as AvgSalary From TB
Group By BM) As Temp
On TB.BM=Temp.BM
where SalaryTemp.AvgSalary
SELECT DEPT.DNAME, EMP.ENAME, (EMP.SAL ◆ NVL(EMP.COMM, 0)) AS SC
FROM EMP,
DEPT,
(SELECT DEPT.DEPTNO AS D, AVG(EMP.SAL ◆ NVL(EMP.COMM, 0)) ESC
FROM DEPT, EMP
WHERE EMP.DEPTNO = DEPT.DEPTNO
GROUP BY DEPT.DEPTNO) T
WH俯场碘渡鄢盗碉醛冬互ERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.DEPTNO = T.D
AND (EMP.SAL ◆ NVL(EMP.COMM, 0)) T.ESC;
select a.empname, b.deptname ,a.salary
from emp as a,
( select d俯场碘渡鄢盗碉醛冬互eptid,deptname ,avg(salary) c from dept group by deptid,deptname ) b
where a.deptid=b.deptid?
and a.salary b.c
第一段:单行子查询:
①.、单行子查询指在子查询中只返回单行值,这种子查询需要使用单行比较运算符,包括=、、=、、=、.
第二段:多行子查询:
如果子查询返回了多行,则主查询中的比较操作符应该使用多行比较操作符.Oracle数据库中的多行比较操作符包括IN、ALL、ANY,其中ALL和ANY不能单独使用,需要配合单行比较操作符、=、、=一起使用.
①.、多行子查询中使用IN:
IN后面是值的列表,只不过这里的值是子查询查出来的多个数据.如下图:
第三段:多行子查询中使用ANY操作符:
ANY操作符不能单独使用,必须和、等比较操作符一起使用.ANY表示大于列表中任何一个数据即为TRUE;ANY表示小于列表中的任何数据即为TRUE.具体实现如下图:
进行筛选的基本运算符号:
--查询员工SMITH的员工信息
--关键字,表名,列名:大小写是不敏感(随意写)
--数据:大小写是敏感(不能随意写)
--and的优先级要高于or 如果两者混合使用,需要注意优先级的问题
--加括号解决优先级问题
--SQL注入:利用了and的优先级高于or完成无密码进行登录
--SQL片段:通过在密码框中输入下方的SQL片段,更改了原有SQL语句的逻辑 ' or lname = 'admin --or前的逻辑:账号随意,密码为空 (登录失败) --or后的逻辑:用户名是admin的账号 (调取了admin的信息)
--1.查询10号部门职位是MANAGER的员工信息
--相当于 = A and = B
--like '特定字符'
-- 特定字符:由转义字符和搜索文本组成
-- 转义字符: %: 0-n个字符(任意长度的任意字符)
-- : 1个字符(1个长度的任意字符)
-- 比如 姓李 特定字符的写法 '李%'
-- 第二个字符是哈 特定字符的写法 ' 哈%'
--查询员工名字首字母是S的员工
--查询名字中包含字母T的员工
--查询名字中包含两个字母T的员工
--查询有两个连续的T
--查询名字中有%字符的员工
--声明标识字符
--相当于 = A or = B or = C...
-- = null 无法筛选任何数据
-- is null 筛选null值
-- not between A and B 不在A与B区间内
-- not like '%A%' 名字里面没有A
-- not in(A,B,C) 不是A,B,C其中之一
-- is not null 不为null
--order by 列名 或 列别名 或 表达式 或 列序号
--ASC 升序 由小到大
--DESC 降序 由大到小
--不写 默认是升序
--## 书写顺序:select...from...where...order by...
--## 执行顺序:from...where...select...order by...
--查询所有员工的信息,按照月薪的升序排序
--再按照月薪的降序排序
--利用表达式排序
--利用列别名进行排序
--排序的原则:
--1.数值按照数值的大小
--#####order by 可以修饰多个列
-- ## order by A, B 先A的升序排序,如果A相同,再按B的升序排序
-- ## order by A desc, B desc 先A的降序排序,如果A相同,再按B的降序排序
--查询月薪高于1000的员工,按照部门的升序排序,再按照入职日期降序排序
--推荐在order by中使用列名或列别名
假设你的表名是employ,
①.、创建表
create table employ(
name varchar(10),
age number,
salary number,
);
select * from employ em
where em.name like 's%'
or em.name like '%s';
解释:em是表employ的缩写形式,以便在后面引用写书写方便.
's%'表示所有以s开头的名字,不管后面是几个字符.
以上就是土嘎嘎小编为大家整理的oracle如何查询员工相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!