| 理论与实践相结合效果更佳,本文文末有获取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 '李%'

 


©著作权归作者所有:来自51CTO博客作者mb5fe18f5282239的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. PHP对一组数进行重新排列(冒泡算法)
  2. mysql 排序两个字段/列表先根据时间升序排序,时间相同再根据商家I
  3. js实现字符全排列算法
  4. JavaScript实现数学里的排列组合的A和C运算
  5. 【JavaScript&JQuery】原生API实现li标签随机排列

随机推荐

  1. Android的交叉编译工具
  2. (转)android SQLite的使用
  3. Android之监听手机软键盘弹起与关闭
  4. android之WakeLock机制浅析
  5. Android层次化安全架构及核心组件概览
  6. Android版本演进史
  7. Android快速开发框架-------afinal
  8. Android(安卓)App 获取root权限后,执行she
  9. 安卓开发日记--2017.10.10
  10. 引用Android(安卓)Design包出现的错误