五、Oracle表查询一

转载 2015年07月08日 17:38:02

通过scott用户下的表来演示如何使用select语句,接下来对emp、dept、salgrade表结构进行解说。

            
emp 雇员表
字段名称   数据类型       是否为空   备注
--------   -----------   --------   --------
EMPNO    NUMBER(4)                 员工编号               
ENAME    VARCHAR2(10) Y         员工名称       
JOB        VARCHAR2(9)   Y         职位               
MGR       NUMBER(4)       Y         上级的编号           
HIREDATE DATE             Y         入职日期              
SAL         NUMBER(7,2)   Y         月工资           
COMM      NUMBER(7,2)   Y         奖金               
DEPTNO   NUMBER(2)      Y         所属部门
-------------------------------------------
job字段:
clerk 普员工
salesman 销售
manager 经理
analyst 分析师
president 总裁

                

dept 部门表
字段名称    数据类型          是否为空   备注
--------    -----------      --------   --------
DEPTNO   NUMBER(2)                    部门编号              
DNAME    VARCHAR2(14)    Y          部门名称       
LOC         VARCHAR2(13)   Y          部门所在地点
-------------------------------------------
DNAME字段:
accounting 财务部
research 研发部
operations 业务部
 
salgrade 工资级别表
字段名称  数据类型   是否为空  备注
--------  ---------  --------  --------
GRADE   NUMBER     Y         级别               
LOSAL    NUMBER     Y         最低工资              
HISAL     NUMBER     Y         最高工资

                           

1、查看表结构
desc emp;

        

2、查询所有列
select * from dept;
备注:切忌动不动就用select *,使用*效率比较低,特别在大表中要注意。
       
3、set timing on/off;
打开显示操作时间的开关,在底部显示操作时间。
eg、sql> insert into tb_stu values('0001', 'zhangsan', 24);
1 row inserted
executed in 0.015 seconds

              

4、insert into...select...表复制语句
语法:insert into table2(field1,field2,...) select value1,value2,... from table1

--创建tb_dept表
create table tb_dept
(
  deptno number(4) not null,
  dname  varchar2(14),
  loc    varchar2(13)
)
--添加主键约束
alter table tb_dept add constraint tb_dept primary key (deptno);

--insert into...select...用法
insert into tb_dept (deptno, dname, loc) select a.deptno, a.dname, a.loc from dept a;

           

5、统计
select count (*) from emp;

               

6、查询指定列
select ename, sal, job, deptno from emp;

            

7、如何取消重复行distinct
select distinct deptno, job from emp;

              

8、查询smith所在部门,工作,薪水
select deptno, job, sal from emp where ename = 'smith';
注意:oracle对内容的大小写是敏感的,所以ename='smith'和ename='smith'是不同的

             

9、nvl函数
格式为:nvl(string1, replace_with)   
功能:如果string1为null,则nvl函数返回replace_with的值,否则返回string1的值。  
注意事项:string1和replace_with必须为同一数据类型,除非显示的使用to_char函数。  
eg、如何显示每个雇员的年工资?
select sal*13+nvl(comm, 0)*13 "年薪" , ename, comm from emp;

               

10、使用列的别名
select ename "姓名", sal*12 as "年收入" from emp;

              

11、如何处理null值
使用nvl函数来处理

              

12、如何连接字符串(||)
select ename || ' is a ' || job from emp;

                 

13、使用where子句
问题:如何显示工资高于3000的员工?
select * from emp where sal > 3000;
问题:如何查找1982.1.1后入职的员工?
select ename,hiredate from emp where hiredate >'1-1 月-1982';
问题:如何显示工资在2000到3000的员工?
select ename,sal from emp where sal>=2000 and sal<=3000;

                

14、如何使用like操作符
%:表示0到多个字符 _:表示任意单个字符
问题:如何显示首字符为s的员工姓名和工资?
select ename,sal from emp where ename like 's%';
如何显示第三个字符为大写o的所有员工的姓名和工资?
select ename,sal from emp where ename like '__o%';

                

15、在where条件中使用in
问题:如何显示empno为7844,7839,123,456的雇员情况?
select * from emp where empno in (7844, 7839, 123, 456);

          

16、使用is null的操作符
问题:如何显示没有上级的雇员的情况?
错误写法:select * from emp where mgr = '';
正确写法:select * from emp where mgr is null;

Oracle基础(五):多表查询

一、多表查询 (一)简单多表查询 1、多表查询的机制 1)SQL: SELECT * FROM emp; --14条记录 SELECT * FROM dept;--4条记录 SELECT * FRO...

Oracle数据库(五)多表查询

SQL> --等值连接 SQL> --查询员工信息:员工号 姓名 月薪 部门名称 SQL> desc dept 名称 ...

Oracle学习(五):多表查询

1.知识点:可以对照下面的录屏进行阅读 SQL> --等值连接 SQL> --查询员工信息: 员工号 姓名 月薪 部门名称 SQL> select empno,ename,sal,dname ...

Oracle学习(五)----多表查询

select * from table1, table2 where ...... order by ...... group by ...... having ...... 多表查询(重点) 1...

Oracle表的常用查询实验(五)

1.问题描述: test表中有ID(人员编号),A(考核标准),B(实际得分),C(课程编号)四个字段,一个ID可能会有多个科目的评分,如果一个ID中存在A=B,则合格,求合格的人员编号。 2.需求...

oracle备忘录(五)--多表查询

SQL> 外连接: SQL> 左外连接: 当where e.deptno=d.deptno不成立的时候,等号左边所代表的表 任然被包含 SQL> 写法: where e.deptno=...

Oracle数据库的查询之多表查询(五)

一.多表连接的基本查询 使用一张以上的表做查询就是多表查询 语法: SELECT {DISTINCT} *|列名.. FROM 表名 别名,表名1 别名 {WH...

oracle系统表查询

  • 2014年11月02日 22:58
  • 288KB
  • 下载

Oracle(五)--> 高级子查询(二)

一、相关子查询 相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。 例:若 employees 表中 employee_id 与 job_history 表中 emp...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:五、Oracle表查询一
举报原因:
原因补充:

(最多只允许输入30个字)