数据库
首页 > 数据库> > DW学习--MySQL02(基础查询与排序)

DW学习--MySQL02(基础查询与排序)

作者:互联网

目录


在这里插入图片描述

1 SELECT语句

1.1 从表中选取数据

注意:查询结果中列的顺序和SELECT子句中的顺序相同。

注意:使用*无法设定列的显示顺序,会按照CREATE TABLE语句的定义对列进行排序。

注意:
1.别名可以使用中文,但是中文要用"括起来,注意不是单引号’。
2.设置别名并不改变原有的数据列名。

注意:
1.DIETINCT关键字只能用在第一个列名之前。
2.在使用DISTINCT时,NULL也被视为一类数据,即NULL存在多行时,也会被合并为一条MULL数据。

1.2 选取符合条件的数据

注意:
1.首先通过WHERE子句查询出表中所有符合指定条件的记录,然后再选取出SELECT语句指定的列。
2.WHERE子句必须跟在FROM子句之后。


2 算术运算符和比较运算符

含义运算符
加法+
减法-
乘法*
除法/

【例子】:把各个商品单价的 2 倍(sale_price 的 2 倍)以 “sale_price_x2” 列的形式读取出来。

SELECT product_name,sale_price,
       sale_price*2 As sale_price_x2
  FROM Product;

在这里插入图片描述

注意:
1.运算是这样以行为单位执行的
2.所有包含NULL的算术运算,结果肯定是NULL

比较运算符含义
=相等
<>不相等
>=大于等于
>大于
<=小于等于
<小于

【例子】:选出销售单价比进货单价高500日元的商品

SELECT product_name,sale_price,purchase_price
  FROM Product
 WHERE sale_price-purchase_price>=500;

在这里插入图片描述

注意:
1.字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。
2.如果希望选取NULL记录时,不能使用比较运算符,必须用专门判断是否为NULL的运算符IS NULLIS NOT NULL,前者是希望选取是NULL的记录,后者是希望不选取NULL记录。


3 逻辑运算符

注意:想要优先使用哪种运算,可以用括号来更改。


4 聚合查询

注意:
1.①被称为参数或者parameter,②被称为返回值
2.对于SUM函数,即使包含NULL,也可以计算合计值,但是为什么之前在算术运算符中说包含NULL的结果一定是NULL呢?这是因为,聚合函数,如果以列名为参数,在计算之前就把NULL排除在外了,而不是把NULL看成0来计算。
3.对于AVG函数,如果列中有NULL,也会和SUM函数一样,排除掉,特别注意的是,分母也要减去有NULL的数据的个数
4.MAX/MIN函数几乎适用于所有数据类型的列。SUM/AVG函数只适用于数值类型的列。

【例子】计算NULL之外的行数
在这里插入图片描述
执行代码和结果:
在这里插入图片描述

注意:
1.COUNT函数的结果根据参数的不同而不同。COUNT(*)得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。
2.聚合函数会把NULL排除在外,但是COUNT(*)例外,不会排除NULL

注意:
1.DISTINCT必须写在括号中,因为必须在计算行数前,删点重复是的数据。如果写在括号外,就会先计算行数,再删除重复数,上面的结果就为8
2.所有的聚合函数都可以使用DISTINCT


5 分组

在这里插入图片描述

1 不使用 GROUP BY子句时,是将表中的所有数据作为一组来对待的。而使用 GROUP BY 子句时,会将表中的数据分为多个组进行处理。
2.聚合键中包含NULL时,会将NULL 作为一组特定的数据,在结果中会以“不确定”行(空行)的形式表现出来。

注意:
DISTINCTGROUP BY都可以删除重复数据,在“想要删除选择结果中的重复记录”时使用DISTINCT,在“想要计算汇总结果”时使用GROUP BY


6 为聚合结果指定条件


7 查询结果排序

注意:
1.不论何种情况,ORDER BY 子句都需要写在SELECT语句的末尾
2.默认是升序排列,如果想指定升序或降序,要在列名后使用关键字:DESC关键字(降序)和ASC关键字(升序)【 ascendent、descendent】。
3.多个排序键时,规则是优先使用左侧的键,如果该列存在相同值的话,再接着参考右侧的键。
4.使用含有NULL的列作为排序键时,NULL 会在结果的开头或末尾汇总显示


8 练习题

8.1第一部分

8.2 第二部分

SELECT product_id,SUM(product_name)
--本SELECT语句中存在错误。
  FROM Product 
 GROUP BY product_type 
 WHERE regist_date > '2009-09-01';

答案:

SELECT product_id,SUM(product_name)
# SUM函数只能使用数值型的列作为参数
# SELECT子句中有GROUP BY子句中没有的列product_id

  FROM Product 
 GROUP BY product_type 
# GROUP BY子句要写在WHERE子句的后面

 WHERE regist_date > '2009-09-01';
SELECT product_type,
       SUM(sale_price),SUM(purcahse_price)
  FROM Product
 GROUP BY product_type
HAVING SUM(sale_price)>SUM(purchase_price)*1.5;

在这里插入图片描述

SELECT *
  FROM Product
 ORDER BY regist_date DESC,sale_price ASC; 

在这里插入图片描述

标签:product,MySQL02,--,price,子句,DW,NULL,WHERE,SELECT
来源: https://blog.csdn.net/OohMuYi/article/details/111226865