三、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) |
所处位置 |
-
查看表结构
desc dept;
-
查询所有列
select * from dept;
-
查询指定列
select ename,sal,job,depno from emp;
-
取消重复行
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; |
-
使用算数表达式,使用列的别名
显示每个雇员的年工资
select ename "姓名", sal*12+comm*12 "年收入" from emp;
但是计算结果有问题,所有工资comm字段为null的记录,年收入全部为null
-
如何计算null值?
使用nvl函数来判断是不是空值
select ename "雇员", sal*12 + nvl(comm, 0)*12 "年收入" from emp;
-
使用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;
-
在where中使用in
如何显示员工编号是101或者220或者340的员工
select * from emp empno in (101,220,340);
-
使用like操作符
% : 表示任意0到多个字符
_ : 表示任意1个字符
如何显示首字母为S的员工姓名和工资
select ename, sal from emp where ename like 'S%';
如何显示第三个字符为大写O的所有员工的姓名和工资
select ename, sal from emp where ename like '__O%';
-
使用is null , is not null 操作符
如何显示没有上级雇员的信息
select ename from emp where mgr is null;
-
使用逻辑操作符号
查询工资高于500或者是岗位为Manager的雇员,同时还要满足他们姓名的首字母为大写字母J
select * from emp where (sal>500 or job='Manager') and ename like 'J%';
-
使用order by子句排序
如何按照工资从低到高的顺序显示雇员信息
select * from emp order by sal asc;
如何按照部门号升序而雇员的工资降序排列
select * from emp order by deptno asc, sal desc;
-
使用列的别名排序
select * from emp where (sal+nvl(comm,0))*12 "年薪" from emp order by "年薪";
-
分页查询
先学子查询!
作者:樊勇
出处:http://www.cnblogs.com/fanyong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
我的联系方式:fanyong@gmail.com
个人独立博客:www.fy98.com