数据库Oracle Review SectionⅤ 操作符及SQL函数

SQL操作符

算数操作符

算术操作符用于执行数值计算。

可以在SQL语句中使用算术表达式,算术表达式由数值数 据类型的列名、数值常量和连接它们的算术操作符组成。

算术操作符包括加(+)、减(-)、乘(*)、除(/) 。

检索出课程号是2的成绩+10分后的结果:

SELECT sid,cid, score+10 as lastscore from t_score Where cid = 2;

比较操作符

比较操作符用于比较两个表达式的值。

比较操作符包括 =、!=、<、>、<=、>=、 BETWEEN…AND、IN、LIKE 和 IS NULL等。

检索1980年前出生的学生信息:

SELECT * FROM t_student WHERE  sbirthday < '01-1月-1980'; 

检索1986年出生的学生信息:

SELECT * FROM t_student WHERE sbirthday between ‘01-1月-1986‘ and ’31-12月-1986’; 

检索班级是1班或2班的学生信息:

SELECT * FROM t_student WHERE sclass in (1,2);

逻辑操作符

逻辑操作符用于组合多个比较运算的结果以生成一个或真 或假的结果。

逻辑操作符包括与(AND)、或(OR)和非(NOT),NOT通常 和AND,OR联合使用。

查询 1班的 80后的学生信息 :

SELECT * FROM t_student WHERE sbirthday >= '01-1月-80' AND sclass = 2; 

练习:查询不是2班的并且是70后的学生信息。

连接操作符

连接操作符用于将多个字符串或数据值合并成一个字符串

通过使用连接操作符可以将表中的多个列合并成逻辑上的 一行列

select ('学号为' || sid|| '的同学姓名是' || sname) as  学生信息 from t_student;

集合操作符

 集合操作符将两个查询的结果组合成一个结果。

union操作符返回两个查询的不重复的所有行。

intersect操作符只返回两个查询的公共行。

minus操作符返回从第一个查询结果中排除第二个查询中出现的行。 

统计学习操作系统(1)或数据结构(2)且成绩在70分以上的同学学号:

select sid from t_score where score>=70 and cid = 1 UNION select sid from t_score where score>=70 and cid = 2;

统计操作系统(1) 和数据结构(2)都为及格(60分以上)的同学学号:

select sid from t_score where score>=60 and cid = 1 INTERSECT select sid from t_score where score>=60 and cid = 2; 

统计操作系统(1)70分但数据结构(2)未达到65的同学学号:

select sid from t_score where score>=70 and cid = 1 MINUS select sid from t_score where score>=65 and cid = 2;

操作符的优先级

SQL 操作符的优先级从高到低的顺序是:

  • 算术操作符--------最高优先级
  • 连接操作符
  • 比较操作符
  • NOT逻辑操作符
  • AND逻辑操作符
  • OR逻辑操作符--------最低优先级

SQL函数

Oracle 提供一系列用于执行特定操作的函数

SQL 函数带有一个或多个参数并返回一个值

以下是SQL函数的分类:

单行函数

单行函数对于从表中查询的每一行只返回一个值

可以出现在 SELECT 子句中和 WHERE 子句中

单行函数可以大致划分为:

  • 字符函数
  • 数字函数
  • 日期函数
  • 日期函数
  • 转换函数
  • 其他函数

 字符函数

 字符函数接受字符输入并返回字符或数值:

以下是一些其它的字符函数

  • CHR :根据ASCII码返回对应的字符
  • LPAD和RPAD :填充
  • TRIM :去除左右两边的空格符
  • LENGTH :字符串长度
  • DECODE :逐个值替换(类似与case end/switch结构)
SELECT LENGTH('STUDENT') FROM dual;
SELECT sname, DECODE(ssex,’m’,‘男’,‘f‘,’女’) as ssex FROM t_student;

数字函数

数字函数接受数字输入并返回数值结果:

日期函数

日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果:

日期函数包括:

  •  ADD_MONTHS:日期加月数
  • MONTHS_BETWEEN:求两个日期间相差的月数
  • LAST_DAY:求日期所在月的最后一天
  • LAST_DAY:求日期所在月的最后一天
  • ROUND:日期的四舍五入
  • TRUNC:截取本年、本月、本季度的第一天等
  • NEXT_DAY:求下一个星期几对应的日期
  • EXTRACT:获得日期某个部分,如年月日

 转换函数

转换函数将值从一种数据类型转换为另一种数据类型。

常用的转换函数有:

  • TO_CHAR :按照指定的格式转化字符串
  • TO_DATE :将字符串转化成日期
  • TO_NUMBER :将数字字符串转化成数字
Select TO_CHAR(0.123,‘$0.9999’) FROM DUAL;
SELECT TO_CHAR(sysdate,'YYYY"年"fmMM"月"fmDD"日" HH24:MI:SS') FROM dual; 
SELECT TO_DATE(‘2005-12-06’ , ‘yyyy-mm-dd’) FROM dual; 
SELECT TO_NUMBER('100') FROM dual;

其它函数

以下是几个用来转换空值的函数 (scott.emp):

  • NVL( string1 , replace_with )如果string1为NULL,则NVL函数返回 replace_with的值,否则返回string1的值
  • NVL2 ( E1, E2, E3)如果E1为NULL,则函数返回E3,若E1不为 null,则返回E2
  • NULLIF(表达式1,表达式2)如果表达式1和表达式2相等则返回空值,如果表达式1和表达式2不相等则返回表达式1的结果

 查询员工工资和(工资sal+奖金comm)

Select empno ,sal +comm from emp; 
Select empno ,sal + nvl(comm,0) from emp; 
SELECT empno,sal + nvl2(comm,comm,0) from emp; 
SELECT NULLIF(100,200) FROM DUAL;

分组函数

分组函数基于一组行来返回结果

为每一组行返回一个值

分析函数

  • 分析函数根据一组行来计算聚合值
  • 用于计算完成聚集的累计排名、移动平均数等
  • 分析函数为每组记录返回多个行

以下三个分析函数用于计算一个行在一组有序行中的排位 ,序号从1开始。 

  • ROW_NUMBER 返回连续的序号,不论值是否相等
  • RANK 具有相等值的行排位相同,序号随后跳跃
  • DENSE_RANK 具有相等值的行排位相同,序号是连续的

 本章总结

SQL支持的操作符包括算术、比较、逻辑、集合和连接操作符

SQL函数可大致分为:

  • 单行函数:日期、字符、数字、转换、其他
  • 聚合函数
  • 分析函数 

2018.8.27

猜你喜欢

转载自blog.csdn.net/Altr1aPendrag0n/article/details/82117145
今日推荐