9.oracle简单表查询

EMP 雇员表员工表

 EMPNO      员工编号

 ENAME      员工姓名

 JOB         工种

注:CLERK(普通员工) SALESMAN(销售员) MANAGER(经理) ANALYST(分析师) PRESIDENT(总裁)

 MGR        上级编号

 HIREDATE    入职日期

 SAL         工资

 COMM      奖金/佣金

 DEPTNO     部门编号

 

DEPT 部门表

 DEPTNO 部门编号

 DNAME   部门名称

 LOC     部门所在地

SALGRADE 工资级别表

 GRADE   级别

 LOSAL   最低工资

 HISAL   最高工资

简单的表查询

注意:oracle语句是不区分大写小的,但是存储的数据是区分大小写的

查看表中所有列

Select  *  from  表名

Eg: 查看emp表中所有数据

select  *  from emp;

查询表中指定列

Select  1,2,..N  from   (相对于查看所有列,查看指定列效率更高)

Eg:查看雇员的员工编号和姓名

Select  empno,ename  from  emp;

给查出的列取别名

Select  1[as]别名1, ..N[as] 别名N  from   

 

 

查询当前的系统时间

Select  sysdate  from  dual;(dual测试表,主要用来测试oracle函数)

带条件的查询

(sql语句不区分大小写,但是表中存储的数据区分大小写)

Select  *   from  emp  where  job=’CLERK’;

比较操作符

=><>=<=!=<>any(任一)、all(全部)

查询薪水高于3000的员工信息(包含3000

Select  *  from  emp  where  sal>=3000;

查询薪水不等于3000的员工信息

Select  *  from  emp  where  sal!=3000;

Select  *  from  emp  where  sal<>3000;

 查询薪水等于3000,或等于1250的员工信息

Select  *   from   emp   where  sal=any(3000,1250);

查看薪水不等于3000,并且不等于1250的员工信息

Select  *   from   emp   where  sal!=all(3000,1250);

算数运算符

eg:查询出emp表中每个员工的姓名和年薪(不计算奖金)

select  ename,sal*12  from  emp;

eg:查询出emp表中每个员工的姓名和年薪(计算奖金)
当算数运算遇到空(null)时,计算结果会变为空

nvl(x,y)判断x的值是否为空(null),如果为空则返回y,如果不为空返回x

select  ename,12*(sal+nvl(comm,0))  from  emp;

select  ename  as  姓名,12*(sal+nvl(comm,0)) 年薪 from  emp;

 

使用逻辑操作符and or not

eg:查询出工资高于3000或者岗位为manager的员工信息
select  *  from  emp  where  sal>3000  or  job=’MANAGER’;

eg:查询出岗位为manager的且在10号部门的员工信息

select  *  from  emp  where  job=’MANAGER’  and deptno=10;

eg:查询出不在10号部门的manager

select  *   from  emp  where  deptno!=10;

select  *   from  emp  where  deptno<>10;

select  *   from  emp  where  not   deptno=10;

eg:找出部门10中所有经理和部门20中所有办事员以及既不是经理又不是办事员但其薪金大于或等于2000

select *  from  emp  where ( deptno=10 and job=’MANAGER’) or (deptno=20 and job=’CLERK’) or(job!=all(’ MANAGER’,’ CLERK’) and sal >=2000);

模糊查询

Between and 之间

Not betweenand 不在之间

eg:emp表工资在2000-3800之间。

Select  *  from  emp  where  sal>=2000  and  sal<=3800

Select  *  from  emp  where  sal  between  2000   and  3800

Like 像(主要用于字符串的模糊查询)

Like  _   % 连用联用

_: 代表任意一个字符 %: 代表任意N个字符

Not like

eg:查询出姓名第二个字母为A的员工信息

select  *  from  emp  where  ename  like  ‘_A%’;

eg:职工名字第一个是S的。

Select   *  from  emp  where  ename  like  ‘S%’

eg:职员最后一个字母是H

Select   *  from  emp  where  ename  like  ‘%H’

In

In()  满足()中任一条件就行

Not  in

eg:显示empno7844,7839,123,456的雇员情况。

Select   *  from   emp  where  empno=7844  or  empno=7839  or  empno=123  or empno=456;

Select  *  from  emp  where  empno=any(7844,7839,123,456);

Select  *  from  emp  where  empno  in (7844,7839,123,456);

Is null    is not null

eg:查找没有上级的雇员。

Select  *  from  emp  where  mgr  is  null;

字符串的连接

Select  ‘a’||’b’  from  dual;

 

查找不同结果数据(不重复 distinct

 

合并查询数据

Union   合并不重复的数据

union all  合并所有数据

(使用的时候要注意,合并的查询数据列的个数要对应上,列的数据类型要对应上)

(可以把不同表的查询结果合并起来)

eg:找出部门10中所有经理和部门20中所有办事员以及既不是经理又不是办事员但其薪金大于或等于2000

select * from emp where deptno=10 and job=’MANAGER’

union

select * from emp where deptno=20 and job=’CLERK’

union

select * from emp where job!=all(‘MANAGER’,’CLERK’) and sal>=2000;

 

 

你可能感兴趣的:(9.oracle简单表查询)