《SQL必知必会》学习笔记之2

6.计算字段

6.1 计算字段

  • 计算字段并不实际存在于数据库表中,它是运行时在 SELECT 语句内创建的。
  • 字段与列的意思相同,不过数据库列一般称为列,而术语字段通常与字段一起使用

6.2 拼接字段

select concat(vend_name, '(', vend_country,')') as vend_title --使用别名
from vendors
order by vend_name;

6.2 执行算数计算

加(+)、减(-)、乘(*)、除(/)

7.使用函数处理数据

7.1 函数

  • SQL函数大部分不可移植(即同一功能在不同数据库中的实现形式不一样)。
  • 若决定使用函数,应做好代码诠释。

7.2 使用函数

7.2.1 文本处理函数

表7.1 常用的文本处理函数

函数说明
left()返回字符串左边的字符
length()返回字符串的长度
lower()将字符串变为小写
ltrim()去掉字符串左边的空格
right()返回字符串右边的字符
rtrim()去掉字符串右边的空格
soundex()返回字符串的soundex值
upper()将字符串转换为大小写

注:soundex 是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。

7.2.2 日期和时间处理函数

select order_num
from orders
where year(order_date) = 2012;

7.2.3 数值处理函数

如abs()、cos()、exp()、pi()、sin()、sqrt()、tan()等

8 汇总数据

8.1 聚集函数

如avg()、count()、max()、min()、sum()等

  • avg() 只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个avg()。
  • count(*) 对表中所有行进行计算,不管表列中包含的是空值还是非空值。
  • count(column) 对特定列中具有值的行进行计数。
  • max()函数用于文本数据时返回该列排序后的最后一行;忽略NULL。
  • 如果指定列名,distinct()只能用于count()
  • distinct 不能用于count(*)

9 分组数据

9.1 group by

  • group by 子句中每一列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在 select 中使用表达式,则必须在 group by 中使用相同的表达式,不能使用别名。
  • group by 子句必须出现在 where 子句之后,order by 子句之前。
  • 如果分组内中包含具有 null 的值,则将 null 作为一个分组返回。
  • 大多数 SQL 实现 不允许 group by 带有长度可变的数据类型(如文本或备注型字段)。

9.2 having VS where

  • where 过滤行,having 过滤分组
  • where 在数据分组前进行过滤,having 在数据分组后进行过滤

9.3 group by & order by

  • 用 group by 分组的数据经常以分组顺序输出,但并不总是这样。
  • 一般在使用 group by 时,应该也给出 order by 子句

10 利用子查询

  • 子查询
  • 利用子查询进行过滤
  • 作为计算字段使用子查询

11 联结表

  • 笛卡尔积 & where 的重要性
  • 等值联结 = 内联结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值