目录
简要了解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查询,因为您现在已经掌握了执行此操作的基本知识和工具。