文章目录
粗略的数据库的学习笔记
自己刚开始学习的时候因为学的不太好,所以找了一本《SQL基础教程》的pdf版来看,看上去确实会更加通俗易懂一些,所以用typora断断续续的记了一些基础的语法。
INSERT 插入
1. 表的数据的复制
INSERT INTO product_copy( 列名 )
SELECT (列名)
FROM product
2. 插入其他数据合计值的INSERT… SELECT语句
INSERT INTO Product_type (列名)
SELECT (列名)
FROM Product
GROUP BY product_type;
3. 数据的更新
UPDATE Product(表名)
SET (列名) = 更改的数据;
UPDATE Product(表名)
SET sale_price = sale * 10
WHERE product_type = ‘厨房用具’;
-
聚合函数
COUNT :对行进行计算
SUM:计算对表中数据列的数据的总和
AVG:列中数据的平均值
MAX:列中数据的最大值
MIN:列中数据的最小值
用于汇总的函数简称聚合函数,输入多行输出一行。 -
COUNT使用
SELECT COUNT () FROM 表; * 表示全部列的意思。- 计算NULL之外的数据的行数
SELECT COUNT (列名) FROM 表;
COUNT (*)会包含NULL值的行数,而其他的参数列名却不会。
- 计算NULL之外的数据的行数
-
SUM
对SUM传入列名会将NULL值排除在外,也就是计算除了NULL以外的值。
SELECT SUM ( 列名) FROM 表名; -
AVG
1.AVG函数同样也会将NULL去除再进行计算,等同于NULL值并不存在,分母为值的个数。
2.对于如何将NULL看成零进行计算,,分母不变。方法如下: -
MAX/MIN同理,并且还适用于,日期值,字符串类型的数据;SUM/AVG只适用于数值类型的列。
-
DISTINCT的使用
SELECT COUNT (DISTINCT product_type) FROM Product;
在聚合函数的参数中使用DISTINCT,就可以删除重复数据。
对表进行分组
重点:聚合函数与GROUP BY子句
- 只能写在SELECT子句中
- GROUP BY不能使用SELECT子句中列的别名
- GROUP BY子句的聚合结果是无序的
- WHERE 子句中不能使用聚合函数
应用
SELECT product_type, COUNT (*) FROM Product GROUP BY product_type
当product_type包含NULL值的时候会显现NULL的结果。
以上是对产品种类进行GROUP BY分类,COUNT 计算每一类的行数。
SELECT purchase_price,COUNT(*)
FROM Product
WHERE product_type =‘衣服’
GROUP BY purchase_price;
执行顺序,FROM-WHERE-GROUP BY-SELECT; SELECT 当中可以使用别名
不能把GROUP BY子句里面之外的列名写在SELECT子句之中,group by中不能使用别名。
对聚合结果指定条件
HAVING子句 1必须使用GROUP BY子句中指定的列名,2聚合函数, 3常数。
SELECT product_type, AVG(sale_price)
FROM Product
GROUP BY product_type
HAVING AVG(sale_price) >= 2500;
对查询结果进行排序
ORDER BY子句 这是升序排列
ORDER BY 。。。DESC 这是降序排列