SQL基础教程
SQL基础教程
目录
- 简介
- 创建数据库和表
2.1 创建数据库
2.2 创建表 - 使用SELECT语句查询数据
3.1 基本SELECT语句
3.2 使用WHERE子句 - 表的连接操作
4.1 INNER JOIN
4.2 LEFT JOIN
4.3 RIGHT JOIN - 修改数据:INSERT、UPDATE、DELETE
5.1 INSERT语句
5.2 UPDATE语句
5.3 DELETE语句 - 实践练习
- 总结
1. 简介
本教程专为没有SQL基础的初学者设计。我们将涵盖SQL操作的基础知识,包括创建数据库和表、查询数据、连接表以及修改数据。每个部分都包含解释、示例代码和练习题。
2. 创建数据库和表
2.1 创建数据库
数据库是用于存储和管理数据的容器。在开始处理数据之前,我们需要先创建一个数据库。
语法:
CREATE DATABASE 数据库名称;
示例:
CREATE DATABASE my_database;
练习:
创建一个名为student_db
的数据库。
2.2 创建表
表是数据库中的基本存储结构。它们由具有指定数据类型的列(字段)组成。
语法:
CREATE TABLE 表名 (
列1 数据类型,
列2 数据类型,
列3 数据类型,
...
);
示例:
USE my_database;
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
major VARCHAR(50)
);
练习:
在student_db
数据库中创建一个名为courses
的表,包含以下列:
course_id
:整数,主键,自动递增course_name
:VARCHAR(50),非空credits
:整数
3. 使用SELECT语句查询数据
3.1 基本SELECT语句
SELECT语句用于从一个或多个表中检索数据。
语法:
SELECT 列1, 列2, ...
FROM 表名;
示例:
-- 查询students表中的所有数据
SELECT * FROM students;
-- 只查询students表中的name和age列
SELECT name, age FROM students;
练习:
编写一个查询,从courses
表中选择所有课程名称和学分。
3.2 使用WHERE子句
WHERE子句用于根据指定条件筛选记录。
语法:
SELECT 列1, 列2, ...
FROM 表名
WHERE 条件;
示例:
-- 查询年龄大于20岁的学生
SELECT * FROM students WHERE age > 20;
-- 查询主修计算机科学的学生
SELECT * FROM students WHERE major = '计算机科学';
练习:
编写一个查询,选择所有3学分或以上的课程。
4. 表的连接操作
4.1 INNER JOIN
INNER JOIN返回两个表中具有匹配值的记录。
语法:
SELECT 列
FROM 表1
INNER JOIN 表2
ON 表1.列 = 表2.列;
示例:
SELECT students.name, courses.course_name
FROM students
INNER JOIN enrollments ON students.id = enrollments.student_id
INNER JOIN courses ON enrollments.course_id = courses.course_id;
练习:
编写一个查询,显示每个学生的姓名和他们选修的课程名称。
4.2 LEFT JOIN
LEFT JOIN返回左表中的所有记录,即使右表中没有匹配项。
语法:
SELECT 列
FROM 表1
LEFT JOIN 表2
ON 表1.列 = 表2.列;
示例:
SELECT students.name, courses.course_name
FROM students
LEFT JOIN enrollments ON students.id = enrollments.student_id
LEFT JOIN courses ON enrollments.course_id = courses.course_id;
练习:
编写一个查询,显示所有学生的姓名和他们选修的课程(如果有)。
4.3 RIGHT JOIN
RIGHT JOIN返回右表中的所有记录,即使左表中没有匹配项。
语法:
SELECT 列
FROM 表1
RIGHT JOIN 表2
ON 表1.列 = 表2.列;
示例:
SELECT students.name, courses.course_name
FROM students
RIGHT JOIN enrollments ON students.id = enrollments.student_id
RIGHT JOIN courses ON enrollments.course_id = courses.course_id;
练习:
编写一个查询,显示所有课程和选修这些课程的学生姓名(如果有)。
5. 修改数据:INSERT、UPDATE、DELETE
5.1 INSERT语句
INSERT语句用于向表中插入新记录。
语法:
INSERT INTO 表名 (列1, 列2, 列3, ...)
VALUES (值1, 值2, 值3, ...);
示例:
INSERT INTO students (name, age, major)
VALUES ('张三', 20, '计算机科学');
练习:
向courses
表中插入一门新课程。
5.2 UPDATE语句
UPDATE语句用于修改表中的现有记录。
语法:
UPDATE 表名
SET 列1 = 值1, 列2 = 值2, ...
WHERE 条件;
示例:
UPDATE students
SET major = '物理学'
WHERE name = '张三';
练习:
更新courses
表中某门课程的学分。
5.3 DELETE语句
DELETE语句用于删除表中的记录。
语法:
DELETE FROM 表名
WHERE 条件;
示例:
DELETE FROM students
WHERE age < 18;
练习:
从courses
表中删除学分少于2的课程。
6. 实践练习
- 创建一个名为
library_db
的数据库。 - 在
library_db
中创建一个books
表,包含以下列:book_id
:整数,主键,自动递增title
:VARCHAR(100),非空author
:VARCHAR(50)published_year
:整数
- 向
books
表中插入至少5本书的信息。 - 编写一个查询,选择所有2000年之后出版的书籍。
- 更新某本书的标题。
- 删除某个特定作者的所有书籍。
7. 总结
通过本教程,您已经学习了SQL的基本操作,包括创建数据库和表、查询数据、连接表以及修改数据。这些基础知识将帮助您开始使用SQL进行数据管理和分析。
记住,实践是掌握SQL的关键。尝试在实际的数据库环境中运行这些命令,并创建自己的查询来加深理解。随着您的技能提升,您可以探索更高级的SQL概念和技术。