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