中企动力 > 商学院 > sql数据教程
  • ?

    数据应用达人之SQL基础教程分享5-检索查询

    Patrick

    展开

    2.检索查询

    SELECT从这里开始

    1、SELECT语句介绍

    【知识点介绍】

    SELECT是SQL里最常用甚至最强大的一个查询语句,作用是从表中选取数据。但SELECT不是一个单独使用的语句,为了实现查询,需要一个或多个条件语句与其结合使用,比如FROM、WHERE、ORDER BY、HAVING等。

    其中的FROM语句必须与SELECT语句联合使用,它是任何查询的必要语句,作用是告诉我们从数据库的哪些表里来获取数据,它可以指定一个或多个表,但必须至少指定一个表。

    2、SELECT语句

    在学习本节之前,我们机器人已经对Student表里的数据进行了添加(添加数据的语法之后我们会详细介绍),数据内容如下:

    既然有了数据,我们就可以对表里的数据进行查询访问了,SELECT的作用就此开始发挥。

    查询数据的语法如下:-- 至少选自一个表 SELECT 列名 FROM 表名1,表名2; -- 以及 -- 符号 * 表示表中的所有列 SELECT * FROM 表名;

    当然第一个方法中更为安全的写法应该是:SELECT 表名.列名 FROM 表名1,表名2;

    毕竟在实际的数据库操作中,不是所有列名都是唯一的。

    【实例】

    分别查询Student表中SName列的信息以及表的全部内容。SELECT SName FROM student; SELECT * FROM student;

    3、distinct语句

    如果我们对Student表进行Major(专业)查询,结果会将表中Major的值全部输出,但实际上我们只需要知道有哪些专业就可以了,而不需要查询的结果是反复重复的。 这个时候我们就可以使用DISTINCT语句了,字面上理解DISTINCT是“不同”的意思,它的作用也十分直接,即返回唯一的不同值。在书写代码时,需要把它写在关键字(或者列名)之前:SELECT DISTINCT 列名 FROM 表名;

    【实例】SELECT DISTINCT Major FROM Student; --记得加 ; 号

    4、as语句

    SQL中的AS语句可以用来对表名或者列名进行新的命名,这样的好处就是可以增强用户对数据库的可读性。 但要记住一点,AS语句不改变原表的任何内容。-- 新的表名 SELECT *\列名 FROM 表名 AS 新的表名; -- 或者 -- 新的列名 SELECT 列名1 AS 新列1, 列名2 AS 新列2 FROM 表名;

    以Student中的SName列为例,对其新命名成”姓名”表,并对该表进行查询。SELECT SName FROM Student AS 名字; SELECT * FROM 名字;

    5、WHERE语句

    WHERE语句是SQL查询、筛选中的重要子句,用于添加查询条件,去除不需要的数据。

    真正关于WHERE子句与条件判断操作的内容我们会在之后的章节详细介绍。

    本节我们只要了解下什么是WHERE语句就可以了。

    观察WHERE的位置与用法,点击运行,查看查询筛选是如何进行SELECT * FROM Student WHERE Major = 'Physics'; -- 查询专业是Physics的学生信息

    6、ORDER BY语句

    使用ORDER BY语句可以对列的数据进行排序,默认情况下该语句是按照升序(ASC)对记录进行排序。

  • ?

    SQL数据库附加与还原的区别

    冥蝶

    展开

    一、附加数据库与分离数据库相反,只有分离的数据库才能附加,分离后的数据库不能再正常读取,只有附加后才能读取;而还原数据库是指在原有数据库的基础上进行,一般选择覆盖原有数据库,SQL中如果不存在这个库是不能还原的(物理设备上要有库文件)。客户的服务器需要重装,小编是先备份原库(使用软件或SQL备份或停止SQL直接拷走数据库文件或在PE下拷走),重装完成后拷回原位置直接附加(个人经验附加始终比还原快),使用还原的情况比较少。还原数据库小编之前已经分享过,这里不再赘述。今天小编来分享下数据库的分离与附加。

    二、分离数据库

    1、选中要分离的库—右键“所有任务”—分离数据库

    2、如果存在数据库连接可“清除”,点击“确定”

    3、分离成功

    三、附加数据库

    1、要在“数据库”上右键—所有任务—附加数据库

    2、附加数据库界面:点击按钮

    3、选择要附加的数据库文件,注意要选择.MDF的文件,.LDF是日志文件

    4、选择好后的界面,注意“指定数据库所有者”,有的是sa,有的是其它的,比如科脉是km

    5、点击“确定”,附加成功

    四、有时候轻度数据库置疑也可以通过“分离—附加”来修复,不过还是不建议这样做。我是百家号作者小白信息说,专注电子信息领域经验分享、技术交流,感谢关注!

  • ?

    都说自学SQL数据库难,就真的难吗?

    意深远

    展开

    SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。

    SQL的优点有:

    1、高性能设计,可充分利用WindowsNT的优势;

    2、支持Windows图形化管理工具,支持本地和远程的系统管理和配置;

    3、事务处理功能强大,采用各种方法保证数据的完整性;

    4、对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言;

    5、内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。

    学成SQL数据库,我们能做啥?

    当我们学成数据库后,能找的工作一般是系统管理员,其工作主要包括:

    ① 备份系统数据

    ② 备份事务日志

    ③ 备份数据库及其日志间的相互作用

    ④ 系统失效时恢复数据库系统

    ⑤ 产生用户信息表,并为信息表授权

    ⑥ 监视系统运行状况,及时处理系统错误

    ⑦ 保证系统数据安全,周期更改用户口令

    别人告诉我自学SQL难,就真的难吗?

    学习是一回事,自己学不学就是另一码事了!在学习中没有会不会,只有肯不肯付出时间、精力。

    况且SQL并没有想象中那么难,说它难,其实是难在语句方面的逻辑比较,如:“或者”、“并且”、“大于”、“包含”、“集合”这类词语,无论你是自学还是有人教,勤加练习SQL代码,参考相关视频教学结合实际操作,学习是非常简单的。

    这里推荐一本入门级的书籍:《SQL必知必会》进一步入门学习后,建议新手可以到SQL官方那阅读学习帮助文档,能给你带来很大的提升。

    另外推荐学习 Oracle 或 MySQL这两种数据库,它们与SQLServer大同小异,学习起来也都差不多:

    先了解数据库中的数据类型,有哪些创建数据库,删除数据库语句,建表语句,删除表语句,查看数据库中表语句主键,自动增长表中的增,删,改,查,一个个慢慢来一些关于表字段的统计语句,一些有关的函数,再接着就是索引,外键约束,报表等等以上便是小编对都说自学SQL数据库难,就真的难吗?的大致介绍,希望对您有所帮助!

  • ?

    excel办公小技巧:vba使用sql语句获取excel表格数据教程

    霍霸

    展开

    在excel办公中,用VBA加上SQL语句实现对excel表格的数据获取,对于处理一些大数据量的表格来说是非常实用的。SQL是结构化查询语言,是数据库开发中用的程序设计语言,数据库里的数据表跟EXCEL里的表格其实是很类似的,所以用VBA加SQL语句可以实现类似的表格查询操作。

    举个例子:在EXCEL里用VBA+SQL来查询总成绩大于290分的学生

    一、手工操作的步骤是:

    1、 EXCEL打开如下表格,点击插入-数据透视图,点击创建数据透视图

    2、 在出现的数据透视图界面,点击姓名为行标签,点击成绩为求和项字段

    3、 在左侧的出现的行标签和求和项表格数据进行排序,手工选出成绩大于290分的记录。

    用上面的数据透视图方法很方便,步骤也少,比分类汇总功能要简便些。

    二、VBA加上SQL语句实现EXCEL表格数据的查询

    1、 先用EXCEL打开表格,调出VBE工程界面(ALT+F11),建议在个人工作簿新建个模块,把代码输入到右侧的区域。注:用个人工作簿的好处是,每次启动EXCEL不用手动启用宏。

    2、 根据自己的表格字段和功能需求,修改好SQL代码后,保存按F5快捷键运行。注:SQL语句中表名要用[表名$]这种写法。

    以上是在EXCEL用VBA加SQL语句实现对表格的自动查询,调用的方法是按ALT+F8,选择相应的代码名称,这里的名称是SQL查询。用这种方法对于规则不经常变动的情况下使用很实用,特别是在数据量大的情况下。

    附上截图代码

    Sub SQL查询()

    Dim cnn As Object, rs As Object, SQL As String

    Set cnn = CreateObject("adodb.connection") '创建数据库连接

    cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ActiveWorkbook.FullName

    Set rs = CreateObject("adodb.recordset") '创建一个数据集

    SQL = "select 姓名,sum(成绩) from [原始数据$] group by 姓名 HAVING sum(成绩)>290" '设置SQL查询语句,这个根据实际需要改写,注意【表名$】这种写法

    Set rs = cnn.Execute(SQL) '执行查询

    ActiveWorkbook.Worksheets(2).Cells.ClearContents

    Dim i As Integer

    For i = 1 To rs.Fields.Count

    ActiveWorkbook.Worksheets(2).Cells(1, i) = rs.Fields(i - 1).Name '填写标题到表2

    Next

    ActiveWorkbook.Worksheets(2).Range("a2").CopyFromRecordset rs '复制记录集到表2

    rs.Close

    Set rs = Nothing

    cnn.Close

    Set cnn = Nothing

    End Sub

    对于EXCEL2007版本的电子表格,以上的cnn.Open后的字符串要改成"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"""

  • ?

    如何绑定到SQL数据?(一)

    wawa

    展开

    一、通过数据源配置向导绑定

    将控件绑定到SQL数据源的最方便的方法就是使用数据源配置向导(Data Source Configuration Wizard)。要调用此向导,单击控件智能标签中的相应链接或单击向导图标。下图说明了如何调用GridControl的向导:

    1. 第一个向导页面要求您选择要使用的技术。选择“'SQL Data Connection”选项,然后单击向导右侧的“'New Data Source”按钮,如下所示:

    随后出现的消息框会告诉您将自动添加SqlDataSource组件。如果以后需要修改数据源,可以使用SqlDataSource的智能标签。现在,数据源配置向导会自动打开所需的对话框。

    2. 您现在继续执行属于SqlDataSource组件的另一个向导。该向导称为“连接编辑器”,可以将组件绑定到数据。要做到这点,选择项目中已存在的数据连接,或通过选择相关选项添加新连接。

    3. 如果您已经选择手动指定连接参数,则您将被引导至下一页,您需要在该页中设置自定义连接字符串或选择所需的数据源类型。根据所选的数据供应商,可能需要在此页面上指定其他连接选项(例如身份验证类型和数据库名称)。

    在本教程中,我们使用样本nwind.mdb数据库。

    4. 在最后一页,您可以选择将连接和授权数据保存到配置文件。

    5. 在SqlDataSource绑定到数据之后,您将需要使用SQL查询来提取所需的字段。这可以在下一个自动弹出的向导中完成——“查询设计器(Query Designer)”。可以通过单击组件智能标签中的“Manage Queries...”链接并单击“Run Query Builder...”按钮(请参见下图)手动调用此对话框。

    6. 将所需的表从“Items”列拖到已使用的数据表的列表中,并从此表中检查所有必需的数据列。在下图中,使用的是“Products”表。

    当您检查新列或添加新的数据表时,将会在对话框右侧自动显示SQL查询。

    7. 在上一步中单击“确定”按钮后,配置向导会自动将所需的代码段添加到项目中,您可以运行应用程序来查看结果。

    NOTE: 更多方法请关注后续文章

    慧都学院2017全新DevExpress线下研修班火热报名中!

    WinForms控件学习+实践的不二之选——DevExpress WinForm提升班

    高效的MVVM开发模式,WPF开发首选培训平台——DevExpress WPF提升班

    手把手将您快速开发出完美、强大的ASP应用程序——DevExpress ASP.NET提升班

  • ?

    大数据分析技能之SQL数据管理(1)SQL入门

    Qin

    展开

    SQL的特点

    SQL语言接近英语句子,完成核心功能只用9个动词

    数据定义:CREAT,ALTER,DROP

    数据操纵:INSERT,UPDATE,DELETE

    数据查询:SELECT

    数据控制:GRANT,REVOKE (用于授权)

    SQL是一门结构化查询语言

    SQL是一种标准化的数据库操作语言

    SQL支持三级模式结构

    SQL三级模式结构

    基本表由SQL语言的CREATE TABLE命令创建

    视图是由一个或几个基本表导出的表

    若干个基本表组成一个存储文件

    SQL的数据定义语句

    SQL数据定义语句

    SQL Server支持的数据类型

    TINYINT 整数类型,其值按1个字节存储。

    SMALLINT 整数类型,其值按2个字节存储。

    INTEGER或INT 整数类型,其值按4个字节存储。

    REAL 实数类型,其值按4个字节存储。

    FLOAT 实数类型,其值按8个字节存储。

    CHARTER(n)或CHAR(n) 长度为n的字符类型,一个字符占一个字节,一个汉字占两个字符。

    VARCHAR(n) 最大长度为n的变长字符串,所占空间与实际字符数有关。

    DATETIME 日期时间类型,缺损格式为MM-DD-YYYY HH:MM:AM/PM。

    TIMESTAMP 更新或插入一行时,系统自动记录的日期时间类型。

    TEXT 文本类型

  • ?

    SQL教程—简介—语法—SELECT 语句—SELECT DISTINCT 语句

    Kohana

    展开

    SQL 简介

    关注小编分享更多教程

    SQL 是用于访问和处理数据库的标准的计算机语言。

    SQL 是什么?

    SQL,指结构化查询语言,全称是 Structured Query Language。

    SQL 让您可以访问和处理数据库。

    SQL 是一种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言。

    SQL 能做什么?

    SQL 面向数据库执行查询

    SQL 可从数据库取回数据

    SQL 可在数据库中插入新的记录

    SQL 可更新数据库中的数据

    SQL 可从数据库删除记录

    SQL 可创建新数据库

    SQL 可在数据库中创建新表

    SQL 可在数据库中创建存储过程

    SQL 可在数据库中创建视图

    SQL 可以设置表、存储过程和视图的权限

    SQL 是一种标准 - 但是...

    虽然 SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,但是仍然存在着多种不同版本的 SQL 语言。

    然而,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的命令(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。

    在您的网站中使用 SQL

    要创建一个显示数据库中数据的网站,您需要:

    RDBMS 数据库程序(比如 MS Access、SQL Server、MySQL)

    使用服务器端脚本语言,比如 PHP 或 ASP

    使用 SQL 来获取您想要的数据

    使用 HTML / CSS

    RDBMS

    RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。

    RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。

    RDBMS 中的数据存储在被称为表的数据库对象中。

    表是相关的数据项的集合,它由列和行组成。

    SQL 语法

    数据库表

    一个数据库通常包含一个或多个表。每个表由一个名字标识(例如:"Websites"),表包含带有数据的记录(行)。

    在本教程中,我们在 MySQL 的 RUNOOB 数据库中创建了 Websites 表,用于存储网站记录。

    我们可以通过以下命令查看 "Websites" 表的数据:

    mysql> use RUNOOB;Database changedmysql> set names utf8;Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM Websites;+----+--------------+---------------------------+-------+---------+| id | name | url | alexa | country |+----+--------------+---------------------------+-------+---------+| 1 | Google | https://google.cm/ | 1 | USA || 2 | 淘宝 | https://taobao/ | 13 | CN || 3 | 头条 | http://toutiao/ | 4689 | CN || 4 | 微博 | http://weibo/ | 20 | CN || 5 | Facebook | https://facebook/ | 3 | USA |+----+--------------+---------------------------+-------+---------+5 rows in set (0.01 sec)

    解析

    use RUNOOB; 命令用于选择数据库。

    set names utf8; 命令用于设置使用的字符集。

    SELECT * FROM Websites; 读取数据表的信息。

    上面的表包含五条记录(每一条对应一个网站信息)和5个列(id、name、url、alexa 和country)。

    SQL 语句

    您需要在数据库上执行的大部分工作都由 SQL 语句完成。

    下面的 SQL 语句从 "Websites" 表中选取所有记录:

    实例

    SELECT * FROMWebsites;

    在本教程中,我们将为您讲解各种不同的 SQL 语句。

    请记住...

    SQL 对大小写不敏感:SELECT 与 select 是相同的。

    SQL 语句后面的分号?

    某些数据库系统要求在每条 SQL 语句的末端使用分号。

    分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

    在本教程中,我们将在每条 SQL 语句的末端使用分号。

    一些最重要的 SQL 命令

    SELECT - 从数据库中提取数据

    UPDATE - 更新数据库中的数据

    DELETE - 从数据库中删除数据

    INSERT INTO - 向数据库中插入新数据

    CREATE DATABASE - 创建新数据库

    ALTER DATABASE - 修改数据库

    CREATE TABLE - 创建新表

    ALTER TABLE - 变更(改变)数据库表

    DROP TABLE - 删除表

    CREATE INDEX - 创建索引(搜索键)

    DROP INDEX - 删除索引

    注释:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的专有扩展!

    SQL SELECT 语句

    SELECT 语句用于从数据库中选取数据。

    结果被存储在一个结果表中,称为结果集。

    SQL SELECT 语法

    SELECT column_name,column_name

    FROM table_name;

    与

    SELECT * FROM table_name;

    演示数据库

    在本教程中,我们将使用 RUNOOB 样本数据库。

    下面是选自 "Websites" 表的数据:

    +----+--------------+---------------------------+-------+---------+| id | name | url | alexa | country |+----+--------------+---------------------------+-------+---------+| 1 | Google | https://google.cm/ | 1 | USA || 2 | 淘宝 | https://taobao/ | 13 | CN || 3 | 头条 | http://toutiao/ | 4689 | CN || 4 | 微博 | http://weibo/ | 20 | CN || 5 | Facebook | https://facebook/ | 3 | USA |+----+--------------+---------------------------+-------+---------+

    SELECT Column 实例

    下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "country" 列:

    SELECTname,countryFROMWebsites;

    输出结果为:

    SELECT * 实例

    下面的 SQL 语句从 "Websites" 表中选取所有列:

    结果集中的导航

    大多数数据库软件系统都允许使用编程函数在结果集中进行导航,比如:Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。

    类似这些编程函数不在本教程讲解之列。如需学习通过函数

    SQL SELECT DISTINCT 语句

    SELECT DISTINCT 语句用于返回唯一不同的值。

    在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

    DISTINCT 关键词用于返回唯一不同的值。

    SQL SELECT DISTINCT 语法

    SELECT DISTINCT column_name,column_name

    +----+--------------+---------------------------+-------+---------+| id | name | url | alexa | country |+----+--------------+---------------------------+-------+---------+| 1 | Google | https://google.cm/ | 1 | USA || 2 | 淘宝 | https://taobao/ | 13 | CN || 3 | 菜鸟教程 | http://runoob/ | 4689 | CN || 4 | 微博 | http://weibo/ | 20 | CN || 5 | Facebook | https://facebook/ | 3 | USA |+----+--------------+---------------------------+-------+---------+

    SELECT DISTINCT 实例

    下面的 SQL 语句仅从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值:

    SELECTDISTINCTcountryFROMWebsites;

    输出结果:

  • ?

    大数据分析技能之SQL数据管理(1)SQL入门

    陶萃

    展开

    SQL的特点

    SQL语言接近英语句子,完成核心功能只用

    9个动词

    数据定义:

    CREAT,ALTER,DROP

    数据操纵:

    INSERT,UPDATE,DELETE

    数据查询

    SELECT

    数据控制

    GRANT,REVOKE (用于授权)

    SQL是一门结构化查询语言

    SQL是一种标准化的数据库操作语言

    SQL支持三级模式结构

    SQL三级模式结构

    基本表

    由SQL语言的

    CREATE TABLE

    命令创建

    视图

    是由

    一个或几个基本表导出的表

    若干个基本表

    组成一个

    存储文件

    SQL的数据定义语句

    SQL数据定义语句

    SQL Server支持的数据类型

    TINYINT 整数类型,其值按1个字节存储。

    SMALLINT 整数类型,其值按2个字节存储。

    INTEGER或INT

    整数类型,其值按4个字节存储。

    REAL 实数类型,其值按4个字节存储。

    FLOAT

    实数类型,其值按8个字节存储。

    CHARTER(n)或CHAR(n)

    长度为n

    的字符类型,一个字符占一个字节,一个汉字占两个字符。

    VARCHAR(n) 最大长度为n的变长字符串,所占空间与实际字符数有关。

    DATETIME

    日期时间类型,缺损格式为MM-DD-YYYY HH:MM:AM/PM。

    TIMESTAMP 更新或插入一行时,系统自动记录的日期时间类型。

    TEXT

    文本类型

  • ?

    小白看过来:SQL从入门到熟练

    柏冷玉

    展开

    SQL是数据库的查询语言,语法结构简单,相信本文会让你从入门到熟练。

    掌握SQL后,不论你是产品经理、运营人员或者数据分析师,都会让你分析的能力边界无限拓展。别犹豫了,赶快上车吧!

    以下的语句都在SequelPro的Query页面运行,其他操作页面不会有太大差异。标点符号必须为英文,这是新人很容易犯的错误。

    SQL最小化的查询结构如下:

    selectcolumnfromtable

    table是我们的表名,column是我们想要查询的字段/列,column可以用*代替,指代全部字段,意为从table表查询所有数据。

    where是基础查询语法,用于条件判断。

    select*fromDataAnalystwherecity='上海'

    上图是最简化的查询语句,将所有城市为上海的职位数据过滤出来。我们也可以用and进行多条件判断。

    select*fromDataAnalystwherecity='上海'andpositionName='数据分析师'

    or语句则是或的关系:

    select*fromDataAnalystwherecity='上海'orpositionName='数据分析师'

    查找城市为上海,或者职位名称是数据分析师的数据,它们是并集。

    当我们涉及到非常复杂的与或逻辑判断,应该怎么办?比如即满足条件AB,又要满足条件C,或者是满足条件DE。此时需要用括号明确逻辑判断的优先级。

    select*fromDataAnalystwhere(city='上海'andpositionName='数据分析师')or(city='北京'andpositionName='数据产品经理')

    这条语句的含义是查找出上海的数据分析师或者是北京的产品经理。当有括号时,会优先进行括号内的判断,当有多个括号时,对最内层括号先进行判断,然后依次往外。

    接下来的问题来了,当我们要查询多个条件,比如北京上海广州深圳南京这些城市,难道一个个用and关联起来?这太麻烦了,我们可以使用in。

    select*fromDataAnalystwherecityin('北京','上海','广州','深圳','南京')

    当我们遇到字段数据类型是数值时,也可以使用符号>、>=、<、<=、!=进行逻辑判断,!=指的是不等于,等价于<>。

    select*fromDataAnalystwherecompanyId>=10000

    上例是筛选出公司ID>=10000的职位,为数值时,不需要像字符串一样加引号。

    当我们需要取区间数值时,使用betweenand:

    select*fromDataAnalystwherecompanyIdbetween10000and20000

    betweenand包括数值两端的边界,等同于companyId>=10000andcompanyId<=20000。

    如果要模糊查找,能用like。

    select*fromDataAnalystwherepositionNamelike'%数据分析%'

    语句的含义是在positionName列查找包含「数据分析」字段的数据,%代表的是通配符,含义是无所谓「数据分析」前面后面是什么内容。如果是‘数据分析%’,则代表字段必须以数据分析开头,无所谓后面是什么。

    除了上面所讲,还有一个常用的语法是not,代表逻辑的逆转,常见notin、notlike、notnull等。

    接下来我们学习groupby,它是数据分析中常见的语法,目的是将数据按组/维度划分。类似于Excel中的数据透视表,我们以city为例。

    select*fromDataAnalystgroupbycity

    它将城市划分成几组,通过groupby可以快速的浏览数据有哪些城市。我们看一下它的高阶用法。

    selectcity,count(1)fromDataAnalystgroupbycity

    上述语句,使用count函数,统计计数了每个城市拥有的职位数量。括号里面的1代表以第一列为计数标准。这里出现新的问题,当我们遇到重复数据怎么办?在DataAnalyst这张表中,北京职位包含重复的职位ID,我们需要去重。

    selectcity,count(distinctpositionId)fromDataAnalystgroupbycity

    北京的数据一下子少了2000,多余的重复值被排除在外。distinct是去重函数,distinctpositionId会只计算唯一的positionId个数。日常工作中,活跃用户数、文章UV,都是用distinct计算获得,这是唯一标示符ID的重要作用。

    除了count,还有max,min,sum,avg等函数,也叫做聚合函数。用法和Excel没什么区别。

    当我们在groupby添加多个字段,它将以多维的形式进行数据聚合。

    selectcity,workYear,count(distinctpositionId)fromDataAnalystgroupbycity,workYear

    这就是数据分析师常用的多维分析法,通过groupby切分不同的维度进行对比,在不利用BI的情况下,通过SQL进行快速数据分析。

    接下来学习逻辑判断,SQL也有if函数,和Excel的用法一摸一样,通过它我们能进行复杂的运算。比如我想统计各个城市中有多少数据分析职位,其中,电商领域的职位有多少,在其中的占比?

    industryField是公司的行业领域,虽然我们能用wherelike计算出有几个电商的数据分析师,但是占比的计算会比较麻烦,此时可以用if。

    selectif(industryFieldlike'%电子商务%',1,0)fromDataAnalyst

    上面的公式利用if判断出哪些是电商行业的数据分析师,哪些不是。if函数中间的字段代表为true时返回的值,不过因为包含重复数据,我们需要将其改成positionId。之后,用它与groupby组合就能达成目的了。

    selectcity,

    count(distinctpositionId),

    count(if(industryFieldlike'%电子商务%',positionId,null))fromDataAnalystgroupbycity

    第一列数字是职位总数,第二列是电商领域的职位数,相除就是占比。记住,count是不论0还是1都会纳入计数,所以第三个参数需要写成null,代表不是电商的职位就排除在计算之外。

    接下来是新的问题,如果我想找出各个城市,数据分析师岗位数量在500以上的城市有哪些,应该怎么计算?有两种方法,第一种,是使用having语句,它对聚合后的数据结果进行过滤。

    selectcity,count(distinctpositionId)fromDataAnalystgroupbycityhavingcount(distinctpositionId)>=500

    第二种,是利用嵌套子查询。

    我们将第一次查询获得的城市职位数的结果,看作一张新的表,利用as将它命名为t1(table1的简写),将职位数命名为一个新的字段counts。然后外面再套一层select过滤出counts>=500。

    这种查询方式就叫嵌套子查询,使用场景比较广泛,where后面也能跟子查询。

    很多时候,数据是凌乱的,我们希望结果能够呈现一定的顺序,这时候就用到orderby语句。

    selectcity,count(distinctpositionId)ascountsfromDataAnalystgroupbycity

    orderbycounts

    看,数据就按照统计结果升序排列,如果需要降序,则是orderbycountsdesc,后面加一个desc就好了。如果是多个字段,按逗号分隔即可。

    我们再来熟悉SQL的常用函数,首先是时间。因为我们的练习数据中没有时间,首先用now创建出一个时间字段。

    selectnow()

    直接执行它,就能获得当前的系统时间,精确到秒。其实select不一定后面要跟from。

    selectdate(now())

    它代表的是获得当前日期,week函数获得当前第几周,month函数获得当前第几个月。其余还包括,quarter,year,day,hour,minute。

    时间函数也包含各种参数,比如week,因为中西方计算第几天是不一样的,西方把周日算作一周中的第一天,而我们习惯周一。

    selectweek(now(),0)

    除了以上的日期表达,也可以使用dayofyear、weekofyear的形式计算。它和上面的部分函数等价。

    怎么对时间进行加减法呢?这时候靠date_add函数出马。

    selectdate_add(date(now()),interval1day)

    我们可以改变1为负数,达到减法的目的,也能更改day为week、year等,进行其他时间间隔的运算。如果是求两个时间的间隔,则是datediff(date1,date2)或者timediff(time1,time2)。

    时间函数的运用比较灵活,没有特殊限定,网络上的文档和教程也不少,可以深入学习。

    最后是数据清洗类的函数。

    selectleft(salary,1)fromDataAnalyst

    MySQL支持left、right、mid等函数,这里又和Excel一样。我们通过salary计算数据分析师的工资吧(这一步骤,在曾经的文章中已经用Excel和BI多次讲解,所以我就不多赘述了,只讲过程,不熟悉的同学可以看历史内容)。

    首先利用locate函数查找第一个k所在的位置。

    selectlocate("k",salary),salaryfromDataAnalyst

    然后使用left函数截取薪水的下限。

    selectleft(salary,locate("k",salary)-1),salaryfromDataAnalyst

    为了获得薪水的上限,要用substr函数,或者mid,两者等价。

    substr(字符串,从哪里开始截,截取的长度)

    薪水上限的开始位置是「-」位置往后推一位。截取长度是整个字符串减去「-」所在位置,刚好是后半段我们需要的内容,不过这个内容是包含「K」的,所以最后结果还得再减去1。

    这里不了解不要紧,可以将计算过程分步骤运行。基本上,了解了上面写法的含义,文本清洗这块就没有问题了(notlike用来清洗乱七八糟的薪水,我简单处理了)。再然后计算不同城市不同工作年限的平均薪资。

    上面语句,我们用了文本清洗、子查询嵌套、分组聚合、排序等多种用法,属于较复杂的查询。重复数据的问题,因为我是复制了一份北京数据,数量刚好乘二,对平均数没有影响,感兴趣的朋友可以再加一步清洗掉它。

    下面是三道思考题:

    查询出哪家公司招聘的岗位数最多;查询出O2O、电子商务、互联网金融这三个行业,哪个行业的平均薪资最高;查询出各城市的最高薪水Top3是哪家公司哪个岗位。

    做完上面的题目,你已经神功初成,数据分析的SQL意见没有大问题了。更复杂的查询,也无非是嵌套更多的内容,本质思路是一样的。

    讲到这里,只剩join语法还没有教大家。因为练习数据只有一张表,而join又是SQL中比较容易混淆的难点,我会单独开一篇内容讲解,到时候使用SQLZoo和LeetCode的案例。

    LeetCode是知名的算法竞赛网站,可以在上面和全世界的程序员比拼算法,当然我们只练习SQL,完成后,至少能秒杀全世界50%的程序员吧。

  • ?

    利用 SQL 进行数据分析初学者教程-ep1

    漠河

    展开

    由 Tomi Mester 写于2017年5月9日

    本文转载自https://data36/sql-for-data-analysis-tutorial-beginners/

    如果你想成数据分析师或是数据科学家,那么 SQL 是必须的。在过去的几年中,我已经与许多公司有线业务合作 - 从 5 人创业公司到 5000 多名员工跨国公司,并没有看到一家不会以某种方式使用SQL进行数据分析(以及更多的事情)的公司。

    SQL简单并且容易理解。因而,不只是工程师、开发者、数据分析师或数据科学家可以使用它,而是任何愿意花费几天来学习和练习它的人。

    我已经创建了这个 SQL 系列,成为有志的数据分析师和数据科学家的最实用和多动手的 SQL 教程。如果你从没有接触过编码、编程、查询,它将从头开始,这并不会是一个问题!

    让我们开始吧!

    注意:因为这是一个实用教程,我鼓励你和我一起编码。如果你这样做,你将需要一个数据服务器来练习。所以我建议你先通过阅读这篇文章。

    利用SQL进行数据分析?这是什么?为什么好呢?

    SQL代表『结构化查询语言』。 但是我喜欢描述它为「加强版的 Excel」。下面是同一份数据在 Excel 和 SQL:

    如你所见,SQL 和 Excel 十分相似。它们用具有行和列的二维列表展示数据。两者都非常结构化,非常透明。

    不过也有差异。作为初学者,你应该知道两件关于 SQL 的重要事情:

    1.第一是性能。虽然 Excel 在小数据集中表现很棒,但是当你使用不同的公式处理 100 k+ 行的文件,它变得十分缓慢和低效。在 SQL 中,甚至超过 10 M+ 行的文件可以很快的处理。(例如,在接下来的利用 SQL进行数据分析文章中,我们将使用一个 7 M+ 行的数据集。)

    2.第二是怎样访问你的数据。Excel 主要是图形用户界面(也成为 GUI)。你可以滚动、敲入公式、用光标选择你的范围等等,非常方便。在 SQL 中,你没有这样的界面,你必须使用称为『SQL 查询』来代替。看下面的gif:

    在 Excel 中求和

    在 SQL 中求和

    因为第一次看到这个,可能感觉到麻烦。但是相信我,一旦你了解 SQL 基础知识,你会发现它比 Excel 更加清晰、更有效率。只提两个有点:在 SQL 中,连接表比 Excel 更简单。同样,使用 SQL 自动化和重复使用脚本也将会变得更加方便。

    当你使用 SQL 进行数据分析,你将会使用它(最有可能)进行简单任务:聚合事情、连接数据集、使用简单的统计和数学方法。但是,你可以比以前更有效率执行这些任务和更大的数据集。

    Python,R 和 bash怎么样?

    如果你已经完成了我之前的 bash 教程 或者你已经参加一些我的在线直播,你可能会问:SQL 比 Python,R 或者 bash 好还是坏?答案是...好吧,这个问题没有明确答案!

    一旦你开始在实际生活的数据项目中应用这些语言,你将看到 Python 和 R 在某些方面是表现好的,而 SQL 在其他方面表现好。主要是语法、功能、性能不同...但是,我现在不想进入该主题,因为:

    a)我承诺一个使用教程,其主题有点理论(甚至有点哲学)。

    b)它还有点先进的东西。

    c)在这个水平上,你完全不需要担心它的性能,并且你有可能得到资深数据科学家或者数据工程师的帮助。

    注意:如果你真的很好奇,我给你~1小时在这里比较 Python,R,SQL 和 bash。

    但是现在,让我们试试吧!

    STEP 0 - 安装你自己的 SQL 环境来练习!

    注意:如果你已经有自己的 SQL 环境,你可以跳到STEP-获得数据!

    首先,请仔细阅读这篇文章。它是关于如何一步一步设置你自己的数据服务和安装 bash,Python,R 和 SQL 的教程。

    注意:在我的『利用 SQL 进行数据分析』文章中,我将使用 postgreSQL!还有其他类型的 SQL 语言(例如,另一个众所周知的开源语言 mySQL)。好消息是,所有的 SQL 语言都非常相似 -- 如果你学习 postgreSQL,则需要几个小时(甚至几分钟)才能适应另一个。我选择了 postgreSQL,因为它很受欢迎(许多在线企业都在使用它),同时它被称为最先进的开源 SQL 语言。

    如果你通过上述链接的文章,请仔细检查,如果你有以下3件事情:

    1.具有终端(或 iTerm)访问权限的数据服务器。

    2.PostgreSQL 安装在你的数据服务器上。

    3.你的计算机上的Pgadmin4(或SQL Workbench)。

    如果缺少某些内容,请再次阅读:安装 bash,Python,R 和 SQL!

    注意:作为一个 SQL 查询工具,相比于 pgadmin4,我更喜欢 SQL Workbench,但这是一种品味的问题。在我的利用 SQL 进行数据分析教程中,我将使用 SQL Workbench(以下是有关如何在计算机上安装它的教程),但你可以随意使用 pgadmin4。这不会有什么区别!

    STEP 1 – 通过命令行登录你的 SQL 数据库!

    太好了!你将在一分钟内编写你的第一个 SQL 查询!首先从命令行访问你的 SQL 数据库!你已经做了一次,我们将重复这个过程:

    1.打开终端(或 iTerm)。

    2.ssh到你的数据服务器

    在我的环境下,我输入:

    ssh tomi@[myipadress]

    3.一旦我登录服务器,我想访问我的 postgreSQL 数据库。因为我已经访问了我的用户,我只需要键入这个命令:

    psql -U tomi -d postgres- psql

    是命令本身以及

    -U

    指定你的用户名(我的为「tomi」),以及

    -d

    指定你的数据库的名称(我的是 postgres 同样适用于你)。你的提示应改为:

    postgres=>

    完成!你可以完全访问你的 SQL 数据库! 4.作为测试,键入:

    \dt

    这会列出你所有的数据表。到目前为止,你只有一个数据表,但是这将会马上改变!

    再次提醒!如果缺少某些东西或者不能运行,请再次阅读:安装 bash,Python,R 和 SQL!

    STEP 2 - 获得数据!

    在本教程中,我们将使用一个非常小的数据集,称为 zoo。

    您可以从这里以原始 .tsv 格式下载,你可以在 Excel 中操作它。如果您已经完成了bash 教程,或者在bash /command line。

    但是,继续使用SQL:

    1)

    创建一个表

    ,我们可以向表中载入数据。在我的后续教程中,我将详细解释这里发生了什么,但现在,你只需将这几行代码复制粘贴到终端中:

    CREATE TABLE zoo (

    2)仔细检查表格是否已创建:

    我们有新的数据表:zoo!

    3)载入数据!

    再次说明:我稍后会解释,但是现在,只是复制粘贴这个 SQL 查询:

    INSERT INTO zoo (animal,uniq_id,water_need) VALUES

    如果一切正常,你会得到这条提醒:

    INSERT 0 22

    最重要的 SQL 语句:SELECT

    是时候学习最基本的 SQL 语句。这是:

    SELECT * FROM table_name;

    每当你在数据上使用读取,过滤,转换,聚合或执行任何操作,你将会使用 SELECT。在这系列教程中,90%的内容将会显示出来,以某种方式修改单一查询。作为开始,我们从 zoo 数据表中 SELECT 任意内容。

    SELECT * FROM zoo;

    我已经得到完整的可读格式的表。(如果要从这个视角中退出,请在键盘上按Q键。)

    我想它甚至不需要一个解释 -- 因为语法本身非常接近英语 - 但是为了以防万一:

    SELECT

    是主语句,它告诉 SQL 我们想从我们的数据表中读取一些东西。

    *

    通常是指「一切」 -- 在这种情况下,这意味着我们想选择每一列。

    FROM

    告诉 SQL,我们要从指定的表中读取数据。

    zoo

    是表的名称。如果你有更多的表,您可以将其替换为任何其他表名。

    ;

    这是一个 SQL 特定的语法。每个查询都应该用分号关闭。如果您不小心错过了,SQL 将期望您继续查询,不会在屏幕上返回任何内容。

    从现在起,你将会使用这种语法。

    SELECT columns

    你可以用实际的列名替换 * 字符。尝试这个查询:

    SELECT animal, water_need FROM zoo;

    (如果要从此视图中退出,请在键盘上按Q键。)

    确切地说,你所期望的是:你的屏幕上列出了「animal」和「waterneed」列,而不是「uniqid」。

    这样可以 SELECT 任何列。你只需要用逗号分隔指定的列名。

    你也可以这样做:

    SELECT animal, animal, animal FROM zoo;

    你会看到同一列多次...但是,因为这是没有意义的,我建议只是根本不这样做。

    显示数据的前几行 -- LIMIT 从句

    现在我们正在使用 22 行的数据表。在「利用 SQL 进行数据分析」系列的下一集中,我们将使用一个 7 M+ 行数据文件。这是一个很大的变化,在这种情况下,每次都在屏幕上打印所有数据是不合理的,而是获取前几行的小样本。为此,使用 LIMIT 从句 - 这是之前介绍的「基础查询」顶部的一个小「扩展」:

    SELECT * FROM zoo LIMIT 10;

    这将仅打印前10行。(记住它是如何在 bash 中完成的?这是

    head -10

    命令。)

    当然,你可以决定要打印多少行,并在 LIMIT 之后指定!

    过滤指定行 -- WHERE从句

    基于数值,你可以用 WHERE 从句选择特定的行。例如:

    SELECT * FROM zoo WHERE animal = 'elephant';

    SELECT * FROM zoo

    -这是「基础查询」

    WHERE

    - 这告诉 SQL 你想过滤一些东西

    animal = 'elephant'

    - animal 是你正在寻找给定值的列名。而 elephant 是值本身。在 SQL 中,你必须添加列名,寻找值。

    - 永远不要忘记分号!

    在利用 SQL 进行数据分析系列的下一集中,我将详细介绍如何充分利用 WHERE!现在,如果你知道这是为了过滤行,便足够了。

    自我测试#1

    这是一个介绍性的文章,所以这第一个任务也将是相当容易的:

    从 zoo 表中选择前 3 个 zebra!

    该解或多或少是本文的总结!

    . . . 准备?

    这是我的解决方案:

    SELECT * FROM zoo WHERE animal = 'zebra' LIMIT 3;

    SQL 很容易,对吧?

    还有一件事:语法...

    稍后,我将向你展示一些最佳实践,以及如何保持 SQL 查询的清洁和高效,但在第一篇文章中,我仅强调两件事情:

    所有的查询都应以分号(;)结尾。如果你不小心错过了,SQL 将期望您继续查询,不会在屏幕上返回任何内容。例如:

    当谈到SQL关键字(SELECT,WHERE,LIMIT等),SQL 并不区分大小写。例如:

    postgres=> SELECT * FROM zoo;

    postgres=> SELECT * FROM zoo

    postgres->

    这不是很好...这样更好:

    SELECT * FROM ZOO WHERE ANIMAL = 'ELEPHANT';

    – DOES NOT WORK

    SELECT * FROM ZOO WHERE ANIMAL = 'elephant';

    – WORKS

    select * from zoo;

    表名,列名和值的区分大小写是你设置的问题。在我们当前的设置(使用postgreSQL)中,表名和列名不区分大小写,但是字段值是。例如。

    工作原理如下:

    请注意,按照惯例上大多数人使用大写 SQL 关键字(SELECT,WHERE,LIMIT等)。它有助于阅读你的代码。

    结论

    相当不错的学习和使用 SQL 进行数据分析!恭喜!现在你可以写你的第一个非常基本的 SQL 查询...但这只是开始!让我们继续下一集,并学习如何使用 WHERE 从句从数据集中过滤东西。

    如果你不想错过下一集,并且也想获得有关即将到来的网络研讨会的信息,请订阅我的每周通讯

sql数据教程

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP