《mysql 必知必会》整理3

来源:互联网 发布:qt creator linux调试 编辑:程序博客网 时间:2024/06/14 05:55

12章 ----- 汇总数据(avg、count、max、min、sum)

聚集函数:
avg   返回某字段的平均值
count 返回某字段的行数
max   返回某字段的最大值
min   返回某字段的最小值
sum   返回某字段的值之和

语法:
select avg(字段) from 表;
select count(字段) from 表;
select max(字段) from 表;
select min(字段) from 表;
select sum(字段) from 表;

注意:

avg()函数:
①、表后可加where条件、
②、查询多个字段的平均值,需要使用多个avg()。
如: select avg(字段1),avg(字段2) from 表;

count()函数:
①、select count(*),表示对表所有行数(包括null值行)都进行计数

avg()函数、max()函数、min()函数、sum()函数、select count(字段)
①、忽略字段中为null的值

distinct 可排除字段中相同的值
如:select avg(distinct 字段) from 表;

组合聚集函数
select count(字段),min(字段),max(字段),avg(字段),sum(字段) from 表;


13章-----分组数据

数据分组 group by:
select count(*)/avg(字段)/count(字段)/max(字段)/min(字段)/sum(字段) from 表 group by 分组依据字段;
①、根据不同的分组条件进行分组计算(如:根据不同日期进行统计)
②、在where之后,order by之前


过滤数据 having:
select count(*)/avg(字段)/count(字段)/max(字段)/min(字段)/sum(字段) from 表 group by 分组依据字段 having 过滤分组条件;

select count(*)from sutdent group by day having count(*)>2;
注意:
①、having用法与where相似,但having是过滤分组条件(如count(*)/avg(字段)/count(字段)/max(字段)/min(字段)/sum(字段)),而where是过滤条件.
②、where在分组前进行过滤,having在分组后进行过滤
③、where和having一起同用:select count(*) from products where prod_price≥10 group by vend_id having count(*)>2;

排序 order by

限制查询显示的行数 limit















第15章------联结

主键(该表的唯一值,如id)

外键(是另外一个表的主键值,在此表中就叫外键)


 一、两个表以两个表中都存在的关系字段进行联结

 

方法一:where

 

A和表B关联的字段为:id

联结查询如下:

Select 字段a1,字段a2,字段b1

from 表A , 表B

where表A.id=表B.id

order by 字段a;

注意:select 指定的列字段a1、字段a2在表A中存在,字段b1在表B中存在。

 

例子:

①、【两表联结】

Select vend_name,prod_name,prod_price

From vendors, products

where vendors.vend_id = products.vend_id

Order by vend_name, prod_name;

 

②、【多表联结】

Select prod_name,vend_name,prod_price,quantity

From orderitems,products,vendots

Where products.vend_id = vendors.vend_id

And orderitems.prod_id = products.prod_id

And order_num =2005;


③、优化前:

select cuts_name ,cust_contact

From customers

Where cust_id in(select cust_id

                            from orders

                            Where order_num in (select order_num

                                                               From orderitems

                                                               Where prod_id =‘TNT2’))

 ④、优化后

Select cuts_name,cust_contact

From customers,ordres,orderitmes

Where customers.cust_id=orders.cust_id

And ordertiems.order_num=orders.order_num

And prod_id=‘TNT2’

注意:③和④的查询结果相同


方法二:inner join....on


A和表B关联的字段为:id

联结查询如下:

Select 字段a1,字段a2,字段b1

from 表A inner join表B

on 表A.id=表B.id;

 

例子:

select vend_name,prod_name,prod_price

from vendors inner join products

on vendors.vend_id = products.vend_id;



二、两个表不以关系字段进行联结

 

笛卡儿积方法(结果查询出来的结果显示的行数=表A行数*表B行数

 

Select 字段a1,字段a2,字段b1

from 表A , 表B

order by 字段a;

 

例子:

select vend_name,prod_name,prod_price

From vendors,products

order by vend_name,prod_name;


 第16章



 

原创粉丝点击