您的位置:首页 > 数据库 > Oracle

oracle基础-基本的查询,以及pl/sql登录

2016-12-23 19:28 543 查看
刚刚接触oracle,尽管也是关系型数据库,但是和mysql也有一定的差别,刚刚开始学就被一些专有的名词搞的头晕,今天登录pl/sql的时候半天找不到scott这个用户的信息,后来登录了半天发现密码出现了问题,培训老师问作业做的怎样了,看我还没登录进去,说大家遇到问题一定要勇敢的问,不要害羞,好吧,我害羞了。下次不会了。不扯了,今天我们首先看看oracle通过pl/sql怎么登录,首先我们应该在安装好oracle的时候,会有几个默认的用户,比如sys,system等等,现在我们就用sys进行登录:

密码是我们在安装oracle的时候自己创建的,这个是我们的登录界面,我们在使用pl/sql的时候还要使得这个软件和oracle连接起来,这个需要配置一个ora文件:(F:\Plsql\PLSQL Developer)

上面的是基本的工作配置工作,我们通过sys登录之后会有,就可以输入一些命令来实现我们在数据表中的查询工作

我们可以给变scott这个用户的AcCount_status,具体怎样改变,

alter user scott account unlock,密码是tiger,这样我们可以重新的登录plsql,这个时候

:连接为:normal

上面这些工作做好之后我们就可以做一些操作了,因为在scott用户下有默认的四张表:

下面是一些我的基本操作:

--查询姓名中首字母为"A"或者是第二个字符为"A"的员工的信息

--select * from emp where (ename like '_A%')or(ename like 'A%');

/*select * from user_tables;

select * from user_tables;

select * from emp;

这个是查找岗位不在CLERK中的

select * from emp where job<>'CLERK';

在oracle中需要注意到的是当查找的条件在为字符类型的时候应该加上单引号,或者说只能加上单引号

当两个条件为并的关系的时候是使用的and链接,当两个条件为或的关系的时候是采用的or进行链接

select * from emp where job<>'clear' and job<>'salesman' and deptno=20 or deptno=30;

select * from emp;

查找入职年月为1981开头的

select * from emp where to_char(hiredate,'yyyy-mm-dd') like '1981%';

select * from emp where to_char(hiredate,'yyyy-mm-dd') like '1981%' and sal between 2500 and 3500;

这个地方问我们需要注意的是判断comm是否为空时时用到的comm is null

而且我们在oracle中也可以将数组转换成为字符串

select * from emp where to_char(hiredate,'yyyy-mm-dd') like '1981%' and sal between 2500 and 3500 and comm is null;

select * from emp where to_char(hiredate,'yyyy-mm-dd') like '1981%' and sal between 2500 and 3500 and to_char(comm) is null;

刚才是不允许分组的出现,现在原来聚合函数应该放在select的后面

查找员工的信息,需要保证的是基本工资是在平均工资以上

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

/*查找平均工资小于2000的部门用到的关键字是having,要知道的是这个关键字的后面是可以用聚合函数的

*/

 

/*查找出平均工资在大于2000
的部门的信息

要知道的是oracle里面的字符是区分大小写的

select * from dept where deptno in(select deptno from emp group by deptno having avg(sal)>2000);

*/

/*

查找WARD的工作所在地

select loc from dept where deptno in(select deptno from emp where ename='WARD');

*/

/*

查找出工资比ADAMS高的所有人的姓名,部门和所在地

select tmp.ename,dept.dname,dept.loc from (select * from emp where sal>(select sal from emp where ename='ADAMS')) tmp left join dept on tmp.deptno=dept.deptno;

*/

/*

查找工资排名第7的员工的信息

select * from (select * from(select  * from emp order by sal desc)where rownum<=7 order by sal) where rownum<=1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle plsql