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的双曲正切值