sql的基础知识

结构化查询语言(SQL)是现代数据库体系结构的基本构件之一。SQL定义了用于在所有主要平台上创建和操作关系数据库的方法。乍一看,这门语言可能看起来很吓人,也很复杂,但并不那么难。...

结构化查询语言(SQL)是现代数据库体系结构的基本构件之一。SQL定义了用于在所有主要平台上创建和操作关系数据库的方法。乍一看,这门语言可能看起来很吓人,也很复杂,但并不那么难。

关于sql

SQL的正确发音在数据库社区中是一个有争议的问题。美国国家标准协会(American National Standards Institute)在其SQL标准中宣布,官方发音为“es queue el”。然而,许多数据库专业人士已经习惯了俚语发音“sequel”。就像GIF的发音一样,没有正确的答案。

SQL有多种风格。Oracle数据库使用其专有的PL/SQL。Microsoft SQL Server使用Transact-SQL。所有变化都基于行业标准ANSI SQL。

本简介使用符合ANSI标准的SQL命令,可用于任何现代关系数据库系统。

ddl和dml

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

SQL支持第三种类型的语法,称为数据控制语言。DCL管理对数据库中对象的安全访问。例如,DCL脚本授予或撤销特定用户帐户对数据库的一个或多个定义区域内的表进行读写的权利。在大多数受管理的多用户环境中,数据库管理员通常执行DCL脚本。

数据定义语言命令

数据定义语言用于创建和销毁数据库和数据库对象。这些命令主要由数据库管理员在数据库项目的设置和删除阶段使用。DDL围绕四个主要命令create、use、alter和drop展开。

创造

create命令在您的平台上建立数据库、表或查询。例如,命令:

CREATE DATABASE employees;

在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命令指定活动数据库。例如,如果您当前在销售数据库中工作,并且希望发出一些会影响员工数据库的命令,请在这些命令之前使用以下SQL命令:

USE employees;

在发出处理数据的SQL命令之前,请仔细检查正在使用的数据库。

改变

在数据库中创建表后,通过alter命令修改其定义,该命令将更改表的结构,而无需删除和重新创建表。请查看以下命令:

ALTER TABLE personal_info ADD salary money null;

此示例向“个人信息”表中添加了一个新属性“员工薪资”。money参数指定员工的工资使用美元和美分格式存储。最后,null关键字告诉数据库该字段不包含任何给定员工的值是可以的。

数据定义语言的最后一个命令drop从DBMS中删除整个数据库对象。例如,要永久删除我们创建的personal_info表,请使用以下命令:

DROP TABLE personal_info;

类似地,下面的命令将用于删除整个员工数据库:

DROP DATABASE employees;

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

数据操作语言命令

数据操作语言用于检索、插入和修改数据库信息。这些DML命令提供了典型的框架,用于在数据库中进行例行交互。

插入

insert命令将记录添加到现有表中。回到上一节的personal_info示例,假设我们的人力资源部门需要向其数据库中添加一名新员工。使用与此类似的命令:

INSERT INTO personal_infovalues('bart','simpson',12345,$45000);

请注意,为记录指定了四个值。这些属性按定义顺序对应于表属性:名字、姓氏、员工id和薪水。

选择

select命令是SQL中最常用的命令。它从操作数据库中检索特定信息。再看几个例子,再次使用employee数据库中的personal_info表。

下面显示的命令检索personal_info表中包含的所有信息。星号是SQL中的通配符。

SELECT *FROM personal_info;

或者,通过指定所选内容来限制从数据库检索的属性。例如,人力资源部可能要求列出公司所有员工的姓氏。以下SQL命令将仅检索该信息:

SELECT last_nameFROM personal_info;

where子句将检索的记录限制为满足指定条件的记录。首席执行官可能有兴趣审查所有高薪员工的人事记录。以下命令检索工资值大于50000美元的记录的“个人信息”中包含的所有数据:

SELECT *FROM personal_infoWHERE salary > $50000;

更新

update命令可以批量或单独修改表中包含的信息。假设公司每年给所有员工工资增加3%的生活费用。以下SQL命令将此通气应用于数据库中存储的所有员工:

UPDATE personal_infoSET salary = salary * 1.03;

当新员工巴特·辛普森(Bart Simpson)表现出超越职责范围的表现时,管理层希望通过5000美元的加薪来表彰他的卓越成就。WHERE条款为此次加薪挑选了Bart:

UPDATE personal_infoSET salary = salary + 5000WHERE employee_id = 12345;

删除

最后,让我们看一看删除命令。您会发现此命令的语法与其他DML命令的语法相似。带有where子句的DELETE命令可从表中删除记录:

DELETE FROM personal_infoWHERE employee_id = 12345;

DML也支持聚合字段。在select语句中,sum和count等数学运算符汇总查询中的数据。例如,查询:

从个人信息中选择计数(*);

统计表中的记录数。

数据库连接

join语句将多个表中的数据组合在一起,以高效地处理大量数据。这些语句是数据库的真正功能所在。

要探索如何使用基本联接操作组合两个表中的数据,请继续使用personal_info表的示例,并向混合添加一个附加表。假设您有一个名为“纪律处分”的表,该表是使用以下语句创建的:

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

此表包含公司员工纪律处分的结果。除员工编号外,它不包含任何关于员工的信息。

假设您的任务是创建一份报告,列出对所有薪酬超过40000美元的员工所采取的纪律处分。在本例中,加入操作的使用非常简单。使用以下命令检索此信息:

SELECT personal_info.first_name, personal_info.last_name, disciplinary_action.commentsFROM personal_info INNER JOIN disciplinary_action ON personal_info.employee_id = disciplinary_action.employee_idWHERE personal_info.salary > 40000;

连接类型

加入有几种口味。在SQL语句中,第一个表(通常称为表A或左表)以位置感知的方式连接到第二个表(通常称为表B或右表)。因此,如果更改join语句中表的顺序,操作的结果将不同。主要连接类型包括:

  • 内部联接:仅匹配on条件与两个表中的相同记录匹配的记录。
  • 外部联接:仅匹配两个表中排除on条件中标识的结果的记录。
  • 右联接:匹配表B中的所有记录以及表A中与on条件匹配的记录。
  • 左联接:匹配表A中的所有记录以及表B中与on条件匹配的记录。
  • 交叉连接:匹配所有记录,就好像表是相同的一样。这个过程产生一种叫做笛卡尔积的东西。通常,交叉联接是不受欢迎的,因为它们分别匹配表A的每一行和表B的每一行。因此,如果表A提供了5条记录,而表B提供了9条记录,那么交叉连接查询将提供45个结果行。

  • 发表于 2021-09-08 04:49
  • 阅读 ( 80 )
  • 分类:数学

你可能感兴趣的文章

使用sql连接字符串的巧妙方法

... 既然您已经了解了基础知识,那么让我们来看看一些深入的示例,以及一些常见的陷阱。 ...

  • 发布于 2021-03-13 07:05
  • 阅读 ( 248 )

通过这个完整的堆栈开发课程,在家学习编码

...何通过可视化对象来思考代码。您将学习面向对象编程的基础知识及其优点。 通过构建应用程序来掌握C#和SQL:学习如何结合使用SQL和C#来构建一个完整的堆栈应用程序。您还将学习如何在.NET中使用Dapper来简化SQL...

  • 发布于 2021-03-29 09:01
  • 阅读 ( 249 )

从codecademy免费学习sql三小时课程

...费的学习SQL交互课程,它将教您表、查询、聚合函数等的基础知识。codcademy说,SQL是Codecademy开始以来最需要的语言之一,通过与一个SQL分析工具perioscope的协作,这门课程成为可能。与其他Codecademy课程一样,您可以通过交互式教...

  • 发布于 2021-05-18 09:03
  • 阅读 ( 116 )

sql语句(sql)和hql公司(hql)的区别

...以对象的形式表示SQL查询及其属性,这是面向对象编程的基础。 查询结果不是简单的数据,而是可以通过编程方式修改的对象的组合。HQL甚至返回子对象作为查询结果的一部分。 它包含一些SQL开发人员不知道的概念,如分页、...

  • 发布于 2021-06-23 19:43
  • 阅读 ( 321 )

python(python)和sql语句(sql)的区别

...面提供了强大的功能和灵活性。脚本语言是万维网技术的基础,微软office等办公软件套件严重依赖脚本语言。早期的脚本语言比较简单,通常构建在支持系统编程的语言之上。Python是一种成熟的编程语言,它使实验变得容易。解...

  • 发布于 2021-06-26 03:38
  • 阅读 ( 1104 )

hadoop软件(hadoop)和sql语句(sql)的区别

...Hadoop好得多。   hadoop与sql的区别 工具 –Hadoop是Apache软件基础项目和一个开放源码分布式处理软件框架,用于存储和处理大量数据涌入,并在商品硬件集群上运行应用程序。Hadoop提供了一个框架,允许处理大量数据,以便提供轻...

  • 发布于 2021-06-26 11:15
  • 阅读 ( 616 )

sql语句(sql)和mysql数据库(mysql)的区别

...在关系数据库中存储、管理和检索数据的语言。SQL语言的基础是关系代数。 SQL有三种类型:数据定义语言(DDL)、数据操作语言(DML)和数据控制语言(DCL)。create、alter、drop是DDL命令create“帮助构建新的数据库和表”alter'帮...

  • 发布于 2021-06-30 18:44
  • 阅读 ( 435 )

实例(instance)和sql server中的数据库(database in sql server)的区别

...些定义包含了SQLServer中实例和数据库之间的主要区别。 基础 实例是SQL Server的安装,而数据库是数据的集合。 数量 SQLServer中实例和数据库的另一个区别是,一台计算机中可以有多个实例,而一个实例中可以有一个或多个数据库...

  • 发布于 2021-07-01 06:19
  • 阅读 ( 999 )

sql语句(sql)和tsql公司(tsql)的区别

...,SQL代表结构化查询语言,TSQL代表事务结构查询语言。 基础 SQL是管理RDBMS中数据的查询语言,而TSQL是在mssqlserver上使用的SQL的扩展。 开发商 IBM开发了SQL,而Microsoft开发了TSQL。这是SQL和TSQL之间的另一个区别。 嵌入 另外,SQL和T...

  • 发布于 2021-07-01 14:22
  • 阅读 ( 573 )

sql语句(sql)和mysql数据库(mysql)的区别

...改进服务。为了能够实现sql,用户需要有关命令的经验和知识。然而,mysql软件需要下载并安装它。sql提供了操作数据的命令,mysql提供了应用sql和处理数据的空间。结论SQL和MySQL结合在一起可以有效地处理数据库。SQL提供了对数...

  • 发布于 2021-07-07 07:01
  • 阅读 ( 260 )
nhj91559
nhj91559

0 篇文章