结构化查询语言是现代数据库体系结构的基本构建块之一。 SQL定义了用于在所有主要平台上创建和操作关系数据库的方法。乍一看,这种语言可能看起来令人生畏和复杂,但并不是那么困难。
关于SQL
SQL的正确发音是数据库社区中一个有争议的问题。在其SQL标准中,美国国家标准协会宣布官方发音为“es queue el”。然而,许多数据库专业人士已经采取了俚语发音“续集”。这是你的选择。
SQL有很多种。 Oracle数据库使用其专有的PL / SQL。 Microsoft SQL Server使用Transact-SQL。所有变体都基于行业标准ANSI SQL。本简介使用符合ANSI标准的SQL命令,可以在任何现代关系数据库系统上运行。
DDL和DML
SQL命令可以分为两种主要的子语言。数据定义语言(DDL)包含用于创建和销毁数据库和数据库对象的命令。使用DDL定义数据库结构后,数据库管理员和用户可以使用数据操作语言(DML)来插入,检索和修改其中包含的数据。
数据定义语言命令
数据定义语言用于创建和销毁数据库和数据库对象。这些命令主要由数据库管理员在数据库项目的设置和删除阶段使用。以下是四个基本DDL命令的结构和用法:
创建。在计算机上安装数据库管理系统允许您创建和管理许多独立的数据库。例如,您可能希望维护销售部门的客户联系人数据库和人力资源部门的人事数据库。 CREATE命令用于在您的平台上建立每个数据库。例如,命令:
创建DATABASE员工
在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 ADD工资钱无效
此示例将新属性添加到personal_info表 - 员工的工资。 “money”参数指定员工的工资使用美元和美分格式存储。最后,“null”关键字告诉数据库,该字段可以包含任何给定员工的值。 下降。数据定义语言的最终命令DROP允许我们从DBMS中删除整个数据库对象。例如,如果我们要永久删除我们创建的personal_info表,我们将使用以下命令: DROP TABLE personal_info
同样,下面的命令将用于删除整个员工数据库: DROP DATABASE员工
请谨慎使用此命令。 DROP命令从数据库中删除整个数据结构。如果要删除单个记录,请使用数据操作语言的DELETE命令。 数据操作语言(DML)用于检索,插入和修改数据库信息。在数据库的例行操作期间,所有数据库用户都使用这些命令。 插入。SQL中的INSERT命令用于将记录添加到现有表中。回到上一节中的personal_info示例,假设我们的HR部门需要将新员工添加到其数据库中。您可以使用与此类似的命令: INSERT INTO personal_info值( '巴特', '辛普森',12345,$ 45000)
请注意,为记录指定了四个值。它们按照定义的顺序对应于表属性:first_name,last_name,employee_id和salary。 选择。SELECT命令是SQL中最常用的命令。它允许数据库用户从操作数据库中检索他们想要的特定信息。再看一些示例,再次使用员工数据库中的personal_info表。 下面显示的命令检索personal_info表中包含的所有信息。请注意,星号在SQL中用作通配符。这实际上意味着“从personal_info表中选择所有内容”。 选择 *来自personal_info
或者,用户可能希望限制从数据库中检索的属性。例如,人力资源部门可能需要公司中所有员工的姓氏列表。以下SQL命令仅检索该信息: SELECT last_name来自personal_info
WHERE子句可用于将检索到的记录限制为满足指定条件的记录。首席执行官可能有兴趣审查所有高薪雇员的人事记录。以下命令检索personal_info中包含的工资值大于$ 50,000的记录的所有数据: 选择 *来自personal_info在哪里工资> $ 50000
UPDATE。UPDATE命令可用于修改表中包含的信息,无论是批量还是单独。假设公司每年为所有员工提供3%的工资增长。可以使用以下SQL命令将其快速应用于存储在数据库中的所有员工: 更新personal_infoSET薪水=薪水* 1.03
当新员工Bart Simpson表现出超越职责的表现时,管理层希望通过5000美元加薪来表彰他的出色成就。 WHERE子句可用于为此加注单独输出Bart: 更新personal_infoSET薪水=工资+ $ 5000WHERE employee_id = 12345
删除。最后,我们来看看DELETE命令。您会发现此命令的语法类似于其他DML命令的语法。不幸的是,我们最新的企业盈利报告并未完全达到预期,而巴特已被解雇。带有WHERE子句的DELETE命令可用于从personal_info表中删除其记录: 从personal_info删除WHERE employee_id = 12345 现在您已经学习了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来自personal_info,disciplinary_actionWHERE personal_info.employee_id = disciplinary_action.employee_idAND personal_info.salary> 40000
代码指定我们要在FROM子句中加入的两个表,然后在WHERE子句中包含一个语句,将结果限制为具有匹配的员工ID并满足我们的薪水大于$ 40,000的条件的记录。 数据操作语言命令
JOIN的