zoukankan      html  css  js  c++  java
  • 《SQL 基础教程》第六章:函数、谓词、CASE 表达式

    函数是 SQL 中的一部分.在 SQL 中,除了普通的函数之外,还有特殊的函数(谓词和 CASE 表达式)用于各种情况.

    函数

    函数的种类有:

    1. 算术函数
    2. 字符串函数
    3. 日期函数
    4. 转换函数(用于转换数据类型)
    5. 聚合函数

    算术函数

    例如;

    • MOD:求余
    • ABS:求绝对值
    • ROUND:四舍五入

    字符串函数

    例如:

    1. 拼接: || 函数
    2. 求字符串长度: LENGTH 
    3. 大小写转换:LOWER ,UPPER
    4. 替换字符串:REPLACE(对象字符串,对象字符串中要替换的字符串,替换成的字符串)

    日期函数

    例如:

    1. 得到当前日期:CURRENT_DATE
    2. 得到当前时间(时分秒):CURRENT_TIME
    3. 得到当前的日期和时间: CURRENT_TIMESTAMP
    4. 截取日期元素: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%'

    功能:
    查找特定文本模式的字符串,可用的符号有:

    1. %:代表任意字符串
    2. _:代表任意一个字符

    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 表达式,其区别是:

    1. 简单 CASE 表达式最初的 "CASE <colname>“会作为谓词的左边的对象.
    2. 搜索 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





  • 相关阅读:
    Linux(Ubuntu)使用日记------ssh远程登录腾讯云
    Linux(Ubuntu)使用日记------vim复制内容到其他应用
    Linux(Ubuntu)使用日记(七)------终端控制器Terminator安装使用
    Error updating database. Cause: java.sql.SQLException: Access denied for user '${username}'@'localhost' (using password: YES)
    Linux(Ubuntu)使用日记(三)------git安装使用
    90分钟实现一门编程语言——极简解释器教程
    新人入职100天,聊聊自己的经验&教训
    2010~2013,三年三十万+,从挣钱角度回忆自己研究生三年时光
    flex布局总结
    react项目 之 server-mongod数据库框架
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10729882.html
Copyright © 2011-2022 走看看