在正式开始学习SQL之前,让我们先来了解一下美国作家西蒙.斯涅克因在TED演讲中提出黄金圈法则,黄金圈法则的核心思想是,在沟通表达的时候,按照一个特定的结构why--how--what进行表达,如下图所示,从内圈到外圈依次为:why是初心,how是过程,what是结果。
首先讲why,why就是初心,这是你开始做一件事情的意义所在,也是你能完成一件事情的的源动力。“不忘初心,方得始终”,开始之前先问一问你自己为什么要学习SQL?
how是过程,就是规划怎么做。执行过程直接决定了结果,初心已定,但是如何做才能达到,是没有唯一的正确答案的。你可以像我一样参加猴子老师的数据分析社群,在猴子老师的带领下,和社群小伙伴们一起学习,也可以自己通过看视频课程,看书来学习。
what是大家最熟悉的部分,如果Why和How梳理得清晰,那What圈层的做什么就是水到渠成的结果了。
如果以上问题你都思考清楚了,那么就开始你的SQL学习之旅吧!
1.什么是数据库?
数据库(DataBase)是数据存储的集合,用来存放数据。更通俗的理解,数据库是一个存放货品的仓库,而货品就是一张一张表。
现在使用的数据库大多数为关系型数据库,即“多张表+各表之间的关系”,如MySQL、Oracle、SQLsever。如下图,各张表既是通过id联结(join)起来的。
在关系型数据库中,目前最常用的是MySQL。MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,现在已经被Sun公司收购,虽然与其他的大型数据库例如Oracle、DB2、SQLServer等相比功能稍弱一些,但总体来说,是相当出色的:
是开源软件,版本更新较快,可移植行高,安装简单小巧;支持万条记录的数据仓库,可以处理拥有上千万条记录的大型数据;适应于所有的平台,支持FreeBSD、Linux、MAC、Windows等多种操作系统;良好的运行效率,有丰富信息的网络支持,调试、管理,优化简单(相对其他大型数据库)。表(table)是数据结构化的信息,列存储表中的组织信息,行存储表中的明细记录,主键是表中记录的唯一标识,不具有业务意义(如下图中的学号)。关于主键,有以下几点需要注意:
表的主键不做强制要求,但建议设立;主键值必须唯一;每行必须有一个主键,不可为空;主键值不可被修改;主键值被删除后不可重用;表A的主键,可以做为表B的字段,此时不受约束。
数据库管理系统(DataBaseManagementSystem,简记为DBMS)则是在计算机中对数据库进行定义、描述、建立、管理、和维护的系统软件。
2.什么是SQL?
结构化查询语言(StructuredQueryLanguage),是一种编程语言;一种数据库查询和程序设计语言;用于存取数据以及查询、更新和管理关系数据库系统;各种数据处理逻辑与方法的实现,都可以通过SQL语言来完成。下图为SQL语言的构成:
当然,和Excel中的函数一样,SQL也有它的书写规则:
SQL语句以英文分号(;)结尾;SQL语句不区分关键字的大小写(如insert、create等);SQL语句输入符号时只能在英文状态下。
3.如何安装MySQL数据库?
MySQL的安装比较简单,参照猴子老师的文章步骤安装即可:
mysql数据库安装教程
安装完了MySQL之后我们还要继续安装Navicat图形化管理工具,通过它我们可以更方便的操作数据库,如进行:
数据库操作管理;管理数据表;管理数据记录;导入和导出数据。Navicat的安装请参照:客户端navicat安装教程
接下来我们进行Navicat和MySQL之间的连接:
按照下图所示顺序,其中连接名可以自己随意设置,IP地址公司会提供,当前我们的MySQL和Navicat都在自己的本地机上,按如图信息填写即可,用户名和密码为安装MySQL时设置的。信息填完后,点击链接测试,显示连接成功,点击确定即可。
4.表的创建、删除和更新
首先我们来创建数据库:
选中我们刚连接的MySQL数据库的连接名,右键打开链接,使其图标由灰色图标变成绿色;
选中绿色的连接名称,右键,新建数据库,进入如下界面(以新建一个学生信息库为例,注意编码选择utf8,避免出现乱码),点击确定,一个名为“school”的数据库就建好了;
接下来我们来进行表的创建:
选中新建的“school”数据库,右键-打开数据库,选中数据库下的“表”,右键新建表,并键入信息,点击添加字段按钮增加新的字段,最后点击“学号”行末端,出现钥匙图标,将学号设置为主键,如图:
点击保存,将表命名为“student”,点击确定,我们可以看到名为“student”的表出现在“表”的下方,双击表名“student”或”右键-打开表“即可打开该表:
最后,表如何进行更新和删除:
如果我们发现我们除了以上四个字段(学号、姓名、出生日期、性别),还需要添加新的字段进去怎么办?需要删除重做吗?其实我们只要选中表名“student”,“右键-设计表”就可以利用“添加字段”,“插入字段“和”删除字段”进行修改和更新信息了。同样的,删除表,我们只要选中表名“student”,“右键-删除表”就可以了。
接下来我们用同样的方式完成其他几张表的创建:
score表的创建(“课程号”和“教师号”为联合主键):
course表的创建(“学号”和“课程号”为联合主键):
teacher表的创建(“教师号”为主键):
我们可以看到现在“student”表中没有数据,所以显示的是空值,所以我们接下来的任务是录入数据,在录入数据之前,我们先了解一下数据类型的概念,还记得前面我们在录入字段时,在“学号”的类型一栏选择了“varchar”,而在“出生日期”一栏选择了“date”吗?这就是因为二者的数据类型不同。在MySQL中,有三种主要的类型:文本、数字和日期/时间类型:
5.数据的插入、删除和更新
首先,我们进行数据的插入:
我们可以在这里通过“+”、“-”按钮来进行逐条的数据增减,但如果数据量比较多,就该我们的SQL闪亮登场了,那么我们该如何在Navicat里面写SQL呢?
接下来,我们录入如下语句,并点击运行:
我们可以看到,运行状态没有报错(如若报错首先检查符号是否为英文状态),此时我们打开“student”表可以看到,数据已经插入:
接下来,我们用同样的方法插入其他几个表的数据,如下:
到这儿,今天的任务就完成了,如果你从头到尾的跟着操作下来,那么你的SQL就已经妥妥滴入门了,最后,我们用一张思维导图来回顾下今天的内容:
下一次,我们将学习SQL的简单查询,好啦,我们下次见!记住,每一点进步都值得我们为之欣喜,加油!