SQL全称是 Structured Query Language,翻译后就是结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
至于 ORACLE、DB2、Sybase、SQLServer、MySQL、MS Access等都是数据库,虽然语法上有差异,但是基本上都是大同小异。作为一名数据从业者,虽然市面上有很多很智能很自助的数据工具,甚至有的拖拖拽拽就能实现,但作为一名报表工程师、数据分析师,不懂一点SQL是绝逼不行的。
之前很多文章对于SQL都一笔带过,轻描带写,略忽视这项基本技能的重要性,所以今天就来讲讲如何学习SQL。
市面上都大量的书籍和教学视频,这里就帮大家提炼核心要点,给个学习方向。
SQL快速学习路线
一坑:学习之前先安装数据库软件,可以是SQL Sever,也可以是MySQL。对于新人而言,安装数据库软件挺费时间,坑太多。我刚上大学那会要求2天内自学SQL,结果我花了1天时间安装SQL Sever。前一篇文章分享了MySQL的安装教程,刚开始学用不上太庞杂的功能,所以推荐小而美的MySQL,SQL Sever也是可以的。
二坑:一上来就背SQL语法。我看过太多新人在那边吭哧吭哧做笔记背SQL,个人不赞成这种学法,不实践记不住。就和Excel函数一样,理解含义和如何使用,关键时候去w3school查询一下就行了,以后用得多了自然就掌握了。(后台回复关键词“SQL”获得)
SQL学习路线
1、下载安装MySQL,或者安装软件phpstudy(这个软件自带了mysql数据库,而且安装启动方便)。
2、我这里用的是phpstudy,打开phpstudy后,点击下图中的启动,点击后数据库服务就会启动了。
3、下载安装Navicat软件
这个软件可以轻松连接数据库,我们可以在这个软件中练习学习SQL语法
4、使用Navicat建立数据库连接
点击文件——新建连接,连接名随便填写,比如我写的是“本地”。主机名、端口都不需要修改,用户名和密码都是root(因为我们安装的phpstudy里的mysql默认用户名密码就是root),点击连接测试显示为成功后点确定保存。
6、导入第5步中下载的数据表。(后台回复关键词“SQL”获得)
右击第4步中的“本地”,新建一个数据库test1,双击打开新建的数据库(打开后颜色是绿色)。
拖拽刚才下载的数据表文件(sqltest1.sql)到test1上面。
在左侧空白处右击,选择“刷新”,即可看到刚才导入的数据表了。
7、打开sql语法编辑器
如下图点击查询——新建查询,在空白处输入sql语法,点击运行,如果输入错误会有报错,输入正确则会返回查询内容。
8、边做边学
打开第一部分习题,边做边学,通过查询w3c的sql语法手册完成
9、巩固练习
以上是sql的学习路径,接下来是sql语句的学习,掌握使用场景和含义,具体语法就不做解释了,大家参考w3c的sql语法手册学习。这里我归了下类,挑重点讲。
数据库表基础操作
首先数据库表必掌握的基础操作,建表、删表、往表里增数据、往表里删数据以及最重要的取数等等。
1、CREATE TABLE(建表)
怎么着也得先建立表~
当你建表成功后,发现忘记添加主键,或者忘记添加外键,莫着急。使用以下咒语即可:
建好的表如下:
emp表
orders表
2、INSERT(插入)
向表中插入数据
插入数据后的emp表
插入数据后的orders表
3、UPDATE(更新)
4、DELETE(删除)
在使用delete删除emp表中数据时,要注意该表与其他表是否存在关联关系,比如:外键。emp表id是表orders的外键,如果要删除emp表中的id,得先删除orders表中的外键。
5、DISTINCT(去重)
在表中,可能会包含重复值,这并不成问题。不过,有时你也许希望仅仅返回唯一不同的值。使用distinct关键字进行处理,用于返回唯一不同的值。
注意:distinct关键字是去重!去重!去重!*把列中的重复值去掉!
曾经我在笔试的时候,有道SQL考题:请写出表中所有重复的name的所有数据。我当时没反应过来,直接就用了distinct关键字,后来就….
6、Select(取数)
SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。这是以后最常用的操作,占据你90%。
SQL SELECT 语法
SELECT 列名称 FROM 表名称
以及:
SELECT * FROM 表名称
比如需获取名为 “LastName” 和 “FirstName” 的列的内容(从名为 “Persons” 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons
SELECT通常结合其他函数和语法使用。
SQL基础语句
在实际的SQL使用中,肯定会涉及到有关函数的使用,这里简单介绍几种初学时必学的函数类型。
1、AVG()
AVG 函数返回数值列的平均值。NULL 值不包括在计算中。
2、COUNT()
3、MAX()
MAX函数返回指定列的最大值,NULL值不包括在计算中
4、MIN()
MIN函数返回的指定列的最小值,NULL值不包括在计算中
5、SUM()
SUM函数返回指定列的总数
6、ROUND()
ROUND 函数用于把数值字段舍入为指定的小数位数
round函数需要的参数
7、FORMAT()
FORMAT 函数用于对字段的显示进行格式化
format函数需要的参数
SQL高级语句
这一部分的内容是通常用到的,属于最开始学习SQL知识时必须要熟练的,我这里大致列出几项。
1、LIMIT
2、LIKE
在上面我们可以看到,通配符“%”的使用方法,所以通配符必须要配合like 运算符一块使用。
通配符还有以下几种:
3、IN
4、JOIN
联表运算符JOIN,该运算符是用于将两个或者两个以上的表进行关联,并从这些表中查询数据。
对于联表来说,通过使用主键(primary key)和外键(foreign key)也可以建立连接。
除了上述直接使用条件关联,下面我们可以用可读性更高的INNER JOIN来写
还有其他几种方连接方式(外连接):
5、ALTER
穿插介绍一下alter,前面的例子中已经包含了几种alter使用方法。
6、UNION
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
上面引用的意思就是:道不同,不相为谋!
UNION和UNION ALL命令几乎是等效的,不过加了“ALL”,就会列出所有的值。
注意:因为其也具有“唯一性”,容易和PRIMARY KEY混淆。面试或笔试常考两者的不同,在这里说明一下:
与PRIMARY KEY不同的是,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
为表添加UNION,这里给出使用的SQL语法。
7、AUTO-INCREMENT(自增)
在运用中,我们希望在每添加一条数据后,自动的为我们的主键创建值。
8、ORDER BY
在前面中已经使用到了有关order by的SQL语句,order by该语句用于对结果集进行排序,默认是进行ASC正序排序(从小到大)。
排序的两种方式:
举栗:
ASC排序
对于DESC排序,这里就不进行举例了,大家可以自己写SQL试一下。
9、GROUP BY
通常配合合计函数使用,根据一个或多个列对结果集进行分组。
具体的用法在介绍函数时会涉及到。
10、HAVING
在上面的例子中,我们使用where关键字来增加查询条件,这里增加having字句是因为,where关键字无法与合计函数一起使用
同样引用上面的SQL语句。
具体的用法在介绍函数时会涉及到。
11、DEFAULT
DEFAULT约束用于向列中插入默认值。
本次文章中写的相关知识点是我以前在学习中随手记录的,对一些SQL大牛来说,这些已经是耳熟能详了。会不会让你们产生一种灌水的错觉????哈哈~
此文是《10周入门数据分析》系列的第6篇。
想了解学习路线,可以先行阅读“ 学习计划 | 10周入门数据分析 ”
公众号上已更新到第13篇,欢迎前往关注~