本文将从以下几个方面进行:
一、对列的查询
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】命令+操作符,主要的操作符如下表所示:
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】即可获得这三章练习的答案。
如果你觉得有用,请点个赞哦~