欢迎来到关系型数据库与结构化查询语言(SQL)的世界!
哈喽,未来的计算机科学家们!本章节将全面介绍 关系型数据库(Relational Databases) 与 SQL(结构化查询语言,Structured Query Language)。别担心,名字听起来很复杂,其实 SQL 就是一套用来与关系型数据库进行交互和查询的标准语言。
关系型数据库与键(Keys)
关系型数据库 将数据存储在多个相关联的 表(Tables,亦称为关系 relations)中,以消除 数据冗余(Data redundancy,即重复数据)并维持 数据一致性(Data consistency)。
• 表 (Table):保存关于单一实体(例如:学生 Students、课程 Courses)的数据。
• 记录 (Record) 或称行 (Row):一条完整的数据条目,包含该实体的所有属性。
• 字段 (Field) 或称列 (Column):实体的特定属性(例如:StudentName、DateOfBirth)。
• 主键 (Primary Key):能唯一标识表中每一条记录的字段(或字段组合)。
• 外键 (Foreign Key):某个表中的字段,它链接到另一个表的主键,从而在两者之间建立关联。
数据库模式标记法 (Database Schema Notation)
在数据库设计中,表会使用标准标记法表示,其中主键会加上 下划线:
Student(StudentID, StudentName, DateOfBirth, CourseID)
Course(CourseID, CourseTitle, TeacherName)
在此示例中,StudentID 是 Student 的主键,CourseID 是 Course 的主键,而 Student 内部的 CourseID 则作为 外键,将每位学生与其课程链接起来。
第一节:什么是 SQL 及其用途?
SQL(结构化查询语言)是一种声明式语言,用于创建、查询以及操作存储在关系型数据库管理系统(RDBMS)中的数据。
SQL 命令通常分为两大类:
1. 数据定义语言 (Data Definition Language, DDL)
DDL 命令用于定义或移除数据库结构,例如创建或删除表。
2. 数据操作语言 (Data Manipulation Language, DML)
DML 命令用于操作存储在这些结构 内部 的数据——包括查询、新增、修改和删除记录。
第二节:数据定义语言 (DDL) 命令
1. 创建表:CREATE TABLE
此命令用于创建一个新的表,包括设置其字段名称及数据类型(例如:INTEGER 或 TEXT)。
CREATE TABLE Books (
BookID INTEGER,
Title TEXT,
Author TEXT,
PublicationYear INTEGER
);
2. 删除表:DROP TABLE
此命令会永久删除整个表以及其中存储的所有数据。
DROP TABLE Books;
第三节:查询数据 (DML)
1. 核心查询结构:SELECT 与 FROM
• SELECT 指定要检索的字段(列)。
• FROM 指定从哪个(些)表中检索数据。
• 星号 (*) 作为通配符,代表选择所有字段。
SELECT StudentName, Email FROM Students;
2. 筛选记录:WHERE
WHERE 子句使用比较运算符来筛选查询结果:=、>、<、>=、<=,以及 <>(或 !=)。
条件中的文本常量必须用单引号括起来(例如:'London')。
SELECT * FROM Students WHERE Grade = 'A';
3. 逻辑运算符:AND、OR、NOT
多个搜索条件可以在 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 ... 用于移除行。