SQL基础教程

SQL基础教程

目录

  1. 简介
  2. 创建数据库和表
    2.1 创建数据库
    2.2 创建表
  3. 使用SELECT语句查询数据
    3.1 基本SELECT语句
    3.2 使用WHERE子句
  4. 表的连接操作
    4.1 [INNER JOIN](#INNER JOIN)
    4.2 [LEFT JOIN](#LEFT JOIN)
    4.3 [RIGHT JOIN](#RIGHT JOIN)
  5. 修改数据:INSERT、UPDATE、DELETE
    5.1 INSERT语句
    5.2 UPDATE语句
    5.3 DELETE语句
  6. 实践练习
  7. 总结

1. 简介

本教程专为没有SQL基础的初学者设计。我们将涵盖SQL操作的基础知识,包括创建数据库和表、查询数据、连接表以及修改数据。每个部分都包含解释、示例代码和练习题。

2. 创建数据库和表

2.1 创建数据库

数据库是用于存储和管理数据的容器。在开始处理数据之前,我们需要先创建一个数据库。

语法:

sql 复制代码
CREATE DATABASE 数据库名称;

示例:

sql 复制代码
CREATE DATABASE my_database;

练习:

创建一个名为student_db的数据库。

2.2 创建表

表是数据库中的基本存储结构。它们由具有指定数据类型的列(字段)组成。

语法:

sql 复制代码
CREATE TABLE 表名 (
    列1 数据类型,
    列2 数据类型,
    列3 数据类型,
    ...
);

示例:

sql 复制代码
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语句用于从一个或多个表中检索数据。

语法:

sql 复制代码
SELECT 列1, 列2, ...
FROM 表名;

示例:

sql 复制代码
-- 查询students表中的所有数据
SELECT * FROM students;

-- 只查询students表中的name和age列
SELECT name, age FROM students;

练习:

编写一个查询,从courses表中选择所有课程名称和学分。

3.2 使用WHERE子句

WHERE子句用于根据指定条件筛选记录。

语法:

sql 复制代码
SELECT 列1, 列2, ...
FROM 表名
WHERE 条件;

示例:

sql 复制代码
-- 查询年龄大于20岁的学生
SELECT * FROM students WHERE age > 20;

-- 查询主修计算机科学的学生
SELECT * FROM students WHERE major = '计算机科学';

练习:

编写一个查询,选择所有3学分或以上的课程。

4. 表的连接操作

4.1 INNER JOIN

INNER JOIN返回两个表中具有匹配值的记录。

语法:

sql 复制代码
SELECT 列
FROM 表1
INNER JOIN 表2
ON 表1.列 = 表2.列;

示例:

sql 复制代码
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返回左表中的所有记录,即使右表中没有匹配项。

语法:

sql 复制代码
SELECT 列
FROM 表1
LEFT JOIN 表2
ON 表1.列 = 表2.列;

示例:

sql 复制代码
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返回右表中的所有记录,即使左表中没有匹配项。

语法:

sql 复制代码
SELECT 列
FROM 表1
RIGHT JOIN 表2
ON 表1.列 = 表2.列;

示例:

sql 复制代码
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语句用于向表中插入新记录。

语法:

sql 复制代码
INSERT INTO 表名 (列1, 列2, 列3, ...)
VALUES (值1, 值2, 值3, ...);

示例:

sql 复制代码
INSERT INTO students (name, age, major)
VALUES ('张三', 20, '计算机科学');

练习:

courses表中插入一门新课程。

5.2 UPDATE语句

UPDATE语句用于修改表中的现有记录。

语法:

sql 复制代码
UPDATE 表名
SET 列1 = 值1, 列2 = 值2, ...
WHERE 条件;

示例:

sql 复制代码
UPDATE students
SET major = '物理学'
WHERE name = '张三';

练习:

更新courses表中某门课程的学分。

5.3 DELETE语句

DELETE语句用于删除表中的记录。

语法:

sql 复制代码
DELETE FROM 表名
WHERE 条件;

示例:

sql 复制代码
DELETE FROM students
WHERE age < 18;

练习:

courses表中删除学分少于2的课程。

6. 实践练习

  1. 创建一个名为library_db的数据库。
  2. library_db中创建一个books表,包含以下列:
    • book_id:整数,主键,自动递增
    • title:VARCHAR(100),非空
    • author:VARCHAR(50)
    • published_year:整数
  3. books表中插入至少5本书的信息。
  4. 编写一个查询,选择所有2000年之后出版的书籍。
  5. 更新某本书的标题。
  6. 删除某个特定作者的所有书籍。

7. 总结

通过本教程,您已经学习了SQL的基本操作,包括创建数据库和表、查询数据、连接表以及修改数据。这些基础知识将帮助您开始使用SQL进行数据管理和分析。

记住,实践是掌握SQL的关键。尝试在实际的数据库环境中运行这些命令,并创建自己的查询来加深理解。随着您的技能提升,您可以探索更高级的SQL概念和技术。

相关推荐
一只爱撸猫的程序猿31 分钟前
构建一个简单的智能文档问答系统实例
数据库·spring boot·aigc
nanzhuhe1 小时前
sql中group by使用场景
数据库·sql·数据挖掘
消失在人海中1 小时前
oracle sql 语句 优化方法
数据库·sql·oracle
Clang's Blog1 小时前
一键搭建 WordPress + MySQL + phpMyAdmin 环境(支持 PHP 版本选择 & 自定义配置)
数据库·mysql·php·wordpr
zzc9211 小时前
MATLAB仿真生成无线通信网络拓扑推理数据集
开发语言·网络·数据库·人工智能·python·深度学习·matlab
未来之窗软件服务1 小时前
JAVASCRIPT 前端数据库-V1--仙盟数据库架构-—-—仙盟创梦IDE
数据库·数据库架构·仙盟创梦ide·东方仙盟数据库
LjQ20402 小时前
网络爬虫一课一得
开发语言·数据库·python·网络爬虫
烙印6012 小时前
MyBatis原理剖析(二)
java·数据库·mybatis
RestCloud2 小时前
如何通过ETLCloud实现跨系统数据同步?
数据库·数据仓库·mysql·etl·数据处理·数据同步·集成平台
你是狒狒吗2 小时前
TM中,return new TransactionManagerImpl(raf, fc);为什么返回是new了一个新的实例
java·开发语言·数据库