SQL基础

了解DDL,DML和JOIN

结构化查询语言是现代数据库体系结构的基本组成部分之一。 SQL定义了用于在所有主要平台上创建和操作关系数据库的方法。 乍看之下,这种语言看起来可能会让人感到恐惧和复杂,但并不是那么困难。

SQL背后的基础知识简要介绍了用于创建和修改数据库的一些主要命令。

关于SQL

SQL的正确发音在数据库社区中是一个有争议的问题。 在其SQL标准中,美国国家标准协会宣布官方发音是“es队列el”。 但是,许多数据库专业人士都把这个俚语发音称为“续集”。 这是你的选择。

SQL有很多种口味。 Oracle数据库使用其专有的PL / SQL。 Microsoft SQL Server利用Transact-SQL。 所有这些变体均基于行业标准ANSI SQL。 本介绍使用ANSI兼容的SQL命令,可用于任何现代关系数据库系统。

DDL和DML

SQL命令可以分为两个主要的子语言。 数据定义语言(DDL)包含用于创建和销毁数据库和数据库对象的命令。 在用DDL定义数据库结构之后,数据库管理员和用户可以使用数据操纵语言(DML)来插入,检索和修改其中包含的数据。

数据定义语言命令

数据定义语言用于创建和销毁数据库和数据库对象。 这些命令主要由数据库管理员在数据库项目的设置和删除阶段使用。 下面看一下四个基本DDL命令的结构和用法:

创建。 在计算机上安装数据库管理系统可让您创建和管理许多独立的数据库。 例如,您可能需要维护销售部门的客户联系人数据库和人力资源部门的人事数据库。 CREATE命令用于在您的平台上建立这些数据库中的每一个。 例如,命令:

创建数据库员工

在您的DBMS上创建一个名为“employees”的空数据库。 创建数据库后,下一步是创建包含数据的表。 CREATE命令的另一个变体可以用于此目的。 命令:

CREATE TABLE personal_info(first_name char(20)not null,last_name char(20)not null,employee_id int not null)

在当前数据库中建立标题为“personal_info”的表格。 在该示例中,该表包含三个属性:first_name,last_name和employee_id以及一些附加信息。

使用。 USE命令允许您在DBMS中指定要使用的数据库。 例如,如果您当前正在销售数据库中工作,并想发出一些影响员工数据库的命令,请使用以下SQL命令为其添加前言:

使用员工

在发布操纵数据的SQL命令之前,始终要意识到您正在使用的数据库非常重要。

改变。 一旦在数据库中创建了一个表格,您可能需要修改其定义。 ALTER命令允许您更改表的结构而不删除并重新创建它。 看看下面的命令:

ALTER TABLE personal_info添加工资金额null

此示例向personal_info表添加了一个新属性 - 员工的工资。 “金钱”参数指定雇员的工资以美元和美分格式存储。 最后,“null”关键字告诉数据库,该字段对于任何给定的员工都没有值。

下降。 数据定义语言DROP的最终命令允许我们从我们的DBMS中删除整个数据库对象。 例如,如果我们想永久删除我们创建的personal_info表,我们将使用以下命令:

DROP TABLE personal_info

同样,下面的命令将用于删除整个员工数据库:

DROP DATABASE员工

小心使用此命令。 DROP命令从数据库中删除整个数据结构。 如果要删除单个记录,请使用数据操纵语言的DELETE命令。

数据操作语言命令

数据操作语言(DML)用于检索,插入和修改数据库信息。 这些命令在数据库的例行操作中由所有数据库用户使用。

插。 SQL中的INSERT命令用于将记录添加到现有表中。 回到上一节中的personal_info示例,想象我们的HR部门需要将新员工添加到其数据库中。 你可以使用类似这样的命令:

INSERT INTO个人信息值('bart','simpson',12345,$ 45000)

请注意,该记录有四个值。 它们按照它们定义的顺序对应于表格属性:first_name,last_name,employee_id和salary。

选择。 SELECT命令是SQL中最常用的命令。 它允许数据库用户从操作数据库中检索他们想要的特定信息。 看看几个例子,再次使用雇员数据库中的personal_info表。

下面显示的命令检索personal_info表中包含的所有信息。 请注意,星号在SQL中用作通配符。 这字面意思是“从个人信息表中选择所有内容”。

SELECT * FROM personal_info

或者,用户可能想要限制从数据库中检索的属性。 例如,人力资源部门可能会要求列出公司所有员工的姓氏。 以下SQL命令将仅检索该信息:

SELECT last_name FROM personal_info

WHERE子句可用于将检索到的记录限制为符合指定条件的记录。 CEO可能有兴趣审查所有高薪雇员的人事记录。 以下命令检索个人信息中包含的工资值大于$ 50,000的记录的所有数据:

SELECT * FROM personal_info WHERE工资> $ 50000

UPDATE。 UPDATE命令可用于批量或单独修改表中包含的信息。 假设该公司每年给全体员工的工资增加3%的生活成本。 可以使用以下SQL命令将其快速应用于存储在数据库中的所有员工:

更新personal_info SET工资=工资* 1.03

当新员工巴特辛普森表现出超越职责范围的表现时,管理层希望以5,000美元的加薪承认自己的成就。 WHERE子句可以用来为这个提升选出Bart:

UPDATE personal_info SET salary = salary + $ 5000 WHERE employee_id = 12345

删除。 最后,让我们看看DELETE命令。 您会发现该命令的语法与其他DML命令的语法相似。 不幸的是,我们最新的企业收益报告并不完全符合预期,可怜的巴特已经被裁员。 带有WHERE子句的DELETE命令可用于从personal_info表中删除他的记录:

DELETE FROM personal_info WHERE employee_id = 12345

JOIN的

现在您已经学习了SQL的基础知识,现在是时候转到语言所提供的最强大的概念之一 - JOIN语句。 JOIN语句允许您将多个表中的数据组合起来,从而有效地处理大量数据。 这些陈述是数据库的真正威力所在。

要探索使用基本JOIN操作来合并两个表中的数据,请使用PERSONAL_INFO表继续该示例,并向混合中添加一个附加表。 假设您有一个名为DISCIPLINARY_ACTION的表,它使用以下语句创建:

CREATE TABLE disciplinary_action(action_id int not null,employee_id int not null,comments char(500))

该表格包含公司员工的纪律处分结果。 您会注意到,它不包含员工编号以外的其他员工的任何信息。 很容易想象您可能想要结合来自DISCIPLINARY_ACTION和PERSONAL_INFO表的信息的许多场景。

假设您的任务是创建一份报告,列出针对薪水超过40,000美元的所有员工采取的纪律处分措施。 在这种情况下使用JOIN操作很简单。 我们可以使用以下命令检索这些信息:

SELECT personal_info.first_name,personal_info.last_name,disciplinary_action.comments FROM personal_info,disciplinary_action WHERE personal_info.employee_id = disciplinary_action.employee_id AND personal_info.salary> 40000

代码指定了我们想要在FROM子句中加入的两个表,然后在WHERE子句中包含一条语句,以将结果限制为具有匹配员工ID并符合我们的薪水大于$ 40,000的条件的记录。