欢迎来到关系型数据库与结构化查询语言(SQL)的世界!

哈喽,未来的计算机科学家们!本章节将全面介绍 关系型数据库(Relational Databases)SQL(结构化查询语言,Structured Query Language)。别担心,名字听起来很复杂,其实 SQL 就是一套用来与关系型数据库进行交互和查询的标准语言。

关系型数据库与键(Keys)

关系型数据库 将数据存储在多个相关联的 表(Tables,亦称为关系 relations)中,以消除 数据冗余(Data redundancy,即重复数据)并维持 数据一致性(Data consistency)

表 (Table):保存关于单一实体(例如:学生 Students课程 Courses)的数据。
记录 (Record) 或称行 (Row):一条完整的数据条目,包含该实体的所有属性。
字段 (Field) 或称列 (Column):实体的特定属性(例如:StudentNameDateOfBirth)。
主键 (Primary Key):能唯一标识表中每一条记录的字段(或字段组合)。
外键 (Foreign Key):某个表中的字段,它链接到另一个表的主键,从而在两者之间建立关联。

数据库模式标记法 (Database Schema Notation)

在数据库设计中,表会使用标准标记法表示,其中主键会加上 下划线

Student(StudentID, StudentName, DateOfBirth, CourseID)
Course(CourseID, CourseTitle, TeacherName)

在此示例中,StudentIDStudent 的主键,CourseIDCourse 的主键,而 Student 内部的 CourseID 则作为 外键,将每位学生与其课程链接起来。

第一节:什么是 SQL 及其用途?

SQL(结构化查询语言)是一种声明式语言,用于创建、查询以及操作存储在关系型数据库管理系统(RDBMS)中的数据。

SQL 命令通常分为两大类:

1. 数据定义语言 (Data Definition Language, DDL)

DDL 命令用于定义或移除数据库结构,例如创建或删除表。

2. 数据操作语言 (Data Manipulation Language, DML)

DML 命令用于操作存储在这些结构 内部 的数据——包括查询、新增、修改和删除记录。

第二节:数据定义语言 (DDL) 命令

1. 创建表:CREATE TABLE

此命令用于创建一个新的表,包括设置其字段名称及数据类型(例如:INTEGERTEXT)。

CREATE TABLE Books (
    BookID INTEGER,
    Title TEXT,
    Author TEXT,
    PublicationYear INTEGER
);

2. 删除表:DROP TABLE

此命令会永久删除整个表以及其中存储的所有数据。

DROP TABLE Books;

第三节:查询数据 (DML)

1. 核心查询结构:SELECTFROM

SELECT 指定要检索的字段(列)。
FROM 指定从哪个(些)表中检索数据。
• 星号 (*) 作为通配符,代表选择所有字段。

SELECT StudentName, Email
FROM Students;

2. 筛选记录:WHERE

WHERE 子句使用比较运算符来筛选查询结果:=><>=<=,以及 <>(或 !=)。

条件中的文本常量必须用单引号括起来(例如:'London')。

SELECT *
FROM Students
WHERE Grade = 'A';

3. 逻辑运算符:ANDORNOT

多个搜索条件可以在 WHERE 子句中组合使用:

SELECT StudentName
FROM Students
WHERE Grade = 'A' AND City = 'London';

4. 排序记录:ORDER BY

ORDER BY 子句用于将输出结果按升序(ASC,默认)或降序(DESC)顺序进行排序。

SELECT StudentName, Grade
FROM Students
ORDER BY StudentName ASC;

5. 多表查询(合并两个表)

在考试题目中,查询可能需要从 最多两个表 中检索数据。若要合并表,请在 FROM 子句中列出两个表,并在 WHERE 子句中将一个表的主键与另一个表的外键进行匹配。

SELECT Student.StudentName, Course.CourseTitle
FROM Student, Course
WHERE Student.CourseID = Course.CourseID;

第四节:修改数据 (DML)

1. 新增记录:INSERT INTO

在现有的表中插入一条新记录。

INSERT INTO Books (BookID, Title, Author)
VALUES (101, 'The Great Adventure', 'A. N. Author');

2. 修改记录:UPDATE

修改现有的数据。使用 SET 来定义新值,并使用 WHERE 指定要更新哪些记录。

UPDATE Students
SET Grade = 'A*'
WHERE StudentID = 42;

警告: 如果遗漏了 WHERE 子句,将会更新表中的 每一条记录

3. 移除记录:DELETE FROM

根据特定条件从表中删除记录。

DELETE FROM Students
WHERE City = 'London';

警告: 如果遗漏了 WHERE 子句,将会移除所有记录,但表结构仍会保留。

重点总结清单:
SELECT ... FROM ... WHERE ... ORDER BY 用于查询(单表或跨两个表)。
INSERT INTO ... VALUES ... 用于新增行。
UPDATE ... SET ... WHERE ... 用于变更现有数据。
DELETE FROM ... WHERE ... 用于移除行。