oracle简单的查询

16 篇文章 0 订阅
6 篇文章 0 订阅

1.oracle简单的查询

1.使用password命令修改密码
password
2.退出sqlplus工具
exit
3.查询当前用户
show user
4.查询hr用户下的所有对象,使用tab表,tab表每个用户下都有,作用是查询该用户都有哪些表
select * from tab;
5.设置显示的列宽(字符型)
column 列名 format a16;
6.设置显示的列宽(数字型)只能用9一个9代表一位
column 列名 format 9999;
7.查看表结构
desc emp;

------------------------------------------select子句-----------------------------------------

8.查询所有内容(*代表通配,表示查询出该表中所有的字段,一般不推荐使用)
SELECT * FROM EMP;
或者
SELECT empno,ename,job,mgr,hiredate,sal,comm,deptno FROM EMP;

9.查询emp表的员工编号,姓名,工资,部门编号
SELECT empno,ename,sal,deptno FROM EMP;

10.查询emp表的不重复的工作
SELECT DISTINCT job FROM emp;

11.查询员工的编号,姓名,月薪,年薪(月薪12)
SELECT empno,ename,sal,sal
12 “年薪” FROM EMP;

12.查询员工的编号,姓名,月薪,年薪,年收入(年薪+奖金)
别名不能使用单引号,因为oracle认为单引号为字符类型或日期类型
select empno 员工编号,ename 名字,sal 月薪,sal12 年薪,sal12+comm 年收入 from emp;

13.解决NULL的问题,使用NVL()函数,NVL(a,b):如果a为null则用b替代,如果a不是null就直接返回a
select nvl(null,10) from dual; – dual为哑表

14.使用dual哑表,使用字符串连接符号||,输出"hello world",在oracle中from是必须写的
select ‘hello’ || ‘world’ from dual;

15.使用sysdate显示当前时间
select sysdate from dual;

--------------------------------------------------where子句:筛选-------------------------------------------------

1.查询EMP表中20号部门的员工
select * from emp where deptno=20;
2.查询员工为SMITH的员工,字符串使用’’,内容大小写敏感
SELECT * FROM emp WHERE ename=‘SMITH’;
3.查询在2003年6月17号入职的员工
select * from emp where hiredate = ‘17-12月-80’;

4.查询工资大于1000美金的员工
SELECT * FROM emp WHERE sal > 1000;

5.查询工资不等于3000美金的员工【!=或者<>】
SELECT * FROM emp WHERE sal <> 3000;

6.查询薪水在1300到1600的员工,包含1300到1600
SELECT * FROM EMP WHERE SAL>=1300 AND SAL<=1600;

SELECT * FROM EMP WHERE SAL BETWEEN 1300 AND 1600;

7.查询薪水不在1300到1600的员工,不包含1300到1600
SELECT * FROM EMP WHERE SAL NOT BETWEEN 4800 AND 9000;

8.查询入职时间在"1981-2月-20"到"1982-1月-23"之间的员工
select * from emp where hiredate between ‘20-2月-81’ and ‘23-1月-82’;
注意:
1)对于数值型,小数值在前,大数值在后
2)对于日期型,年长值在前,年小值在后

9.查询20号或30号部门的员工
SELECT * FROM EMP WHERE deptno=20 OR deptno=30;

SELECT * FROM EMP WHERE deptno IN (20,30);

10.查询不在20或者30号部门的员工
SELECT * FROM EMP WHERE deptno NOT IN (20,30);

11.查询姓名以大写字母S开头的员工
SELECT * FROM EMP WHERE ename LIKE ‘S%’;

12.查询以A开头s结尾的员工

13.查询第二个字母是e的员工

14.模糊查询包含特殊字符(查询的数据中包含_%这样的特殊字符我们使用escape关键字解决)
添加一个带特殊符号的用户,比如tom_qq;注意empno不能重复
insert into emp (empno,ename) values(8888,‘tom_qq’);
查询:
SELECT * FROM EMP WHERE ename LIKE ‘%/_%’ escape ‘/’;

15.添加一个名字为’的用户
insert into emp (empno,ename) values (2222,’’’’);

16.添加一个名字为’‘的用户
insert into emp(empno,ename) values(2222,’’’’’’);

17.查询奖金为null的用户
SELECT * FROM EMP WHERE comm IS NULL;
注意:null不能参数=运算
null能参数number/date/varchar2类型运算

18.查询奖金非null的用户
SELECT * FROM EMP WHERE comm IS NOT NULL;

19.查询无奖金并且工资大于1500的员工
SELECT * FROM EMP WHERE comm IS NULL AND SAL > 1500;

20.查询职位是"MANAGER"或职位不是"ANALYST"的员工(方式一,使用!=或<>)
select *
from emp
where (job=‘MANAGER’) or (job<>‘ANALYST’);

21.查询职位是"MANAGER"或职位不是"ANALYST"的员工(方式二,使用not)
select *
from emp
where (job=‘MANAGER’) or (not(job=‘ANALYST’));

-------------------------------------------------------orderby子句-------------------------------------------------

1.查询员工信息(编号,名字,月薪,年薪),按照月薪排序,默认升序,若月薪相同,按照oracle内置的校验规则排序
select empno,ename,sal,sal12
from emp
order by sal asc;
2.查询员工信息(编号,姓名,月薪,年薪),按月薪降序排序
select empno,ename,sal,sal
12
from emp
order by sal desc;

3.按照入职日期排序
select empno,ename,sal,hiredate,sal12 “年薪”
from emp
order by hiredate desc;
order by后面可以跟列名、别名、表达式、列号(从1开始,在select子句中的列号)
列名:
select empno,ename,sal,hiredate,sal
12 “年薪”
from emp
order by hiredate desc;
别名:
select empno,ename,sal,hiredate,sal12 “年薪”
from emp
order by “年薪” desc;
表达式:
select empno,ename,sal,hiredate,sal
12 “年薪”
from emp
order by sal12 desc;
列号,从1开始:
select empno,ename,sal,hiredate,sal
12 “年薪”
from emp
order by 5 desc;

4.查询员工信息,按佣金升序或降序排列,null值看成最大值
select * from emp order by comm desc;

5.查询员工信息,对有佣金的员工,按佣金降序排列,当order by 和 where 同时出现时,order by 在最后
select *
from emp
where comm is not null
order by comm desc;

6.查询员工信息,按工资降序排列,相同工资的员工再按入职时间降序排列
select *
from emp
order by sal desc,hiredate desc;
select *
from emp
order by sal desc,hiredate asc;
注意:只有当sal相同的情况下,hiredate排序才有作用

7.查询20号部门,且工资大于1500,按入职时间降序排列
select *
from emp
where (deptno=20) and (sal>1500)
order by hiredate desc;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阁下大名

您的鼓励就是我前进的动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值