SQL基础教程第六章函数、谓词、CASE表达式

各种函数

根据用途,大致分为算数函数、字符串函数、日期函数、转换函数和聚合函数

算数函数

  • ABS
  • ROUND
  • MOD

字符串函数

  • 拼接函数||
  • 字符串长度 LENGTH
  • LOWER&UPPER
  • REPLACE
  • SUBSTRING

日期函数

  • CURRENT_DATE
  • CURRENT_TIME
  • CURRENT_TIMESTAMP
  • EXTRACT 截取日期函数,配合TIMESTAMP使用

转换函数

  • CAST 类型转换
  • COALESCE 将NULL转换为其他值

谓词

LIKE

字符串的部分一致查询

image-20231122084250929

先创建如图所示的列表:

  • 前方一致查询:

    1
    2
    3
    SELECT *
    FROM SampleLike
    WHERE strcol LIKE 'ddd%';

    image-20231122084408127

  • 中间一致

    1
    2
    3
    SELECT *
    FROM SampleLike
    WHERE strcol LIKE '%ddd%';

    image-20231122084455563

  • 后方一致

    1
    2
    3
    SELECT *
    FROM SampleLike
    WHERE strcol LIKE '%ddd';

    image-20231122084534109

  • 下划线的前方一致:

    _为任意字符,

    1
    2
    3
    SELECT *
    FROM SampleLike
    WHERE strcol LIKE 'abc___';

image-20231122084625337

BETWEEN

范围查询

1
2
3
SELECT product_name, sale_price
FROM Product
WHERE sale_price BETWEEN 100 AND 1000;

这个包含临界值,不需要临界值可以用算术符

IS NULL /IS NOT NULL

IN

or的简便用法:

1
2
3
4
5
6
7
8
9
10
#or
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price = 320
OR purchase_price = 500
OR purchase_price = 5000;
#in
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IN (320, 500, 5000);
  • 子查询作为IN的参数

    image-20231122111325397

    读取大阪店在售物品的单价:

    • 选取在大阪店销售的物品id
    • 选取物品id的单价
    1
    2
    3
    4
    5
    6
    --取得在大阪店销售的商品的销售单价
    SELECT product_name, sale_price
    FROM Product
    WHERE product_id IN (SELECT product_id
    FROM ShopProduct
    WHERE shop_id = '000C');

image-20231122111658658

CASE表达式

搜索CASE表达式

1
2
3
4
5
6
7
CASE 
WHEN<求值表达式> THEN <表达式>
WHEN<求值表达式> THEN <表达式>
WHEN<求值表达式> THEN <表达式>
WHEN<求值表达式> THEN <表达式>
ELSE <表达式>
END
1
2
3
4
5
6
7
SELECT product_name,
CASE WHEN product_type = '衣服' THEN 'A:' || product_type
WHEN product_type = '办公用品' THEN 'B:' || product_type
WHEN product_type = '厨房用具' THEN 'C:' || product_type
ELSE NULL
END AS abc_product_type i
FROM Product;