第二章 基础查询

在这里插入图片描述

1 基础查询

  • SQL中可以随意使用换行符(但不可插入空行)
  • 1行注释"-- “、多行注释”/* */"
  • NULL的真值结果既不为真,也不为假,表不确定
  • 只能是 is null 不能是 = null;is not null 同理
  • 字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆
  • 星号、distinct、中文需要双引号
  • 比较运算符,等于号用=,不用==
  • NOT
  • AND、OR
  • 括号
-- exam1
SELECT *
  FROM <表名>
-- exam2
SELECT DISTINCT product_id  As id,
       purchase_price AS "进货单价",
       sale_price * 2 AS "sale_price x2"
  FROM product
  WHERE purchase_price IS NOT NULL
  AND product_type <> '衣服'
  AND NOT sale_price >= 1000
  AND sale_price-purchase_price >= 500
  AND ( regist_date = '2009-09-11'
        OR regist_date = '2009-09-20');
  • 练习

2.1
编写一条SQL语句,从product(商品)表中选取出“登记日期(regist在2009年4月28日之后”的商品,查询结果要包含product name和regist_date两列

select product_name, regist_date
from product
where regist_date > '2009-04-28;

2.2这里是引用
返回的结果是? – 没结果
sale_price - purchase_price >=500,不包括500-null的

2 聚合函数和groupby

在这里插入图片描述

SELECT SUM(sale_price), SUM(DISTINCT sale_price)
FROM product;
  • COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数
  • 聚合函数会将NULL排除在外。但COUNT(*)例外,并不会排除NULL
  • MAX/MIN函数几乎适用于所有数据类型的列SU,M/AVG函数只适用于数值类型的列
SELECT product_type, COUNT(*)
  FROM product
 GROUP BY product_type;
  • select里须有groupby的列,不能写groupby之外的列
  • 在 GROUP BY 子句中指定的列称为聚合键或者分组列
  • 聚合建包含NULL时,此时会将NULL作为一组特殊数据进行处理
  • 书写顺序(与执行顺序不同):where在groupby前
  • select在groupby后,所以groupby不能用select中的as别名
  • where中不能使用聚合函数,聚合函数的使用前提是结果集已经确定,而WHERE还处于确定结果集的过程中,相互矛盾会引发错误
    在这里插入图片描述

3 执行顺序

  • select在groupby后,所以groupby不能用select中的as别名
  • 显然oder by可以
    在这里插入图片描述

4 having

  • 筛选聚合值
SELECT product_type, COUNT(*)
  FROM product
 GROUP BY product_type
HAVING COUNT(*) = 2;

5 order by

  • 当用于排序的列名中含有NULL时,NULL会在开头或末尾进行汇总
SELECT <列名1>, <列名2>, <列名3>, ……
  FROM <表名>
 ORDER BY <排序基准列1> ASC, <排序基准列2> DESC, ……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值