1.子查询
使用时机:当查询条件不明确时,考虑使用子查询。这里的不明确是指没有具体的数值需要经过一次查询后才能获得的数值。
单行子查询
使用时机:筛选条件不明确需要执行一次查询,并且查询结果只有一个数据
注意:where子句中允许出现查询语句,该查询语句为子查询
--查询比clark工资高的员工信息
select * from emp where sal>(select sal from emp where ename='CLARK');
--查询工资高于平均工资的员工姓名和工资
select ename,sal from emp where sal>(select avg(sal) from emp);
--查询和scott属于同一部门且工资比他低的员工资料
select * from emp where deptno=(select deptno from emp where ename='SCOTT') and sal<(select sal from emp where ename='SCOTT');
多行子查询
使用时机:子查询的结果只有一个字段但是字段有n个值,考虑使用多行子查询,其实就是使用关键字。
关键字1: any 任意
select 内容 from 表名 where 字段名 比较运算符 any 子查询语句
--查询工资高于任意一个CLERK的所有员工信息
select * from emp where sal>any (select sal from emp where job='CLERK');
关键字2:all 所有
select 内容 from 表名 where 字段名 比较运算符 all 子查询语句.
--查询工资高于所有SALESMAN的员工信息
select * from emp where sal>all (select sal from emp where job='SALESMAN');
select * from emp where sal>(select max(sal) from emp where job='SALESMAN');
关键字3:in 表示任意存在 相当于=any
select 内容 from 表名 where 字段名 比较运算符 in 子查询语句
select 内容 from 表名 where 字段名 比较运算符not in 子查询语句
--查询部门20中与部门10中员工工作一样的员工信息
select * from emp where job in (select job from emp where deptno=10) and deptno=20;
2.用户管理
2.0 Oracle自带账户
sys 超级管理员账户
特点:具备system的所有权限,同时又具备其他权限
使用人:oracle工程师
system 管理账号
特点:具备大部分oracle的操作权限,主要用来管理普通账户及oracle的数据
使用人:oracle数据维护人员
普通账户
如果被system赋予权限,可以进行数据库的操作 (之前的学习一直是以普通账户身份登录的)
2.1 创建账户
首先需要使用system账户,并用dba身份,登录oracle管理系统
创建用户 create user 用户名 identified by 密码;
create user chen identified by 123; --注意chen没有单引号''
2.2 维护账户
赋予权限 grant 权限或角色名 to 用户名;
grant connect to chen; --赋予登录权限
grant resource to chen; --赋予资源操作权限
grant dba to chen; --赋予dba权限(使chen和sys权限相同)
删除权限 revoke 权限或角色名 from 用户名;
grant dba from chen;
2.3删除账户
drop user 用户名
drop user chen;