3. 单行函数

2.4SQL语句----》单行函数

2.4.1前期了解

1,大部分的关系型数据库的操作的简单区别
1)数据的存储区别
不同的数据库有各自不同的文件存储方案,mysql只往文件系统存储,Oracle可以存在文件系统中,可以存在存储设备中,可以使用asm(Automatic storage management)
2)不同的数据库支持的数据类型是不同的
大部分的传统的关系型数据库都是不知道从bool(布尔)型数据的,有些支持。
实际上是有替代品的,1真,0假
3)不同的数据库有不同的支持函数(意义不大,但很重要)
很早程序设计是要考虑跨数据库开发的,基于A数据库开发的程序迁移到B数据库上也能运行,但是随着理论的发展,发现这种移植没有意义,开始基于单种数据库开发。

不同的数据库除了标准SQL之外,想要正常编程使用,还要知道支持的函数,当然这些函数不需要直接记忆,只要英语可以,函数都是很好理解的,而且对应邯郸使用可以基于网络查询。

2.4.2函数基本格式

.Oracle中针对系统函数的定义的基本格式
返回数据类型 函数名称 (数据 | 列名称)

2.4.3返回数据类型

字符串 ------》VARCHAR2
数字---------》NUMBER
日期---------》DATE

2.4.4单行函数分类

单行函数的有很多类
字符串函数
数值函数
日期函数(避免闰年问题)
转化函数
通用函数
1.字符串函数
1)字符串的函数主要功能
进行字符串的处理,例如:转大写,转小写,计算长度,截取字符串等
2)常见的字符串函数
A.转大写函数:字符串 ----》UPPER(数据列)
B. 转小写函数:字符串------》LOWER(数据列)
C.首字母大写:字符串-----》INITCAP(数据列)
D.计算字符串长度:字符串-----》LENGTH(数据列)
E.字符串截取:字符串------》SUBSTR(数据列,截取点【,长度】)
Oracle中的字符串索引开始的值是1,如果设置为0,与1相同
也可以设为负数,表示从结尾开始指定索引
F.字符串的替换:字符串-----》REPLASCE (数据列,被替换数据,要替换数据)
3)例如
A.查看所有雇员姓名转小写字母
SQL> SELECT LOWER(ename) ename
2 FROM emp;
在这里插入图片描述

使用虚拟表—dual
SQL> SELECT ‘yyn’
2 FROM emp;
因为emp表中有14行记录,结果会查询到14个yyn

SQL> SELECT ‘yyn’
2 FROM dual;
引入dual 虚拟表,用于测试查询常量的
B.查询yyn的大写字母
SQL> SELECT UPPER(‘yyn’)
2 FROM dual;
这是常量
在这里插入图片描述

C.查询YYN的小写字母
SQL> SELECT LOWER(‘YYN’)
2 FROM dual;
在这里插入图片描述

D.查询YYNhhp字符串的长度
SQL> SELECT LENGTH(‘YYNhhp’)
2 FROM dual;
这是常量
在这里插入图片描述

E.查询出每个雇员的姓名,姓名长度
SQL> SELECT LENGTH(ename)
2 FROM emp;
在这里插入图片描述
在这里插入图片描述

F.查询姓名长度为5的雇员信息
SQL> SELECT *
2 FROM emp
3 WHERE LENGTH(ename)=5;
在这里插入图片描述

G.查询输入的姓名为smith的全部信息
用户进行数据添加的时候不会使用大写,根据姓名进行查询的时候,用户输入的数据很少用大小字母,在为了实现用户的数据输入,则可以采用替代变量的做法
练习1:SQL> SELECT *
2 FROM emp
3 WHERE ename =&inputname;
-----》&inputname表示等待输入给名称,inputname是起的变量名,是字符串要加引号
Enter value for inputname: ‘SMITH’
------》用户输入的名字,要用引号表示,麻烦,
产生的结果
old 3: WHERE ename =&inputname
new 3: WHERE ename =‘SMITH’
在这里插入图片描述

练习2:SQL> SELECT *
2 FROM emp
3 WHERE ename =’&inputname1’;
----》’&inputname1’----》用引号将输入的数据标记起来
Enter value for inputname1: SMITH
----》需要子句手动输入大写字母的名字,在生产环境没人会输入大写字母
old 3: WHERE ename =’&inputname1’
new 3: WHERE ename =‘SMITH’
在这里插入图片描述

练习3:SQL> SELECT *
2 FROM emp
3 WHERE ename = UPPER(’&inputname1’);
------》UPPER(转大写函数
Enter value for inputname1: smith
old 3: WHERE ename = UPPER(’&inputname1’)
new 3: WHERE ename = UPPER(‘smith’)
在这里插入图片描述

H.查询所有雇员的姓名,要求姓名的字母采用小写显示
SQL> SELECT LOWER(ename)
2 FROM emp;
在这里插入图片描述

I.查询所有雇员的姓名,要求姓名的首字母采用大写显示
SQL> SELECT INITCAP(ename)
2 FROM emp;
在这里插入图片描述

J.将hellowold中的l替换为r
SQL> SELECT REPLACE(‘hellowold’,‘l’,‘r’)
2 FROM dual;
在这里插入图片描述

K.将helloword中从第2开始截取
SQL> SELECT SUBSTR(‘helloword’,2)
2 FROM dual;
在这里插入图片描述

L.将helloword中从将hello截取
SQL> SELECT SUBSTR(‘helloword’,0,5)
2 FROM dual;
在这里插入图片描述

SQL> SELECT SUBSTR(‘helloword’,3,6)
2 FROM dual;
从第三个开始截取6个字符长度结束
在这里插入图片描述

M.查询雇员的姓名 的前3位字符
SQL> SELECT SUBSTR(ename,0,3)
2 FROM emp;
在这里插入图片描述

SQL> SELECT SUBSTR(ename,-2)
2 FROM emp;
在这里插入图片描述

N.要求截取每个员工的姓名前三个和后三个字符
SQL> SELECT SUBSTR(ename,1,3) || ’ ’ || SUBSTR(ename,-3)
2 FROM emp;
在这里插入图片描述

O.要求拼接每个员工的姓名的第一个字母和第三个字母
SQL> SELECT SUBSTR(ename,1,1) || SUBSTR(ename,3,1)
2 FROM emp;
在这里插入图片描述

2.数值函数
1)常见的三种数值操作函数:
ROUND(数据列【,保留小数位】)-----》四舍五入出来
不加小数位,默认四舍五入取整
TRUNC(数据列【,保留小数位】)-------》数据截取,不进位
不管小数位是1,还是9 ,都不进位,不加小数位,默认取整
MOD(数据列,数量列)-----》模运算,求余数
2)例如
A.求smith用户的日薪,并保留小数点后两位
SQL> SELECT ROUND(sal/30,2)
2 FROM emp;
在这里插入图片描述

smith用户的日薪整数
SQL> SELECT ROUND(sal/30)
2 FROM emp;
在这里插入图片描述

B.求smith用户的日薪,并保留小数点后两位—trunc
SQL> SELECT TRUNC(sal/30,2)
2 FROM emp;
在这里插入图片描述

C.取余操作----mod
SQL> SELECT MOD(10,3)
2 FROM dual;
在这里插入图片描述

3.统计函数
1.格式:Count (表名)
2.功能描述:统计数据列的个数,返回整型值
Count函数有三个名字,统计函数,组函数,分组函数
3.练习:
SQL> SELECT COUNT(*)
2 FROM emp;
在这里插入图片描述

count函数只能和统计类函数一起使用,不能使用某个字段,否则会报错
在这里插入图片描述

4.平均值函数
1.格式:avg(数据列)
2.功能描述:求数据列的平均数, count函数只能和统计类函数一起使用,不能使用某个字段,否则会报错
3.练习:SQL> SELECT COUNT(*),AVG(sal)
2 FROM emp;
在这里插入图片描述

  1. 计算月数的函数
    1.格式:MONTHS_BETWEEN(时间1,时间2)
    2.功能描述:计算2个时间点的月数
    3.练习:
    在这里插入图片描述

  2. 转化日期的函数
    1.格式:TO_DATE(‘年-月-日‘,’yyyy-mm-dd‘)
    2.功能描述:将自定义的时间格式 ‘年-月-日‘转化为TO_DATE的格式
    3.练习:
    SQL> SELECT TO_DATE(‘2020-10-20’,‘yyyy-mm-dd’)
    2 FROM dual;
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值