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.询问在2月份入职的雇员信息。

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.查询各个部门的经纪的最低薪金。

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排序。

相关文章