本节要点:

  • 掌握 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函数的更多相关文章

  1. oracle PL/SQL(procedure language/SQL)程序设计(续集)之PL/SQL函数

    PL/SQL函数 examples:“ 构造一个邮件地址 v_mailing_address := v_name||CHR(10)||                                 ...

  2. DB2开发系列之三——SQL函数

    1.内置函数分类(SYSIBM模式内) 1)标量函数:返回一个标量值的函数: 2)聚合函数:也叫列函数,也返回一个标量值,这个值是一组输入值的计算结果:3)表函数:向引用它的 SQL 语句返回一个表: ...

  3. Oracle数据库常用SQL函数

    1.SQL函数的概念: 函数一般是在数据上执行的,它给数据的转换和处理提供了方便.只是将取出的数据进行处理,不会改变数据库中的值.(类似于java中的方法但函数只是将数据库中的数据取出(复制)到函数中 ...

  4. 【东软实训】SQL函数

    SQL函数 SQL是用于访问和处理数据库的标准的计算机语言,我们所使用的的是Oracle SQL 一个数据库通常包含一个或多个表,每个表有一个名字表示,下图即为一个名为“emp”的表,接下来的操作都将 ...

  5. PostgreSQL 基本数据类型及常用SQL 函数操作

    数据类型 名字 别名 描述 bigint int8 有符号的8字节整数 bigserial serial8 自动增长的8字节整数 bit [ (n) ]   定长位串 bit varying [ (n ...

  6. Hive sql函数

    date: 2018-11-16 19:03:08 updated: 2018-11-16 19:03:08 Hive sql函数 一.关系运算 等值比较: = select 1 from dual ...

  7. 记录一次SQL函数和优化的问题

    一.前言 上次在年前快要放假的时候记录的一篇安装SSL证书的内容,因为当时公司开始居家办公了,我也打算回个家 毕竟自己在苏州这半年一个人也是很想家的,所以就打算年过完来重新写博客.不巧的是,当时我2月 ...

  8. Oracle 中的sql函数以及分页

    SELECT LPAD(,'*.') "LPAD example" FROM DUAL; 1.分页查询 (1)方法一:使用  between  and 来实现分页 select * ...

  9. SQL函数说明大全

    一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...

随机推荐

  1. 基于ArcGIS Flex API实现动态标绘(1.0)

    标绘作为一种数据展示形式,在多个行业都有需求. 基于ArcGIS Flex API(3.6)实现标绘API,当前版本号1.0 alpha,支持经常使用几种标绘符号,包含: 圆弧.曲线.圆形.椭圆.弓形 ...

  2. javascript高级程序设计--浅析undefined与null的差别

    浅析undefined与null的差别 相似处: 1.undefined 和 null 都是javascript 的基本数据类型.事实上两者没有太大差别. 定义: var a=undefined; v ...

  3. C语言数组和函数实例练习(一)

    C语言的数组和函数部分的知识,在语法上和Java语法是有所相似的,这里只通过实例总结一些自己感觉需要理解的部分知识. 1.数组 数组中的元素具有相同的数据类型:数组一旦创建,不能被改变:数组中元素在内 ...

  4. CH Round #46A 磁力块

    还是一道好题的 对于一个磁石是否被吸引,有两个关键字:距离和质量.(二维偏序??) 好像是很厉害的分块姿势,先按第一关键字排序,在块中按第二关键字排 进行bfs,对于当前磁石,有1~k-1个块是第一关 ...

  5. redis集群部署及常用的操作命令_01

    简单说下自己测试搭建简单的redis集群的大体步骤: 1.首先你的有6个redis(官方说最少6个,3master,3slave),可以先在一台机器上搭建,搭建到多台上应该只需要改变启动命令即可(可能 ...

  6. javascript设计模式-继承

    javascript继承分为两种:类式继承(原型链.extend函数).原型式继承(对继承而来的成员的读和写的不对等性.clone函数). 类式继承-->prototype继承: functio ...

  7. Python金融量化

    Python股票数据分析 最近在学习基于python的股票数据分析,其中主要用到了tushare和seaborn.tushare是一款财经类数据接口包,国内的股票数据还是比较全的 官网地址:http: ...

  8. ADO.NET改进防注入

    static void Main1(string[] args) { //用户输入一个需要查询的条件 car表 Console.WriteLine("请输入"); string c ...

  9. 基于jQuery封装一个瀑布流插件

    /*封装一个瀑布流插件*/ (function($){ $.fn.WaterFall = function(){ /*这是你初始化 调用这个方法的时候的 那个jquery选着到的dom对象 this* ...

  10. C#中的引用传递和值传递。

    最近在写项目中有同事碰到这样的传值问题,可能很多对这个参数的传递还有点疑惑,自己也是对这个基础知识做一个回顾和巩固. 首先什么是值类型和引用类型可以去园里看一下相关的资料,都有介绍. 常用值类型包括: ...