《SQL 基础教程》第六章:函数、谓词、CASE 表达式
函数是 SQL 中的一部分.在 SQL 中,除了普通的函数之外,还有特殊的函数(谓词和 CASE 表达式)用于各种情况.
函数
函数的种类有:
- 算术函数
- 字符串函数
- 日期函数
- 转换函数(用于转换数据类型)
- 聚合函数
算术函数
例如;
- MOD:求余
- ABS:求绝对值
- ROUND:四舍五入
字符串函数
例如:
- 拼接: || 函数
- 求字符串长度: LENGTH
- 大小写转换:LOWER ,UPPER
- 替换字符串:REPLACE(对象字符串,对象字符串中要替换的字符串,替换成的字符串)
日期函数
例如:
- 得到当前日期:CURRENT_DATE
- 得到当前时间(时分秒):CURRENT_TIME
- 得到当前的日期和时间: CURRENT_TIMESTAMP
- 截取日期元素:EXTRACT(YEAR FROM CURRENT_TIMESTAMP)
转换函数
1.CAST 函数
格式:
CAST(转换前的值 AS 想要转换成的数据类型)
范例:
CAST('0001' AS INTEGER)
2.COALESCE 函数
格式:
COALESCE(num1, num2, num3, num4,...)
功能:
返回从左侧起第一额不是 NULL 的值.
Predicate 谓词
是进行判断的函数,该函数的返回值有两种:真和假.典型的谓词,例如: =,>,<等比较运算符就是比较谓词.
LIKE 谓词——模式匹配
格式:
SELECT *
FROM SampleLIke
WHERE strcol LIKE 'ddd%'
功能:
查找特定文本模式的字符串,可用的符号有:
- %:代表任意字符串
- _:代表任意一个字符
BETWEEN 谓词——范围查询
格式:
SELECT product_name, sale_price
FROM Product
WHERE sale_price BETWEEN 100 AND 1000
功能:
判断数据是否在某一区间范围内
IS NULL, IS NOT NULL ——判断是否为 NULL
IN 谓词——判断 OR 类型的数据
格式:
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IN (320, 500, 5000);
功能:
取出符合 OR 语句要求的数据
IN 谓词与子查询
子查询可以与 IN 谓词配合起来,从而实现动态的查询,编写出更加易维护的程序,例如:
用于查询shop_id 为 '000C'所含的商品.
SELECT product_name, sale_price
FROM Product
WHERE product_id IN (SELECT product_id
FROM ShopProduct
WHERE shop_id = '000C');
EXIST 谓词——判断是否存在满足条件的记录
范例:
查找 P 表和 SP 表中 shop_id 相同的数据:
SELECT product_name, sale_price
FROM Product AS P
WHERE EXIST (SElECT *
FROM ShopProduct AS SP
WHERE SP.shop.id = P.product_id);
格式:
其中的 SELECT * 是 SQL 的一种惯例.
EXIST 只关心是否有匹配的数据,因此 SELECT * 改为 SELECT 1 的时候结果也不会发生变化.
功能:
EXISTS 谓词常常与关联子查询配合而进行查询,返回满足条件的记录.
CASE 表达式
CASE 表达式分为简单 CASE 表达式与搜索 CASE 表达式,其区别是:
- 简单 CASE 表达式最初的 "CASE
<colname>
“会作为谓词的左边的对象. - 搜索 CASE 表达式无此限制,因此可以使用多种判断的条件
「简单 CASA 表达式」格式:
CASE <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
...
ELSE <表达式>
END
「搜索 CASA 表达式」格式:
CASE WHEN <含谓词的表达式>
THEN <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
...
ELSE <表达式>
END
其中第一个表达式是包含谓词的表达式,其返回 TURE/FALSE/UNKNOWN),
第二个表达式是第一个表达式为 TRUE 的时候,执行的语句.
「搜索 CASA 表达式」语法:
CASE 表达式顺序执行语句,如果表达式返回 TRUE, 则执行 THEN 后的语句,然后 CASE 表达式的执行到此为止.
如果不为 TRUE, 则执行下面的 WHEN 语句
当所有 WHEN 语句执行完(都不为 TRUE)后,执行 ELSE 语句,然后 CASE 表达式的执行到此为止.
ELSE 语句是可选的, 默认情况下为 ELSE NULL
《SQL 基础教程》第六章:函数、谓词、CASE 表达式的更多相关文章
- Objective-C 基础教程第六章,源文件组织
目录 Object-C 基础教程第六章,源文件组织 0x00:前言 0x01:Xcode创建OC类 0x02:Xcode群组 0x03 Xcode跨文件依赖关系 @class关键字 导入和继承 小结 ...
- 《SQL 基础教程》第二章:查询基础
这一章的结构如下: SELECT 语句基础 算术运算符和比较运算符 逻辑运算符 SELECT 语句可用于查询数据,并且可以设定条件来查询具有特定值的记录.条件的设定就需要算数运算符.比较运算符和逻辑运 ...
- 《SQL 基础教程》—第一章:数据库与 SQL
导言 这一章的内容如下: 数据库简介 SQL 概要 表的创建 表的删除与更新 数据库简介 定义: Database, 是大量数据的集合Database Management System,是用于管理数 ...
- 《SQL基础教程》+ 《SQL进阶教程》 学习笔记
写在前面:本文主要注重 SQL 的理论.主流覆盖的功能范围及其基本语法/用法.至于详细的 SQL 语法/用法,因为每家 DBMS 都有些许不同,我会在以后专门介绍某款DBMS(例如 PostgreSQ ...
- 《SQL基础教程》
Product表 CREATE TABLE Product (product_id CHAR(4) NOT NULL, product_name VARCHAR(100) NOT NULL, prod ...
- [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY
[SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER B ...
- [SQL基础教程] 3-3 HAVING
[SQL基础教程] 3-3 HAVING HAVING子句 SELECT col_1,col_2 FROM table GROUP BY col_1,col_2 HAVING col_1 = '2'; ...
- [SQL基础教程] 3-2 对表进行分组
[SQL基础教程] 3-2 对表进行分组 GROUP BY SELECT <列名1>,<列名2>,... FROM <表名> GROUP BY <列名1> ...
- [SQL基础教程] 3-1 对表进行聚合查询
[SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SE ...
- GSAP JS基础教程--使用缓动函数
今天来了解一下缓动easeing函数. 开始,如果你还没有GSAP的类包,可以到GreenSock的官网去下载最新版本的类包,或者直接点击这里来下载 学习之前,先来准备一下: <!DO ...
随机推荐
- DHCP和TFTP服务
DHCP服务 主要用途:用于内部网络和网络服务供应商自动分配IP地址给用户 用于内部网络管理员作为对所有电脑作集中管理的手段 使用场景:自动化安装系统 解决IPV4资源不足问题 DHCP共有八种报文: ...
- postman headers 请求参数和MD5加密签名
postman 变量可以这样写:{{timestamp}} ,也可以用系统的,{{$timestamp}},这样就不用给自己赋值了,但在 pre-requestScript中是获取不到这个值的 所以我 ...
- github仓库的初步使用
github是被戏称为男人们的朋友圈,在github里可以很方便的和同伴合作.以下是github初步建立的步骤.(由于我已经安装好了,所有没有插入图片,如果有未降到的问题先自行百度,如果我后续碰到有关 ...
- supervisor配置详解(转)
有阵子没写博客了,这段时间一直在研究python django框架和前端相关的东西.楼主学通信的,对web这一块啥也不懂,学了一个礼拜django,接着学了2个礼拜前端,感觉还是做不出来一个好看的页面 ...
- 201905<<金字塔原理>>
金字塔原理是本好书,主要从写作,思考,解决问题三个方面讲解了如何使用金字塔结构来分析.自下而上的分析,自上而下的表达,解决问题时先确定问题的四要素,搭建三棱镜框架,再解决问题.三棱镜分析问题的方法感触 ...
- CCF CSP 201809-1 卖菜
题目链接:http://118.190.20.162/view.page?gpid=T79 问题描述 试题编号: 201809-1 试题名称: 卖菜 时间限制: 1.0s 内存限制: 256.0MB ...
- Eureka服务端源码流程梳理
一.简述 spring cloud三步走,一导包,二依赖,三配置为我们简化了太多东西,以至于很多东西知其然不知其所以然,了解底层实现之后对于一些问题我们也可以快速的定位问题所在. spring clo ...
- VUE引入字体图标库
1. 下载阿里图标 2. 解压文件,并复制文件到VUE项目内 3. 找到添加的字体图标的.css文件,将.iconfont改成[class^="iconfont"], [class ...
- flutter sqflite
https://www.jianshu.com/p/88998af66e4b https://www.jianshu.com/p/7ac3ce2bc0c6
- 依据word模板批量生成试卷
java-word-MassProduction 目录 使用方法 开发流程 一.使用方法 1.制造题库所需Word模板 需要填充数据的地方使用 ${pid} 代替. 将这个word选择另存为,保存格式 ...