SQL 是世界上最流行的编程语言之一,仅次于 Javascript、HTML 和 CSS。
你能想到的几乎所有应用程序都依赖于可以存储和访问数据的数据库。在数据库方面,SQL 是迄今为止最流行的语言,全世界使用的 60% 的数据库都建立在某种形式的 SQL之上。
那么,什么是 SQL ?
SQL 是结构化查询语言,(读作“es-cue-el”或“sequel”,别纠结了,两种都可以)。数据库开发人员使用 SQL 与其数据库交互、创建新数据集、修改现有数据集以及根据需要删除数据。
SQL 不仅是一种简单的语言,它的种类也很多。例如,MySQL、Microsoft SQL 和 PostgreSQL 等,都是一些最流行的 SQL 平台。
在本文中,我们将专门讨论 MySQL、它的用途以及它与 SQL 语法的关系。
MySQL 最初于 1995 年开发,是领先的 SQL 技术之一,拥有53.5% 的 SQL 数据库市场份额,MySQL 在 Web 应用程序中特别受欢迎,它可以免费使用,并且经常集成到开源工具中(例如 Wordpress, Discuz! 等)。
要了解 MySQL,我们首先需要了解它是如何操作和存储数据的。假设现在有用户在一个站点上创建帐户,用户需要提供他的:
该网站需要有一种存储这些数据的方法,以便它可以查找用户的姓名并匹配他们的密码是否正确,以及应对其他的数据查询和修改任务。
以这种方式连接数据意味着即使你只知道某人的电子邮件地址,你也可以更新他们的密码,反之亦然。这种形式的数据管理被称为关系数据库,其中 MySQL 是最流行的。
数据库有两种类型,关系数据库和非关系数据库,MySQL 是一种关系型数据库。
今天,非关系数据库正在增长,但它们的使用场景比较有限。
像 SQL 这样的关系数据库以每条数据相互关联的方式存储数据。单个数据库包含数据表,每个数据表都非常类似于 Excel 电子表格。其中包含信息行,每行信息都包含一条记录。每个单一记录或条目都包含一组数据。
例如 书籍列表,电影列表,用户帐户列表,或待售物品的列表等都是关系数据库。只要你能把它想象成一个 Excel 电子表格,那么他就是关系数据库。
相比之下,非关系型数据库(例如 NoSQL)是一种非结构化数据库。它就像一个包含各种文档、视频和图像的文件夹,而不是 Excel 工作表。
它仍然包含数据,但是这些数据是杂乱无章的,并且数据类型之间没有任何关系。大多数人在使用非结构化数据库的同时使用机器学习解决方案,它可以比人类更容易地梳理不相关的非结构化数据。
两种类型的数据库都在客户端-服务器模型上运行。有一个为数据提供服务的数据库和一个请求它的客户端。但大多数 Web 应用程序都使用 MySQL 等关系数据库,而不是 NoSQL 等非关系数据库。
在本文中,我们将讨论一个简单的用户表。在这个表中有多个用户,我们需要为所有用户提供一些基本信息。每个用户都是表格中的一个单独条目,就像电子表格的单独一行。
让我们看一下表格:
NAME | PASSWORD | |
JohnDoe | StrongPassword | [email protected] |
JaneDoe | PasswordStrong | [email protected] |
虽然结构可能与 Excel 相似,但有一个非常具体的区别——数据如何交互。
SQL – 完整的开发人员指南(MySQL、PostgreSQL)
https://www.koudaizy.com/tutorials/sql-the-complete-developers-guide-mysql-postgresql/
SQL命令有很多,但一般操作有四种:
增删改查,这是每个数据库必须具备的四个基本功能,也是我们使用数据库的绝大部分场景。
在开发系统时,你通常会通过源代码插入 SQL 查询语句。不同的编程语言以不同的方式与数据库交互,但都适用于 SQL 服务器。无论哪种方式,大多数程序员都会发现开始使用 SQL 相当容易,尽管掌握它可能需要一生的学习时间。
下面,我们将介绍最基本和最重要的 SQL 命令:
CREATE
、INSERT
、SELECT
、UPDATE
、DELETE
和 DROP
。
首先,我们需要创建一个数据库。在本例中,我们创建了一个名为“example”的数据库:
USE example;
但这只是创建数据库,在 SQL 中,所有数据本身都在表中。接下来,我们将创建一个简单的用户表:
CREATE TABLE users (name varchar(25), password varchar(255), email varchar(25);
MySQL 现在知道需要包含名称、密码和电子邮件地址的相关数据。就像在电子表格中一样,这些数据将逐行关联。在上面的示例中,“varchar”是要存储的数据类型。它指的是可变数量的字符,括号中的数字代表着字符长度。
MySQL 数据类型
以上是MySQL 的几种基础数据类型,我们做个简单的了解即可,暂时不用深入研究。
OK,我们已经知道了,如何创建数据库和数据表,接下来我们需要访问和操控这些数据。
将数据添加到数据库中,需要使用 INSERT
命令:
INSERT into users (name, password, email) VALUES ('JohnDoe','StrongPassword', '[email protected]');
现在表格看起来像这样:
NAME | PASSWORD | |
JohnDoe | StrongPassword | [email protected] |
以这种方式存储数据的优势在于,你可以存储 5 个用户或 50,000 个用户,但你始终能够以相同的方式读取数据。
请注意,同一个数据库可以包含许多表。我们的 “Example” 数据库目前只包含用户表。但它也可能包含“items_for_sale”或“pictures_of_users_cats”之类的内容。
现在我们已将数据保存到数据库中,接下来我们开始查询数据。让我们从一个简单的 SELECT
语句开始:
SELECT email FROM users WHERE name = 'JohnDoe';
SELECT
/FROM
/WHERE
是最流行和最简单的 MySQL 查询。上面的查询语句将返回一条记录,即我们创建的记录,即[email protected]。
但是如果有 25,000 条记录,那么这条语句就会返回25000条数据。
如果我们需要查询部分数据,你可以添加限制条件:
SELECT email FROM users LIMIT 100 ORDER BY name;
这将只给我们展示按用户名字母顺序排列的前 100 个数据。此外,我们可以使用通配符:
SELECT email from users WHERE email LIKE '%.edu';
%
号是通配符,上面的查询语句,将提取所有以 .edu 结尾的电子邮件地址。在我们当前的数据库中,它不会返回任何内容,因为我们只有一个 .com 电子邮件地址。
当我们使用通配符时,我们需要使用 LIKE
而不是 =
号。
除了 =
,我们还可以通过多种其他方式比较数据:
因此,虽然 SQL 语言在语法上很简单,但它很强大,因为它拥有大量可供使用的工具。使用命令 LIMIT
和 ORDER BY
可以更容易地控制返回给你的数据。
如果不能更新数据,那么将数据放入 MySQL 数据库将毫无意义。更新数据的操作跟选择数据差不多,当你使用 update
语句时,过滤数据的 where
条件语句用法也与 select
语句相同。
这是一个例子:
UPDATE users SET email = '[email protected]' where name = 'JohnDoe';
在这个例子中,假设John把它的电子邮件弄错了,正确的电子邮件地址是[email protected],他写成了[email protected]。那么就可以通过上面 UPDATE 语句轻松解决这个问题。SET
语法表示我们正在设置电子邮件地址,而 WHERE
语法定义了查询条件下。
你同样也可以使用通配符:
UPDATE users SET password = null WHERE name LIKE 'J%';
这条语句,会对每个用户名以 J 开头的数据行,将密码设置为空。也就是完全删除 JohnDoe 的密码。
SQL 和 PostgreSQL:完整的开发人员指南
https://www.koudaizy.com/tutorials/sql-and-postgresql/
最后,你可能需要删除数据。在我们这样做之前,先简单说明一下。在一般实践中,大多数人从不删除数据,而是选择归档数据。
因此,虽然可以从表或数据库中删除数据,但现在很少这样做,因为数据存储现在非常便宜。
删除数据使用 DELETE
语句:
DELETE FROM users WHERE name = 'JohnDoe';
再见约翰!我们现在已经删除了我们唯一的用户(我们甚至从未添加过 Jane)。我们也可以:
DELETE FROM users WHERE email = ' [email protected] ';
或者,如果你想更精确,你可以:
DELETE FROM users WHERE name = 'JohnDoe' && email = ' [email protected] ' && password = 'StrongPassword';
又或者,如果你想要更全面,你可以:
DELETE FROM users WHERE name = ‘JohnDoe’ || email = ‘[email protected]’ || password = ‘StrongPassword’;
如果名称是 JohnDoe 或电子邮件地址是“ [email protected] ”或密码是 StrongPassword,这些用户都将被删除。
我们也可以完全删除一个表:
DROP TABLE users;
上面这条语句,会删除用户表。如果你只想从表中删除所有用户,而不想删除表,你可以这样:
DELETE FROM users;
这条语句,会删除表中的所有数据,但它不会删除表本身,并且表仍然可以使用。通常在测试阶段结束后,我们会将数据表擦除干净,以便可以填写正确的数据。
在本文中,我们了解了 MySQL 的四个最基本的数据库功能:
这些基本的 SQL 命令几乎存在于每个版本的 SQL 中,而不仅仅是 MySQL。虽然这些基本 SQL 命令可能会提供大量数据操作,但它们并不是所有涵盖的命令。
SQL 不仅包含更多命令,而且还有许多变体、数据集和公式可以使其更易于使用。你可以去口袋资源了解更多的SQL或者MySQL或者其他数据库方面的内容。