对列和行的操作

| 理论与实践相结合效果更佳,本文文末有获取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相见恨晚的技巧 

如果你觉得有用,请点击右下角 在看 哟~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的可乐!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值