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

ed5369ea0e41fa036314ee6939f9caf4.png

每天早起或者睡前听一首温柔而美好的音乐,是一件很幸福的事情,无论你是否懂音乐,它都能带你发现生活中的隐藏的那些美好,今天我们先来一起欣赏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; -- 选择要查询的表

运行,查询结果:

527bbcc46e29645ee6e8559759e892d5.png

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

as:

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

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

a6a0761bbe206aadd422eaefaf04910d.png

distinct:

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

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

7d4e998ad9af83046502255f673eb0f2.png

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

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

182ce824ffb5a11b162f2282c9f515d4.png

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

2.指定查询条件的查询

where:

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

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

a9186e85f53542dd8c5b776d52efa6dd.png

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

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

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

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

单行注释:

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

772282d25b816ea8070ec1dcc550abd1.png

多行注释:

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

4acf1eae8f14f682f4c5536668f6c0c0.png

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

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

1bd06ef96bc9587dc175673c73c29c2a.png

4.运算符

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

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

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

1920f382fa532e06380c4ecf2e5ccf10.png

比较运算符:

d2a76f45735a3852f4decf4233daad9a.png

注意:

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

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

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

0cd93974ac4cc08e53bc302ab8e0c3be.png

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

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

c063af58ab561eb227b099102519fc07.png

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

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

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

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

b13745a73bad9fb984ec490cfc838521.png

逻辑运算符:

a60721c6890eeb9c9da82afd1157dd26.png

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

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

a6070dca96728f094129d6d9736d5049.png

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

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

7d2bd256aba0b6eff9f8adf0fa722cbb.png

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

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

b7870cf00770e536a44e114ca58d4b6d.png

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

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

a5d5cac999b30c0e6be8487e7683fc5f.png

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

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

e1b8a894ce381c800e50af0614f97694.png

f3417551588d9665276bc5d49676168a.png

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

5.字符串模糊查询

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

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

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

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

08cfe6f5a6920db7d12701e0b4ccb7ff.png

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

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

69655a0eb116cd76b96f4cf63815668e.png

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

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

084de0a8ba6211b7f42f76b9898b8cfb.png

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

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

d37c61c80134836c2ca5008f303ebcd0.png

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

fe1f8b81add0f6347d5c1f2d1644c1d5.png

select basics:

01277e563daa0c39f2593200f19dd0d3.png

c4cef61ce9106e60d6416ee66ea917d0.png

913a3ce51366808a8fa26eb88c600606.png

select from world:

cf32cf8292c85d13098983e0c6b2ee82.png

30f75507be75378291e493f01d313b1e.png

c8ebe62bbf50bdf52366e9b66346f805.png

c3b319b9dea2bc2de24a5f67341b10b5.png

543d093fc9aa204e9bb7c9d1abbeeeea.png

1bf16b72a46490663f08636b32cc4a69.png

78a5174b2eb6431f454203718c79d631.png

c0cc4809f0d83ce1c830d89132f78d44.png

28f7babac7776d655f552e4dc508d52d.png

其中用到了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

2f009dc101a40276780c691bc75a5c34.png

d77f27c4c378e46c545c3d404e464f90.png

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

3a4cf17c8e37a0774fc40457a3f10c8b.png

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

7166bdfc9f17f2f0a109d42519cc91f4.png

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

f13888504944fbbc7bb7789167757e9b.png

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

往期精彩:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC 中设置日期字符串转换格式

2019独角兽企业重金招聘Python工程师标准>>> 在使用SpringMVC的项目中经常遇到 controller 参数中接收Date类型的数据&#xff0c;但是页面传过来的参数又是日期字符串&#xff0c;会出现转换异常。 由于项目需要支持两种日期格式所以从写了一个日期转换器。网友可以…

操作系统 非连续分配_操作系统中的连续和非连续内存分配

操作系统 非连续分配In this article, we will learn about the different types of memory management techniques and also the pros and cons of different memory management techniques. 在本文中&#xff0c;我们将学习不同类型的内存管理技术 &#xff0c;以及不同内存管…

文件名重定向到txt中Linux,Linux上glob用于实现文件名的通配、IO重定向及管道

Linux中所谓的通配是指&#xff0c;显示以指定条件为条件的文件&#xff1b;即通配的含义是指搜寻以已知条件为前提的目标文件。常用文件通配符有&#xff1a;文件通配符含义例子*任意长度的任意字符如a*,搜寻所有以a为首的文件名的文件&#xff1f;任意的单一字符如a&#xff…

分形与数据结构第二篇

一、分形之 迭代实现分形 本次的图形都是在之前的画图工具中实现的。 首先&#xff0c;还是和原来一样建立一个JButton元素组件&#xff0c;然后加上监听方法&#xff1b;再在public void mouseClicked(MouseEvent e) {}方法中实现图形&#xff1b; else if (s.equals("图…

华为linux版笔记本安装win7,华为MateBook X Pro笔记本怎样安装win7系统

华为MateBook X Pro的制造工艺达到了业界顶级的水准&#xff0c;高达91%的屏占比真正达到了近似全面屏的观感&#xff0c;触感顺滑质感强烈的机身让人爱不释手。对于有意选购一台高端轻薄本产品的消费者来说&#xff0c;MateBook X Pro应该是你首选的对象之一。那么这款笔记本怎…

怎么使用小爱同学音响_智能音响购买指南!!!

小度音响pro100天使用感受&#xff0c;100天前我冲动消费购买了一个智能音响&#xff0c;还是对比了多个智能音响做好的决定。使用到现在显然这个冲动消费是非常划算的&#xff0c;这个智能音响完全提升了我的生活质量&#xff0c;我现在一下班就会让它播放音乐、睡觉前播放几段…

【分享】WeX5的正确打开方式(1)

最近在研究WeX5&#xff0c;想在这里记录下使用过程中的点滴&#xff0c;今天先把之前已经掌握的分享一下。WeX5官方的开发指南难度系数较大&#xff0c;面向的受众可能是已经敲过上万行代码的html5 app开发者。但是作为一个刚进入代码世界的html5 app开发宝宝&#xff0c;本人…

过滤器,绑定事件,动画

一、基本过滤器 语法描述返回值:first选取第一个元素单个元素:last选取最后一个元素单个元素:not(selector)选取去除所有与给定选择器匹配的元素集合元素:even选取索引是偶数的所有元素(index 从0开始)集合元素:odd选取索引是奇数的所有元素(index 从0开始)单个元素:eq(index)选…

python操作mysql数据库的常用方法使用详解

python操作mysql数据库1、环境准备&#xff1a; Linux安装mysql&#xff1a; apt-get install mysql-server安装python-mysql模块&#xff1a;apt-get install python-mysqldb Windows下载安装mysqlpython操作mysql模块&#xff1a;MySQL-python-1.2.3.win32-py2.7.exe 或 MySQ…

c语言稀疏矩阵的存储,C语言:数据结构-稀疏矩阵的压缩存储

https://m.toutiaocdn.com/group/6712258385510662667/?appnews_article&timestamp1562855219&req_id201907112226580100230300187166DEA&group_id6712258385510662667(1)稀疏矩阵的特点在一个mn的矩阵中&#xff0c;设矩阵中有i个元素不为零&#xff0c;并令△i/…

计算机C语言课交作业怎么交,第一份c语言作业

2.1 你对软件工程专业或者计算机科学与技术专业了解是怎样&#xff1f;•答案&#xff1a; 软件工程专业是个年轻的专业&#xff0c;紧跟这个信息化的新时代。我学习它是因为感兴趣&#xff0c;经过一周的学习&#xff0c;我了解了一些 该专业课程主要是c语言程序设计和计算机导…

技术淘宝

? ? ? ? 精度前端学习 —— 前端开发100天&#xff08;置顶&#xff09; http://alloyteam.github.io/CodeGuide/https://github.com/AlloyTeam/CodeGuide cmd控制台的小技巧&#xff1a;可以直接将文件夹/文件丢进去&#xff0c;这样就会打印出该路径了。 舒服的字体家族…

vue 导出_Vue核心知识:8.3 vuex在vue-cli中的应用,文件之间的导出与引入

问题&#xff1a;vuex在vue-cli中的应用第一步&#xff1a;npm下载vuex资源包&#xff1a;npm install vuex --save第二步&#xff1a;在 src/main.js 中引入import Vue from vue import Vuex from vuexVue.use(Vuex)import store from ./vuex/store第三步&#xff1a;在 src 下…

android界面设计字体大小,Andoird用户界面设计上手指南:设置字体大小

教程详解技术应用: AndroidOS / Android SDK难易程度: 简单预计完成时间: 15分钟【51CTO译文】在本文中&#xff0c;我们将介绍一些简单的处理方式&#xff0c;帮助开发人员轻松编写出能够应对各类设备型号的应用程序文本方案&#xff0c;同时为用户提供自定义文字尺寸功能。别…

回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案

回溯算法解决八皇后4-皇后问题 (4 - Queens problem) In 4- queens problem, we have 4 queens to be placed on a 4*4 chessboard, satisfying the constraint that no two queens should be in the same row, same column, or in same diagonal. 在4个皇后问题中 &#xff0c…

怎么重置blockinput的锁_OPPOA9锁屏密码忘了怎么办? OPPO忘记锁屏密码的解决办法...

看点&#xff1a;iPhone X原装屏与国产屏有哪些区别&#xff1f;看点&#xff1a;换7P、8P屏幕&#xff1a;C11和DTP和DKH的区别狮淘&#xff1a;不锈钢拆机片5个只需9.9元&#xff01;包邮&#xff01;每天10名OPPOA9锁屏密码忘了怎么办&#xff1f;OPPO A9手机忘记了锁屏密码…

Android的面孔_Actiyity

一、什么是Activity&#xff1f; 简单的说&#xff1a;Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activity构成&#xff0c;都会在Manifest.xml中指定一个主的Activity&#xff0c;如下设置 <actionandroid:name"android.in…

vsco怎么两个滤镜叠加_10 款超美的 VSCO 调色滤镜,怎么用都好看!

VSCO 里的滤镜简单 又 好看可太让人喜欢了&#xff01;但是 VSCO 的滤镜实在太多太多了有点让人眼花缭乱~今天旅拍菌请来了 摄影博主 丹丹儿啊专门来为大家盘点一波超美的 VSCO 滤镜合集&#xff01;怎么用 都很好看~微博&#xff1a;丹丹儿啊01滤镜&#xff1a;1ND1锐化&#…

Kubernetes Master High Availability 高级实践

才云科技云开源高级工程师唐继元受邀DBAplus社群&#xff0c;在线分享《Kubernetes Master High Availability 高级实践》&#xff0c;介绍如何构建Kubernetes Master High Availability环境。 以下是分享实录&#xff1a; 大家好&#xff0c;我是才云科技的唐继元&#xff0c;…

分布式系统的唯一ID

2019独角兽企业重金招聘Python工程师标准>>> 需求 为什么需要唯一ID 让分布式系统中的需要辨别的元素&#xff0c;都能有唯一的辨识标志。 几乎所有的业务系统&#xff0c;都有生成一个记录标识的需求&#xff0c;例如&#xff1a; 消息标识&#xff1a;message-id订…