零底子快速自学SQL,2天足矣!
此文是《10周入门数据分析》系列的第6篇。想了解学习路线,可以先行阅读“ 学习计划 | 10周入门数据分析 ”
上一篇分享了数据库的基础知识,以及如何安装数据库,今天这篇分享数据库操作和SQL。
SQL全称是 Structured Query Language,翻译后就是结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库体系。
至于 ORACLE、DB2、Sybase、SQLServer、MySQL、MS Access等都是数据库,虽然语法上有差异,但是基本上都是大同小异。作为一名数据从业者,虽然市面上有很多很智能很自助的数据工具,乃至有的拖拖拽拽就能实现,但作为一名报表工程师、数据分析师,不懂一点SQL是绝逼不行的。
之前很多文章对于SQL都一笔带过,轻描带写,略忽视这项基本技能的重要性,所以今天就来讲讲如何学习SQL。
市面上都大量的册本和教学视频,这里就帮大家提炼核心要点,给个学习方向。
本次的文章重要从以下几个方面进行分析,大家可以参考着学习。
[*]SQL快速学习路线
[*]数据库表基础操作
[*]SQL基础语句
[*]SQL高级语句
SQL快速学习路线
零基础自学SQL时通常会遇到2个坑:
一坑:学习之前先安装数据库软件,可以是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后,点击下图中的启动,点击后数据库服务就会启动了。
https://p9.pstatp.com/large/pgc-image/10664c02e38b421881facd43a4ff538c
3、下载安装Navicat软件
这个软件可以轻松毗连数据库,我们可以在这个软件中练习学习SQL语法
4、使用Navicat建立数据库毗连
点击文件——新建毗连,毗连名随便填写,比如我写的是“本地”。主机名、端口都不需要修改,用户名和暗码都是root(由于我们安装的phpstudy里的mysql默认用户名暗码就是root),点击毗连测试显示为乐成后点确定保存。
以后再次访问时,双击即可。
https://p3.pstatp.com/large/pgc-image/74a57f24064f4b3e947a88c79c9c5bbe
5、下载习题进行学习,内含习题需要用到的数据表。
6、导入第5步中下载的数据表。(后台复兴关键词“SQL”获得)
右击第4步中的“本地”,新建一个数据库test1,双击打开新建的数据库(打开后颜色是绿色)。
拖拽刚才下载的数据表文件(sqltest1.sql)到test1上面。
https://p3.pstatp.com/large/pgc-image/41a7002770d94aada112c06704db8972
这时会出现上述弹窗,点击开始,等待导入完成后,点击关闭
在左侧空白处右击,选择“刷新”,即可看到刚才导入的数据表了。
https://p3.pstatp.com/large/pgc-image/63efecae046147e6b9d6b904fdb62cf0
7、打开sql语法编辑器
如下图点击查询——新建查询,在空白处输入sql语法,点击运行,假如输入错误会有报错,输入正确则会返回查询内容。
https://p1.pstatp.com/large/pgc-image/e414e5c98a6f4a5baedaef5cc187d434
8、边做边学
打开第一部分习题,边做边学,通过查询w3c的sql语法手册完成
9、巩固练习
尝试不看sql语法手册,独立完成第二部分习题。
以上是sql的学习路径,接下来是sql语句的学习,把握使用场景和寄义,详细语法就不做表明白,大家参考w3c的sql语法手册学习。这里我归了下类,挑重点讲。
数据库表基础操作
起首数据库表必把握的基础操作,建表、删表、往表里增数据、往表里删数据以及最重要的取数等等。
1、CREATE TABLE(建表)
怎么着也得先建立表~
https://p1.pstatp.com/large/pgc-image/92ed15c0f6f34ae9891245cc5d7c0b3a
当你建表乐成后,发现忘记添加主键,大概忘记添加外键,莫着急。使用以下咒语即可:
https://p1.pstatp.com/large/pgc-image/9b5e597a988644b2b97ea0585f4bc265
建好的表如下:
https://p1.pstatp.com/large/pgc-image/6e18119c378c49e6bd163b1348d83009emp表
https://p1.pstatp.com/large/pgc-image/e45fb2b28c984c70b2501ea3a041745borders表
2、INSERT(插入)
向表中插入数据
https://p1.pstatp.com/large/pgc-image/3d1b3858d6fb4b0db8a9d18d8f7c51d9
https://p3.pstatp.com/large/pgc-image/0480516ce43f4c40a02ad733e2029bb2插入数据后的emp表
https://p1.pstatp.com/large/pgc-image/a9fecb2e5aff43a18528fd0bf091f464插入数据后的orders表
https://p1.pstatp.com/large/pgc-image/7f2f4e691fc74da78068c22cece13095
3、UPDATE(更新)
https://p1.pstatp.com/large/pgc-image/6b7f1aef3a0e4b71bee8823bd6d0d7c4
4、DELETE(删除)
https://p9.pstatp.com/large/pgc-image/da50cae0489c4de18a65fb3a58f56f82
在使用delete删除emp表中数据时,要注意该表与其他表是否存在关联关系,比如:外键。emp表id是表orders的外键,假如要删除emp表中的id,得先删除orders表中的外键。
5、DISTINCT(去重)
在表中,可能会包含重复值,这并不成问题。不过,有时你也许希望仅仅返回唯一差别的值。使用distinct关键字进行处理,用于返回唯一差别的值。
注意:distinct关键字是去重!去重!去重!*把列中的重复值去掉!
曾经我在笔试的时候,有道SQL考题:请写出表中全部重复的name的全部数据。我当时没反应过来,直接就用了distinct关键字,后来就....
https://p1.pstatp.com/large/pgc-image/507c039c9f774bf9a3a7a88ef04fe18f
https://p1.pstatp.com/large/pgc-image/d38371ad4b24403cae6b5664c1012e1d
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 值不包括在计算中。
https://p3.pstatp.com/large/pgc-image/50d0658b9d9d40a793bda3fbc30865a9
2、COUNT()
COUNT( ) 函数用于返回匹配指定条件的行数。
https://p1.pstatp.com/large/pgc-image/35b688b566ac471b9bc5ad9350c6b3cd
3、MAX()
MAX函数返回指定列的最大值,NULL值不包括在计算中
https://p3.pstatp.com/large/pgc-image/deb287d46b5945f09baa91fa234f7dcc
4、MIN()
MIN函数返回的指定列的最小值,NULL值不包括在计算中
https://p9.pstatp.com/large/pgc-image/da4f572e69af4223b73b2c8ad6c58430
5、SUM()
SUM函数返回指定列的总数
https://p3.pstatp.com/large/pgc-image/95a7baadcc134139b0d7379bcbe25c8f
6、ROUND()
ROUND 函数用于把数值字段舍入为指定的小数位数
https://p3.pstatp.com/large/pgc-image/5e6614be4a084b41a37f2a6d1963253around函数需要的参数
https://p3.pstatp.com/large/pgc-image/2493a42434544d33b8e249b5913a3479
7、FORMAT()
FORMAT 函数用于对字段的显示进行格式化
https://p3.pstatp.com/large/pgc-image/ef674d15c7cf46b2aaa626b54b7b5d64format函数需要的参数
SQL高级语句
这一部分的内容是通常用到的,属于最开始学习SQL知识时必须要熟练的,我这里大致列出几项。
1、LIMIT
https://p3.pstatp.com/large/pgc-image/afcdbb7e17a74d7090c10c711f0dc43f
2、LIKE
一般配合where使用,搜索条件中的指定模式
https://p1.pstatp.com/large/pgc-image/fa2112968a9c4394a4ad8e0355901c95
在上面我们可以看到,通配符“%”的使用方法,所以通配符必须要配合like 运算符一块使用。
通配符还有以下几种:
https://p1.pstatp.com/large/pgc-image/545a961d2eeb48f080d175ecc072eef3
3、IN
从字面意思就可以知道它的作用是什么了
https://p3.pstatp.com/large/pgc-image/f6734357af1f4f319aaa2bfe85fd18cb
4、JOIN
联表运算符JOIN,该运算符是用于将两个大概两个以上的表进行关联,并从这些表中查询数据。
对于联表来说,通过使用主键(primary key)和外键(foreign key)也可以建立毗连。
https://p3.pstatp.com/large/pgc-image/05d756353fc64b679f3683ca711faf55
除了上述直接使用条件关联,下面我们可以用可读性更高的INNER JOIN来写
https://p1.pstatp.com/large/pgc-image/97f5b8d6a7fc4112b1428ee21bbb44db
还有其他几种方毗连方式(外毗连):
[*]LEFT JOIN:就算右表中没有匹配,也从左表返回全部的行
[*]RIGHT JOIN:纵然左表没有匹配,也行右表返回全部的行
[*]FULL JOIN:只要有一个表存在着匹配,就返回行
5、ALTER
穿插介绍一下alter,前面的例子中已经包含了几种alter使用方法。
https://p3.pstatp.com/large/pgc-image/5192b822e3104b559fce4b4a8c8a8d93
6、UNION
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据范例。同时,每条 SELECT 语句中的列的顺序必须相同。
上面引用的意思就是:道差别,不相为谋!
UNION和UNION ALL命令几乎是等效的,不过加了“ALL”,就会列出全部的值。
https://p3.pstatp.com/large/pgc-image/df507c60422e46eca2629dad6d8b60b9
注意:由于其也具有“唯一性”,容易和PRIMARY KEY混淆。面试或笔试常考两者的差别,在这里分析一下:
与PRIMARY KEY差别的是,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
为表添加UNION,这里给出使用的SQL语法。
https://p1.pstatp.com/large/pgc-image/2435053bec2f47a7ac94e152aedbed0a
7、AUTO-INCREMENT(自增)
在运用中,我们希望在每添加一条数据后,自动的为我们的主键创建值。
https://p9.pstatp.com/large/pgc-image/59288432dad94b2eb87ab9f46ac0b354
8、ORDER BY
在前面中已经使用到了有关order by的SQL语句,order by该语句用于对结果集进行排序,默认是进行ASC正序排序(从小到大)。
排序的两种方式:
[*]ASC:升序(从小到大)
[*]DESC:降序(从大到小)
举栗:
https://p3.pstatp.com/large/pgc-image/a46157f3fee34d7ab0a67a8a0bc9a963
https://p3.pstatp.com/large/pgc-image/8cbac9879d40472282efbd3a633a256dASC排序
对于DESC排序,这里就不进行举例了,大家可以自己写SQL试一下。
9、GROUP BY
通常配合合计函数使用,根据一个或多个列对结果集进行分组。
https://p1.pstatp.com/large/pgc-image/8b81e95709cd451787ded4f9605c232e
详细的用法在介绍函数时会涉及到。
10、HAVING
在上面的例子中,我们使用where关键字来增长查询条件,这里增长having字句是由于,where关键字无法与合计函数一起使用
同样引用上面的SQL语句。
详细的用法在介绍函数时会涉及到。
11、DEFAULT
DEFAULT约束用于向列中插入默认值。
https://p1.pstatp.com/large/pgc-image/1d660fabd7654e028f11be5fe27254e6
本次文章中写的相关知识点是我以前在学习中随手记录的,对一些SQL大牛来说,这些已经是耳熟能详了。会不会让你们产生一种灌水的错觉????哈哈~
此文是《10周入门数据分析》系列的第6篇。
想了解学习路线,可以先行阅读“ 学习计划 | 10周入门数据分析 ”
公众号上已更新到第13篇,接待前去关注~ sql 查询 这些简单,存储过程这些上手就不容易了 开学上了两节课了 安装SQL Server2017一直失败 各种删除文件 删除残留文件 删除登记表 心态已崩现在正在安装2008 这个1小时就足够了,难的存储过程哦 看着容易学着难,需要静心慢慢来 一个select语句 都够学一阵子了 已收藏,这年头不学点数据库相关知识都不好意思出门和别人打招呼[流泪] 增删查改很容易上手。就是视图存储过程,函数,优化,索引。 一直想学数据库却不得其发!