Oracle_11g桌面版 中化解被锁定的scott 教学数据库的点子

Oracle 11g中修改被锁定的用户:scott

在装置完Oracle10g和创办完oracle数据库之后,想用数据库自带的用户scott登录,看看连接是或不是中标。

在cmd命令中,用“sqlplus  scott/ tiger”登录时,老是提醒如下音信:
ERROR:ORA-28000:账户已被锁定。

 但倘若是sys用户,密码必须抬高as
sysdba,即全部密码为:change_on_install as sysdba

1】用 system / toolater 登记系统  manager

2】依次运行以下语句

grant all privileges TO System;

grant connect,resource,dba to System;

alter user scott account unlock;

 

3】sqlplus  scott/ tiger

===================================================================

用实际的演习题来学学呢!(本文使用oracle自带的表:emp表、dept表)

  1. 查询部门30中的雇员音信。

select * from emp where deptno=30;

  1. 询问佣金(comm)高于薪给(sal)的雇员新闻。

select * from emp where comm>sal;

  1. 询问佣金高于报酬60%的雇员新闻。

select * from emp where comm>sal*0.6;

  1. 查询部门10中保有经营(MANAGER)和单位20中所有公务员(CLERK)的信息。

select * from emp where (deptno=10 and job=’MANAGER’) or (deptno=20
andjob=’CLERK’);

5.
查询部门10中具备经营、部门20中持有公务员和既不是主任又不是公务员但薪水大于2000的拥有雇员音信。

select * from emp where (deptno=10 and job=’MANAGER’) or (deptno=20 and
job=’CLERK’) or(job<>upper(‘manager’) and
job<>upper(‘clerk’) and sal>2000);

注:本例中用到字符型函数upper把小写转化为大写
,还要注意不对等<>的用法,不等于还有其它三种(!=和^=)。

  1. 列出富有公务员的真名、编号、部门。

select ename,empno,dname from emp e,dept d where e.deptno=d.deptno
andjob=upper(‘clerk’);

注:本例中用到了多表连接查询。

  1. 询问收取回扣的雇员的不一致工作。

select distinct job from emp where comm>0;

注:distinct用来把重复的破除掉。

  1. 询问佣金低于100的雇员。

select ename from emp where nvl(comm,0)<100;

注:用nvl函数来对为空值的comm举行拍卖,若comm为空,则把空值转化为0来与100比较。

  1. 查询各月最终一天受雇的雇员音信。

select * from emp wherehiredate=last_day(hiredate);

注:那些例子比较有技巧,我们要可以研商。

10.查询工作时限大于25年的雇员信息。

select * from emp where months_between(sysdate,hiredate)/12>25;

注:这里用months_between函数总括雇员工作的总月份。

select * from emp where hiredate<add_months(sysdate,-12*25);

注:日期是力所能及比较大小的,本例中用add_months函数把当下日子统计到25年前。

11.询问唯有首字母大写的雇员姓名。

select ename from emp where ename=initcap(ename);

注:本例中用initcap函数把ename转化为首字母大写的形式来与ename比较。

12.询问正好为6个字符的雇员姓名。

select ename from emp where length(ename)=6;

注:本例中用length函数求ename的尺寸。

13.查询不带‘R’的雇员姓名。

select ename from emp where ename not like ‘%R%’;

注:注意like的用法,%代表0个或七个随机字符,_意味着一个擅自字符。

14.询问所有雇员的全名的前3个字符。

select substr(ename,1,3) from emp;

注:本例中用substr函数提取ename的前三个字符。

15.查询所有雇员姓名并用‘a’替换‘A’。

select replace(ename,’A’,’a’)from emp;

注:本例中用replace函数来把A替换为a。

16.询问所有雇员的人名和工龄满10年时的日期。

select ename as 姓名,add_months(hiredate,12*10)as 工龄满10年时的日期
from emp;

注:本例中要留意列名的重命名,期中as可以省略。

17.询问雇员的新闻,按姓名排序。

select * from emp order by ename;

注:排序就用order by,默许为升序,若要降序,要加desc关键字。

18.按照办事年限查询雇员姓名,并将最老的雇员排在前边。

select ename from emp order by hiredate;

19.查询雇员的姓名、工作、薪水,按工作的降序排序,工作同样时按薪资升序排序。

select ename,job,sal from emp order by job desc , sal;

注:本例中的排序用法大家要牢记嗷!

20.询问所有雇员的姓名和入职的年份和月份,按雇员受雇日所在月排序,将最早年份的排在前边。

select ename as 姓名,to_char(hiredate,’yyyy’)as
年份,to_char(hiredate,’mm’) as 月份 from emp order by hiredate;

注:注意本例中对日期hiredate的拍卖。

21.查询雇员的日薪俸(假定每月30天)。

select ename as 姓名,sal/30 as日薪 from emp;

22.查询在1月份入职的雇员音信。

select * from emp where to_char(hiredate,’mm’)=02;

23.查询每个雇员加入公司的天命。

select ename 姓名,sysdate-hiredate as工作天数 from emp;

注:八个日子相减得出它们之间的命局。

24.询问姓名中富含‘A’的具备雇员姓名。

select ename from emp where ename like ‘%A%’;

25.以年、月、日查询每位雇员的办事年限。

select ename as 姓名,months_between(sysdate,hiredate)/12as
工作年数,months_between(sysdate,hiredate) as 工作月数,sysdate-hiredate
as 工作天数 from emp;

26.查询至少有一个雇员的机构。

select dname from dept where deptno in(select distinct deptno from emp);

注:本例很有技巧,大家多看一分钟,哈哈!

27.查询薪俸比‘SMITH’多的雇员新闻。

select * from emp where sal>(select sal from emp
whereename=’SMITH’);

28.查询雇员姓名以及其一贯上级的全名。

select a.ename as 姓名,b.ename as 上级姓名 from emp a,emp b where
a.mgr=b.empno;

注:本例可以接近的当作多表连接查询,只可是是四个一样的表。

29.询问入职日期早于其直接上级的雇员新闻。

select a.* from emp a,emp b where a.hiredate<b.hiredate
anda.mgr=b.empno;

select * from emp e where hiredate<(select hiredate from emp
whereempno=e.mgr);

注:提供二种做法供我们参考。

30.查询部门名称和那几个部门的雇员以及从未雇员的部门。

select dname,ename from dept d left join emp e on e.deptno=d.deptnoorder
by dname;

注:本例中要专注left join
的用法,就是率先提取dept表中负有的dname,再添加与dapt和emp相匹配的数据项。

31.询问各种办事项目标最低薪给,显示最低薪水大于1500的记录。

select job,min(sal) from emp group by job having min(sal)>1500;

注:按组查询就用group by,having条件在分组后举行。

32.询问报酬高于集团平均薪资的雇员音信。

select * from emp where sal>(select avg(sal) from emp);

33.询问与‘SCOTT’工作同样的雇员音讯。

select * from emp where job=(select job from emp where ename=’SCOTT’);

34.询问某些雇员的人名和薪资,条件是他们的薪酬高于机关30中有着雇员的薪水。

select ename,sal from emp where sal>(select max(sal) from emp
wheredeptno=30);

35.询问某些雇员的姓名和报酬,条件是她们的薪饷高于单位30中任一雇员的薪饷。

select ename,sal from emp where sal>(select min(sal) from emp
wheredeptno=30);

36.询问每个机关的音信以及该机关中雇员的数额。

select d.deptno,dname,count(ename) from dept dleft join emp e
on(e.deptno=d.deptno) group by dname,d.deptno order byd.deptno;

37.询问从事同样种工作但属于不一致机关的雇员新闻。

select a.ename,a.job,a.deptno,b.deptno,b.job,b.ename from emp a,emp
bwhere a.job=b.job and a.deptno!=b.deptno;

38.查询各样部门的COO的最低薪俸。

select deptno,min(sal) from emp where job=’MANAGER’ group by deptno;

39.查询所有雇员的年薪并按年薪排序;

select ename,(sal+nvl(comm,0))*12 as 年薪 fromemp order by 年薪;

40.查询薪俸水平为4的雇员音信。

select * from (select ename,sal,rank() over(order by sal desc) as
gradefrom emp) where grade=4;

注:本例中值得学习的是rank() over()的用法,rank为跳跃排序,若1,1
则接下去就是3.本例就是用rank多多少按sal排序。

相关文章