MySQL 学习第一天:从数据库创建到 SQL 基础增删改查

前言

今天正式开始学习 MySQL,主要接触了数据库与数据表的创建、SQL 基本语法、数据的增删改查、条件筛选、排序、聚合函数以及 SQL 文件的保存与执行。

对于之前主要学习 JavaScript、React、Node.js 的我来说,MySQL 是后端开发中重要的一环。前端负责展示数据,Node.js 可以负责处理业务逻辑,而 MySQL 则可以用来持久化存储和管理数据。

本文记录第一天学习的核心知识点。

一、MySQL 和 SQL 是什么?

MySQL 是一种关系型数据库管理系统,而 SQL(Structured Query Language)是操作关系型数据库的语言。

可以简单理解为:

  • MySQL:负责存储、管理数据。

  • SQL:负责创建、查询、修改和删除数据。

例如,我们开发一个商城系统,需要保存商品名称、价格、库存等信息,就可以使用 MySQL。

MySQL 通过表(Table)组织数据,每张表由行和列组成。

id name price stock
1 手机 2999 100
2 键盘 199 50
3 鼠标 99 80

其中,一行代表一条商品记录,一列代表一个数据字段。

二、创建数据库和数据表

1. 创建数据库

使用 CREATE DATABASE 创建数据库:

复制代码
CREATE DATABASE shop_db;

其中:

  • CREATE DATABASE:创建数据库的 SQL 命令。

  • shop_db:数据库名称。

创建后,通过 USE 选择当前要操作的数据库:

复制代码
USE shop_db;

2. 创建数据表

使用 CREATE TABLE 创建商品表:

复制代码
CREATE TABLE products (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    price DECIMAL(10, 2),
    stock INT
);

这段代码中涉及几个常见的数据类型和约束。

语法 作用
INT 整数类型
VARCHAR(50) 最多存储 50 个字符的字符串
DECIMAL(10,2) 定点小数,总精度为 10 位,其中小数占 2 位
PRIMARY KEY 主键,用于唯一标识一条记录
AUTO_INCREMENT 自动递增
NOT NULL 字段不能为 NULL

例如,id 设置了主键和自增后,插入商品时就不需要手动填写 ID。

三、SQL 基础增删改查(CRUD)

CRUD 是数据库最基本的四种操作:

  • Create:新增数据。

  • Read:查询数据。

  • Update:更新数据。

  • Delete:删除数据。

1. INSERT:插入数据

复制代码
INSERT INTO products (name, price, stock)
VALUES ('手机', 2999, 100);

这里:

  • INSERT INTO:向指定表插入数据。

  • (name, price, stock):需要填写的字段。

  • VALUES:对应字段的值。

一次插入多条数据:

复制代码
INSERT INTO products (name, price, stock)
VALUES
('键盘', 199, 50),
('鼠标', 99, 80);

2. SELECT:查询数据

查询表中的所有字段:

复制代码
SELECT * FROM products;

其中:

  • SELECT:查询数据。

  • *:表示所有字段。

  • FROM:指定要查询的数据表。

如果只需要查询名称和价格:

复制代码
SELECT name, price FROM products;

实际开发中,通常建议按需要选择字段,避免无意义地查询所有列。

3. UPDATE:修改数据

例如,将 ID 为 1 的商品价格修改为 2599:

复制代码
UPDATE products
SET price = 2599
WHERE id = 1;

其中:

  • UPDATE:指定要修改的数据表。

  • SET:设置新的字段值。

  • WHERE:指定修改条件。

注意:如果不加 WHERE,可能会修改整张表中的所有记录。

4. DELETE:删除数据

删除 ID 为 3 的商品:

复制代码
DELETE FROM products
WHERE id = 3;

这里 WHERE id = 3 指定了要删除哪条记录。

如果省略 WHERE:

复制代码
DELETE FROM products;

则会删除表中所有记录,因此操作时需要格外小心。

四、WHERE 条件筛选

实际开发中,我们通常不需要获取整张表的数据,而是根据条件筛选。

例如,查询价格大于 100 的商品:

复制代码
SELECT * FROM products
WHERE price > 100;

常见比较运算符:

运算符 含义
= 等于
!= 或 <> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

AND 和 OR

当存在多个筛选条件时,可以使用 AND 和 OR。

AND:多个条件必须同时满足。

复制代码
SELECT * FROM products
WHERE price > 100 AND stock > 50;

表示查询价格大于 100,并且库存大于 50 的商品。

OR:满足任意一个条件即可。

复制代码
SELECT * FROM products
WHERE price > 100 OR stock > 50;

表示价格大于 100,或者库存大于 50 的商品。

需要注意,SQL 中 AND 的优先级高于 OR。复杂条件建议使用括号明确逻辑关系。

五、ORDER BY 数据排序

查询数据时,经常需要按照价格、销量或时间排序。

使用 ORDER BY:

复制代码
SELECT * FROM products
ORDER BY price ASC;

其中:

  • ORDER BY:指定排序字段。

  • ASC:升序,从小到大。

  • DESC:降序,从大到小。

例如,将商品按照价格从高到低排序:

复制代码
SELECT * FROM products
ORDER BY price DESC;

还可以按多个字段排序:

复制代码
SELECT * FROM products
ORDER BY price DESC, id ASC;

表示先按照价格降序排列,价格相同时,再按照 ID 升序排列。

六、COUNT() 函数与 AS 关键字

1. COUNT():统计数量

COUNT() 是 SQL 中常见的聚合函数,用于统计记录数量。

例如,统计商品表一共有多少条记录:

复制代码
SELECT COUNT(*) FROM products;

还可以配合 WHERE 使用:

复制代码
SELECT COUNT(*) FROM products
WHERE price > 100;

表示统计价格大于 100 的商品数量。

注意:COUNT(*) 统计符合条件的行数,而 COUNT(字段名) 只统计该字段不为 NULL 的记录数。

2. AS:设置别名

有时 SQL 查询结果中的字段名称不够直观,可以使用 AS 设置别名:

复制代码
SELECT COUNT(*) AS total
FROM products;

查询结果中的列名就会显示为 total。

普通字段也可以使用别名:

复制代码
SELECT name AS 商品名称,
       price AS 商品价格
FROM products;

AS 只是为查询结果指定别名,并不会修改数据表原来的字段名称。

七、SQL 文件的保存与打开

在 MySQL Workbench 等数据库工具中,我们可以把编写的 SQL 语句保存为 .sql 文件。

例如:

复制代码
mysql-study/
├── create_table.sql
├── insert_data.sql
└── query.sql

.sql 文件本质上是保存 SQL 语句的文本文件,例如:

复制代码
USE shop_db;

SELECT * FROM products;

SELECT COUNT(*) AS total
FROM products;

以后打开这个文件,就可以查看、修改和重新执行这些语句。

需要注意:

保存 .sql****文件不等于保存数据库本身,也不代表其中的 SQL 已经执行。

SQL 文件保存的是操作指令,数据库中的实际数据则由 MySQL 管理。只有执行 SQL 语句,才会对数据库产生相应影响。

八、第一天学习总结

经过第一天的学习,我对 MySQL 的基本操作有了初步认识,也理解了数据库与前后端之间的关系。

例如,在一个 React + Express + MySQL 项目中:

复制代码
React 前端
    ↓ 发送 HTTP 请求
Express 后端
    ↓ 执行 SQL
MySQL 数据库
    ↓ 返回查询结果
Express 后端
    ↓ 返回 JSON
React 页面展示数据

其中,React 负责页面交互,Express 负责处理接口和业务逻辑,MySQL 负责数据存储。

今天最需要掌握的 SQL 语句有:

SQL 语句 主要作用
CREATE DATABASE 创建数据库
CREATE TABLE 创建数据表
INSERT INTO 新增数据
SELECT 查询数据
UPDATE 更新数据
DELETE 删除数据
WHERE 条件筛选
AND / OR 组合查询条件
ORDER BY 查询结果排序
COUNT() 统计数据数量
AS 设置查询结果别名

总结:MySQL 第一天的核心就是理解数据库和表的关系,掌握 SQL 的增删改查、条件筛选、排序和聚合统计。

这些知识是后续学习多表查询、数据库设计、索引、事务,以及使用 Node.js 操作 MySQL 的基础。

下一步计划继续学习 SQL 进阶查询,并尝试通过 Express 编写接口,将前端页面与 MySQL 数据库真正连接起来。

相关推荐
shunwahma1 小时前
MySQL 替代选型,为什么首选 OceanBase 集中式?
数据库·mysql·oceanbase
n 55!w !1081 小时前
MySQL数据库笔记整理1
数据库·笔记·mysql
惊讶的猫2 小时前
慢查询和排查方式(查询日志 + 分析工具 + EXPLAIN)
mysql·1024程序员节
John_Hui2 小时前
MySQL基础知识
数据库·sql·mysql·1024程序员节
爱吃火鸡面呀3 小时前
MySQL、ClickHouse、Doris、Hive、Spark SQL、Flink SQL 选型对比:优点、缺点与面试话术
hive·mysql·clickhouse
程序员塔塔喵3 小时前
【MySQL篇|第八篇】索引底层实现
数据库·mysql·adb·索引
sunburn-5 小时前
数据库增删改查:从 SQL 基础到实践要点
java·数据库·mysql
2401_8967321313 小时前
MySQL小笔记
mysql
程序员塔塔喵15 小时前
【MySQL篇|第七篇】MySQL事务
数据库·mysql·mysql事务