三、Oracle的简单查询

Oracle的表查询

前提:搞清楚scott的几张表的含义

EMP:雇员表

字段

类型

注释

EMPNO

 

员工编号

ENAME

 

员工姓名

JOB

 

员工职位

MGR

 

上级编号

HIREDATE

 

入职日期

SAL

 

薪水

COMM

 

奖金

DEPTNO

 

部门编号

 

 

 

DEMP:部门表

字段

类型

注释

DEPTNO 

NUMBER(2)

部门编号

DNAME 

VARCHAR2(14)

部门名字

LOC 

VARCHAR2(13)

所处位置

 

SALGRADE:工资级别表

字段

类型

注释

DEPTNO 

NUMBER(2)

部门编号

DNAME 

VARCHAR2(14)

部门名字

LOC 

VARCHAR2(13)

所处位置

 

 

  1. 查看表结构

desc dept;

  1. 查询所有列

select * from dept;

  1. 查询指定列

select ename,sal,job,depno from emp;

  1. 取消重复行

select distinct deptno from emp;

举例:查询smith的薪水,工作和所在部门。

select sal,job,deptno from emp where ename='smith';

 

举例:

创建一张表:

create table users(

userid varchar2(20),

userName varchar2(30),

userPass varchar2(20)

);

插入数据:

insert into users values('a0001', '王二小哈哈哈哦', 'fanyong@gmail.com');

赋值数据:把自己的数据加入到自己的表中:

insert into users(userid, userName, userPass) select * from users;

每次插入后数据量都是上一次的一倍,

查询记录行数:

select count(*) from users;

 

  1. 使用算数表达式,使用列的别名

显示每个雇员的年工资

select ename "姓名", sal*12+comm*12 "年收入" from emp;

但是计算结果有问题,所有工资comm字段为null的记录,年收入全部为null

  1. 如何计算null值?

使用nvl函数来判断是不是空值

select ename "雇员", sal*12 + nvl(comm, 0)*12 "年收入" from emp;

  1. 使用where子句

如何显示工资高于3000的员工:

select ename,sal from emp where sal>3000;

如何查找1982年1月2号以后入职的员工

select ename, hiredate from emp where hiredate>'2-1月-1982';

如何显示工资在2000到2500之间的员工

select ename, sal from emp where sal>2000 and sal<2500;

  1. 在where中使用in

如何显示员工编号是101或者220或者340的员工

select * from emp empno in (101,220,340);

  1. 使用like操作符

% : 表示任意0到多个字符

_ : 表示任意1个字符

如何显示首字母为S的员工姓名和工资

select ename, sal from emp where ename like 'S%';

如何显示第三个字符为大写O的所有员工的姓名和工资

select ename, sal from emp where ename like '__O%';

  1. 使用is null , is not null 操作符

如何显示没有上级雇员的信息

select ename from emp where mgr is null;

  1. 使用逻辑操作符号

查询工资高于500或者是岗位为Manager的雇员,同时还要满足他们姓名的首字母为大写字母J

select * from emp where (sal>500 or job='Manager') and ename like 'J%';

  1. 使用order by子句排序

如何按照工资从低到高的顺序显示雇员信息

select * from emp order by sal asc;

如何按照部门号升序而雇员的工资降序排列

select * from emp order by deptno asc, sal desc;

  1. 使用列的别名排序

select * from emp where (sal+nvl(comm,0))*12 "年薪" from emp order by "年薪";

  1. 分页查询

先学子查询!

posted on 2013-01-31 21:44  Frank.Fan  阅读(663)  评论(0编辑  收藏  举报