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;
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 between…and… 不在…之间
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:显示empno为7844,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;
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;