database

去重distinct
结果集中的多条数据完全相同(所有查询的结果中字段的值),才能去重

伪列:不是真实在表结构中存在的字段,但是允许查询,称他们为伪列

别名:(如果别名中存在小写字符、特殊符号、空格等,需“”) ” “表示原封不动使用/显示

给查询的字段起别名:select 字段1(as) 别名1 from 数据源

select 123+456for amp;

给查询的表起别名:select 字段11 from 表 表别名,不能加as

select 123+456 for emp e;
select后可以查询字符串,只有’ '可以 表示字符串

字符串的拼接||,显示的结果每个员工姓名前都有sxt

select 'sxt'||ename "员工名称" from emp;

null值和数字运算,结果还是null

null值和字符串运算,结果是原串

处理null值的函数nvl(字段,值2),如果字段的值为null,结果为值2,如果字段的值不为null,结果还是这个字段的值

select ename,sal,comm "原奖金",nvl(comm,0)+1 "新奖金" from emp;

查询存在佣金|奖金的员工名称

select ename from emp where comm is not null;
select ename from emp where not comm is null;
虚表:不是真实存在的表,没有数据,没有字段 dual
select * from dual;

查询当前的日期 sysdate

select sysdate from dual;

执行顺序:from—Where—select

条件Where

查询20部门的员工信息

select * from emp where deptno = 20;

<>= > < >= <= != <>

查询 岗位 不是 CLERK 员工名称 部门编号,工资

select ename,deptno,sal from emp where job!='CLERK';
select ename,deptno,sal from emp where not job='CLERK';
select ename,deptno,sal from emp where job<>'CLERK';
模糊匹配like ‘%’ 任意个任意字符 “_” 一个任意字符

查询员工姓名中字符A开头员工信息

select * from emp where name like 'A%';

查询员工姓名中包含字符A的员工信息

select * from emp where name like '%A%';

查询员工姓名中第二个字母为A的员工信息

select * from emp where name like '_A%';

集合操作:

–Union,并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;
–Union All,全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序 ;
–Intersect,交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
–Minus,差集(减去重复) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序

查询显示不存在雇员的所有部门号。

select deptno from dept Minus select distinct deptno from emp;
IN

in(值1,值2,值3…结果集) 结果集中的任意一个值只要匹配,就可以

查询工资为 1500, 2000, 2500, 5000的员工的信息

select * from emp where sal=1500 or sal=2000 or sal=2500 or sal=5000;
select * from emp where sal in (1500200025005000);

查询部门名称为 SALES 或 ACCOUNTING的部门编号

select deptno from dept where dname in ( 'SALES' , 'ACCOUNTING');

员工在 ↑部门的员工信息

select *
  from emp
 where deptno in
       (select deptno from dept where dname in ('SALES', 'ACCOUNTING'))

查询 销售部(SALES) 中 工资大于1500的员工信息

select * from emp where deptno = (select deptno from dept where dname = 'SALES') and sal>1500;

查询工资比SMITH高的同一部门的员工信息

select *
  from emp
 where deptno = (select deptno from emp where ename = 'SMITH')
   and sal > (select sal from emp where ename = 'SMITH');
exists() 存在即合法,存在即保留

select * from 表 where exists (结果集);

从from中拿出一条数据,去看where中exists后的结果集是否存在数据,如果有,则当前从from拿出的这条数据就能被保留在select后,如果没有就不保留

当工资有员工薪资>2000的时候,就查询所有的员工信息,如果不存在,就查询不到

select ename, sal
  from emp
 where exists (select ename, sal from emp e2 where e2.sal >= 2000);

与有奖金存在的员工 员工编号相等的员工信息

select empno, ename, sal,comm
  from emp e1
 where exists (select empno, ename, sal, comm
          from emp e2
         where comm is not null
           and e1.empno = e2.empno);

与有奖金存在的员工部门编号相等的员工信息

select empno, ename, sal,deptno
 from emp e1
where exists (select empno, ename, sal, comm,deptno
 from emp e2
 where comm is not null
 and e1.deptno = e2.deptno );

排序

order by 排序字段1,排序字段2…
–select 数据 from 数据源 where 行过滤条件 order by 排序字段 desc降序|asc升序…;
–from–where–select–order by

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值