🚀 缺失的 SQL 基础速成课程简介 数据库 MySQL 表 基本语法 总结

2025-06-11

🚀 缺失的 SQL 基础速成课程

介绍

数据库

MySQL

表格

基本语法

结论

介绍

无论您是 DevOps/SysOps 工程师、开发人员还是 Linux 爱好者,您很可能在职业生涯的某个阶段都需要使用 SQL。

本指南适合任何开发人员、系统管理员或 DevOps 工程师,并希望学习 SQL 基础知识的人。

数据库

在深入研究 SQL 之前,让我们快速定义一下什么是数据库。

维基百科对数据库的定义是:

数据库是有组织的数据集合,通常通过计算机系统以电子方式存储和访问。

换句话说,数据库是存储和构建在不同数据库表中的数据的集合。

表和列

您很可能使用过 Excel 或 Google Sheets 等电子表格系统。数据库表的基本结构与电子表格非常相似。

每个表都有不同的,可以包含不同类型的数据。

例如,如果您有一个待办事项列表应用程序,那么您会有一个数据库,并且在数据库中,您会有不同的表存储不同的信息,例如:

  • 用户 - 在用户表中,您将拥有一些用户数据,例如:username、、nameactive
  • 任务 - 任务表将存储您计划执行的所有任务。任务表的列例如为task_namestatusdue_datepriority

用户表将如下所示:

+----+----------+---------------+--------+
| id | username | name          | active |
+----+----------+---------------+--------+
| 1  |    bobby | Bobby Iliev   |   true |
| 2  |   greisi | Greisi I.     |   true |
| 3  |  devdojo | Dev Dojo      |  false |
+----+----------+---------------+--------+
Enter fullscreen mode Exit fullscreen mode

表结构概要:

  • 我们有 4 列id、、usernamenameactive
  • 我们还有 3 个条目/用户
  • id列是每个用户的唯一标识符,并且自动增加。

接下来我们将学习如何安装 MySQL 并创建我们的第一个数据库。

MySQL

现在您知道了什么是数据库、表和列,接下来您需要做的就是安装一个数据库服务,您将在其上运行 SQL 查询。

我们将使用 MySQL,因为它是免费的、开源的并且使用非常广泛。

安装 MySQL

由于我们将使用Ubuntu,因此为了安装 MySQL,请运行以下命令:

  • 首先更新你的apt存储库:
sudo apt update -y
Enter fullscreen mode Exit fullscreen mode
  • 然后安装MySQL:
sudo apt install mysql-server mysql-client
Enter fullscreen mode Exit fullscreen mode

我们正在安装 2 个包,一个是实际的 MySQL 服务器,另一个是 MySQL 客户端,它允许我们连接到 MySQL 服务器并运行我们的查询。

为了检查 MySQL 是否正在运行,请运行以下命令:

sudo systemctl status mysql.service
Enter fullscreen mode Exit fullscreen mode

为了保护您的 MySQL 服务器,您可以运行以下命令:

sudo mysql_secure_installation
Enter fullscreen mode Exit fullscreen mode

然后按照提示操作,最后选择一个安全的密码并将其保存在密码管理器等安全的地方。

这样,你的 MySQL 就安装在你的 Ubuntu 服务器上了。以上步骤在 Debian 上也应该可以正常工作。

在 Mac 上安装 MySQL

我建议使用Homebrew安装 MySQL :

brew install mysql
Enter fullscreen mode Exit fullscreen mode

之后启动 MySQL:

brew services start mysql
Enter fullscreen mode Exit fullscreen mode

最后,确保其安全:

mysql_secure_installation
Enter fullscreen mode Exit fullscreen mode

如果您需要停止 MySQL 服务,可以使用以下命令:

brew services stop mysql
Enter fullscreen mode Exit fullscreen mode

在 Windows 上安装 MySQL

为了在 Windows 上安装 MySQL,我建议按照此处官方文档中的步骤操作:

https://dev.mysql.com/doc/refman/8.0/en/windows-installation.html

通过 CLI 访问 MySQL

要访问 MySQL,请mysql按照您的用户身份运行以下命令:

mysql -u root -p
Enter fullscreen mode Exit fullscreen mode

创建数据库

之后,切换到demo我们在上一章中创建的数据库:

USE demo_db;
Enter fullscreen mode Exit fullscreen mode

要退出,只需输入以下内容:

exit;
Enter fullscreen mode Exit fullscreen mode

配置.my.cnf

~/.my.cnf通过在用户主目录中配置该文件,MySQL 将允许您登录而无需提示您输入密码。

为了进行该更改,您需要做的首先.my.cnf在用户的主目录中创建一个文件:

touch ~/.my.cnf
Enter fullscreen mode Exit fullscreen mode

之后,设置安全权限,以便其他普通用户无法读取该文件:

chmod 600 ~/.my.cnf
Enter fullscreen mode Exit fullscreen mode

然后使用您最喜欢的文本编辑器打开该文件:

nano ~/.my.cnf
Enter fullscreen mode Exit fullscreen mode

并添加如下配置:

[client]
user=YOUR_MYSQL_USERNAME
password=YOUR_MYSQL_PASSWORD
Enter fullscreen mode Exit fullscreen mode

确保相应地更新您的 MySQL 凭据,然后保存文件并退出。

此后,如果您只运行mysql,您将直接使用文件中指定的凭据进行身份验证,~/.my.cnf而无需提示输入密码。

mysqladmin 命令

作为快速测试,您可以通过运行以下命令检查所有打开的 SQL 连接:

mysqladmin proc
Enter fullscreen mode Exit fullscreen mode

mysqladmin工具还将使用~/.my.cnf文件中的客户端详细信息,并列出您当前的 MySQL 进程列表。

您可以尝试做的另一件很酷的事情是将其与watch命令结合起来,几乎实时地监控您的 MySQL 连接:

watch -n1 mysqladmin proc
Enter fullscreen mode Exit fullscreen mode

要停止watch命令,只需点击CTRL+C

GUI 客户端

如果您更喜欢使用 GUI 客户端,您可以查看以下内容并将其本地安装在您的笔记本电脑上:

mysql这将允许您通过图形界面而不是命令行工具连接到数据库。

如果您想要一个可用于生产的 MySQL 数据库,我建议您尝试一下 DigitalOcean:

无忧的托管数据库

表格

在开始使用 SQL 之前,让我们先学习如何创建表和列。

作为示例,我们将创建一个users包含以下列的表:

  • id- 这将成为表的主键,并成为每个用户的唯一标识符。
  • username- 此列将保存我们用户的用户名
  • name- 在这里,我们将存储用户的全名
  • status- 在这里,我们将存储用户的状态,这将表明用户是否处于活跃状态。

您需要指定每一列的数据类型。

在我们的例子中,它会是这样的:

  • id- 整数
  • username- 可变字符
  • name- 可变字符
  • status- 数字

数据类型

您可能遇到的最常见的数据类型是:

  • CHAR(size):定长字符串,最大长度为255字节。
  • VARCHAR(size): 可变长度字符串。括号中指定最大长度。
  • TEXT(大小):最大长度为 65,535 字节的字符串。
  • INTEGER(size) 或INT(size):中等整数。
  • BOOLEANor BOOL:保存真值或假值。
  • DATE:保存日期。

让我们以以下用户表为例:

  • id:我们希望将 ID 设置为INT
  • name:名称应适合一VARCHAR列。
  • about:由于关于部分可能更长,我们可以将列数据类型设置为TEXT
  • birthday:对于用户的生日列,我们可以使用DATE

有关所有可用数据类型的更多信息,请务必查看此处的官方文档。

创建数据库

正如我们在上一章中简要介绍的那样,在创建表之前,您需要通过运行以下命令来创建数据库:

  • 首先访问MySQL:
mysql -u root -p
Enter fullscreen mode Exit fullscreen mode
  • 然后创建一个名为的数据库demo_db
CREATE DATABASE demo_d;
Enter fullscreen mode Exit fullscreen mode

注意:数据库名称需要唯一,如果您已经有一个名为的数据库,demo_db您将收到数据库已存在的错误。

您可以将此数据库视为我们创建所有表的容器。

创建数据库后,您需要切换到该数据库:

USE demo_db;
Enter fullscreen mode Exit fullscreen mode

您可以将其视为使用cd命令访问 Linux 中的目录。使用USE,我们切换到特定的数据库。

或者,如果您不想“切换”到特定数据库,则需要指定所谓的完全限定表名。例如,如果您users在 中有一个表demo_db,并且想要从该表中选择所有条目,则可以使用以下两种方法之一:

  • 切换到第demo_db一个,然后运行选择语句:
USE demo_db;
SELECT username FROM demo_db.users;
Enter fullscreen mode Exit fullscreen mode
  • 或者,不要USE先使用命令,而是指定数据库名称,然后用点分隔的表名db_name.table_name::
SELECT username FROM demo_db.users;
Enter fullscreen mode Exit fullscreen mode

我们将SELECT在接下来的章节中更深入地讨论该声明。

创建表

为了创建一个表,您需要使用CREATE TABLE语句,后跟您希望在该表中拥有的列及其数据类型。

假设我们要创建一个users包含以下列的表:

  • id:整数值
  • username:varchar 值
  • about:文本类型
  • birthday: 日期
  • active:正确或错误

我们需要运行来创建该表的查询是:

CREATE TABLE users
(
    id INT,
    username VARCHAR(255),
    about TEXT,
    birthday DATE,
    active BOOL
);
Enter fullscreen mode Exit fullscreen mode

注意:您需要先使用USE上述命令选择一个数据库。否则,您将收到以下错误:ERROR 1046 (3D000): No database selected

要列出可用的表,您可以运行以下命令:

SHOW TABLES;
Enter fullscreen mode Exit fullscreen mode

输出:

+-------------------+
| Tables_in_demo_db |
+-------------------+
| users             |
+-------------------+
Enter fullscreen mode Exit fullscreen mode

删除表

您可以使用DROP TABLE语句删除或移除表。

让我们测试一下并删除我们刚刚创建的表:

DROP TABLE users;
Enter fullscreen mode Exit fullscreen mode

您将获得的输出将是:

Query OK, 0 rows affected (0.03 sec)
Enter fullscreen mode Exit fullscreen mode

现在,如果您再次运行查询SHOW TABLES;,您将获得以下输出:

Empty set (0.00 sec)
Enter fullscreen mode Exit fullscreen mode

允许 NULL 值

默认情况下,表中的每一列都可以保存 NULL 值。如果您不想允许特定表中的某些列使用 NULL 值,则需要在创建表时指定,或稍后修改表以允许使用 NULL 值。

例如,假设我们希望该username列成为必需列,则需要更改表创建语句并NOT NULL在该列旁边包含username以下内容:

CREATE TABLE users
(
    id INT,
    username VARCHAR(255) NOT NULL,
    about TEXT,
    birthday DATE,
    active BOOL
);
Enter fullscreen mode Exit fullscreen mode

这样,当您尝试添加新用户时,MySQL 会让您知道该username列是必需的。

指定主键

主键列(在我们的例子中是id列)是我们用户的唯一标识符。

我们希望该id列是唯一的,并且,每当我们添加新用户时,我们希望每个新用户的用户 ID 都会自动增加。

这可以通过主键和来实现。主键列AUTO_INCREMENT需要。NOT NULL

如果我们要改变表创建语句,它将看起来像这样:

CREATE TABLE users
(
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL,
    about TEXT,
    birthday DATE,
    active BOOL
);
Enter fullscreen mode Exit fullscreen mode

更新表格

在上面的例子中,我们创建了一个新表,然后因为表为空就将其删除。然而,在实际场景中,这种情况确实会发生。

因此,无论何时需要在特定表中添加或删除新列,都需要使用该ALTER TABLE语句。

假设我们想email在表中添加一个类型为 varchar 的列users

语法如下:

ALTER TABLE users ADD email VARCHAR(255);
Enter fullscreen mode Exit fullscreen mode

之后,如果您要描述该表,您将看到新的列:

DESCRIBE users;
Enter fullscreen mode Exit fullscreen mode

输出:

+----------+--------------+------+-----+---------+
| Field    | Type         | Null | Key | Default |
+----------+--------------+------+-----+---------+
| id       | int          | NO   | PRI | NULL    |
| username | varchar(255) | NO   |     | NULL    |
| about    | text         | YES  |     | NULL    |
| birthday | date         | YES  |     | NULL    |
| active   | tinyint(1)   | YES  |     | NULL    |
| email    | varchar(255) | YES  |     | NULL    |
+----------+--------------+------+-----+---------+
Enter fullscreen mode Exit fullscreen mode

如果您想要删除特定列,语法如下:

ALTER TABLE table_name DROP COLUMN column_name;
Enter fullscreen mode Exit fullscreen mode

注意:请记住这是一个永久性的更改,如果特定列中有任何关键数据,它将立即被删除。

ALTER TABLE还可以使用该语句更改特定列的数据类型。例如,您可以将about列从更改TEXTLONGTEXT类型,以便容纳更长的字符串。

注意:需要注意的是,如果某个表已经包含某种类型的数据值(例如整数),则无法将其更改为 varchar 类型。只有当该列不包含任何值时,才可以进行更改。

基本语法

在本章中,我们将介绍基本的 SQL 语法。

SQL 语句本质上是针对特定数据库运行的“命令”。通过 SQL 语句,您可以告诉 MySQL 您希望它执行的操作。例如,如果您想获取表username中存储的所有用户信息users,则可以运行以下 SQL 语句:

SELECT username FROM users ;
Enter fullscreen mode Exit fullscreen mode

声明摘要:

  • SELECT:首先,我们指定SELECT关键字,表示我们要从数据库中选择一些数据。其他常用关键字包括:INSERTUPDATEDELETE
  • username:然后我们指定要选择哪一列
  • users:之后,我们指定要从中选择数据的表。
  • ;必需的。每个 SQL 语句都需要以分号结尾。

如果您运行上述语句,您将不会得到任何结果,因为users我们刚刚创建的新表是空的。

作为一种良好做法,所有 SQL 关键字都应大写,但是,如果使用小写也可以。

接下来我们继续介绍基本操作。

插入

要向数据库添加数据,您可以使用该INSERT语句。

让我们使用上一章中创建的表并将 1 个用户插入到users表中:

INSERT INTO users(username, email, active) VALUES('bobby', 'bobby@bobbyiliev.com', true);
Enter fullscreen mode Exit fullscreen mode

插入语句的概要:

  • INSERT INTO users:首先,我们指定INSERT INTO关键字,它告诉 MySQL 我们要将数据插入users表中。
  • users (username, email, active):然后,我们指定表名users和要插入数据的列。
  • VALUES:然后,我们指定要插入的值。

选择

一旦我们插入了该用户,我们就可以继续检索信息。

要从数据库中检索信息,可以使用以下SELECT语句:

SELECT * FROM users;
Enter fullscreen mode Exit fullscreen mode

输出:

+----+----------+-------+----------+--------+---------------+
| id | username | about | birthday | active | email         |
+----+----------+-------+----------+--------+---------------+
|  1 | bobby    | NULL  | NULL     |      1 | bobby@b...com |
+----+----------+-------+----------+--------+---------------+
Enter fullscreen mode Exit fullscreen mode

正如我们在关键字*后面指定的SELECT,这意味着我们想要获取表中的所有列users

如果我们只想usernameemail列,我们可以将语句更改为:

SELECT username,email FROM users;
Enter fullscreen mode Exit fullscreen mode

这将返回所有用户,但目前我们只有 1 个:

+----------+----------------------+
| username | email                |
+----------+----------------------+
| bobby    | bobby@bobbyiliev.com |
+----------+----------------------+
Enter fullscreen mode Exit fullscreen mode

更新

为了修改数据库中的数据,您可以使用该UPDATE语句。

语法如下:

UPDATE users SET username='bobbyiliev' WHERE id=1;
Enter fullscreen mode Exit fullscreen mode

声明摘要:

  • UPDATE users:首先,我们指定UPDATE关键字,然后是要更新的表
  • username='bobbyiliev'然后我们指定要更新的列和要设置的新值。
  • WHERE id=1:最后,通过使用WHERE子句,我们指定要更新哪个用户。在我们的例子中,是 ID 为 1 的用户。

注意:如果我们不指定WHERE子句,表中的所有条目都users将被更新,并且所有用户的 都会被设置username为。使用不带子句的语句bobbyiliev时需要小心,因为每一行都会被更新。UPDATEWHERE

我们将WHERE在接下来的几章中更深入地讨论。

删除

顾名思义,该DELETE语句将从数据库中删除数据。

语法如下:

DELETE FROM users WHERE id=1;
Enter fullscreen mode Exit fullscreen mode

与语句类似UPDATE,如果您不指定WHERE子句,表中的所有条目都将受到影响,这意味着您的所有用户都将被删除。

评论

如果您正在编写较大的 SQL 脚本,添加一些注释可能会有所帮助,以便稍后当您返回脚本时,您就会知道每一行的作用。

与所有编程语言一样,您也可以在 SQL 中添加注释。

评论有两种类型:

  • 内联评论:

为此,您只需--在要注释掉的文本前添加:

SELECT * FROM users; -- Get all users
Enter fullscreen mode Exit fullscreen mode
  • 多行注释

与其他一些编程语言类似,为了注释多行,您可以/* */按如下方式包装文本:

/*
Get all of the users
from your database
*/
SELECT * FROM users;
Enter fullscreen mode Exit fullscreen mode

您可以将其写入.sql文件中,然后稍后运行它,或者直接执行这几行。

结论

这些是一些最常见的基本 SQL 语句。

如果您想了解有关 SQL 的更多信息,请务必查看我在 GitHub 上的免费电子书:

免费 SQL 简介电子书

为了支持我,您可以在 Twitter 上关注我:@bobbyiliev_

如果您已经了解基础知识,我建议您查看Materialize。Materialize是一个提供增量视图更新的响应式数据库。Materialize 帮助开发人员使用标准 SQL 轻松构建流数据。

鏂囩珷鏉ユ簮锛�https://dev.to/bobbyiliev/the-missing-sql-basics-crash-course-323l
PREV
2021 年值得添加到你的技术栈的 5 个最佳开源表单构建器
NEXT
Node.js 的自然语言处理