MySQL 9作为最新的版本,引入了一些新特性,不过对于初学者来说,核心的SQL操作和数据库设计思想依然是一脉相承的。这篇教程旨在帮你快速建立对MySQL 9的整体认识,并掌握最基本的操作。
MySQL 是目前世界上最受欢迎的开源关系型数据库之一。因其体积小、速度快、总体拥有成本低,被大量中小型企业和互联网公司采用 。2024年,MySQL 9 正式推出,带来了性能优化和细微的功能增强 。本教程将基于最新的 MySQL 9 版本,带你从零开始,完成安装、连接、建库、建表以及基本的增删改查操作。
在开始学习 SQL 语句之前,我们需要先在电脑上安装 MySQL 并成功连接上它。
你可以根据你的操作系统选择不同的安装方式:
docker pull mysql:9.4.0
docker run -d --name mysql9-demo -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你的密码 mysql:9.4.0
安装完成后,我们需要使用 MySQL 自带的命令行客户端连接服务器。
打开终端(或 Windows 的命令提示符),输入以下命令:
mysql -u root -p
按回车后,系统会提示你输入密码。输入安装时设置的 root 密码,即可看到欢迎界面,进入 mysql> 命令行模式 。
进入 MySQL 客户端后,我们就可以开始操作数据库了。如果把数据库比作一个仓库,那么数据表就是仓库里一个个货架。
查看现有数据库:
SHOW DATABASES;
初始化后,通常会看到 information_schema、mysql、performance_schema 和 sys 这几个系统库 。
创建新数据库:
我们来创建一个名为 shop (商城)的数据库。
CREATE DATABASE shop;
选择使用数据库:
接下来的所有操作都会在 shop 数据库中进行。
USE shop;
在创建表之前,需要了解几个最常用的数据类型,这决定了“货架”上可以放什么类型的“商品” :
INT 整数,DECIMAL(10,2) 小数(如价格)。VARCHAR(255) 可变长度字符串(如用户名、地址),TEXT 长文本(如商品详情)。DATE (日期),DATETIME (日期和时间,如订单创建时间)。我们创建一个简单的 users (用户表)和 orders (订单表)来演示。
创建用户表 (users):
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY, -- 用户ID,自动增长,并设为主键
username VARCHAR(50) NOT NULL UNIQUE, -- 用户名,非空,且唯一
email VARCHAR(100) NOT NULL, -- 邮箱,非空
created_at DATETIME DEFAULT CURRENT_TIMESTAMP -- 创建时间,默认为当前时间
);
AUTO_INCREMENT 可以让 id 字段在插入新记录时自动加1,PRIMARY KEY 则保证了每条记录的唯一性 。
查看表结构:
DESCRIBE users;
或者
SHOW CREATE TABLE users \G
前者显示简要结构,后者显示建表的详细 SQL 语句 。
有了表和字段,接下来就是最核心的数据操作:增(Create)、删(Delete)、改(Update)、查(Retrieve)。
向 users 表中添加几条用户记录。
-- 插入一条数据,id 会自动生成,created_at 会自动填充当前时间
INSERT INTO users (username, email) VALUES ('张三', 'zhangsan@email.com');
-- 插入多条数据
INSERT INTO users (username, email) VALUES
('李四', 'lisi@email.com'),
('王五', 'wangwu@email.com');
查询是数据库中使用最频繁的操作。
查询所有数据:
SELECT * FROM users;
* 代表所有字段,但在实际生产环境中,建议只列出需要查询的字段名。
查询特定字段并添加条件:
查询用户名为“张三”的邮箱和注册时间。
SELECT email, created_at FROM users WHERE username='张三';
WHERE 关键字用于过滤数据,类似编程中的 if 条件 。
如果用户信息发生变化,需要修改数据。
UPDATE users SET email = 'lisi_new@email.com' WHERE username = '李四';
UPDATE 语句中一定要加 WHERE 条件,否则会修改表中所有行的数据!删除不再需要的用户记录。
DELETE FROM users WHERE username = '王五';
DELETE 语句也必须加 WHERE 条件,否则会清空整个表!掌握基础增删改查后,我们来了解一下稍微复杂一点的查询,为后续深入学习做准备。
查询并排序:
查询所有用户,并按照注册时间倒序排列(最新的在前)。
SELECT * FROM users ORDER BY created_at DESC;
DESC 表示降序,ASC 表示升序(默认)。
限制结果数量:
只查询前2条数据。
SELECT * FROM users LIMIT 2;
假设我们创建了订单表 orders,里面包含 user_id 字段指向 users 表的 id。如果我们想查看每个订单对应的用户名,就需要将两张表连接起来查询。
这是一个**内连接(INNER JOIN)**的例子:
SELECT orders.id AS order_id, users.username, orders.amount
FROM orders
INNER JOIN users ON orders.user_id = users.id;
这个查询会返回订单表中的订单ID、金额,以及通过 user_id 匹配到的用户表中的用户名 。
如果想统计用户总数或订单总金额,就需要使用聚合函数。
-- 统计用户总数
SELECT COUNT(*) FROM users;
-- 计算所有订单的总金额
SELECT SUM(amount) FROM orders;
至此,你已经完成了 MySQL 9 的快速入门。回顾一下,我们学习了:
这些基础知识是你操作 MySQL 的基石。在后续的学习中,你可以继续探索 :
希望这篇教程能帮你快速开启 MySQL 9 的学习之旅!