Oracle周末复习

本文介绍了Oracle数据库中的一些关键操作,包括distinct关键字用于消除重复数据,日期类型的加减法运算,空值处理和nvl函数,concat函数的使用,查询结果列的别名设置,column指令调整显示长度,order by进行排序,where条件查询,逻辑比较符如between和in,以及单值和组函数的应用,如avg、count、max等。
摘要由CSDN通过智能技术生成

1.distinct关键字,消除查询结果中的重复内容
在使用distinct查询多个字段的时候,只有所有的字段值都相同的时候才视为重复数据。
2.日期类型运算
日期类型的运算只有加减法。
加减的单位是天,代表查询某个指定日期过去的几天或者未来的几天。
加法代表未来n天,减法代表过去n天。
(未来比过去大)
日期 - 日期 = 天数
日期 - 天数 = 日期
3.空值的处理
在Oracle中所有的数值和空值进行运算,得到的结果都是空值。
nvl函数专门用来处理空值。
nvl(有可能出现空值的字段,默认值)
nvl(param1,param2)
先判断param1是否为空,如果为空则取param2的值。
如果param1不为空,仍然取param1的值。
4.concat函数,拼接字符串
concat(串1,串2)
注意:在Oracle数据库中concat函数只能拼接两个字符串,如果需要拼接多个字符串,使用函数的嵌套。
select concat(concat(last_name,’-’),first_name)
from s_emp;

select concat(last_name,concat(’-’,first_name))
from s_emp;
5.给查询结果列取别名
每一次select查询结果都相当于是一张临时表,这张表中有哪些字段取决于select查询了哪些字段,查询结果中的列名叫什么取决于select后面怎么写【原样输出】。
1)select 字段名 as 别名 from 表名;
2)select 字段名 别名 from 表名;
3)select 字段名 as “别名” from 表名;
4)select 字段名 “别名” from 表名;
as有与没有无所谓,1和2完全相同,3和4完全相同。
给别名加双引号的作用就是严格按照双引号内的字符内容输出,变得区分大小写了。
6.column指令,修改终端中查询结果的字段长度。
column/col 查询结果中的字段名 format 格式;
注意,column指令只是临时修改查询结果中某个字段的显示长度,并没有修改表中字段的真实长度。
7.排序
关键字:order by
升序 ASC
降序 DESC
排序只是更改了查询结果中显示的顺序,并没有修改表中数据真实的存储顺序。
默认的排序规则:按照物理存储的顺序排列。
order by后面可以添加多个排序字段及排序规则,每一组字段和规则之间使用逗号分隔。
排列的时候,如果根据字段1能够排列出结果,那么不会根据字段2进行比较。只有当第一个排序规则无法排列的时候(字段1的值相同),才会按照字段规则2进行排列。
在排序的过程中,空值视为无限大。
8.限定性查询:在查询的过程中添加条件判断,筛选查询的内容。
关键字:where
**空值的判断
等于空:is null
不等于空:is not null
9.条件并列
and并列的多个条件必须同时满足才会被查询出来,or并列多个条件只要满足其中一个就会被查询出来
**and和or的优先级问题
and优先级比or高
10.逻辑比较符
between 在什么之间
语法: where 字段值 between 较小值 and 较大值
注意:between是闭区间,必须先写较小值再写较大值
in 在什么之中
预先给出一组值,让字段值和一组值中的某一个进行匹配,只要能匹配到至少一个,就满足条件。
语法:in (值1,值2,值3…)
11.模糊匹配/关键字查询
模糊匹配不要用=,要用like
通配符% 匹配任意数量任意字符
占位符_ 匹配一个任意字符

**转义字符的使用
转义的步骤:1)给被转义的字符前面加上一个标识字符,标识字符可以是任意字符。
where last_name like ‘/%’;
2)使用escape短语指定哪个字符作为标识字符
where last_name like '/
%’ escape ‘/’;
标识字符的意思就是修饰后边的一个字符,让这个字符当成真正的字符内容使用。
12.单值函数
Oracle中的函数分为两种:
单值函数:每一条数据经过处理都会得到一条结果,n条数据参与函数运算,得到的结果一定是n条。
Character 字符串处理
Number 数值处理
Date 日期处理
Conversion 类型转换
多值函数(组函数):多条数据经过处理只得到一条结果,n条数据参与函数运算,得到的结果可能会<=n,可能是0,可能是1,可能是n
组函数group
1)处理字符串的单值函数
LOWER 把指定字符串转换成全部小写形式 lower(要处理的字符串)
UPPER 把指定字符串转换成全部大写形式
INITCAP 把指定字符串转换成首字母大写,其余字母小写形式
CONCAT 字符串的拼接
SUBSTR 从某个字符串中截取连续子串
LENGTH 求字符串的长度
NVL 处理空值

**哑表/虚表/伪表 dual
不是一张真正意义的保存数据的表,但是可以当成一张表来使用。
哑表出现的意义就是为了满足select的语法要求,当我们需要借助查询语句、函数进行某些运算的时候,而且要使用的变量并不是来自于某张特定的表格,但是from后面又不得不跟上表名结构。这个时候,写哪张表都可以,但是都不太合适,这个时候就可以使用哑表。
哑表的特点:表中永远只有一条数据。

查询所有员工的last_name首字母大写其余字母小写形式?
select initcap(last_name)
from s_emp;

substr(要处理的字符串,开始位置,截取长度);
注意:字符索引值从1开始;第三个参数不是结束位置,而是截取长度
2)处理数值类型的单值函数
第一个参数:要处理的数字
第二个参数:保留到小数点后的第几位
ROUND 四舍五入
TRUNC 只保留整数部分
MOD摩尔运算/取余
3)处理日期格式的单值函数
Oracle中保存时间的方式:
Century世纪, year年, month月, day日, hours时, minutes分, seconds秒

默认的时间表示方式 DD-MON-YY
DD:某个日期是所在月的第几天
MON:月份的简称(英文:前三个字母)
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
YY:代表两位数的年份

SYSDATE函数用来返回当前系统时间

MONTHS_BETWEEN 计算两个日期之间相隔的月份
ADD_MONTHS 计算某个日期加上n个月之后的日期
NEXT_DAY 计算某个日期的下一个星期几是几号
LAST_DAY 计算某个日期所在月的最后一天是几月几号
写星期名称要搞清楚现在的会话语言环境是中文还是英文?
select next_day(sysdate,‘星期日’) from dual;
select next_day(sysdate,‘Sunday’) from dual;

闰年:400或4的整倍数但不是100的整倍数。

ROUND 四舍五入
TRUNC 只舍不取

语法:round(日期,单位)
单位:字符串变量,代表要精确到哪一位
①round(日期,‘year’) 保留到年,六舍七入
舍去:舍到当前年的1月1日 00:00:00
进位:下一年的1月1日 00:00:00
②round(日期,‘month’) 保留到月,十五舍十六入
舍去:舍去到当月1号的00:00:00
进位:进位到下个月1号的00:00:00
③round(日期,‘day’)
周日、周一、周二 舍去
周三 - 周六 进位
舍去:舍到"上周日"
进位:进到"这周日"
④round(日期) 保留到日
4)转换函数
13.如何消除笛卡尔积
1)where条件消除
2)范围判断
3)外连接

【咒语】A左外连接到B,可以查询到没有B的A。
A左外连接到B,相当于B右外连接到A。

Oracle中的特色语法
符号:(+)
原则:把(+)放到where子句中数据较少的一方,和普通的多表查询语句没有太大区别。

4)自连接
5)集合连接
union 取并集 会消除掉重复的数据
union all 取并集 不消除重复数据
intersect 取交集
minus 取差集
6)伪列
①rowid 数据库表中每条数据唯一对应的一个标识、代表了物理存储地址。
②rownum 描述每一次查询结果中的行号,rownum会给每一次查询出来的每一条数据从1开始标上序号。
14.组函数(多值函数)
Single Row Functions 单值函数
Multiple Row Functions 多值函数
group by 指定分组的依据(字段)
group by 字段A,查找整张表,把字段A的值相等的数据分为一个小组。可有可无的。如果group by不出现代表把整张表中所有的数据分为一个大组。
having 可有可无的。指定限定性条件。

**where和having的区别:
where是对单值进行限制和筛除,having是对分组之后的小组进行限制。where先执行,然后再分组,然后再进行分组之后having筛选。where中不能出现组函数。在执行到where的时候还没有执行到group by子句,没有分组就意味着没有办法进行组函数运算。

需要了解和学习的组函数:
AVG 计算平均值
COUNT 计算表中某个字段非空字段值的数量。
MAX 求一组数中的最大值
MIN 求一组数中的最小值
STDDEV 求标准差
SUM 计算一组值的总和
VARIANCE 求方差

重要原则:
select后面可以出现的字段要么是组函数,
要么是group by 后边的分组依据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值