Oracle 入门到精通Part 3-查询1

表查询(1)

oracle表基本查询
介绍

在我们讲解的过程中我们利用scott用户存在的几张表(empdept)为大家演示如何使用select语句,select语句在软件编程中非常有用,希望大家好好的掌握。
emp
雇员表
clerk 
普员工
salesman
销售
manager 
经理
analyst
分析师
president 
总裁
mgr 
上级的编号
hiredate
入职时间
sal
月工资
comm
奖金
deptno
部门
dept
部门表
deptno
部门编号
accounting
财务部
research 
研发部
operations
业务部
loc
部门所在地点
salgrade  
工资级别
grade   
级别
losal   
最低工资
hisal   
最高工资

简单的查询语句
查看表结构

DESC emp;
查询所有列
SELECT * FROM dept;
切忌动不动就用select *
SET TIMING ON;
打开显示操作时间的开关,在下面显示查询时间。
CREATE TABLE users(userId VARCHAR2(10), uName VARCHAR2 (20), uPassw VARCHAR2(30));
INSERT INTO users VALUES('a0001', '
啊啊啊啊', 'aaaaaaaaaaaaaaaaaaaaaaa');
--
从自己复制,加大数据量 大概几万行就可以了  可以用来测试sql语句执行效率
INSERT INTO users (userId,UNAME,UPASSW) SELECT * FROM users;
SELECT COUNT (*) FROM users;
统计行数
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

 查询指定列
SELECT ename, sal, job, deptno FROM emp;
 
如何取消重复行DISTINCT
SELECT DISTINCT deptno, job FROM emp;
查询SMITH所在部门,工作,薪水
SELECT deptno,job,sal FROM emp WHERE ename = 'SMITH';
注意:oracle对内容的大小写是区分的,所以ename='SMITH'ename='smith'是不同的
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

 使用算术表达式 nvl  null
问题:如何显示每个雇员的年工资?
SELECT sal*13+nvl(comm, 0)*13 "
年薪" , ename, comm FROM emp;
 
使用列的别名
SELECT ename "
姓名", sal*12 AS "年收入" FROM emp;
 
如何处理null
使用nvl函数来处理
 
如何连接字符串(||
SELECT ename  || ' is a ' || job FROM emp;
 
使用where子句
问题:如何显示工资高于3000 员工?
SELECT * FROM emp WHERE sal > 3000;
问题:如何查找1982.1.1后入职的员工?

SELECT ename,hiredate FROM emp WHERE hiredate >'1-1-1982';
问题:如何显示工资在20003000的员工?
SELECT ename,sal FROM emp WHERE sal >=2000 AND sal <= 3000;

 
如何使用like操作符
%
:表示0到多个字符  _:表示任意单个字符
问题:如何显示首字符为S的员工姓名和工资?
SELECT ename,sal FROM emp WHERE ename like 'S%';
如何显示第三个字符为大写O的所有员工的姓名和工资?
SELECT ename,sal FROM emp WHERE ename like '__O%';

 
where条件中使用in
问题:如何显示empno7844, 7839,123,456 的雇员情况?
SELECT * FROM emp WHERE empno in (7844, 7839,123,456);
 
使用is null的操作符
问题:如何显示没有上级的雇员的情况?
错误写法:select * from emp where mgr = '';
正确写法:SELECT * FROM emp WHERE mgr is null;

猜你喜欢

转载自doppp.iteye.com/blog/1775548