1009.oracle中SQL查询语法

select * from user_tables;
user_tables 是Oracle 的数据字典,查看当前账户Scott拥有的信息
select * from emp where ename=’SMITH’;
SELECT * FROM EMP WHERE ENAME=’SMITH’;
sql 语句不区分大小写,where条件区分大小写;Oracle语句可以不用分号
SQL语句分号结尾,半角。
 
select * from emp;  *不要随便用,数据太多,运行不完。
*是查看员工表的所有列,没有where条件查看所有行。
select empno,sal from emp; --逗号算连接符
 
1、查看表结构 
desc emp;查看表的字段
0
employee 员工
empno员工编号
ename员工姓名
job 职位
mgr员工上级
hiredate雇佣日期
sal薪水
comm.提成/奖金
deptno部门编号
0
deptno 部门编号  主键
dname部门名称
loc地点
0
grade 工资等级
losal低范围
hisal高范围
0
 
②查询语句
   单条件条件查询
select * from emp where sal<2000;查看工资低于2000的的所有员工信息。
select * from emp where ename=’SMITH’;查看姓名是SMITH的员工的所有信息
SELECT*FROM EMP WHERE ENAME='simth';where 语句区分大小写(数据的大小写)。
   查询排序
select * from emp order by sal;查看所有员工的工资,并按由低到高排序。
select * from emp order by sal desc;查看所有员工的工资,并按由高到低排序。
select * from emp order by 6;查看所有员工的工资,并按由高到低排序。(sal在第6列) 
select empno from emp order by 1。
select empno from emp order by 2。
select的后面只有一个字段“empno”所以按第二个字段排序会报错。* 会包含所有字段,如emp的8个字段,如果按第九个字段排序也会报错,因为第九个字段不存在。 
select * from emp order by deptno,sal desc;按部门编号一级排序(升序),再按薪水二级排序(降序)。
0
select*from emp orderby deptno desc,sal;一级降序,二级升序;
0
     组合条件查询
select*from emp where job='CLERK'and sal>1000;查看工资大于1000并且职位是CLERK的员工
0
select*from emp where job='MANAGER'or sal>3000;查看工资大于3000或者职位是经理的员工
0
select*from emp where job='MANAGER'or(sal>=3000and deptno=20);
括号里面是一个整体,优先运行。
0
  查询字段处理 
select ename,sal,sal*10  from emp;sal*10不是emp中的列,sal才是,只有数据字段可以参与运算。
0
select ename,sal,sal  from emp;
0
select ename*2,sal,sal  from emp;会报错。
select ename,sal,sal*(1+0.2)as新工资 from emp;
0
select ename,sal,sal*(1+0.2) as 新工资 from emp;给sal*(1+0.2)取别名,as可以省略。
select ename,sal,sal*(1+0.2) 新工资 from emp;
0
select ename,sal,sal*(1+0.2)as“新工资” from emp;别名可以用双引号,但不能用单引号。(别名中没有出现引号)
0
select e.ename, e.empno ,e.sal from emp e;给表去别名。
取别名之后要引用列,使用别名.列名。如select e.* from emp e;
0
select '员工编号是:'||empno 员工编号,'员工姓名是:'||ename 员工姓名 from emp;双竖线是连字符
0
   去重查询
去重复查询结果distinct (位于所有查询字段的前面,两行所有查询字段重复才会去重)
selcet deptno from emp;
select distinct deptno from emp;--distinct去重复,常用这个。
select unique deptno from emp;--去重复也可以用unique,见得少
0
group by分组
select deptno from emp groupby deptno;group by 也可以去重复。
0
分组是算法:根据你group by的列里面的相同的值进行分组,可以多个列。
select deptno,count(*)from emp groupby deptno;每个部门有多少个员工,先分组再统计
0
selectcount(sal)from emp; 
0
 selectcount(*)from emp;求表的总行数
0
select deptno ,max(sal)from emp groupby deptno;
0
select deptno ,min(sal)from emp groupby deptno;
0
组合分组:分组可以是多个列
select deptno,job,count(*)from emp groupby deptno,job;
根据deptno和job组合起来分组
0
SQL是一行一行处理的。
select deptno,avg(sal) from emp group by deptno having(avg(sal)>2000);等价语句
先执行分组查询,还是having???
是先分组,再having
select * from(
       select deptno,avg(sal) avg_sal from emp group by deptno
       )where avg_sal>2000;
先分组,再查询,再条件查询
0
 
posted @ 2021-01-12 00:15  bufuzhou  阅读(129)  评论(0编辑  收藏  举报