《SQL必知必会》第6课到第10课笔记

六、用通配符进行过滤

  1. LIKE操作符:指示其后利用通配符匹配
  2. 百分号(%)通配符:表示任何字符出现任意次数
    – 根据DBMS的配置,其搜索可以是区分大小写的
    – 可同时使用多个通配符
    – 其也能匹配0个字符: LIKE '%FISH'输出结果可能包括FISH
    – 如果定义某列有50个字符,单词后面可能跟着很多空格,搜索以某个字符开头结尾的单词,如LIKE 'F%Y'可能搜索不出来,这时可以在最后再加上一个百分号
  3. 下划线(_)通配符:只匹配单个字符
    – 匹配单个字符,多一个少一个都不行
  4. 方括号([ ])通配符:指定字符集,指定位置的字符包含于字符集中 LIKE '[JM]%'
  5. 前缀字符(^):用于否定方括号通配符 LIKE '[^JM]%'
    – 可用NOT代替,优点在于简化语法
  6. 使用通配符的注意事项:
    – 不要过度使用,会耗费更长的处理时间
    – 尽量不要用在搜索模式的开始处

七、创建计算字段

  1. 字段(field):与列(column)意思相同;计算字段在SELECT语句中创建
  2. 拼接字段:用加号(+)或两个竖杠(||)表示,其中可加入其它字符 SELECT [COL1] + '(' + [COL2] + ')' FROM [TABLE]
    – MySQL和MariaDB使用的是 Concat()
    – 以上所保存的结果可能有许多空格填充为列宽
    – 用RTRIM()函数去除值后的空格 SELECT RTRIM([COL1]) + '(' + RTRIM([COL2]) + ')' FROM [TABLE]
    – TRIM()去除左右空格;LTRIM()去除左边空格
    关键字AS:赋予别名/导出列
  3. 执行算术计算:可输出新的计算列
    来自课本第62页

八、使用函数处理数据

  1. 可移植性:SQL函数不是可移植的,意味着为了特定的SQL实现所编写的代码可能在其他地方不正常
  2. 文本处理函数
    – 其中SOUNDE是将任何文本字符串转换为描述其语音表示的字母数字模式的算法,能够用来匹配语音相近的单词
    SELECT [COL] FROM [TABLE] WHERE SOUNDEX([COL])=SOUNDEX([VAL])
    来自课本第67页
  3. 日期和时间处理函数:各DBMS差异较大
    – SQL SeverL里:WHERE DATEPART(yy, order_date) = 2012
    – MySQL里:WHERE YEAR(order_date) = 2012
    – SQLite里:WHERE strftime('%Y', order_date) = '2012'
  4. 数值处理函数:在主要DBMS中最一致
  5. 课本72页

九、汇总数据

  1. 聚集函数:对某些行运行计算,并返回一个值
  2. AVG()函数:求平均
    – 只能用于单个列;要获得多个列的平均值,则需要使用多个函数
    – 可以用DISTINCT计算不重复值的平均数
    – 自动忽略NULL值
  3. COUNT()函数:确定行的数目
    – COUNT(*): 对行数计数,无论是否非空
    – COUNT([COL]): 对具有值的行计数,忽略NULL值
  4. MAX()函数:返回列的最大值
    – 必须指定列名
    – 用于文本数据时,返回最后一行
    – 忽略NULL值
  5. MIN()函数:返回列的最小值,用法同上
  6. SUM()函数
    – 可以计算单个列值,或者合计,如:SUM(price*quantity)

十、分组数据

  1. 创建分组:GROUP BY 子句
    – 该子句可以包含多列进行分组
    – 除了聚集计算语句外,SELECT语句中的每列都必须在GROUP BY子句中给出
    – 如果分组列包含NULL值,将单独或多个NULL值的行归为一组
    – 必须出现在ORDER BY子句前,WHERE之后
  2. 过滤分组:HAVING 子句
    – WHERE在分组前过滤,HAVING在分组后过滤
  3. SELECT子句顺序总结:
    课本92页
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值