| 理论与实践相结合效果更佳,本文文末有获取SQLZOO前三章练习题答案的方式
本文将从以下几个方面进行:
一、对列的查询
01 查询单个列
03 查询所有列
04 对列去重
二、对列的值排序
01 升序排列
02 降序排列
03 多个列排序
三、对行的筛选
01 单条件筛选
02 多条件筛选
03 IN命令
04 LIKE命令
一、对列的查询
Excel里对于一张表,只想选取其中的某几列,只需复制列的值粘贴到新表即可,Excel是对行的操作很多,对列的操作几乎不需要什么技巧。
01 查询一个列
这里查询用到【select】命令,从XX表里选取XX列,select后跟列名,from后跟表名
--查询一个列select 列名 from 表名;
查询student表里sname一列的值
02 查询多个列
多个被查询的列之间用逗号分隔
--查询多个列select 列1,列2 from 表;
查询sname和sage两个列的值
03 查询所有列
用到通配符 *,相当于查看这个表所有的数值
--查询所有列select * from 表;
查询student这个表的所有列的值
04 查询该列中不重复的值(去重)
Excel里用到【删除重复值】的功能
SQL中用到【Distinct】命令
--去重select DISTINCT 列 from 表;
对sex一列进行去重(这个例子里这样去重并没什么意义)
二、对列的值排序
01 升序排列
Excel中从【筛选】功能里可以进行升序排列的操作
SQL中排序用到【order by】关键字,后面跟要安装哪一列排序,默认是升序,也可以直接写明ASC。
--对列的值升序排列select 列 from 表 order by 列;select 列 from 表 order by 列 ASC;
按snum一列升序排列
02 降序排列
SQL中用到【DESC】关键字降序排列
--对列的值降序排列select 列 from 表 order by 列 DESC;
按snum一列降序排列
03 多个列排序
Excel中用【排序】功能对多个列排序
SQL里对要排序的多个列之间用逗号进行分割
--多个列排序select 列1,列2 from 表 order by 列1 DESC,列2 ASC;
(左右滑动可查看完整代码)
对snum降序,对sage升序排列选择全部的列。
三、对行的筛选
Excel里对行的筛选主要用到【筛选】功能
SQL里对行的筛选主要用【where】命令+操作符,主要的操作符如下表所示:
操作符 | 说明 |
= | 等于 |
小于 | |
> | 大于 |
<> | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 介于 |
LIKE | 通配符 |
IS NULL | 空值 |
01 单条件筛选
--单条件筛选select 列 from 表 where 列 操作符 值;
注:
字符要加单引号
Order by 在 where 之后使用
【=】
筛选snum等于6的行记录
select * from student1 where snum = 6;
【
筛选snum小于6的行记录
select * from student1 where snum < 6;
【>】
筛选snum大于6的行记录
select * from student1 where snum > 6
【<>】
筛选snum不等于6的行记录
select * from student1 where snum <> 6;
【between】
筛选snum中介于6~8之间的行记录
select * from student1 where snum between 6 and 8;
02 多条件筛选
SQL中多条件筛选用到逻辑运算符:AND OR NOT
AND:与,表示必须几个条件同时满足;
OR:或,表示几个条件中有一个满足即可;
NOT:非,否定
--多条件筛选select 列 from 表 where 列 操作符 值 逻辑运算符 列 操作符 值;
【and】
这里用另一张表sc表,选择分数大于60分且学号为1的所有记录
select * from sc where score > 60 and snum = 1;
【or】
选择分数大于60或者学号等于1的所有记录
Excel里用高级筛选来做
select * from sc where score > 60 or snum = 1;
【and or 同时】
同样用到Excel里高级筛选的功能
select * from sc where score > 60 or snum = 1 and cnum = 1;
这里先计算的是and两边的snum为1且cnum为1的值,再与score大于60进行或计算
select * from sc where (score > 60 or snum = 1) and cnum = 1;
与上例不同,这里先计算括号里的或再计算括号外的与
注:and 和 or可以组合使用,若不加括号,则优先进行and计算
03 IN
【IN】命令的功能和OR是一样的,不同的是OR只能对两个值进行或计算,而IN可以对多个值进行或计算。
--多个值的或计算select 列 from 表 where 列 IN (值1,值2,值3);
筛选出分数等于60或70或80的所有行记录
04 LIKE
LIKE的功能类似Excel里筛选里的模糊查找。
--模糊查找select 列 from 表 where 列 LIKE 条件;
百分号(%)表示多个任意想要匹配的字符。
下划线(_)同%的匹配,只是只能匹配单个字符。
筛选出student表中sname里姓李的学生的所有记录
select * from student1 where sname like '李%'
这一小节内容的练习可参考SQLZOO的selectbasics、select from world和selectfrom nobel的练习,公众号后台回复【SQLZOO】即可获得这三章练习的答案。
任何疑问,欢迎加我个人微信号:data_cola 交流讨论
提供入门级数据分析的学习路线规划,分享从Excel到统计学的干货。数据分析是一项技能,希望人人都能分析数据。
相关内容:
SQL学习:MySQL入门 | 库/表/记录的增查删改
Excel分析方法:时间序列分析 | 回归分析 | 描述性统计分析 | 相关性分析
Excel图表:数据地图 | 数据透视表 | 5个基本图 | 13个进阶图 | 直方图 | 控制图 | 排列图
Excel函数:日期文本函数 | 查找引用函数 | if函数 | 统计函数
用Excel进行数据分析:数据获取 | 数据处理
方法论:如何系统地学习Excel | 数据分析学习 | Excel相见恨晚的技巧
如果你觉得有用,请点击右下角 在看 哟~