一.补充概念
1.强化概念:
1).DB:数据库,保存一组有组织的容器,即存储数据的容器
2).DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据,又称为数据库软件或数
据库产品,用于创建或管理DB.
3).SQL:结构化查询语言,用于和DBMS通信的语言
2.SQL语言的分类:
SQL语言分为五种:DQL语言.DML语言.DDL语言,DCL语言,TCL语言
DQL语言(Data query language):数据査询语言(涉及到的关键字是select)
DML语言(Data manipulation language):数据操纵语言(主要涉及数据的增删改,关键字
delete,update)
(有的书上把DQL语言和DML语言和为一种,都统称为DML语言.)
DDL语言(Data definition language):数据定义语言(主要涉及库和表的建立以及删除等
DCL语言(Data control language):数据控制语言,主要涉及数据库的权限等,比如授予或回收数据
库的某种特权;
TCL语言(Transaction control language)事务控制语言.(关键字:commit,rollback)
补充MySQL的语法规范:
1).不区分大小写,但是建议关键字大写,表名,列名小写(例如写SHOW DATABASES;
2).每条命令最好用分号结尾(因为有的可以不用写分号,例如图形界面库的就可以不写分号,而在非
图形界面库的还可以用\g结尾,所以分不清,最好用分号结尾);
3).每条命令根据需要,可以进行缩进或者换行
二.查询语句
1.使用集合函数查询
有时候并不需要返回实际表中的数据,而只是对数据进行总结.MVSQL提供一些查询功能,可以对获
取的数据进行分析和报告.这些函数的功能有:计算数据表中记录行数的总数,计算某个字段列下数
据的综合,以及计算表中某个字段下的最大值,最小值或者平均值.
这些聚合函数的名称和作用如下表所示:
(1)COUNT()函数
COUNT0函数统计数据表中包含的记录行的总数,或者根据査询结果返回列中包含的数据行数.其
使用方法有两种:
COUNT(*)计算表中总的行数,不管某列是否有数值或者为空值;
COUNT(字段名)计算指定列下总的行数,计算时将忽略空值的行
例34:查询customers表中总的行数,SQL语句如下:
//查询customers表中总的行数,SQL语句如下
SELECT COUNT(*) AS cust_num
FROM customers;
//查询customers表中有电子邮箱的顾客的总数;
SELECT COUNT(c_email) AS email_num
FROM customers;
由查询结果可以看到,表中5个customer只有3个有email,customer的email为空值NULL的记录没
有被COUNT()函数计算.
两个例子中不同的数值说明了**两种方式在计算总数的时候对待NULL值的方式不同:指定列的值
为空的行被COUNT()函数忽略;如果不指定列,而在COUNT()函数中使用星号""则所有记录都不忽
略
//在orderitems表中,使用COUNT0)函数统计不同订单号中订购的水果种类
SELECT o_num,COUNT(f_id)
FROM orderitems
GROUP BY o_num;
(2).SUM()函数
//在orderitems表中查询30005号订单一共购买的水果总量:
SELECT SUM(quantity)AS items_total
FROM orderitems
WHERE o_num=30005;
SUM()可以和GROUP BY一起使用,来计算每个分组的总和;
//在orderitems表中,使用SUM()函数统计不同订单号中订购的水果总量;
SELECT o_num,SUM(quantity)As items_total
FROM orderitems
GROUP BY o_num;
//在orderitems表中,使用SUM()函数统计不同订单号中订购的水果总量
SELECT o_num,SUM(quantity)As items_total
FROM orderitems
GROUP BY o_num;
由查询结果可以看到,GROUP BY按照订单号onum进行分组,SUM()函数计算每个分组中订购的
水果的总量.
注意:SUM()函数在计算时,忽略列值为NULL的行
(3).AVG()函数
//在fruits表中,查询s id=103的供应商的水果价格的平均值
SELECT AVG(f_price)As avg_price
FROM fruits
WHERE s_id=103;
AVG()可以和GROUP BY一起使用,计算每个分组的平均值
//在fruits表中,查询每一个供应商的水果价格的平均值
SELECT s_id,AVG(f_price)As avg_price
FROM fruits
GROUP BY s_id;
GROUP BY关键字根据s id字段对记录进行分组,然后计算出每个分组的平均值,这种分组求平均值
的方法非常有用,例如,求不同班级学生成绩的平均值,求不同部门工人的平均工资,求各地的年平均
气温等.
注意:AVG()函数使用时,其参数为要计算的列名称,如果要 得到多个列的多个平均值,则需要在每一
列上使用AVG()函数:
(4)MAX()函数
//在fruits表中查找市场上价格最高的水果值,
SELECT MAX(f_price)As max_price
FROM fruits;
MAX也可以和GROUP BY一起使用,来计算每个分组中的最大值
//在fruits表中查找不同供应商提供的价格最高的水果值
SELECT s_id,MAX(f_price)AS max_price
FROM fruits
GROUP BY s_id;
MAX()函数可以对字母进行大小判断,并返回最大的字符或者字符串值;
注意:MAX()函数除了用来找出最大的列值或日期值之外,还可以返回任意列中的最大值,包括返回
字符类型的最大值.在对字符类型数据进行比较时,按照字符的ASCI码值大小进行比较,从a~z,a的
ASCI码值最小,z的最大.在比较时,先比较第一个字母,如果相等,继续比较下一个字符,一直到两个字
符不相等或者字符结束为止.例如,’b'于't'比较时,'t'为最大值;"bcd"与"bca"比较时,"bcd"为最大值;
(5)MIN()函数
//在fruits表中查找市场上价格最低的水果值:
SELECT MIN(f_price)AS min_price
FROM fruits;
MIN()也可以和GROUP BY关键字一起使用,求出每个分组中的最小值
//在fruits表中查找不同供应商提供的价格最低的水果值:
SELECT s_id,MIN(f_price)As min_price
FROM fruits
GROUP BY s_id;
MIN()函数与MAX()函数类似,不仅适用于查找数值类型,也可应用于字符类型,
标签:GROUP,函数,price,Mysql,查询,学习,fruits,表中,SELECT From: https://blog.csdn.net/hxd030228/article/details/144370362