美文网首页读书笔记
《SQL基础教程》阅读笔记7

《SQL基础教程》阅读笔记7

作者: Athenaearl | 来源:发表于2018-11-18 22:14 被阅读3次

函数使用时候常见的格式:
SELECT ...,function(...) AS 别名 FROM 表名;

函数的种类

  • 算数函数
  • 字符串函数
  • 日期函数
  • 转换函数
  • 聚合函数
算数函数:
  1. 运算符 + - * /
  2. 绝对值 ABS()
  3. 求余 MOD()
  4. 四舍五入 ROUND()
字符串函数:
  1. 拼接: string1||string2||... mysql 似乎不支持 但是有CONCAT(str1,str2...)
  2. 获得长度:LENGTH(str)
  3. 小写转换:LOWER(str),大写转换是 UPPER(str)
  4. 字符串的替换:REPLACE(str1,str2,str3)
    str1,str2,str3 分别代表,被替换的整个字符串,被替换字符串中真正要被替换的部分字符串,替换字符串
  5. 字符串的截取:SUBSTRING(对象字符串 FROM 起始位置 FOR 结束位置)
日期函数:
  1. 获得当前日期:CURRENT_DATE,使用时候
    SELECT CURRNENT_DATE;
  2. 获得当前时间:CURRENT_TIME 使用方式同上
  3. 获得当前日期和时间:CURRENT_TIMESTAMP --时间戳
  4. 截取想要的时间元素:EXTRACT(日期元素 FROM 日期);
    比如 SELECT EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS year;
转换函数
  1. 类型转换
    CAST(转换前的值 AS 想转换成的类型)
    比如:SELECT CAST('0001' AS INTEGER) AS int_col;
  2. 将NULL转换为其他值
    COALESCE(数据1,数据2.。。。)
    它会返回参数中第一个不是NULL的
    使用
    SELECT COALESCE(<col_name1>,<value>) FROM table_name;
    这样所有NULL的值都被<value>替换掉了

谓词

  • LIKE
  • BETWEEN
  • IS NULL , IS NOT NULL
  • IN
  • EXISTS
LIKE -- 字符串的部分一致查询

建一张表 只有一列存放字符串的列 strcol 表名叫 sampleLike
以下代码做前方一致查询:

SELECT * FROM SampleLike WHERE strcol LIKE 'ddd%'

效果是 比如 有 dddda dddab abcdddd
第一个和第二被选择出来
%相当于告诉我们这个地方有字符
所以
前方查询 <查询字符串>%
中间查询 %<查询字符串>%
后方查询 %<查询字符串>

BETWEEN --范围查询
SELECT product_name,sale_price FROM Product
WHERE sale_price BETWEEN 100 AND 1000;
IS NULL 或者 IS NOT NULL

purchase_price IS NULL 是一个判断,判断其是否是NULL

IN
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price = 320
OR purchase_price = 500
OR purchase_price = 5000;

等价于

SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IN (320,500,5000);
EXISTS
SELECT product_name sale_price
FROM Product AS P
WHERE EXITS (SELECT * FROM shopProduct AS SP WHERE SP.shopid = '000C' AND SP.product_id = P.product_id);

EXITS 后面接的对象如果存在就返回TRUE 否则返回FALSE
返回TURE 的对象被选择,FALSE则不会

CASE 表达式

CASE表达式--条件分支
语法:
CASE WHEN <condition> THEN <expression>
WHEN <condition> THEN <expression>
.....ELSE <expression>
END

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;

结果是 两列 product_name 和 abc_product_type
abc_product_type 那里有分类'A:衣服' 'B:办公用品' 'C:厨房用具'

相关文章

网友评论

    本文标题:《SQL基础教程》阅读笔记7

    本文链接:https://www.haomeiwen.com/subject/ftfnfqtx.html