目录

简要了解SQL及其主要组件

编写SQL查询需要什么?

在哪里可以创建SQL数据库?

编写SQL查询的指南

第 1 步:了解SQL查询背后的过程

第 2 步:准备好数据库

第 3 步:创建一个表格来组织信息

第 4 步:从基本SQL语句开始

1)“INSERT INTO”语句

2) 'SELECT'子句

3) 'WHERE'子句

4) 'AND'和'OR'运算符

5) 'IN'和'BETWEEN'运算符

6) 'ORDER BY'子句

7) 'LIMIT'子句

8) ' UPDATE'语句

9)’DELETE’语句

10) 'TRUNCATE TABLE'语句

第 5 步:校对您的SQL查询

不要气馁!


SQL的知识一直很受欢迎。即使您没有数据分析师的工作或任何其他相关职位,知道如何编写基本的SQL查询也可能是您简历的有用补充。

有很多资源可以了解SQL,包括我们内容丰富的Essential SQL博客。然而,如此丰富的信息常常使学习者,尤其是初学者感到困惑,因为它相当分散。

因此,今天,我们将有关编写SQL查询的所有基本信息收集到一个终极指南中,以帮助您更有效地获得和实践这些知识。

简要了解SQL及其主要组件

结构化查询语言(SQL)是一种特定于域的编程语言,旨在帮助维护数据库中保存的结构化数据。基本上,这种语言可以帮助我们与数据库通信、更新它并从中检索数据。

根据这个定义,我们可以得出结论,您可以使用SQL执行各种任务,例如:

  • 创建数据库
  • 在数据库中启动表和编写查询
  • 从数据库请求信息
  • 更新或删除特定记录或整个数据库

为了更好地理解这种语言的功能,您还需要对其主要组成部分或方言有基本的了解。

  • 数据定义语言——用于创建数据库、更新其中的数据或完全删除数据库的SQL方言。
  • 数据操作语言——用于维护数据库并指定您想要对其执行的操作(输入、更改或提取)的SQL方言。
  • 数据控制语言——用于保护数据库的SQL方言。

一些专家还挑选出用于管理和控制事务的事务控制语言方言,以维护SQL语句中的数据完整性(保证准确性和一致性)。

编写SQL查询需要什么?

要编写SQL查询,您首先需要创建一个关系数据库。

在SQL中,我们称数据库为关系型,因为它被划分为相互关联的表。这些表将数据分解为更小、更易于管理的单元,从而实现更好的维护和整体性能。

在哪里可以创建SQL数据库?

为此,您需要安装数据库管理系统(DBMS)。DBMS是一种帮助您创建和管理数据库的软件。如果您的系统上还没有安装一个,这里有一些最受欢迎的选项:

  • MySQL(开源)
  • SQL Server Express(开源)
  • Oracle(付费)

无论您选择哪种DBMS,它们都为您创建的所有数据库提供安全性和保护。如果有多个用户同时在DBMS上工作,它还有助于保持一致性。

编写SQL查询的指南

现在,让我们仔细看看编写SQL查询需要了解的内容以及要避免的一些常见错误。

第 1 步:了解SQL查询背后的过程

在开始编写SQL查询之前,您需要了解它在执行命令时是如何工作的。

当您输入查询时,它会立即被解析成一棵树。解析器是一种将SQL语句转换为解析树的计算机程序,它有助于识别查询是否符合句法和语义要求,即它是否可识别。

然后,如果一切正确,解析器会创建一个内部查询,然后将其传递给重写引擎。

之后,任务优化器会分析一个查询有多少个执行计划,为您的给定查询找到最佳执行计划。该计划表示将用于执行命令的算法。

如果查询编写正确,您将获得预期的结果。

现在,让我们看一下编写正确的SQL查询需要什么。

第 2 步:准备好数据库

因此,正如我们已经提到的,要编写SQL查询,您需要通过启动数据库为其创建环境。

如果您已经安装了DBMS软件,则可以使用“CREATE DATABASE”语句直接创建数据库。此命令的基本语法如下所示:

CREATE DATABASE   database_name;



例如,如果您想为客户评论创建一个数据库,结果将如下所示:

CREATE DATABASE client_reviews;



要继续使用您的数据库,您需要使用'USE'语句继续您的SQL查询:

USE client_reviews;



这将使该数据库成为您未来所有命令的目标。

请记住:如果具有此名称的数据库已经存在,您将收到一条错误消息。但是,为避免这种情况,您可以使用'IF NOT EXISTS'语句。这是它在MySQL中的样子:

mysql> CREATE DATABASE IF NO EXISTS client_reviews;



如果您的查询是正确的,您将收到一条OK消息。

第 3 步:创建一个表格来组织信息

如果数据库已准备就绪,您现在可以继续创建表。正如我们已经提到的,表可以帮助您构建查询并使数据更易于管理。

创建表需要输入'CREATE TABLE'语句。此语句的语法类似于:

CREATE TABLE table_name (
			column1_name_constraint,
			…
			)



我们应该在表名和列名中插入什么是很清楚的,但是让我们仔细看看约束的类型。

约束是数据类型的声明,它指示列将包含哪种数据。您可以在列中包含多种约束:

  • CHAR – 固定长度的数据字符串(最大255个字符)
  • DATE – YYYY-MM-DD格式的日期
  • DATETIME – YYYY-MM-DD格式的日期和HH:MM:SS格式的时间
  • DECIMAL – 精确的十进制数据
  • INT – 2147483648到2147483647范围内的数字
  • TEXT – 文本数据(最大大小为65,500个字符)
  • TIMESTAMP – 带有精确秒数的时间戳数据
  • VARCHAR – 可变长度数据字符串(最大大小为65,500个字符)
  • Modifiers - UNIQUE约束确保一列中每一行的唯一值;PRIMARY-KEY约束标记表中的相关字段;DEFAULT约束表示列的默认值;如果未指定,AUTO_INCREMENT则自动为字段赋值;CHECK约束对可以包含在一列中的值进行了限制;NOT NULL约束从字段中排除空值。

如果我们为每个给出客户评论的人创建一个表格,最终结果将如下所示:

CREATE TABLE  customer profiles (
			id  INT NOT NULL AUTO_INCREMENT
			name VARCHAR NOT NULL
			birth_date DATE
			review TEXT
			) ;



创建表时,如果表不存在,您可能会遇到与数据库相同的问题。为避免这种情况,在'CREATE TABLE'语句中,您还应该添加'IF NOT EXISTS'语句。

第 4 步:从基本SQL语句开始

当表准备就绪并可以运行时,您现在可以通过在表中插入数据来继续编写SQL查询。

以下是输入和管理表内数据的所有基本语句:

1)“INSERT INTO”语句

此语句用于将新行包含到表中。在这种情况下,语法如下所示:

INSERT INTO table_name (column1, column2, column 3);



您还可以包含值——您想要包含在每列中的数据。

以下是我们的客户评论表在向其中插入数据后最终查询的样子:

INSERT INTO customer profiles (name, birth_date, review)
			VALUES (‘Jennifer Dickinson’, ‘1987-07-07’, ‘good service’)



最终结果将以表格的形式为您提供姓名、出生日期和评论的编号列表。

2) 'SELECT'子句

该子句用于从一个或不同的表中选择和提取数据。此子句的语法将遵循以下模式:

SELECT column1_name, column2_name FROM table_name
			-_name



'SELECT'和'FROM'子句的组合允许您从一个或不同表中的一个或多个列中获取信息。如果要选择一个表中的所有列,可以简单地使用'SELECT'、'FROM'子句和表名的组合。

3) 'WHERE'子句

通过在表中插入此子句,您可以根据特定条件选择数据。如果您想根据姓名、出生日期等条件选择更新或完全删除行或列中的一条记录,这将很有帮助。以下是使用此子句的基本语法:

SELECT column1_name FROM table_name WHERE condition
			-_name



如您所见,该WHERE子句与'SELECT'和'FROM'子句一起使用,可帮助您从正确的列或行中获取正确的数据。

您还可以使用'WHERE'子句根据特定条件过滤不同的记录。

为确保您选择正确的数据,此子句允许您使用几个基本的比较运算符:

  • =(等于)
  • >(大于)
  • <(小于)
  • >=(大于或等于)
  • <=(小于或等于)
  • LIKE(寻找相似的模式)
  • IN(根据某个值查找匹配)
  • BETWEEN(定义值的范围)

要使这些运算符起作用,请将它们包含在'WHERE'子句之后。

4) 'AND'和'OR'运算符

要编写基本的SQL查询并有效地从表中的某个列中选择数据,您还需要使用与' WHERE'子句一起使用的'AND'和'OR'运算符。

AND运算符用于组合两个不同的条件,并且仅当存在与这两个条件都匹配的数据时才为您提供结果。'AND'运算符的语法如下所示:

SELECT column1_name, column2_name…FROM table_name
			WHERE condition1 AND condition2



OR运算符分别组合了两个不同的条件,并在有数据与这些条件之一匹配时为您提供结果。在这种情况下,语法如下所示:

SELECT column1_name, column2_name…FROM table_name
			WHERE condition1 OR condition2



要编写更复杂的SQL查询,您还可以组合'AND'和'OR'运算符,这将允许您检索匹配许多不同条件的数据。

5) 'IN'和'BETWEEN'运算符

这些运算符可帮助您根据特定条件选择专有的各种值。

IN运算符允许您选择所有符合特定标准的数据。查询的语法(包括'IN'运算符)应如下所示:

SELECT column1_name…FROM table_name
WHERE condition1 IN (value1, value2, value3…)



例如,您可以使用此运算符检索来自同一国家/地区的客户的信息。同样,如果要排除某些结果,可以在'IN'运算符中添加'NOT'。

如果你想得到一定范围内的值的结果,你可以使用BETWEEN操作符。在这种情况下,语法将如下所示:

SELECT column1_name…FROM table_name
WHERE condition1 BETWEEN value1 AND value 2



如您所见,“AND”运算符还用于比较值并获取结果。

6) 'ORDER BY'子句

当您希望将获取的结果按特定顺序放置时,使用此子句。该ORDER BY子句告诉服务器如何组织数据,语法如下:

SELECT column_list…FROM table_name ORDER BY column_name



获取数据的首选顺序。

7) 'LIMIT'子句

如果要限制结果的数量,可以在MySQL中包含'LIMIT '子句或在SQL Server中包含Top子句。使用此子句的基本语法如下所示:

SELECT column_list…FROM table_name ORDER BY value LIMIT number



如您所见,在这种情况下也使用了'ORDER BY'子句,因为它有助于识别要限制的值。

8) ' UPDATE'语句

插入并选择数据后,您现在可以继续编写SQL查询来更新此数据。为此,您需要使用该UPDATE语句,其语法类似于:

UPDATE table_name
			SET column1_name = value 1…
			WHERE condition1, condition2…



'SET'子句允许您识别需要更新的特定列或行。您还可以使用上述所有运算符,例如“AND”和“OR”来更新表格。

9)’DELETE’语句

此语句允许您删除一行或多行。此查询的语法很简单,如下所示:

DELETE FROM table_name WHERE condition



'WHERE'子句根据分配给它的条件指定应该删除的记录。不要省略它,否则,您将从表中删除所有记录。

10) 'TRUNCATE TABLE'语句

但是,如果您确实想一次删除所有行,TRUNCATE TABLE语句将帮助您比'DELETE'语句更快地完成它。此查询的语法如下所示:

TRUNCATE TABLE table_name



从表中删除行时,此语句实际上并未删除表的结构。如果要返工整个表,可以使用此语句。

第 5 步:校对您的SQL查询

如果您已经完成了SQL查询的编写,但仍然无法正常工作,那么您可能在此过程中犯了一个错误。

因此,请注意这些最常见的SQL查询错误,并确保您校对查询以避免它们:

  • 拼写错误的命令。这是最常见的SQL查询错误。为了解决这个问题,您可以使用SQL编辑器来修复损坏的SQL语句和子句。如果您的查询包含TEXT约束下的文本,您还需要对其进行校对。您可以使用包含自动校对器的不同论文站点快速完成此操作。
  • 省略标点符号。正确的SQL查询还需要有括号和引号才能正常运行。因此,请检查您的查询是否有单引号和双引号,并确保所有内容都正确显示。
  • 语句顺序不正确。如果您的查询不起作用,则其中的语句可能顺序不正确。如果您没有足够的编写SQL查询的经验,手头有语法模板可能会有所帮助。

为了使您的SQL查询正常工作,您需要在编写它们的同时记住查询中可能出现性能问题的位置。然后,如果您收到错误消息,您可能已经了解,在哪里寻找问题以及如何解决它。

不要气馁!

学习SQL很像学习一门外语——熟能生巧。

在编写SQL查询时,重要的是要遵循语法模式来完成它们,同时牢记查询背后的过程。

除此之外,编写SQL查询非常简单,从创建数据库和表作为查询的基础开始,到校对查询以消除错误结束。

希望我们的指南能够帮助您更加熟练地编写SQL查询,因为您现在已经掌握了执行此操作的基本知识和工具。