404 Not Found

404 Not Found


nginx

SQL简介

SQL简介

想象你走进一家大型图书馆,想借一本特定的书。你需要和图书管理员沟通——告诉她书名、作者或者分类号,她就能帮你找到目标。SQL(Structured Query Language,结构化查询语言)就是你和数据库"管理员"之间的通用语言。无论数据库里存了几百万条数据,只要你会用SQL,就能精确地查询、添加、修改或删除你想要的信息。

1. 核心概念

什么是SQL?

SQL是一种专门用来与关系数据库(Relational Database)沟通的标准语言。它诞生于1970年代,由IBM的研究员提出,如今已经成为全球最广泛使用的数据库查询语言。

为什么学SQL?

关系数据库核心概念

关系数据库用表(Table)来组织数据,就像Excel表格一样直观:

概念 说明 类比
表(Table) 存储数据的集合 Excel中的一个工作表
行(Row) 一条具体的数据记录 Excel中的一行
列(Column) 数据的某个属性/字段 Excel中的一列
主键(Primary Key) 唯一标识每一行的列 身份证号码

举例来说,一个employees(员工)表:

id name department salary
1 张三 技术部 15000
2 李四 市场部 12000

SQL vs NoSQL

对比项 SQL(关系型) NoSQL(非关系型)
数据结构 表(行和列) 文档、键值对、图等
模式 固定模式(Schema) 灵活/无模式
事务支持 强一致性(ACID) 最终一致性
扩展方式 垂直扩展 水平扩展
典型场景 银行、电商订单 日志、社交数据
代表产品 MySQL、PostgreSQL MongoDB、Redis
💡 选择建议:大多数业务场景(如电商、金融、管理系统)用SQL数据库就足够了。只有在数据结构极其灵活或需要超大规模水平扩展时,才考虑NoSQL。

主流数据库对比

数据库 特点 适用场景
MySQL 开源、生态成熟、性能优秀 Web应用、中小型项目
PostgreSQL 功能最强、支持JSON、扩展性好 复杂查询、地理数据、大型项目
SQLite 轻量级、无需服务器、单文件存储 移动端、嵌入式、本地测试
SQL Server 微软出品、与.NET集成好 企业级应用、Windows生态

2. 基本语法/用法

SQL语法基础

SQL语句以分号;结尾,关键字不区分大小写(但建议大写以提高可读性)。

SQL
SELECT name, salary FROM employees WHERE salary > 10000;

上面这条语句的含义:从employees表中,查询工资超过10000的员工的namesalary

SQL命令分类

SQL命令按功能分为四大类:

分类 全称 用途 常用命令
DDL Data Definition Language 定义数据库结构 CREATEALTERDROP
DML Data Manipulation Language 操作数据(增删改查) SELECTINSERTUPDATEDELETE
DCL Data Control Language 权限控制 GRANTREVOKE
TCL Transaction Control Language 事务管理 COMMITROLLBACK
💡 提示:初学者最常接触的是DDL和DML。DDL用来"建表",DML用来"操作数据"。本教程的重点也在这两部分。

💡 提示:SQL语句中的关键字(如SELECTFROMWHERE)是保留字,不能用作表名或列名。

示例:查询所有数据(难度⭐)

最基础的查询——获取表中所有数据:

SQL
-- 查询所有员工信息
SELECT * FROM employees;
▶ 试一试

执行结果示例:

TEXT
id  name  department_id  salary    hire_date
1   张三  1              15000.00  2023-01-15
2   李四  2              12000.00  2023-03-20
3   王五  1              18000.00  2022-06-01

*表示"所有列"。在生产环境中建议明确写出列名,避免返回不必要的数据。

示例:创建表并插入数据(难度⭐)

使用DDL创建一张简单的表,然后用DML插入数据:

SQL
-- 创建学生表
CREATE TABLE students (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER,
    grade TEXT
);

-- 插入两条数据
INSERT INTO students (name, age, grade) VALUES ('小明', 18, '高三');
INSERT INTO students (name, age, grade) VALUES ('小红', 17, '高二');

-- 查询验证
SELECT * FROM students;
▶ 试一试

执行结果:

TEXT
id  name  age  grade
1   小明  18   高三
2   小红  17   高二

3. 常见应用场景

场景一:电商网站数据管理

一个电商平台需要管理商品、用户、订单等数据。SQL可以轻松完成:

SQL
-- 查询库存不足的商品
SELECT name, stock FROM products WHERE stock < 10;

-- 统计本月订单总额
SELECT SUM(quantity * price) AS total_revenue
FROM orders
JOIN products ON orders.product_id = products.id
WHERE order_date >= '2026-06-01';

场景二:员工管理系统

企业HR系统需要管理员工信息、部门、薪资等:

SQL
-- 查询各部门平均薪资
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;

-- 查询2023年入职的员工
SELECT name, hire_date FROM employees
WHERE hire_date BETWEEN '2023-01-01' AND '2023-12-31';

❓ 常见问题

Q:SQL难学吗? A: 不难。SQL语法接近英语,核心命令只有几个(SELECT、INSERT、UPDATE、DELETE),掌握基本用法只需要几天时间。

Q:需要先安装数据库才能学吗? A: 推荐先用SQLite入门,它不需要安装服务器,只需要一个文件即可运行。本教程第02课会教你如何搭建环境。

Q:SQL和MySQL有什么区别? A: SQL是一种语言标准,MySQL是使用SQL语言的具体数据库产品。就像"英语"和"美国人"的关系一样。

Q:学SQL能找到什么工作? A: 后端开发工程师、数据分析师、数据工程师、BI工程师、DBA(数据库管理员)等岗位都离不开SQL。

📖 小节

📝 作业

作业1(⭐):用自己的话解释什么是主键(Primary Key),为什么每张表都需要主键?

作业2(⭐⭐):假设你要设计一张"图书"表(books),包含书名、作者、价格、出版日期,请写出CREATE TABLE语句。

作业3(⭐⭐⭐):对比SQL和NoSQL,列出各自3个优点和3个缺点,并说明什么场景下应该选择哪种数据库。

统一示例数据库

以下是后面27课会用到的数据,先有个印象,第02课装好环境后可以复制执行:

SQL
-- 部门表
CREATE TABLE departments (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    location TEXT
);

-- 员工表
CREATE TABLE employees (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    department_id INTEGER,
    salary DECIMAL(10,2),
    hire_date DATE,
    FOREIGN KEY (department_id) REFERENCES departments(id)
);

-- 产品表
CREATE TABLE products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    category TEXT,
    price DECIMAL(10,2),
    stock INTEGER DEFAULT 0
);

-- 订单表
CREATE TABLE orders (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    customer_name TEXT NOT NULL,
    product_id INTEGER,
    quantity INTEGER,
    order_date DATE,
    FOREIGN KEY (product_id) REFERENCES products(id)
);
💡 提示:这四张表构成了一个小型"企业数据库",涵盖了部门、员工、产品和订单信息。后续课程的所有示例都将基于这些表。

下一课

👉 02 - 环境搭建:安装数据库工具,配置学习环境,运行你的第一条SQL语句!

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏