3.基本SQL 查询语句
语法:
select [all|distinct]<目标列表表达式>
from<表名或视图名>
[where<条件表达式>]
[group by <列名1> having <条件表达式>]
[order by <列名2>asc|desc];
【1】如果有order by 子句,则结果要按照<列名2>的升序或
降序排序(默认是升序排列)
oracle 默认实例库(安装的时候默认已经安装上)
就自带有一些表,我们可以利用主要的是:
EMP ,DEPT ,SALGRADE表
select * from emp;
说明:我们在开发使用中,不建议使用*
*指的是列出所有的列
会去查询数据
数字字典,反而耗时应该要查询哪些列,直接列出即可
select deptno ,dname,loc from dept;
<3>注意:
在开发中,建议只列出自己所需要的列这样可以减少IO
的操作提高效率
<4>去除出重复的列distinct
从员工得部门的部门编号
select deptno from emp;(好多重复得deptno)
select distinct deptno from emp;
<5>表达式的应用
[1]查看所有员工的姓名和年工资
select ename ,sal*12 from emp;
[2]查询员工的名字和月收入(假设奖金每月是300 )
select ename ,sal+300 from emp;
<6>别名的应用
select ename,sal* 12 as nianshouru from emp;
as 可省略
建议使用别名可以提高检索效率;
4.限制条件的查询
select *|distinct 列名,表达式 别名
from 表名
where 子句
order by 子句;
【1】如果有order by 子句,则结果要按照<列名2>的升序或
降序排序(默认是升序排列)
[1]查询雇员的名字,薪水并按雇员的薪水进行排序(从低到高)
select ename , sal from emp order by sal asc;
select ename , sal 工资 from emp order by sal;(默认是升序)
select ename , sal 工资 from emp order by 2;(根据第二列)
[2]查询雇员的名字,薪水,并按照雇员的名字升序,薪水降序排序
select ename ,sal 工资 from emp order by ename asc ,sal desc;
【2】where
[1]查询名字为KING的薪水
select ename ,sal from emp where
ename = ‘KING‘;要用单引号
[2]查询薪水不等于3000的雇员的名字和薪水
select ename ,sal from emp where sal !=3000;
select ename , sal from emp where sal<>3000;
select ename,sal from emp where sal not in(3000);
[3] 查询薪水大于等于1000小于等于3000的雇员的姓名薪水
select ename ,sal from emp where sal >=1000 and sal <=2000;
或者
select ename ,sal from emp where sal between 1000 and 2000;
(not between)
[4]查询薪水大于3000或小于1000的雇员的姓名和薪水
select ename ,sal from emp where sal <=1000 or sal >= 3000;
[5]查询薪水等于1000或3000的雇员的姓名和薪水
select ename ,sal from emp where sal =1000 or sal = 3000;
注意:此处是=号而不是==
或者
select ename,sal from emp where sal in(1000,3000);
[6]查询87 年入职的员工的姓名和薪水
模糊查询
select enamel ,sal,hiredate from emp where hiredate
like ‘%87%‘;
其中:%代表0或多个字符;
[7]查询名字以K 打头的人的相关信息
select ename,sal from emp where ename like ‘K%‘;
[8]查询名字包含A字母的雇员信息
select ename ,sal from emp where ename like ‘%A%‘;
[9]查询名字第二个字母是Z的雇员信息
select ename,sal from emp where enem like ‘_Z%‘;
其中_代表任意一个字符
[10]查询入职日期是87年5月23日的员工姓名和薪水
默认的日期格式:‘23-5-87‘代表1987年5月23
将来可以修改日期格式
select ename ,sal from emp where hiredate = ‘23-5月-87 ‘;
[11]查询入职日期在87年5月23日到89年入职的雇员工资
(也可以查询在某个区间的)
select ename ,sal from emp
where hiredate>=‘23-5月-87‘and hiredate<=‘23-5月89‘;
[12]查询奖金为null的员工的姓名和薪水
is null/is not null;
select ename ,sal 工资 from emp
where comm is null;
[13]查询部门编号为20的雇员信息,并按薪水升序排序
select ename ,sal deptno from emp
where deptno = 20 order by sal;
[14]转义字符的应用
select ename ,sal from emp where ename
like ‘\_S%‘;
[15]格式控制输出:
按右边指定格式输出(SMITH is a CLERK)
||进行拼接操作
select ename || ‘ is a ‘ ||job
from emp
where job = ‘CLERK‘and ename = ‘SMITH‘;