操作符及SQL函数
本节要点:
- 掌握 SQL 操作符
- l 算术操作符
- l 比较操作符
- l 逻辑操作符
- l 集合操作符
- l 连接操作符
- l 操作符的优先级
- 掌握并熟练应用SQL 函数
- l 日期函数
- l 字符函数
- l 数字函数
- l 转换函数
- l 其他函数
- l 分析函数
1 SQL 操作符
SQL 操作符分类如下:
1.1 算术操作符
算术操作符用于执行数值计算;可以在SQL语句中使用算术表达式,算术表达式由数值数据类型的列名、数值常量和连接它们的算术操作符组成;算术操作符包括加(+)、减(-)、乘(*)、除(/)。
SELECT f_stuid, f_grade + 1 as new_grade FROM t_grade WHERE f_courseid='01';
SELECT f_stuid, f_grade * 1.1 as new_grade FROM t_grade WHERE f_courseid='01';
1.2 比较操作符
比较操作符用于比较两个表达式的值;比较操作符包括 =、!=、<、>、<=、>=、BETWEEN…AND、IN、LIKE 和 IS NULL等。
SELECT f_id, f_name, f_birth
FROM t_student
WHERE f_birth < '01-1月-86';
SELECT f_id,f_name,f_sex,f_birth
FROM t_student
WHERE f_name LIKE '_富%';
1.3 逻辑操作符
逻辑操作符用于组合多个比较运算的结果以生成一个或真或假的结果。逻辑操作符包括与(AND)、或(OR)和非(NOT)。
SELECT * FROM t_student
WHERE f_birth >= '01-1月-80'
AND f_birth <= '31-12月-85';
1.4 集合操作符
集合操作符将两个查询的结果组合成一个结果。主要有以下几个:
INTERSECT操作符只返回两个查询的公共行。MINUS 操作符返回从第一个查询结果中排除第二个查询中出现的行。
1) 统计C语言(01)和Java(02)都为良好(70分以上)的同学学号
select f_stuid from t_grade where f_grade>=70 and f_courseid = '01'
INTERSECT
select f_stuid from t_grade where f_grade>=70 and f_courseid = '02';
2) 统计C语言或Java为良好的同学学号
select f_stuid from t_grade where f_grade>=70 and f_courseid = '01'
UNION
select f_stuid from t_grade where f_grade>=70 and f_courseid = '02';
3) 统计C语言良好但Java未达到良好的同学学号
select f_stuid from t_grade where f_grade>=70 and f_courseid = '01'
MINUS
select f_stuid from t_grade where f_grade>=70 and f_courseid = '02';
1.5 连接操作符
连接操作符用于将多个字符串或数据值合并成一个字符串
SELECT ('学号为' || f_id|| '的同学姓名是' ||f_name) as ddress FROM t_student;
1.6 操作符的优先级
算术操作符 --------最高优先级
连接操作符
比较操作符
NOT 逻辑操作符
AND 逻辑操作符
OR 逻辑操作符 --------最低优先级
2 SQL 函数
Oracle 提供一系列用于执行特定操作的函数;SQL 函数带有一个或多个参数并返回一个值;以下是SQL函数的分类:
单行函数对于从表中查询的每一行只返回一个值;可以出现在 SELECT 子句中和 WHERE 子句中 ;单行函数可以大致划分为:日期函数、数字函数、字符函数、转换函数、其他函数。
2.1 日期函数
日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果。日期函数包括:
- l ADD_MONTHS (date,months):在date的月份上加months个月份
- l MONTHS_BETWEEN(date,date):返回两个日期之间的月份数,不满一个月以小数表示
- l LAST_DAY(date):返回当月最后一天
- l ROUND ( number, [ decimal_places ] ):根据小数位数四舍五入
- l NEXT_DAY (date,char):当前日期下一个星期几的日期,如果char是1,则表示下一个星期一,依次类推。
- l TRUNC:截取日期或数字
|
EXTRACT:从一个date或者interval类型中截取到特定的部分
例:select extract(year from date'2011-05-17') year from dual;输出:YEAR
2.2 字符函数
字符函数接受字符输入并返回字符或数值:
函数 |
输入 |
输出 |
Initcap(char) |
select initcap('hello') from dual; |
Hello |
Lower(char) |
select lower('FUN') from dual; |
fun |
Upper(char) |
select upper('sun')from dual; |
SUN |
Ltrim(char,set) |
select ltrim( 'xyzadams','xyz') from dual; |
adams |
Rtrim(char,set) |
select rtrim('xyzadams','ams') from dual; |
xyzad |
Translate(char, from, to) |
select translate('jack','j' ,'b') from dual; |
back |
Replace(char, searchstring,[rep string]) |
select replace('jack and jue' ,'j','bl') from dual; |
black and blue |
Instr (char, m) |
select instr ('worldwide','d') from dual; |
5 |
Substr (char, m, n) |
select substr('abcdefg',3,2) from dual; |
cd |
Concat (expr1, expr2) |
select concat ('Hello',' world') from dual; |
Hello world |
2.3 数字函数
数字函数接受数字输入并返回数值结果:
函数 |
输入 |
输出 |
Abs(n) |
Select abs(-15) from dual; |
15 |
Ceil(n) |
Select ceil(44.778) from dual; |
45 |
Cos(n) |
Select cos(180) from dual; |
-.5984601 |
Floor(n) |
Select floor(100.2) from dual; |
100 |
Power(m,n) |
Select power(4,2) from dual; |
16 |
Mod(m,n) |
Select mod(10,3) from dual; |
1 |
Round(m,n) |
Select round(100.256,2) from dual; |
100.26 |
Trunc(m,n) |
Select trunc(100.256,2) from dual; |
100.25 |
Sqrt(n) |
Select sqrt(4) from dual; |
2 |
Sign(n) |
Select sign(-30) from dual; |
-1 |
2.4 转换函数
转换函数将值从一种数据类型转换为另一种数据类型。常用的转换函数有:
1) TO_CHAR把日期或数字转换为字符串
TO_CHAR(number, '格式') 例如:TO_CHAR(salary,’$99,999.99’)
TO_CHAR(date,’格式’); TO_CHAR(newdate,’yyyy-mm-dd’)
例:SELECT TO_CHAR(sysdate,'YYYY"年"fmMM"月"fmDD"日" HH24:MI:SS') FROM dual;
2) TO_DATE(String,Date):将字符串转换为日期
select to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss') from dual;
3) TO_NUMBER:将字符串转换为数字数据类型
select to_number('00001228') from dual;
2.5 其它函数
以下是几个用来转换空值的函数:
1) NVL(expr1,replace_with):如果string1为NULL,则返回replace_with的值,否则返回string1的值
例:SELECT f_id, f_name, NVL(avg(f_grade),0)
FROM t_student left join t_grade on f_id = f_stuid
GROUP BY f_id, f_name;
2) NVL2(expr1,expr2,expr3):参数表达式expr1值为NULL,返回expr3的值;否则返回NVL2() 的值。
例:SELECT f_id, f_name, NVL2(f_department,'existed dep','other dep' as dep)
from t_student;
SELECT NULLIF(100,200) FROM DUAL;
3) NULLIF(expr1,expr2):比较 expr1 和 expr2 的值,若二者相等,则返回 NULL,否则返回 expr1 的值。其中expr1不能为 NULL
例:SELECT NULLIF(100,200) FROM DUAL;
2.6 分析函数
分析函数根据一组行来计算聚合值;用于计算完成聚集的累计排名、移动平均数等;分析函数为每组记录返回多个行。包括下面三个:
注:三个分析函数用于计算一个行在一组有序行中的排位,序号从1开始
1) ROW_NUMBER 返回连续的排位,不论值是否相等,没有重复值(使用较多)
2) RANK 具有相等值的行排位相同,序数随后跳跃,有两个第二名时接下来就是第四名
3) DENSE_RANK 具有相等值的行排位相同,序号是连续的,有两个第二名时仍然跟着第三名
例:row_number() OVER ( PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序.(分组进行排序)
select f_stuid,f_courseid,row_number() over (partition by f_courseid order by f_grade desc) as rank from t_grade
操作符及SQL函数的更多相关文章
- oracle PL/SQL(procedure language/SQL)程序设计(续集)之PL/SQL函数
PL/SQL函数 examples:“ 构造一个邮件地址 v_mailing_address := v_name||CHR(10)|| ...
- DB2开发系列之三——SQL函数
1.内置函数分类(SYSIBM模式内) 1)标量函数:返回一个标量值的函数: 2)聚合函数:也叫列函数,也返回一个标量值,这个值是一组输入值的计算结果:3)表函数:向引用它的 SQL 语句返回一个表: ...
- Oracle数据库常用SQL函数
1.SQL函数的概念: 函数一般是在数据上执行的,它给数据的转换和处理提供了方便.只是将取出的数据进行处理,不会改变数据库中的值.(类似于java中的方法但函数只是将数据库中的数据取出(复制)到函数中 ...
- 【东软实训】SQL函数
SQL函数 SQL是用于访问和处理数据库的标准的计算机语言,我们所使用的的是Oracle SQL 一个数据库通常包含一个或多个表,每个表有一个名字表示,下图即为一个名为“emp”的表,接下来的操作都将 ...
- PostgreSQL 基本数据类型及常用SQL 函数操作
数据类型 名字 别名 描述 bigint int8 有符号的8字节整数 bigserial serial8 自动增长的8字节整数 bit [ (n) ] 定长位串 bit varying [ (n ...
- Hive sql函数
date: 2018-11-16 19:03:08 updated: 2018-11-16 19:03:08 Hive sql函数 一.关系运算 等值比较: = select 1 from dual ...
- 记录一次SQL函数和优化的问题
一.前言 上次在年前快要放假的时候记录的一篇安装SSL证书的内容,因为当时公司开始居家办公了,我也打算回个家 毕竟自己在苏州这半年一个人也是很想家的,所以就打算年过完来重新写博客.不巧的是,当时我2月 ...
- Oracle 中的sql函数以及分页
SELECT LPAD(,'*.') "LPAD example" FROM DUAL; 1.分页查询 (1)方法一:使用 between and 来实现分页 select * ...
- SQL函数说明大全
一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...
随机推荐
- C语言——什么是指针?
去年学C语言课时,初步了解了指针的概念,能看懂一些简单的含有指针的程序,但事实上对于指针并没有真正的弄明白它的使用,这点我在半年后的数据结构课程上才深刻的体会到和别人的差距.更加可怕的是,对于当时所得 ...
- ubuntu查看文件大小
使用linux命令df 和du,df 但是df只能查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.du可以查看文件及文件夹的大小.所以基本上是两者配合使用. 一 df h参数, ...
- 字符流、字节流、二进制及其在HTTP协议传输
一.二进制.字节.字符流概念 字(Byte)节是长度单位.位(bit)也是长度单位.计算机通信和存储的时候都是以010101这样的二进制数据为基础的二进制数有两个特点:它由两个基本字符0,1组成,二进 ...
- Node.js:工具模块
ylbtech-Node.js:工具模块 1.返回顶部 1. Node.js 工具模块 在 Node.js 模块库中有很多好用的模块.接下来我们为大家介绍几种常用模块的使用: 序号 模块名 & ...
- IPv6通讯原理(1) - 不能忽略的网卡启动过程
本文主题:通过抓包分析,深入观察网卡启动过程的每个步骤,从而逐步掌握通讯原理.
- win7如何给虚拟机设置共享文件
友情提示:设置之前先把虚拟机关掉 1. 安装vmtools 安装过的,则不需要 重新安装 如果没有安装vmware tools,点击安装(需要联网下载) ,下载完成后,打开虚拟机 点击安装,安装完毕后 ...
- POJ 1703 带权并查集
直接解释输入了: 第一行cases. 然后是n和m代表有n个人,m个操作 给你两个空的集合 每个操作后面跟着俩数 D操作是说这俩数不在一个集合里. A操作问这俩数什么关系 不能确定:输出Not sur ...
- Hadoop MapReduce编程 API入门系列之计数器(二十七)
不多说,直接上代码. MapReduce 计数器是什么? 计数器是用来记录job的执行进度和状态的.它的作用可以理解为日志.我们可以在程序的某个位置插入计数器,记录数据或者进度的变化情况. Ma ...
- nfs server and client
系统环境:Centos7.3 ip1:10.0.0.1 ip2:10.0.0.2 检测是否安装NFS服务 rpm -qa | grep nfs rpm -qa|grep nfs 安装NFS ...
- Unity3d Vector3
using UnityEngine; using System.Collections; public class test : MonoBehaviour { void Start () { Vec ...