DML (DQL) 查询语句 (Oracle) --2

本文详细介绍了Oracle数据库的DQL查询语句,包括条件查询、排序、分组、获取所有行记录、函数等内容。讲解了单行和多行函数的使用,以及如何进行子查询、排序和分组操作。此外,还探讨了如何在两张表之间进行查询以及行转列的方法。
摘要由CSDN通过智能技术生成

SQL查询语句 (DQL)

在这里插入图片描述

在这里插入图片描述

SELECT [DISTINCT] {*,column alias,…}

FROM table alias

WHERE 条件表达式

ORDER BY 排序字段列表 [asc|desc]

在这里插入图片描述

在这里插入图片描述

查询所有列

--注释
--查询 select *(通配符)|字段名,字段名... from 数据源;
--执行流程: from --> select

--1)  所有列

--查询|检索|获取 所有员工的所有信息 
--查询的数据: 所有的员工信息
--数据的来源: emp
--条件:
select * from emp; --所有数据的所有字段值
select * from dept;
select deptno,dname,loc from dept;  --推荐

查询所部分列

--2)  部分列
--查询所有的员工名字
select ename from emp;

--3)
--查询所有的员工编号和员工名称,员工上级的编号
select empno, ename, mgr from emp;

--4)
--查询所有员工所在的部门编号
select deptno from emp;

--查询公司所有的部门编号
select deptno from dept;

去重

--5)
--查询出所有有员工存在的部门编号,每个部门编号只出现一次 

--去重distinct
--对结果集中多条所有字段都重复(完全重复)的数据做去重
select distinct deptno from emp;

--6)
--查询出所有存在员工的部门的部门编号,以及员工名称
select distinct deptno,empno from emp;

取别名 :用双引号,原封不动显示。 不用双引号,英文小写变大写,而且别名里面不能有空格。

--7)
--查询表达式  计算器
select 1+1 from dept;
select 123*456 from dept;
select empno,ename,sal,deptno,123*456 from emp;

--8)
--取别名  结果集中的字段   表别名  
--""->原封不动显示
--select 字段名 (as) 别名,字段名 别名,... from 数据源 别名;
select empno,ename,sal,deptno,123*456 from emp;
select empno "no",ename 员工名字,sal as 薪资,deptno "部门      编号",123*456 星球编号 from emp e;

字符串 :使用单引号

--9)
--字符串 
--''
select distinct 'abc' from emp;

select ename from emp;

--10)
--字符串拼接  ||
select 'sxt-'||ename 员工姓名 from emp;

伪类:不存在的列,构建虚拟的列

--11)
--伪列 : 表中不存在字段,但是可以查: 表达式  数值  字符串
select 1 from emp;

虚表 : 用于计算表达式,显示单条记录的值

--12)
--虚表 dual
select distinct 123*456 from emp;
select 123*456 from dual;
select sysdate from dual;

null值运算

--null值和数字 参与 运算结果还是null
--null值和字符串运算,结果为原串 
--处理null  -> nvl(字段,值2)  当字段值不为null,nvl函数最终的结果就为字段值,如果字段值null,函数最终的结果为值2

--13)
--给每一个员工在原来的基础上+1块钱奖金
select empno,ename,sal,comm 原奖金,nvl(comm,0)+1 现奖金 from emp;
select empno,ename,sal,comm 原奖金,comm||'1' 现奖金 from emp;
select nvl(comm,0) from emp;


--查询所有员工的名字, 工种, 年薪(不带奖金)
select ename 员工名字,job 工种,sal*12 "年薪(不带奖金)" from emp;

--查询所有员工的名字,工种,年薪(带12月奖金的)
select ename 员工名字,job 工种,sal*12+nvl(comm,0)*12 "年薪(带12个月奖金)" from emp;

--查询所有员工的名字, 工种, 年薪(带一次奖金的)
select ename 员工名字,job 工种,sal*12+nvl(comm,0)*1 "年薪(带一个月奖金)" from emp;
条件查询

​ --条件查询
–select 数据 from 数据源 where 行过滤条件;
–执行流程: from–>where–>select

where 过滤行记录条件 ,条件有

​ a)、= 、 >、 < 、 >=、 <=、 !=、 <> 、 between and (betweend and 取的左右都是闭区间)

--   = 、 >、 < 、 >=、 <=、

--查询员工名称为SMITH的员工信息
select * from emp where ename = 'SMITH';

--查询30部门的员工信息
select * from emp where deptno = 30;

--查询薪资>1500的员工信息
select * from emp where sal>= 1500;





--   !=、 <>

--查询除了30部门以外的员工信息
select * from emp where deptno != 30;

select 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值