SQL是访问和操作关系数据库的标准语言,只要我们想要操作关系数据库中的数据,比如将商品信息放入电商系统,或者更改社交网站上的个人简介,都必须通过SQL来完成。如今任何程序已经离不开数据库,所以不管是开发软件或者做数据挖掘之类的工作,我们必须要学习这一项必不可少的技能。
数据库简介
在进入SQL的学习之前,我们先来学习一下数据库的基本概念,帮助大家更好地理解SQL。
数据库是用来储存数据的应用软件,不管是电商平台,社交网络还是游戏,都需要数据库来存储信息。简单来说,数据库可以帮助我们更好地存储和访问信息,而数据库的种类可以简单分为两种:关系型数据库和非关系型数据库。
关系数据库
在关系数据库中,数据被看作是一个二维的表格,任何数据都可以通过行号和列号进行确定,其中的数据看起来类似一个Excel表格。比如我们要存储学生的信息,数据会以下面的形式被储存下来:
ID | Name | Gender | Age | Major |
1 | Enoch | Male | 20 | CS |
2 | Fandy | Female | 21 | ECO |
3 | David | Male | 20 | EE |
4 | William | Male | 23 | HIS |
对于一个关系表,除了定义每一列的名称之外,还需要定义每列数据的类型。关系数据库支持的标准类型包括数值、字符串、时间等:INT, DOUBLE, DICIMAL(M,N), CHAR(N), VARCHAR(N), DATE, TIME, …。
简单来说,关系数据库对数据的存储有很严格的限制,每组数据会以表格的形式被存储下来,而表格之间的数据也存在特定的关系。关于关系数据库中数据的具体定义和标准,我们会在之后的章节详细讲解。
基于关系数据库的数据库软件有很多,目前主流的数据库主要有以下几类:
- 商用数据库:Oracle,SQL Server,DB2等。
- 开源数据库:MySQL,PostgreSQL等。
- 桌面数据库:Microsoft Access等。
- 嵌入式数据库 :Sqlite等。
非关系数据库 NoSQL
非关系数据库如今非常流行,比如现在很火的Mongodb和DynamoDB。在非关系数据库中,数据的定义没有关系数据库中的限制,数据的定义可以非常灵活,在如今这个数据爆炸的时代,NoSQL非常适用于那些数据关系不复杂,并且对数据的规模和扩展性有需求的场景。
但是关系数据库还是承担了各种应用程序的核心数据储存,而NoSQL数据库作为SQL数据库的补充,两者不是二选一的关系,而是主从关系。通过学习SQL,我们还能系统性地理解数据之间的关系,培养我们设计任何系统的大局观。所以,不管是从事互联网开发、手机开发还是游戏开发,掌握SQL依然是所有软件开发成员的必备技能。
SQL
SQL是结构化查询语言(Structured Query Language)的缩写,用来访问和操作数据库系统,也是各种关系数据库的操作语言标准。简单来说,SQL语言定义以下几种操作数据库的功能:
- DDL(Data Definition Language):允许用户定义数据(创建表、删除表、修改表)。
- DML(Data Manipulation Language):添加、删除、更新数据。
- DQL(Data Query Language):查询数据,也是最频繁的数据库日常操作。
SQL语言关键字不区分大小写,当然了,针对不同的数据库,对于表名和列名,有的数据库区分大小写,有的不区分。在此教程中,我们遵循传统的标准:SQL关键字总是大写,以示突出。
教程大纲设计
在这个系列中,我们不会直接开始使用任何一款数据库软件,我们会先学习SQL的基本语法,因为所有关系数据库都是基于标准SQL的。打好基础之后,我们将会安装和使用最受欢迎的MySQL数据库,最后我们再学习如何通过Python操作数据库。教程大致会包含以下的内容:
- 关系模型:主键和外键
- SQL的语法:增加、修改、查询数据
- MySQL数据库:数据库的安装和使用,使用Python操作MySQL
在线SQL编辑器:SQL Tryit Editor
在结束SQL的语法之前,我们不会在真正的数据库MySQL上进行操作,之后我们会在线上SQL运行器来操作SQL:SQL Tryit Editor