每天早起或者睡前听一首温柔而美好的音乐,是一件很幸福的事情,无论你是否懂音乐,它都能带你发现生活中的隐藏的那些美好,今天我们先来一起欣赏Mindy Gledhill的单曲《California》California (@网易云音乐),每次我听到这首歌,都有一种吃了彩虹蛋糕一样的感觉,仿佛真的听见歌手轻轻在问:你曾去过加利福尼亚州吗?见过那里独特的景致和友好的人们吗?置身在宁静的海边小镇,吹拂着淡淡清甜的海风。闭眼又如飞驰在漫漫花海,徜徉于童话般的琉璃梦境。车内盈满了花香,盈满了夕阳,闪灼着鎏金色的轻柔的光。我曾经很想做的是,和你在从容闲适的旅行中度过白驹过隙的一生。听完了,你有没有感觉很愉悦,放松?放松过后,我们一起来开始今天的学习吧!

在上一文章里,我们学习了SQL的书写规则,以及用insert语法往表中插入数据,你还记得吗?我们一起再来回顾一下:

书写规则:

  • SQL语句以英文分号(;)结尾;
  • 输入列名时不能加单引号,列名间也不能有空格;
  • SQL语句不区分关键字的大小写(如SELECT=select,INSERT=insert等);
  • SQL语句输入符号时只能在英文状态下。

insert语句:

INSERT INTO tablename(列名…) VALUES(列值);

  • 数字类型的值不需要用单引号引起来
  • 字符和日期类型数据需要用单引号引起来
  • 输入值的顺序必须与在表中定义的顺序或者在表名后列出的列的顺序相同

今天我们将学习如何用select语句实现简单查询,现在打开你的Navicat客户端,按照昨天说的方法,在“school”数据库中新建一个查询,准备好了吗?Ready go!

1.基本的查询语句

select:

Select  列名1,列名2,…… -- select子句,用来查询指定要显示的字段;如果是要查看所有的列,则用*表示
From 表名 -- from 子句,选择要查询的表

例如:老板要求你从学生表中查询出“姓名”,和“性别”2列数据,按照上面说的规则,我们用select查询指定字段

Select  姓名,性别 -- 查询指定要显示的字段,如果是要查看所有的列,则用*表示
FROM student; -- 选择要查询的表

运行,查询结果:

而如果我们把列名用*表示,则显示所有列。

as:

那如果老板让你在查询结果中给列设定一个别名,要怎么做呢?这里,我们用as设定别名,如我们把上面查询结果里面的“姓名”字段设定别名为“name”,性别字段设定别名为“人类性别”,则:

Select 姓名 as name ,性别 as '人类性别' -- 用as设定别名
FROM student; 

distinct:

假设老板有点奇葩,说我想要看学生里一共有多少个不同的名字?那我们就要用distinct来删除重复数据了。

Select DISTINCT 姓名 -- 用distinct删除重复数据
FROM student; 

数据出来,老板也觉得自己有点奇葩,于是让你删除姓名和学号都重复的数据。此时,我们就是把distinct用在多列之间,用来删除多列信息完全重复的数据

Select DISTINCT 学号,姓名 -- 用distinct删除两列信息完全重复的数据
FROM student; 

由于两名名为“猴子”的学生,学号不一样,所以我们可以看到这两条信息并没有被去重。

2.指定查询条件的查询

where:

现在,老板让你选取“姓名”列里值为“猴子”的行,用select的字段筛选就解决不了了,这时,我们就要用where语句进行条件查询

Select 姓名,学号 -- 用distinct删除两列信息完全重复的数据
FROM student
where 姓名='猴子'; -- 限制条件,用于各种过滤条件,例如:大于,小于等

这次我们运行了3条语句,我们来看一下上面语句的运行顺序,要注意在SQL中,实际运行顺序和你的输入顺序是不一样,像这三语句就是按如下顺序进行的:

  • from student -- 从那张表中查找数据;
  • where 姓名='猴子'; -- 用where查询出符合条件的行(记录);
  • select 姓名,学号 -- 从查询出的行中筛选出select语句指出的列,一般是最后运行,返回查询结果

3.注释和SQL语句的注意事项

你可能会问,前面那么多条语句后面都写了语句的注释,是怎么做的呢?很简单,注释分为单行注释和多行注释:

单行注释:

就像我前面写的,在语句后面输入“--”+空格”,后面就可以添加注释内容了,注意:一定不要忘了在小横线后面加空格哦!

多行注释:

注释用“/*”开始,用“*/”结尾。

学会了注释,以后在写复杂的SQL语句时,要养成添加注释的好习惯哦,方便自己回顾,也方便其他需要看你的语句的同事,你好我好大家好!

SQL语句的注意事项:用英文符号,子句之间不要空行,要和前面的书写规则一起记住了哦!

4.运算符

我们在做条件查询时,常会用“大于”,“等于”,“包含”“或者”等等查询条件,这时就要用到运算符了,常用的运算符包括以下三种:

算术运算符:四则运算所使用的运算符(+、-、 *、 /)称为算术运算符。 就是使用其两边的值进行四则运算或者字符串拼接、数值大小比较等运算,并返回结果的符号(注:和null进行算术运算返回结果全部为null),例如,老板要你算出每名学生的百分比成绩

-- 算出每名学生的百分比成绩
Select 学号,成绩,
成绩/100 as '百分比成绩'
FROM score

比较运算符:

注意:

  • 比较运算符也可以对日期进行比较,
  • 不能对NULL使用比较运算符, 因此, SQL提供了专门用来判断是否为 NULL 的 IS NULL 运算符。 反之, 希望选取不是 NULL 的记录时,需要使用 IS NOT NULL 运算符

例如老板要你查找出成绩低于60分的学生:

-- 成绩低于60分的学生
Select 学号,成绩
FROM score
WHERE 成绩<60;

接下来,查找出生日期早于1990-01-01的学生:

-- 成绩低于60分的学生
Select 姓名,出生日期
FROM student
WHERE 出生日期<'1990-01-01';

对于字符串的比较,从左向右 根据asc码比较,不是先转成数字后比较的,所以会出现'10'<'2'的情况,这时候我们就要先检查这一列数值是不是字符串类型。

对于空值的判断如:分别选出“教师姓名”为null和不是null的数据:

-- 选出教师姓名是null的数据
Select 教师号,教师姓名
FROM teacher
WHERE 教师姓名 is null;

-- 选出教师姓名是null的数据
Select 教师号,教师姓名
FROM teacher
WHERE 教师姓名 is not null;

逻辑运算符:

例如在score表中找出成绩小于60的学生,就可以有如下两种方法:

-- 运用算术运算符查找出成绩小于60的数据
Select 学号,成绩
FROM score
WHERE 成绩<60;
-- 运用逻辑运算符查找出成绩小于60的数据
Select 学号,成绩
FROM score
WHERE NOT 成绩>=60;

同样的查找出成绩>=60且成绩<=90的学生,如下:

-- 用and查找出成绩>=60且成绩<=90的数据
Select 学号,成绩
FROM score
WHERE 成绩>=60
and 成绩<=90;
-- 用between查找出成绩>=60且成绩<=90的数据
Select 学号,成绩
FROM score
WHERE 成绩 BETWEEN 60 AND 90;

查找出成绩小于60或大于90的学生数据:

-- 用or查找出成绩小于60或大于90的学生数据
SELECT 学号,成绩
FROM score
WHERE 成绩<60
or 成绩>90;

查找出性别是“男”并且姓名是“猴子”或者“马云”的数据:

-- 用or查找出性别是“男”并且姓名是“猴子”或者“马云”的数据
Select 姓名,性别
FROM student
WHERE 性别='男'
AND (姓名='猴子'or 姓名='马云');

查找出姓名是(不是)“猴子”和“马云”的数据:

-- 用in查找出姓名为“猴子”和“马云”的数据
SELECT *
FROM student
WHERE 姓名 in('猴子','马云');
-- 用not in查找出姓名不是“猴子”和“马云”的数据
SELECT *
FROM student
WHERE 姓名 not in('猴子','马云');

从这里我们可以看出:in实际上可以看成是or的简便写法。

5.字符串模糊查询

我们使用like语句运用通配符进行模糊查询:

  • % :表示任意长度的字符串,长度可以为0;例如:like ‘a%b’,以a开头,b结尾任意长度的内容;
  • _:一个下划线就表示一个字符;例如:like ‘a_b’,以a开头,b结尾任意长度为3个字符的内容。

查询姓“猴”的学生名单:

-- 查找姓"猴"的学生名单
SELECT *
FROM student
WHERE 姓名 LIKE '猴%';

查询姓名中最后一个字是“猴”的学生名单(返回结果为没有符合条件的):

-- 查询姓名中最后一个字是“猴”的学生名单
SELECT *
FROM student
WHERE 姓名 LIKE '%猴';

查询姓名中带“猴”的学生名单:

-- 查询姓名中带“猴”的学生名单
SELECT *
FROM student
WHERE 姓名 LIKE '%猴%';

查询姓“王”的学生名单,并且姓名为3个字的:

-- 查询姓“王”的学生名单,并且姓名为3个字的
SELECT *
FROM student
WHERE 姓名 LIKE '王__';

好啦,今天的主要知识就学习到这里了,你学会了吗?下面,让我们一起去SQLZOO完成一些练习题吧! 网址:SQLZOO

select basics:

select from world:

其中用到了ROUND() 函数,ROUND 函数用于把数值字段舍入为指定的小数位数,语句如下

SELECT ROUND(column_name,decimals) FROM table_name
-- column_name为要舍入的字段,decimals为规定要返回的小数位数。

  • ROUND(7253.86, 0) -> 7254
  • ROUND(7253.86, 1) -> 7253.9
  • ROUND(7253.86,-3) -> 7000

length(str):查询字符串长度

left(a,b)函数表示的是从字符表达式最左边一个字符开始返回指定数目的字符.若 b 的值大于 a 的长度,则返回字符表达式的全部字符a.如果 b 为负值或 0,则返回空字符串.

这么多练习题终于做完啦,里面涉及到了一些函数,后面还会再详细讲,最后,看一张思维导图,我们一起回顾一下今天学习的内容:

好啦,记得多加练习,下一次我们将学习如何利用SQL进行汇总分析,see you next time!

往期精彩:

何书365:轻松搞定数据分析之MySQL——零基础入门​zhuanlan.zhihu.com

sql 显示百分比_轻松搞定数据分析之SQL——简单查询相关推荐

  1. 子查询引用外表_轻松搞定慢查询?这一文就够了(内附大量实例助你看懂Explain)...

    原文:https://mp.weixin.qq.com/s/p5UKuh1yY3P4zrOzVBmY1w (复制链接至浏览器,即可查看) 大量实例助你看懂Explain的输出内容,轻松搞定慢查询 EX ...

  2. profibus dp协议_轻松搞定PROFIBUS故障诊断与排除

    虽然PROFINET已经成为工业自动化中的公认通信标准,但是PROFINET网络的诊断对于许多用户来说仍然是一个新的领域.从传统的现场总线系统向PROFINET的转变带来的重大变化,也是导致新的网络问 ...

  3. android 讲程序设为默认主屏幕_轻松搞定 PC 副屏,双屏幕更方便!

    关注本公众号并设为星标,避免错过精彩内容推送! spcadesk是一款 完全免费 可以将 多平台 ( Windows.Android.iOS.Web )设备打造成 Windows PC 副屏 的软件, ...

  4. storyboard搭建项目_轻松搞定一人一个storyboard开发

    前言 storyboard已经推出有几年了,苹果也一直卖力的引导开发者使用storyboard开发,这点从我们创建工程,新工程以Main. storyboard创建window窗口就可以看出.然而很多 ...

  5. 两个PDF比较标出差异_轻松搞定PDF格式转换

    PDF是我们最常用的文件类型,它是由Adobe公司发明的文件格式,是 Portable Document Format的缩写,意为"便携文档格式".由于PDF的格式稳定,无论是在安 ...

  6. hadoop启动页面_轻松搞定Windows下的Hadoop环境安装

    Hadoop集群肯定还是要在linux下使用好些,但是对于想尝鲜的开发者或者上层应用开发来说,在windows下搭建一个单节点的应用也是蛮有必要的,当然只作为开发测试环境. 一.环境准备 JDK安装 ...

  7. otc机器人氩弧焊机_轻松搞定砂光机前后连线翻转!【富全智能】全自动180度圆筒式翻板机...

    点击上方 蓝字关注我们 ! 新时代人们之所以要广泛使用机器,是由于机器既能承担人力所不能或不便进行的工作,又能较人工生产改进产品的质量,特别是能够大大提升劳动生产率和改善劳动条件.因此好的木工机械设计 ...

  8. 模拟进程创建、终止、阻塞、唤醒原语_轻松搞定进程原理

    进程简介 并发和并行 并发:在一个时间段中多个程序都启动运行在用一个处理机中 并行:两个进程分别由不同的CPU管理执行,两个进程不抢占CPU的资源,且可以同时运行,叫做并行 区别在于是否同时 多进程的 ...

  9. 苹果切换输入法_轻松搞定缅甸语手机输入法(苹果篇)

    对于初学缅甸语或者对缅甸语感兴趣的同学来说,学会使用缅甸语输入法也是语言学习的一项重要技能,它能帮助我们更加深入的了解和学习缅甸语. 由于缅甸语输入法的特殊性,不同的手机就有不同的安装方法,大家可以根 ...

最新文章

  1. 阿里云 Linux指令入门-文件与权限
  2. 《好久不见》(Cover 陈奕迅)箫声远 洞箫
  3. Struts+Spring+Hibernate整合入门详解
  4. 园艺专业相关计算机知识,2017年秋园艺概论(专业选修)
  5. 实战SSM_O2O商铺_17【商铺编辑】Dao层开发
  6. php tp 重加载页面,thinkPHP线上自动加载异常与修复方法实例分析
  7. (菜鸟入门)使用pytorch框架实现前馈神经网络
  8. A Survey on Knowledge Graph-Based Recommender Systems 知识图谱提升推荐系统准确性与可解释性ArXiv 2020
  9. 浅谈js中的this
  10. 【Elasticsearch】es 报错 index has not yet rolled over with that alias
  11. 关于ElementUI中MessageBox弹框的取消键盘触发事件(enter,esc)关闭弹窗(执行事件)的解决方法
  12. iOS开发UI篇—常见的项目文件介绍
  13. html 语音 懒加载,浏览器HTML自带懒加载技术
  14. ACL'22 | 基于强化学习的实体对齐
  15. 同一网络下的两台计算机怎样共享,同一路由器上的两台计算机如何共享文件?...
  16. 砂岩浮雕让雕刻更加美观
  17. 阿里云数据库掌门人褚霸:骑行与数据人生
  18. 分析方法论_用户生命周期的建立
  19. Python基础入门知识(1)
  20. 股票学习-量柱和k线-第二天

热门文章

  1. HTML音乐播放没声音,网页没有声音但系统显示有声音怎么回事?如何解决?
  2. python 日志不会按照日期分割_django实现日志按日期分割
  3. 数据持化技术的发展演变(SQL、JDBC、mybatis)
  4. mip-link 组件功能升级说明
  5. Hakase and Nano【博弈】
  6. UVA - 133 ​​​​​​​The Dole Queue
  7. failed to keep to the max pss of 66560
  8. Squid服务日志分析
  9. JavaMail(四):接收邮件
  10. 1030利用三层交换机实现VLAN间通信