Skip to main content

Introduction

sql-cover

SQL stands for Structured Query Language. SQL is used to query and manipulate the underlying relational databases such as SQL Server, Oracle, MySQL, PostgreSQL, SQLite, etc.

SQL is an ANSI (American National Standards Institute) and ISO (International Organization for Standardization) standard language. However, not all the databases support the same SQL, but there is little variation. Also, most databases include their own addition to SQL.

In order to understand SQL, let's first look at what's the relational database and MySQL.

Relational DataBase

数据持久化

将数据保存到能够⻓久保存数据的存储介质中,在掉电的情况下数据也不会丢失。

数据库发展史

网状数据库、层次数据库、关系数据库、NoSQL 数据库、NewSQL 数据库。

1970 年,IBM 的研究员 E.F.Codd 在 Communication of the ACM 上发表了名为 A Relational Model of Data for Large Shared Data Banks 的论文,提出了关系模型的概念,奠定了关系模型的理论基础。后来 Codd 又陆续发表多篇文章,论述了范式理论和衡量关系系统的 12 条标准,用数学理论奠定了关系数据库的基础。

关系数据库特点

  • 理论基础: 关系代数(关系运算、集合论、一阶谓词逻辑)。
  • 具体表象: 用二维表(有行和列)组织数据。
  • 编程语言: 结构化查询语言(SQL)。
    • DDL: 数据定义语言,创建、删除和修改数据库和表,关键字包括 createdropalter
    • DML: 数据操作语言,插入、删除和更新数据,关键词包括 insertdeleteupdate
    • DQL: 数据查询语言,查询数据,最重要的一个关键词是 select
    • DCL: 数据控制语言,授予和召回权限,关键词是 grantrevoke
    • TCL: 事务控制语言
    • SCL: 会话控制语言

Entity-Relationship Model

ER 模型,全称为实体关系模型(Entity-Relationship Model),由美籍华裔计算机科学家陈品山先生提出, 是概念数据模型的高层描述方式,如下图所示。

  • 实体 - 矩形框
  • 属性 - 椭圆框
  • 关系 - 菱形框
  • 重数 - 1:1(一对一) / 1:N(一对多) / M:N(多对多)

实际项目开发中,我们可以利用数据库建模工具(如: Lucidchart)来绘制概念数据模型,然后再设置好目标数据库系统,将概念模型转换成物理模型(如下图所示),最终生成创建二维表的 SQL(很多工具都 可以根据我们设计的物理模型图以及设定的目标数据库来导出 SQL 或直接生成数据表)。

关系数据库产品

  • Oracle - 目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理的功能。在 Oracle 最新的 12c 版本中,还引入了多承租方架构,使用该架构可轻松部署和管理数据库 云。
  • DB2 - IBM 公司开发的、主要运行于 Unix(包括 IBM 自家的 AIX)、Linux、以及 Windows 服务器版 等系统的关系数据库产品。DB2 历史悠久且被认为是最早使用 SQL 的数据库产品,它拥有较为强大的商业智能功能。
  • SQL Server - 由 Microsoft 开发和推广的关系型数据库产品,最初适用于中小企业的数据管理,但是近 年来它的应用范围有所扩展,部分大企业甚至是跨国公司也开始基于它来构建自己的数据管理系统。
  • MySQL - MySQL 是开放源代码的,任何人都可以在 GPL(General Public License)的许可下下载并根据个性化的需要对其进行修改。MySQL 因为其速度、可靠性和适应性而备受关注。
  • PostgreSQL - 在 BSD 许可证下发行的开放源代码的关系数据库产品。

MySQL

History

Monty Widenius

MySQL 最早是由瑞典的 MySQL AB 公司开发的一个开源的关系数据库管理系统,该公司于 2008 年被 Sun 收购。在 2009 年,Oracle 公司收购 Sun,因此 MySQL 目前 也是 Oracle 旗下产品。

MySQL 在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用于中小型网站开发。随着 MySQL 的不断成熟,它也逐渐被应用于更多大规模网站和应用,比如维基百科、Google、Facebook、淘宝网等网站都使用了 MySQL 来提供数据持久化服务。

Oracle 公司收购 Sun 后,大幅调涨 MySQL 商业版的售价,且 Oracle 公司不再支持另一个自由软件项目 OpenSolaris 的发展,因此导致自由软件社区对于 Oracle 是否还会持续支持 MySQL 社区版(MySQL 的各个发行版本中唯一免费的版本)有所担忧。

2009 年,MySQL 的创始人 Monty Widenius 以 MySQL 为基础,创建了 MariaDB(以他女儿的名字命名的数据库)分支。有许多原来使用 MySQL 数据库的公司(例如:维基百科)已经陆续完成了从 MySQL 数据库到 MariaDB 数据库的迁移。

tip

The official way to pronounce MySQL is My Ess Que Ell, not My Sequel. However, you can pronounce it whatever you like, who cares?

Features

MySQL is becoming so popular because of many good reasons:

  • MySQL supports large databases, up to 50 million rows or more in a table. The default file size limit for a table is 4GB, but you can increase this (if your operating system can handle it) to a theoretical limit of 8TB.
  • MySQL is customizable. The open-source GPL license allows programmers to modify the MySQL software to fit their own specific environments.

Reference

  1. What is SQL? by tutorialsteacher
  2. MySQL - Introduction by tutorialspoint
  3. What Is MySQL by mysqltutorial