---单表的查询学习
--查询表的所有数据 select * from 表名;*代表所有
select * from emp;
--查询表中指定字段的值 select 字段名1,字段名2,...from表名
select empno from emp;
select empno,ename from emp;
--给查询结果中的字段使用别名
--在字段名后使用关键字 字段名 as "别名"
--作用:方便查看查询结果
--注意:as关键字可以省略不写,别名中没有特殊字符双引号也可以省略不写。
select empno 员工编号,ename"员工 姓名",job as 工作,mgr as "领导编号" from emp;
--连接符:select 字段名||'字符'||字段名||..... from 表名
--||为sql语句的字符链接符,使用在select和from之间
--字符链接格式为 字段名||'字符'||字段名
--注意:一个拼接好的连接在结果集中是作为一个新的字段显示,可以使用别名优化字段显示。
select empno||'的姓名是'||ename as"信息",job||'哈哈'||mgr from emp;
--去除重复 select distinct 字段名,字段名,...fromn 表名
---注意:去除重复的规则是按照行进行去除的,多行数据完全相同取其一
select distinct job ,mgr from emp;
--排序
--单字段排序
--select * from 表名 order by 字段名 asc 升序排序 asc可以省略不写
--select * from 表名 order by 字段名 desc 降序序排序
--多字段排序
--select * from emp order by 字段名1,字段名2...
--先按照字段1排序,如果字段1的值相同,则按照字段2排序,....
select * from emp order by empno desc--单字段排序 降序
select empno,ename,job from emp order by ename asc--单字段排序 升序
select * from emp order by empno,ename--多字段排序
--字段的逻辑运算
--select关键字和from关键字之间的字段可以直接进行四则运算
--字段与字段之间也可以直接进行运算
--注意:字段值为数值类型
select * from emp
select empno,ename,job,sal*2+1000,sal+comm from emp
-----------------------------------------------------------------
--使用where子句查询筛选
--select 字段名,字段名,...from表名 where 筛选条件
--单筛选条件
--使用运算符进行筛选 =,>,>=,<,<=,<> 单个条件中
--注意:如果条件中的值为字符,必须使用单引号括起来
--查询所有的员工的工资信息
select empno,ename,sal+comm as 薪资 from emp
--查询SMITH的个人信息
select * from emp where ename='SMITH'
--查询SMITH的薪资信息,逻辑运算符=
select empno,ename,sal,sal+comm from emp where ename='SMITH'
--查询工资大于1000的员工信息,逻辑符>
select * from emp where sal>'2000'
--查询工资不等于3000的员工信息
select * from emp where sal<>3000 order by sal
--练习:
--查看工资等于1250的员工信息
select *from emp where sal='1250'
--查看工作等于CLERK的员工信息
select * from emp where job='CLERK'
--查看工资大于1250的员工姓名和工作
select ename,job from emp where sal>1250
--查看工资大于等于2000的员工信息
select * from emp where sal>=2000;
--查看工资小于等于2000的员工信息;
select * from emp where sal<=2000;
--查看工资不等于1500的员工信息
select * from emp where sal<>1500;
--查看入职日期在81年后的员工信息
--注意:oracle默认的日期格式为 日-月-年,示例'03-1月-1981'
select * from emp order by hiredate
select * from emp where hiredate>='01-1月-1981' order by hiredate
--多条件筛选(where子句关键字:and,or,like,is null,is not null, in ,between and)
--查询工资在2000-3000之间的员工信息
--使用and关键字,多条件同时成立的筛选使用and关键字进行条件连接
select * from emp where sal>=2000 and sal<3000
--使用between and 关键字进行条件连接,包含两头的数据
select * from emp where sal between 2000 and 3000
--查询工作为SALESMAN,ANALYST,MANAGER的员工信息
--使用or关键字,进行或条件的筛选。
select * from emp where job='SALESMAN' or job='ANALYST' or job='MANAGER' order by job
--使用in关键字,也可以进行或筛选,但是in中的内容只能为一个字段的值。
select * from emp where job in('SALESMAN','ANALYST','MANAGER')
--查询姓名中包含s的,以s开头的,以s结尾的,第二个字符为A的。(模糊查询)
--%号表任意多个的任意字符
--select * from 表名 where 字段名 like '%字符%' 查询包含指定字符的数据
select * from emp where ename like '%S%' --包含s的
--select * from 表名 where 字段名 like '字符%' 查询以指定字符开头的数据
select * from emp where ename like 'S%'--以S开头
--select * from 表名 where 字段名 like '%字符' 查询以指定字符结尾的数据
select * from emp where ename like '%S'--以S结尾的
--select * from 表名 where 字段名 like '_字符%' 查询指定位置为指定字符的数据
--_表示一个任意字符
select * from emp where ename like '_A%'--第二个字符为A的
--select * from 表名 where 字段名 like '%字符2字符1%' escape'字符2'
--escape将指定的字符变为转义字符
--转义字符可以将特殊字符转为普通字符
select * from emp where ename like '%/_%' escape '/'

select * from emp for update
--查询有津贴的员工信息
-- select * from 表名 where 字段名 is null 字段值为null
-- select * from 表名 where 字段名 is not null 字段值不为null
--多个条件使用and关键进行连接,筛选的是符合所有条件的数据
--select * from 表名 where 筛选条件1 and 条件2 and ....
select * from emp where comm is not null and comm>0

使用group by分组
在多行函数中不能直接使用普通字段,除非group by
在多行函数中不能直接使用单行函数,除非group by
group by学习:
---1、使用group by进行数据分组 select 多行函数,分组字段 from 表名 group by 分组字段
---2、多字段进行分组的时候,按照字段顺序进行分组,第一条件分组完成后,继续使用其他条件依次分组。
---3、group by依然可以和order by 联合使用
---4、可以和单行函数联合进行分组,注意使用了单行函数那么在查询语句中必须也要使用

查询最高工资和员工数
select max(sal),count(*) from emp
查询不同部门的最高工资
select * from emp order by deptno
select deptno,max(sal) from emp group by deptno--使用group进行分组查询,分组的字段可以出现在查询中,其他字段依然不可以
查询不同工作岗位的员工数
select * from emp for update
select lower(job),count(*) from emp group by lower(job)--使用单行函数进行分组
查询不同部门的不同工作岗位的人数
select deptno,job ,count(*) from emp group by deptno,job--使用多字段组合进行分组
select deptno,job ,count(*) from emp group by deptno,job order by deptno
查询不同部门的不同工作岗位的并且人数大于1的信息
select count(*) from emp where count(*)>3 group by deptno
select deptno,job ,count(*) from emp where count(*)>1 group by deptno,job order by deptno
查询部门号大于10的不同部门的不同工作岗位的人数
select deptno,job ,count(*) from emp where deptno>10 group by deptno,job order by deptno
使用having进行分组后筛选
having学习:
--1、使用group by分组后在进行数据筛选的时候,where中不能出现多行函数,所以使用新的关键字having进行条件筛选
--2、where条件筛选的执行顺序:from-->where--->group -->select
--3、having条件筛选的执行顺序:from-->group by -->having-->select
--4、where的执行效率比having要高,能使用where的情况下尽量不要使用having

查询不同部门的不同工作岗位的并且人数大于1的信息
使用where语句进行筛选
where条件语句sql执行顺序:from-->where--->group -->select
select count(*) from emp where count(*)>1 group by deptno,job
使用having语句进行筛选
having条件语句的执行顺序:from-->group by -->having-->select
select deptno, count(*) from emp group by deptno having count(*)>5
select deptno,job ,count(*) from emp group by deptno,job having deptno>10 order by deptno

  

oracle--单表查询的更多相关文章

  1. Oracle - 单表查询相关

    -- 单表查询 -- 查询表的所有数据, *代表所有 -- select * from [表名]; -- 查询表中指定字段的值 -- select [字段1], [字段2] ... from [表名] ...

  2. Oracle单表的简单查询

    Oracle单表的简单查询 查看表结构 desc emp; 查询所有列 Select * from emp; 查找所以部门编号(查指定的列) select deptnofrom emp; 查找编号不同 ...

  3. Oracle单表的复杂查询

    Oracle单表的复杂查询 select avg(sal),max(sal),deptnofrom empgroupby deptno; orderby deptno; 查询工资高于500或者是岗位为 ...

  4. Oracle数据库之单表查询

    接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据.单表查询里面的内容也是比较 ...

  5. oracle数据库单表查询

    今天给大家分享的是关于数据库的单表查询,像单表查询/多表查询/分组查询/子查询,这些方法的使用在实际项目过程中会经常用到,作为一名合格的测试人员如果不会数据库那肯定是不行的,行走江湖可能随时会面临被侮 ...

  6. 数据库——SQL数据单表查询

    数据查询   语句格式 SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表或视图名>[,<表或视图名&g ...

  7. Oracle单表去重复(二)

    Oracle单表去重 去重有两层含义,一:是记录完全一样.二:是符合一定条件的认为是重复. 根据表的数量,去重可划分为:单表去重和多表关联去重.   对于去重,一般最容易想到的是用distinct,而 ...

  8. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  9. mysql 基础入门 单表查询

    单表查询 select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a 1.条件查询 where + 条件 <> , != 不等于 = 等于,也可以表示字符串值 ...

  10. Mysql常用表操作 | 单表查询

    160905 常用表操作 1. mysql -u root -p 回车 输入密码   2. 显示数据库列表 show databases     3. 进入某数据库 use database data ...

随机推荐

  1. pandas进阶

    pandas是基于numpy构建的库,在数据处理方面可以把它理解为numpy的加强版,由于numpy主要用于科学计算,特长不在于数据处理,我们平常处理的数据一般带有列标签和index索引,这时pand ...

  2. Vscode窗口被覆盖

    用Vscode用的好好的,突然就发现窗口被覆盖了 解决办法如下:1.ctrl+shift+p 快捷键打开如下界面, 2.接着在搜索框中输入settings,点击首先项:打开设置(json) 3.再se ...

  3. bzoj5017 [Snoi2017]炸弹 (线段树优化建图+)tarjan 缩点+拓扑排序

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5017 题解 这个题目方法挺多的. 线段树优化建图 线段树优化建图的做法应该挺显然的,一个炸弹能 ...

  4. LOJ6279 果树

    我丢 之前sun在某校集训给我看过 当时也没想起来 今天补省集的锅的时候发现 wok这题我还听过?! 身败名裂.jpg (可是你记性不好这事情不已经人尽皆知了吗? 咳咳 回归正题 考虑对于两个同色的点 ...

  5. jquery编写插件(转)

    教你开发jQuery插件(转)   阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原 ...

  6. 【SaltStack官方版】—— states教程, part 2 - 更复杂的states和必要的事物

    states tutorial, part 2 - more complex states, requisites 本教程建立在第1部分涵盖的主题上.建议您从此处开始. 在Salt States教程的 ...

  7. darknet-yolov3模型预测框size不正确的原因

    问题描述:预测框的中心位置正常,但是预测的框的width和height不正常. 解决方法:使得训练的配置cfg和测试中cfg的输入width, height, anchorbox保持一致! 问题是我在 ...

  8. M(model)V(view)C(controller,serlvet),(分) 静态工厂模式,单例模式

  9. macOS搭建Hugo

    Hugo 是一个用Go语言编写的静态网站生成器.类似的静态网站生成器还有Jekyll.hexo等等. Hugo官方主页:https://gohugo.io/ 1.安装homebrew: https:/ ...

  10. 【bzoj2733】[HNOI2012]永无乡

    题目描述: 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到 ...