Oracle 笔记--面试专用

本文详细介绍了Oracle数据库中涉及的关键技术,包括DDL(数据定义语言)用于创建和管理数据库结构,DQL(数据查询语言)如SELECT的用法,以及DML(数据操纵语言)如INSERT、UPDATE、DELETE等。还涵盖了事务控制语言、数据控制语言和常用的日期函数、字符串函数、数字函数等,帮助读者理解和运用OracleSQL进行高效的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.语言类型:

oracle : 用来储存数据的工具

行(记录):内容

列(字段):结构

数据定义语言 DDL`(Data Definition Language) 数据结构定义 和数据库对象定义,主要有

创建、删除、修改表的结构,比如表、视图、索引、同义词、聚簇等。其主要功能是定义数据库对象,核心指令为 create、drop、alter

数据查询语言 DQL (Data Query language) 基本用来查询所需要的数据 Select

数据操纵语言 DML(Data Manipulation Language) 主要功能是访问数据,因此其语法都是以读写数据库为主。 关键字: insert、update、delete。

事务控制语言 TCL(Transaction Control Language)用于管理数据库中的事务,经常被用于快速原型开发、脚本编程、GUI和测试等方面。关键字有: commit、rollback

数据控制语言 (Data Control Language)一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权 核心指令为grant、revoke。

2.DQL的关键字:

关键字主要有 : Select ,From, Where ,Group By ,Order By ,Having,Like.

运行速度: From -> ON ->(Left/Right) Join -> Where ->Group By ->Having -> Select ->

                Distinct->Order By.

Where 和 Having 的区别:

HAVING 可以使用聚合函数进行条件过滤,而 WHERE 却不行,因此在过滤范围方面,HAVING 的过滤范围要比 WHERE 的更广泛

Where 执行效率要比 Having高

3.日期函数及其应用:

3.1current_date及systimestamp和SysDate

Sysdate 获取系统当前时间

Current_date 获取系统当前日期

Systimestamp:本机的系统时间

3.2  add_months 添加月份和减少月份

3.3 greatest和least

Greates: greatest是从一组日期数据中取距离当前最近的日期,

Least:least是在一组日期中选择最早的日期

3.4 next_day(参数一,参数二)

参数一:是指定日期 ,参数二的取值是[1,7] 超过报错,1代表周日,7代表周六,

-- 如果这个时间从本周过了,就去下周的时间,如果这个时间没过就取本周的时间

3.5 last_day 计算某个月的最后一天是哪天

3.6 months_between 计算两个日期之间相差的月份数,返回结果可能带小数

3.7 round 和 trunc

3.7.1 round 

round 四舍五入默认保存到整数位,可以通过第二个参数进行设置month 月year 年

-- 超过一半就入(15号),不超过就舍

select round(sysdate,'month') from dual;-- 2024-4-1

select round(sysdate,'year') from dual;-- 2024-1-1

select round(date'2024-04-01','month') from dual;-- 2024-4-1

select round(date'2024-04-16','month') from dual;-- 2024-5-1

select round(date'2024-04-15','month') from dual;-- 2024-4-1

select round(date'2024-04-01','year') from dual;-- 2024-1-1

select round(date'2024-07-01','year') from dual;-- 2025-1-1

select round(date'2024-06-01','year') from dual;-- 2024-1-1

round(day)

        将一周分为 周一到周三,周四到周日,返回最近的一个周日

        本周四到下周三 返回本周日

        上周四到本周三 返回上周日

3.7.2 trunc

-- 截取当前系统时间的月份和年份

select trunc(sysdate,'month') from dual;

select trunc(sysdate,'year') from dual;

-- 返回当前年的第一天

select trunc(sysdate,'year') from dual;

-- 返回当前月的第一天

select trunc(sysdate,'month') from dual;

-- 返回当前周的第一天

select trunc(sysdate,'d') from dual;

-- 返回当前的日期

select trunc(sysdate,'dd') from dual;

-- 返回当前的小时

select trunc(sysdate,'hh') from dual;

-- 返回当前的分钟

select trunc(sysdate,'mi') from dual;

3.8 使用to_date 和 to_char设置日期时间格式

        select to_date('2022/11/11 12:01:14','yyyy-MM-dd HH:MI:SS') from dual
        >> 2022-11-11 12:01:14
        select to_char(sysdate, 'yyyyMMdd HH:MI:SS') from dual
        >> 20221015 11:54:17

        select trunc(add_months(sysdate,0),'Q') from dual

        >>>>本季度的第一天

3.9 EXTRACT 抽取函数 EXTRACT抽取年月日部分

4.字符串函数

4.1  substr(参数1,参数2,参数3)

参数1 :是要截取的字符串 参数2:是要开始截取的位置(下标从1开始) 参数3:截取的子串长度

4.2 INSTR 字符串中搜索指定字符,返回发现指定字符的位置

INSTR( string, substring [, start_position [, occurrence ]] )

  • string是要搜索的字符串
  • substring是要查找的子
  • start_position是要开始搜索的位置(可选)
  • occurrence是要查找的子串出现的次数(可选)

4.3 CONCAT 连接两个字符串

4.4 REPLACE 用于替换字符串的指定子串

REPLACE( string, substring1 [, substring2] )

  • string是要替换子串的字符串
  • substring1是要被替换的子串
  • substring2是用来替换substring1的字符串(可选)

4.5 TRIM, LTRIM, RTRIM 去除字符串的空格或指定字符

RTRIM :去除字符串右侧的空格或指定字符。

LTRIM :去除字符串左侧的空格或指定字符。

TRIM([leading|trailing|both] [trim_character] FROM string)

  • leading|trailing|both:可选参数,用于指定去除字符串的空格或指定字符是在字符串的前面、后面还是两边,默认为 both。
  • trim_character:可选参数,用于指定要去除的字符,默认为字符串中的空格。
  • string:必需参数,要去除空格或指定字符的字符串。

4.6 NVL( string1, replace_with)

如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值

4.7 INITCAP,LOWER,UPPER

  • INITCAP 将字符串第一个字母变为大写
  • LOWER 将字符串所有字母小写
  • UPPER 将字符串所有字母大写

4.8 Compose()函数 Chr()函数  Asciistr()函数 . Ascii()函数

Ascii()函数可以返回代表指定字符的数字值代码 ASCII函数将返回第一个字符的值

Asciistr()函数可以使用数据库字符集将任何字符集中的字符串转换为ASCII字符串。

Chr()函数可以根据数字代码返回字符,其功能和ASCII函数相反。

使用Compose()函数可以返回一个Unicode字符串

4.9 || 连接符 可以将两个或两个以上的字符串连接在一起

4.10 其他函数

reverse(‘字符串’)
lpad(‘字符串’,长度,’不够长度时填充的字符’) 左边填充
rpad(‘字符串’,长度,’不够长度时填充的字符’) 右边填充

计算字符串长度的函数 LENGTH(str)

translate(sourceString,fromString,toString):子字符替换函数

  • sourceString:需要进行替换处理的源字符串。
  • fromString:需要被替换掉的单个或多个字符。
  • toString:需要用来替换的单个或多个字符。
  • select translate('ABC123','123','456') from dual;        --返回结果:ABC456

5.数字函数

5.1  mod(a,b):返回a除以b的余数

5.2 round(a[,b]):返回a四舍五入的结果

参数a、b都是数值型表达式,a是需要做四舍五入处理的数值,b代表需要保留的小数位数,是可选参数,若省略参数b,则截去a所有的小数部分并进行四舍五入处理。

5.3 abs(a):返回a的绝对值

5.4 ceil(a):返回大于等于数值a的最小整数

select ceil(1.2) from dual;        --返回结果:2
select ceil(1) from dual;        --返回结果:1
select ceil(-1) from dual;        --返回结果:-1
select ceil(-1.2) from dual;        --返回结果:-1

5.5 floor(a):返回小于等于数值a的最大整数

select floor(1.2) from dual;        --返回结果:1
select floor(1) from dual;        --返回结果:1
select floor(-1) from dual;        --返回结果:-1
select floor(-1.2) from dual;        --返回结果:-2

5.6 sign(a):返回正负值

若数值a是正数,则返回1,若a是负数,则返回-1,若a是0,则返回0

5.7 power(a,b):返回a的b次幂  exp(a):返回e的a次幂

5.8 log(a,b):返回以a为底的b的对数 ln(a):返回以e为底的a的对数

5.9 sqrt(a):返回a的平方根

5.10 trunc(a[,b]):返回截取后的值

返回对a按精度b截取后的值,a、b都是数值型表达式,a是需要做截取处理的参数,b表示需要保留的小数位数,b是可选参数,若省略b,则对a截取所有的小数部分。

5.11 sin(a):返回a的正弦值 cos(a):返回a的余弦值 tan(a):返回a的正切值 asin(a):返回a的反正弦值 acos(a):返回a的反余弦值 atan(a):返回a的反正切值 sinh(a):返回a的双曲正弦值 cosh(a):返回a的双曲余弦值 tanh(a):返回a的双曲正切值


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值