Hello SQL

写在前面

本教程所有代码均可在线执行测试,通过Lintcode学习平台即可在线学习、测试,并提供在线练习题方便练习,从而让你更高效、熟练得掌握SQL语句相关知识。

1. 什么是数据库

update 2021/03/10

(改成简洁版本,先验知识不要太多,任务驱动,学到哪儿再详解该部分知识)

在学习数据库之前,我们先需要简单的了解下什么是数据库。

数据库(Database)简单理解就是一个存储数据的仓库,为了方便数据的存储和管理,它能将数据按照特定的规律存储在磁盘上。

而通过数据库管理系统,我们可以有效地组织和管理存储在数据库中的数据。

如今数据库已经无处不在了。一个网站需要有数据库来存储网站信息;一个学校需要用数据库来存储学生和教师的信息;一个公司需要用数据库来存储员工和公司的资料。

以你正在使用的炼码(Lintcode)为例,Lintcode 是一个面向未来的学习编程技术网站,是为了让你终生学习的一款 All in One 在线学习平台。我们有大量的练习和正在开发中的项目,也有从事相关教程(Tutorial)研发的教师,以及正在开发中的课程。

根据以上信息

我们来设计一个简单的数据库 — Lintcode

用来存放我们 Lintcode 相关信息

在 Lintcode 数据库中,有两张表——课程表 courses 和 教师表 teachers

courses 表中存放着课程的信息 ,包括课程的名称(name)、学生数量(student_count)、开课日期(created)以及授课老师id(teacher_id)

teachers 表中存放着教师的信息,包括教师的姓名(name)、邮箱(email)、年龄(age)以及国籍(country)

以上表单命名参考 Lintcode数据表命名规范

演示数据库

课程表 courses.sql 👈点击下载

教师表 teachers 👈点击下载

以上的两个表就是我们的教师表和课程表的展现形式,与我们常见的 excel 表格别无二致。

下面我们对上述两个表格做些简单的介绍,方便大家后续课程的理解:

  • 数据库:数据库是一些关联表的集合。Lintcode 就是我们用来存放课程表 courses 和教师表 teachers 的数据库。

  • 数据表:表是数据的矩阵。课程表 courses 和 教师表 teachers 就是数据表,看起来像一个简单的 excel 表格。

  • 列:一列(数据元素)包含了相同类型的数据。例如教师表 teachers 中的姓名(name)就是一个列,这一列中的教师姓名都是用字符方式存储

  • 行:一行数据(可以元组,或记录)是一组相关的数据。例如教师表每一行都对应一位教师信息

此外,大家是否注意到,我们在教师表 teachers 和课程表 courses 中,有一个额外的列,叫作 id,这个列是什么作用呢?

这个名为 id 的列,是我们用来唯一标识每行数据的,称为主键。实际上,教师的姓名是不能唯一标识一条记录的(因为教师姓名可能会有相同),所以我们使用额外的一列来唯一标识每行。这个列我们一般取名为 id,即 identification 的缩写,也可以取别的名称。此外,需要注意的是,一个数据表只能有一个主键

此外,在教师表 courses 中,我们发现有一列数据 teacher_id 和教师表 teachers 中的 id 相关联,即每个 teacher_id 都指向教师表中的某一个教师记录,这种用于关联其它表某一列的列,我们称为外键(foreign key)。

2. SQL 是什么

SQL(Structured Query Language)中文全称为”结构化查询语句“,在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。

SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

简单理解就是对我们数据库和数据库中的表进行”增删改查“操作的编程语言。

3. SQL 能做什么?

SQL 具体能完成下面功能:

  • SQL 面向数据库执行查询

  • SQL 可从数据库取回数据

  • SQL 可在数据库中插入新的记录

  • SQL 可更新数据库中的数据

  • SQL 可从数据库删除记录

  • SQL 可创建新数据库

  • SQL 可在数据库中创建新表

  • SQL 可在数据库中创建存储过程

  • SQL 可在数据库中创建视图

  • SQL 可以设置表、存储过程和视图的权限

总结起来,其实就“增删改查”四大功能,但是实际上我们平时用到最多的是查询,因此本教程在涵盖“增删改”的基础上,重点将通过练习的方式,帮助大家融会贯通从基础到困难,共10个难度等级的SQL常见知识点和面试题。

4. 此外

虽然 SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,但是仍然存在着多种不同版本的 SQL 语言。

然而,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的命令(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。

5. 关于本教程

商业关系型数据库已经存在几十年,几种最成熟和流行的商业产品包括: 甲骨文公司的Oracle Database、Mircrosoft公司的SQL Server等。这些数据库服务器的功能十分类似,而且都遵循了最新的ANSI SQL标准。而除了商业级数据库,开源社区也为创建商业数据库在努力,比如拥有大量用户的MySQL ,该服务器软件的下载和安装都非常简单。

本教程将演示如何使用MySQL编写SQL语句,并且也会介绍其他常用数据库的语法,以便无须修改或者少量修改就能够在这些平台运行。

6. 安装教程

如果你希望在本地演示数据库,下面是不同平台的mysql安装教程可供参考。在安装完mysql后,可以通过下载我们的sql文件来在本地创建数据库,并使用source的方式在本地创建coursesteachers两个表

courses.sql

teachers.sql

MAC

https://zhuanlan.zhihu.com/p/129366085

Win

https://zhuanlan.zhihu.com/p/37152572

Linux

https://zhuanlan.zhihu.com/p/37152572

Last updated

Was this helpful?