• select表示查询结果。• from表示从哪个表中查找数据。• where表示查询条件,用于筛选出符合条件的数据。• group by表示对数据按某列分组。• having表示对分组后的结果指定条件。• order by表示对查询结果进行升序或者降序的排列。• limit表示从查询结果中取出限定行。

SQL查询的基础语法:
select 列名,列名,…
from 表名
where 列名 = 条件;
select表示查询结果
from 从哪一个表中查询数据
where表示查询条件
SQL查询语句书写规范:
(1)SQL语句以英文分号;结尾
(2)SQL语句不区分大小写
(3)SQL语句不能加单引号
(4)使用英文符号

(1)查询空值 where is null ; where is not null;

select *
from 教师表
where 教师姓名 is null;
select *
from 教师表
where 教师姓名 is not null;
(2)在SQL查询中重命名列名
在查询的过程中使用as 关键字来定义一个新列名
select 列名 , 列名 as 新定义列名,…
from 表名
where 条件;
(3)在SQL查询中去掉重复数据
在SQL查询中去除重复数据需要关键字distinct
select distinct 列名1,列名2…
from 表名;
distinct 关键字必须在第一个查询列名之前

这里的去重指的是当两个列名整体出现重复时,才会去除

现在需要知道店铺里每个访客和对应的浏览日期(每个访客同一天浏览多次算作一次记录)。
分析:一个访客可能一天有多次访问,所以会有重复值,所以要去重
*select distinct 访客id , 浏览日期*
*from 用户行为表;*
面试题:

表3.6所示为某电商公司的“用户购买信息表”,你作为公司的业务人员,为了更好地分析数据,要求对数据做以下处理。(1)剔除表中重复的购买记录。(2)查询表中数据是否有空值的记录。(3)将列“用户行为发生时间”重命名为“用户交易时间”。
(1)
查询重复记录
select distinct *
from 用户购买信息表;
(2)
查询是否有空的值,那么就说明每一种数据都有可能存在空值
select *
from 用户购买信息表
where 用户id is null
or 商品id is null
or 用户行为类型 is null
or 地理位置 is null
or 用户行为发生时间 is null;
(3)select 用户id,商品id,用户行为类型,地理位置 , 用户行为发生时间 as 用户交易时间
from 用户购买信息表;
聚合函数是把查询结果当做函数参数后,然后根据函数的功能返回函数结果,并且把这个结果可视化返回出来
聚合函数:
(1)sum() 对查询结果是,数值结果进行相加
(2)count() 对某列数量的函数进行求和
(3)avg() 对某列的数据进行求平均值
(4)max() min()

当条件判读语句和聚合函数一起的时候要将where 替换成having
分组汇总 group by
group by 就是通过列名逻辑上将整个表分成多个小表,其中每个表中通过group by 的列名的内容都是一样的。
当面试题中涉及“查找重复数据”或者类似“每个”“每天”这样的词汇时,要马上想到可以用分组汇总来实现。
面试题:

通过数据来分析用户的总数、用户的平均年龄
应该先按照“用户ID”对重复数据进行去重(用distinct关键字),再分析用户的总数及平均年龄。
用户的总数(可以将查询的结果通过关键字as 将列重命名)
select sum(distinct 用户id) as 用户总数,
avg(用户年龄) as 用户平均年龄
from 用户登录信息表;

分析购买人数、总销售金额、客单价、客单件、人均购买频次。
select count(distinct 顾客ID) as 购买人数
from 销售订单表;
select sum(销售数量 * 零售价) as 总销售金额
from 销售订单表;
select
sum(销售数量) / count(distinct 顾客ID) as 客单价
from 销售订单表;
select
count(订单号) /count(distinct 顾客ID) as 人均购买频次
from 销售订单表;


查找表3.13所示“学生表”中所有重复的学生姓名。
select 姓名
from (
select 姓名,count(姓名) as 数量
from 学生表
group by 姓名
) as 辅助表
where 数量 > 1;
select 姓名
from 学生表
group by 姓名
having count(姓名) > 1;

如何分析每个城市的总流入人口数量?
select 流入城市 as 城市 , sum (数量) as 总流入人口数量
from 各城市人口流入表
group by 流入城市;