SQL 入门教程
引言
结构化查询语言(SQL)是管理关系型数据库如MySQL、PostgreSQL、SQL Server和Oracle的重要工具。理解SQL能帮助用户有效地构建、操作和查询数据库。本教程旨在向初学者系统地介绍SQL的基础知识,涵盖从基础命令到更复杂的数据库管理技术。
第1章:了解SQL
SQL即结构化查询语言,用于与数据库通信。它是关系数据库管理系统的标准语言。
1.1 SQL基础
SQL让你可以执行查询、更新和管理数据库的任务。每条SQL命令都以分号(;)结束。
1.2 SQL的历史
SQL在1970年代初由IBM的Donald D. Chamberlin和Raymond F. Boyce开发。最初被称为SEQUEL(结构化英语查询语言)。
第2章:SQL语法和基础
2.1 创建数据库和表
- 创建数据库的基本命令:
CREATE DATABASE School; -- 创建名为School的数据库
- 创建表的基本命令:
CREATE TABLE Students (
StudentID INT PRIMARY KEY, -- 学生ID,主键,整数类型
Name VARCHAR(100), -- 学生名字,字符串类型,最大长度100
Age INT, -- 学生年龄,整数类型
Grade INT -- 学生年级,整数类型
); -- 创建名为Students的表,包含学生ID、名字、年龄和年级四个字段
2.2 数据查询和修改
- 查询数据:
SELECT Name, Age FROM Students WHERE Grade = 10;
-- 查询Students表中年级为10的所有学生的名字和年龄
- 更新数据:
UPDATE Students SET Grade = 11 WHERE Age = 15;
-- 更新Students表中年龄为15的学生的年级为11
- 删除记录:
DELETE FROM Students WHERE StudentID = 3;
-- 删除Students表中学生ID为3的记录
第3章:数据定义语言(DDL)
3.1 常用DDL命令
- 修改表结构:
ALTER TABLE Students ADD Email VARCHAR(255);
-- 在Students表中添加一个名为Email的字段,类型为字符串,最大长度255
- 删除表:
DROP TABLE Students;
-- 删除整个Students表
第4章:数据操作语言(DML)
- 插入数据:
INSERT INTO Students (StudentID, Name, Age, Grade) VALUES (1, 'Alice', 14, 9);
-- 在Students表中插入一个新记录,包含学生ID为1,名字为Alice,年龄为14岁,年级为9年级
第5章:高级SQL操作**
- 内连接操作:
SELECT Students.Name, Classes.ClassName
FROM Students
INNER JOIN Classes ON Students.ClassID = Classes.ClassID;
-- 通过内连接操作查询Students表和Classes表中的数据,
-- 返回学生的名字和对应的班级名称,连接条件是两个表中的ClassID字段相同
- 子查询操作:
SELECT Name FROM Students WHERE Age = (SELECT MAX(Age) FROM Students);
-- 查询Students表中最大年龄的学生名字
- 创建索引以加快查询速度:
CREATE INDEX idx_student_name ON Students (Name);
-- 在Students表的Name字段上创建索引,以加快基于名字的查询速度
第6章:实战练习
- 多表查询实例:
SELECT Students.Name, Teachers.TeacherName
FROM Students
JOIN Teachers ON Students.TeacherID = Teachers.TeacherCharacterID
WHERE Teachers.Subject = 'Math';
-- 查询所有数学老师的学生名字和对应的老师名字,
-- 连接条件是Students表中的TeacherID字段和Teachers表中的TeacherCharacterID字段相同