当前位置:   article > 正文

oracle 单表查询数据,Oracle数据库之单表查询

oracle数据库查询里面包一个查询

接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据。单表查询里面的内容也是比较多的,比如单表查询结合比较运算符、逻辑运算符、以及in not in 、between...and、模糊查找、排序查找、去重查找、空值的处理、any以及all的使用。接下来就看一下关于单表查询的使用吧!

我们这里使用oracle自带的一个用户scrott用户,这个用户在数据库处于锁定状态,我们需要把它给解锁。解锁的sql语句是:

alter user scott account unlock identified by test1;--scott 被锁住 解锁并为scott用户设置登录密码 test1 密码可以随意设置

解锁以后,就可以使用scott下面的表了。我们看一下scott用户下面有哪些表?

c697d3f72c3ca4a40209001d67d113f9a69.jpg

我们先使用sql语句查询一下这个emp张表。

select * from emp;

查询结果如下:

2f27ea76e9a49d4cfc7b67572ff71af646b.jpg

1.结合比较运算符使用

敲笔记: >  大于    < 小于   >= 大于等于   <= 小于等于   != 不等于   <>不等于

--查询工资超过3000的员工select * from emp where sal>3000;--查询工资大于3000且职位是clark的员工select * from emp where sal>1500 or job='ClERK';--查询工资大于1500 或者工资不等于7566的员工select * from emp where sal>1500 or sal != 7566;--查询工资小于1600的员工select * from emp where sal<=1600;

例子:查询工资小于等于1600的员工

select * from emp where sal<=1600;

查询结果:

4c4eb3b83fad6aca25fec8fcaf9088f8f10.jpg

2.结合逻辑运算符使用 and or

敲笔记了:and 优先级大于or and(链接的两个条件都要满足) or(链接的两个条件有一个满足)

先看下使用or进行查询sql

select * fromemp;--查询emp表工资大于3000或者编号大于6000的员工select * from emp where sal>2000 or empno>2000 and empno<6000;

查询结果:

47ebbd278d66386181b454714c2bb0c31eb.jpg

在看使用and查询sql

--查询emp表工资大于3000并且编号大于6000的员工select * from emp where sal>3000 and empno>6000;

查询结果如下:

40ef7ba349fc3d9a16aa5fc7631e57e9009.jpg

3.结合in  not in使用

in  在什么什么里面  not in 不在什么什么里面

--查询工资属于1500 3000 1400员工信息select * from emp where sal in (1500,3000,1400);

查询结果:

b5ad6da73981e2243d73dc1471e9c1ea4db.jpg

not  in 的实例:

--查询工资不属于3000 5000 800的员工信息select * from emp where sal not in (300,5000,800);

查询结果:

2da8786f7c4e24f3127062beb6ea2f19864.jpg

4.结合between...and...使用

between ... and 在什么什么之间

--查询工资在1500-3000的员工信息select * from emp where sal between 1500 and 3000;

查询结果:

c4acd95cc682f5890a75ae184790c7c381d.jpg

在来一个例子:

--查询工资在1500-3000的员工信息且职位是SALESAMAN的员工select * from emp where sal between 1500 and 3000 and job='SALESMAN';

查询结果:

65cebeb7d5c36be59724482b31d9e8e7f8c.jpg

5.模糊查找

%代表通配符。就是可以和任意字符匹配的意思,_ 表示的是匹配一个字符

--查询emp表中的名字包含A的员工信息select * from emp where ename like '%A%';

查询结果:

ba3f7a53115937d1b18c362eb319bf5bf8b.jpg

继续来一个例子:

--查询mgr编号中中以7开头以8结尾的字符的员工信息select * from emp where mgr like '7__8';

查询结果:

c7b7985e008852390f496cb7c97472d9c76.jpg

6.排序查找

order by 是通过什么来排序, 默认是升序排列,也可以使用asc  降序是desc 。

--通过sal排序 默认升序select * from emp order by sal;

查看结果:

4c6764650b1faaa2afc16e2cbcf968f5772.jpg

通过sal排序,默认升序

--通过sal排序 降序排序select * from emp order by sal desc;

查看结果:

e4d96211f3ef00d8bdf6780b8fff293cd29.jpg

7.去重查找

使用distinct  去除重复值

--将job中的salesman进行除去重复select distinct job from emp;

查看结果:

71be407de8ffd02d9c5703142f4e55272fd.jpg

把salesman重复的去掉,只保留一个。在按照ename进行去除重复值:

--将ename去除重复值select distinct ename from emp;

查看结果:

cfd925ecbeb3192a98a04542489e0da5a6f.jpg

去除重复ename值成功,去除就是不显示重复的名字的意思。别把去重理解的太高大上哦~

在演示一个去重失败的例子:

--将job和ename去重,失败,只能去除一个列名select distinct job,ename from emp;

查看结果:

2e7de2e0553306d7e5280abb9dc56ec44ae.jpg

8.空值处理

is null  空值

--查询mgr的值为null的员工信息select * from emp where mgr is null;

查询结果:

9c0a2ef8aaa8ce2d4c578f2c8b6c16be2dc.jpg

is not null不是空值

--查询sal不是null的员工信息select * from emp where sal is not null;

查看结果:

f696cd47c203b4a9eb1e8ae041ff81a813b.jpg

注意:查询空值是is null  而不是 = null

9.结合any和all的使用

--all 表示所有条件都要满足     套路:大于最大值,就满足所有

--all 表示所有条件都要满足--any 表示满足任意一个select * from emp where sal>=all(1500,3000,1000); --大于最大值就满足所有值select * from emp where sal>=3000; --等于于>=all(1500,3000,1000)

查询结果:

e578f7c91b49a2c2ad46c9a0407abc1f683.jpg

--any 表示满足任意一个   套路:大于最小值,就满足所有

select * from emp where sal>=any(1500,3000,1000); --大于最小值,就满足所有

等价于:

select * from emp where sal>=any(1500,3000,1000); --大于最小值,就满足所有select * from emp where sal>=1000; --等价于 >=1000

查询结果:

a1a68dd471fc23f8bb777dc6b235b1b81e8.jpg

关于单表查询,到这里我们就说完了,下一篇给大家分享 关于日期的操作;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/828732
推荐阅读
相关标签
  

闽ICP备14008679号