2.1 单条件查询

select ……
from ……
where 条件 -- = > >= < <= != <>
-- 单引号用于数据表示字符串
-- 双引号用于数据库对象名,列名,表名……
-- 数据区分大小写,数据库不区分大小写

2.2 多条件查询

--与and  或or  非not

select * from emp where deptno in (10,20);
-- in表示deptno取值在10和20其中一个,not in表示不在集合中;如果结果中含有NULL,不能使用not in,但可以使用in。 select * from emp where sal between 1000 and 2000;
-- between and 是包括边界值
--SQL在解析where时,是从右向左解析的;使用and时应将易假的值放在右侧,or时应将易真的值放在右侧;

2.3 模糊查询

select ...
from ...
where 列名 like '模式字符串' -- % 表示若干个字符
-- _ 表示一个字符 select * from emp where ename like '%\_%' escape '\'; -- 以反斜杠作为转义字符

2.4 排序

select ...
from ...
where 条件
order by 列名1 asc|desc,列名2.... -- asc表示升序(不填则默认是升序)
-- desc表示降序 select * from emp order by 2; --按照输出结果集的第2列来进行排序
select ename 名字,sal 月薪 from emp order by 月薪

2.5 单行函数

单行函数:只对一行数据进行计算,产生一个结果。函数可以没有参数,但必须要有返回值。

2.5.1 字符函数
lower						--将字符串转小写
upper --将字符串转大写
initcap --将首字母变成大写 concat --字符串连接
select concat(concat('hello','world'),'123') --支持两个参数
select 'hello'||'world'||123 --字符串拼凑 substr --提取子串
select substr('helloworld',3), --从第三个字符开始一直取子串到最后
select substr('helloworld',3,5) --从第三个字符开始取5个字符 instr --查找某个字符串是否另一个字符串的子串
select instr('hello world', 'llo') from dual --结果为3 lpad,rpad --左右填充
select lpad('hello','10','#') from dual;
--填充字符到达指定的长度
--往hello左边填充字符#,使字符串长度到达10
--如果字符串长度大于指定长度,就截取 trim --裁剪
select trim ( ' Hello world ') from dual; --默认裁剪空白字符
select trim ( 'H' from 'Hello worldHHHH') from dual; --左右裁剪H字符 replace --替换子串
select replace('Hello world','l','#') from dual; length --长度,length(last_name)
2.5.2 数值函数
round						--四舍五入
trunc --截取
ceil --向上取整
floor --向下取整
mod --取模 %
select round(45.926,2) from dual; --45.93
2.5.3 转换函数
to_char						--数字转字符串
select ename ,sal ,to_char(sal,'L9999') from emp;
--L 表示本地货币字符
--9 表示一位数字 to_number --字符串转数字 to_date --字符串转日期,以什么格式转化为字符串,就以什么格式转回date类型
select to_char(sysdate,'dd-mm-yyyy dy hh24:mi:ss') from dual;
select to_date('30-05-2019 星期四 17:01:57','dd-mm-yyyy dy hh24:mi:ss') from dual;
2.5.4 日期函数
now						--mysql中获取系统当前时间

sysdate						--oracle中获取系统当前时间
select sysdate from dual ;
select sysdate-1 昨天,sysdate 今天 ,sysdate +1 明天 from dual; months_between --计算两个时间相差的月份,自动计算大小月
select
(sysdate-hiredate)/30 月,
months_between(sysdate,hiredate)
from emp; add_months --计算明年今日
select add_months(sysdate,12) from dual; last_day --获取当前月份最后一天
select last_day(sysdate) from dual next_day --获取下一个星期几是哪一天
select next_day(sysdate,'星期二') from dual
2.5.5 通用函数
nvl(exp,val)					--如果exp为null,那么返回val,否则返回exp的值
nvl2(exp,val1,val2) --如果exp为null,返回val2 ,否则返回val1 select distinct deptno from emp; --去重
--distinct作用于后面所有列; dual --虚表
select 3+2 from dual; nullif(exp1,exp2) --当exp1=exp2时返回null,不等时返回exp1值 coalesce(a,b,c...,n) --从左到右找参数中第一个不为空的值
2.5.6 条件语句
--总裁决定给大家涨工资,主管涨1000,销售涨500,其他涨200
case when then else end
select ename,job,sal 涨前工资,
case job
when 'MANAGER' then sal+1000
when 'SALESMAN' then sal+500
else sal + 200
end 涨后工资
from emp decode(expr,val1,val2,val3,val4,....,defaultValue)
--如果expr 值是val1 那么返回val2,如果是val3,那么返回val4,以此类推,都不是,那么就返回最后一个defaultValue的值

2.6 多行函数

2.6.1 统计函数
sum						--总和
select sum(sal) from emp count --计数函数,某行数据有值,那么就计数+1
--*表示该行数据不管哪列有数据都会统计
--最终只统计comm该列不为空的数量
--null不会参与统计函数的计算
select count(comm) 员工数量 from emp; max/min --求最高和最低
select max(sal) 最高工资,min(sal) 最低工资 from emp avg --求平均
select avg(sal) from emp
2.6.2 分组统计
select ...
from ...
where cond
group by 列名1[,列名2,....]
having cond
order by ... --按照group by后给定的表达式,将from后面的table进行分组。
--在select列表中,所有没有包含在组函数中的列,都必须在group by的后面出现。
--统计函数,在没有分组的情况,统计的是全表,在有分组的情况下,统计的是对应的分组
--where里边不允许使用分组函数,改用having
--having里边能够使用统计函数的结果进行比较
--能使用where不要使用having group_concat(xxx)
select gender,group_concat(name, age, id) from students where gender=1 group by gender;

where 和 having区别

  1. 从表集合中查询数据,首先要满足where条件 cond1 ,满足的数据就筛选出来,成为结果集1

  2. 从结果集1中使用group by 指定的列进行分组,计算统计函数的值,成为结果集2

  3. 结果集2继续进行筛选,筛选条件就是having的条件cond2 ,最终通过筛选之后,成为结果集3

  4. 结果集3经过order by 的条件进行排序 ,得到最终的结果集

  5. 数据越早能够得到筛选越好,对于后面计算量控制有优势

2.7 字符格式

9 数字
0
$ 美元符
L 本地货币符号
. 小数点
, 千位符

2.8 分页

--limit start, count

-- 限制查询出来的数据个数
select * from students where gender=1 limit 2; -- 查询前5个数据
select * from students limit 0, 5;

Oracle笔记_查询的更多相关文章

  1. Oracle笔记_多表查询

    1 执行sql文件 @文件地址名 --执行某个sql文件: 2 多表查询 想要的数据不在同一张表,就需要多个表进行联查. 多表查询也叫做表连接查询,其中的where条件就是连接条件. 可以使用join ...

  2. Oracle笔记_基础

    1 登录启动 sqlplus / as sysdba #以管理员方式登录 sqlplus 用户名/密码 #本地登录 sqlplus 用户名/密码@//主机IP/实例名(默认orcl) #远程登录 sq ...

  3. Oracle笔记(1) 简单查询、限定查询、数据的排序

    Oracle笔记(四) 简单查询.限定查询.数据的排序   一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及 ...

  4. oracle笔记1:-安装-体系结构-基本查询

    一.Oracle数据库的安装(安装在虚拟机的xp系统里)     1.安装虚拟机     2.虚拟机内安装xp系统,以下步骤在虚拟机内进行     3.双击setup.exe,在出现的界面中设置口令, ...

  5. Oracle笔记 多表查询

    Oracle笔记  多表查询   本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...

  6. 韩顺平Oracle笔记

    韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring   目录(?)[-] ...

  7. Oracle笔记1-数据库概念

    数据库: 基本的概念:数据库管理系统(Database Management System,DBMS):管理数据的一个软件系统关系型数据库管理系统(RDBMS)数据库(Database):存放数据的磁 ...

  8. Oracle笔记 目录索引

    Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Or ...

  9. oracle 笔记

    1.Oracle认证,与其它数据库比较,安装 Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create databas ...

随机推荐

  1. MyBatis一对多和多对多xml配置

    MyBatis一对多和多对多xml配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ma ...

  2. nginx目录穿越漏洞复现

    nginx目录穿越漏洞复现 一.漏洞描述 Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞. 二.漏洞原理 1. 修改nginx.conf,在如下图位置添加如下配置 在如 ...

  3. 二十、Sql Server 保留几位小数的两种做法

    问题: 数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 解决: 1. 使用 Round() 函数,如 Round(@num,2 ...

  4. CMS简单内容管理系统

    架构 NewsDaoSQLServerImpl public class NewsDaoSQLServerImpl extends BaseDao implements NewsDao { publi ...

  5. JavaOOP 对象和封装

    1.后缀:jsp---相当于html,但是它里面可以写java代码. 2.包名取名规则 a.网站域名倒着写 b.字母小写 3.类名取名规则 a.首字母大写 4.三目运算(适用简单的if-else) 条 ...

  6. 二、PyTorch 入门实战—Variable(转)

    目录 一.概念 二.Variable的创建和使用 三.标量求导计算图 四.矩阵求导计算图 五.Variable放到GPU上执行 六.Variable转Numpy与Numpy转Variable 七.Va ...

  7. 【iOS】UIImageView 点击事件

    UIImageView 并不像 UIButton 那样点击鼠标就可以关联点击事件,也不像 Android 里有 onClickListener,这个时候就需要借助 UITapGestureRecogn ...

  8. 【iOS】PLA 3.3.12

    发件人 Apple Program License Agreement PLA We found that your app uses the Advertising Identifier but d ...

  9. hdoj 1753 (Java)

    刚刚开始用Java,代码难免不够简洁. import java.math.BigDecimal; import java.util.Scanner; public class Main { publi ...

  10. 派胜OA二次开发笔记(1)重写主界面

    最近从派胜OA 2018 升级到 2019,为了二次开发方便,索性花了两天,反向分析 PaiOA 2019 主界面程序,重写大部分代码,方便对菜单权限进行控制. 主界面/core/index.aspx ...