什么是 SQL?
介绍
我们经常使用书面语言向其他人传达指令。如果程序员想让计算机做某事,他们会用某种语言编写代码,比如 Java、C#、HTML 或其他语言。如果要向数据库发出指令,可以使用 SQL。结构化查询语言 (SQL) 是一种用于与数据库通信的语言。它最常与关系数据库管理系统 (RDBMS) 相关联,例如 Oracle、MySQL、Microsoft SQL Server、PostgreSQL 和 DB2 - 仅举几例。SQL 允许与数据库交互以访问其功能、创建数据库对象、管理用户、操作和报告数据库中的数据。还有许多非关系数据库,如 H-Store、Hadoop、Cassandra、MongoDB,它们通常会使用 SQL 或类似 SQL 的替代方案来允许与数据库通信。具体来说,这些数据库被称为 NoSQL(不仅仅是 SQL)数据库。
非常简短的历史
20 世纪 70 年代,IBM 公司开始创建自己的关系数据库。作为这项工作的一部分,Donald D. Chamberlin 和 Raymond F. Boyce 撰写了一篇论文《SEQUEL:一种结构化英语查询语言》,介绍了用于与关系数据库通信的语言。1977 年,为了避免可能的国际商标侵权,SEQUEL 改为 SQL,即结构化查询语言的缩写。这引发了一场关于 SQL 及其发音的非技术性争论。您应该像“sequel”一样发音它,还是用单个字母 SQL(“ess-que-ell”)来发音它?实际上这两种方式都可以接受,但您会发现有人会对此争论不休。
为什么要学习 SQL?
我们生活在所谓的信息时代。我们已经成为了一个知识型社会。试想一下,我们中有多少人通过 Google 之类的搜索引擎来查找信息。这不仅仅是个人知识。例如,企业使用从以前的销售中存储的信息以及其市场趋势来预测销售。有些公司会记录网站访问者的选择和偏好,以个性化网站上显示的内容。根据2017 年 5 月的《经济学人》报道,数据正在成为“世界上最有价值的资源”。公司使用的数据通常存储在数据库中。可能有精美的前端 GUI 将其显示为图表和图形,但程序提取数据的方式是使用 SQL。
SQL 版本
自 1989 年美国国家标准协会 (ANSI) 发布 ANSI SQL 规范以及 1992 年国际标准化组织 (ISO) 采用 ANSI SQL 标准以来,RDBMS(和非 RDBMS)系统的数量大幅增长。我们将在未来将 ANSI SQL 规范语言标准称为“标准 SQL”。与其他语言一样,标准 SQL 会随着时间的推移而发展和变化,以符合数据库的新功能和可用特性。如果您感兴趣,ISO/IEC 9075 标准:“信息技术 - 数据库语言 - SQL”可在ANSI 网上商店公开获取。如果所有供应商都严格使用这些标准,那么 SQL 代码就可以在数据库系统之间移植而无需修改。问题是大多数供应商的 SQL 实现并不是 100% 兼容的。供应商可能不会完全遵循标准,原因有很多,包括但不限于:
- 标准中尚未指定的新功能。
- 标准内的功能尚未在数据库软件中实现。
- 新的 SQL 标准可能与供应商数据库的先前行为相冲突。
- 供应商几乎没有动力去达到标准,这会让用户转而使用竞争对手的产品。
一些比较流行的 SQL 语言包括:
- Microsoft SQL Server 使用的 T-SQL (Transact-SQL)
- Oracle 使用的 PL/SQL(过程语言/SQL)
- SPL(存储过程语言)使用 Teradata
- PostgreSQL 使用的 PL/pgSQL(过程语言/Postgre 结构化 SQL)
SQL 的子语言
使用标准 SQL 与数据库通信的指令属于不同的子语言。这些子语言可能有不同的称呼,具体取决于供应商及其自己的 SQL 实现。您最常看到的两个主要类别是:
- 数据定义语言 (DDL)
- 数据操作语言 (DML)
- 数据查询语言 (DQL)
- 数据控制语言 (DCL)
- 事务控制语句
- 会话控制语句
- 数据库管理语句
- 准备好的/过程的/嵌入式的 SQL 语句
- 连接语句
- 动态 SQL 语句
- 其他类别或子语言通常取决于供应商如何对其进行分类
本文的其余部分将重点介绍 Oracle SQL 语言和语句类别。
数据定义语言 (DDL)
DDL 语句允许用户定义和管理数据库内的对象。任务可能包括:
- 创建、修改和删除模式(用户)
- 创建、修改和删除模式对象(表、视图、序列、索引、同义词)
- 分析表、索引或集群的信息
- 建立审计选项
- 授予和撤销权限和角色(某些供应商将其视为 DCL 语句。)
启动 DDL 语句的关键词的一些示例包括:
- ALTER(不包括ALTER SESSION或ALTER SYSTEM)
- 分析
- 相关统计
- 审计
- 创造
- 降低
- 授予
- 无审计
- TRUNCATE(这有点违反直觉,经常被误认为是 DML 语句)
数据操作语言 (DML)
使用数据操作语言 (DML) 语句来操作数据库中的数据。Oracle 还将查询数据 ( SELECT ) 的语句归类为 DML,而其他供应商可能将其称为数据查询语言 (DQL) 语句。DML 语句开头的关键字的一些示例包括:
- 称呼
- 删除
- 插入
- 合并
- 选择
- 更新
交易控制
在 Oracle 中,DML 语句不会自动保存更改。Oracle 提供了管理 DML 语句所做更改的语句。事务控制语句的起始关键字为:
- 犯罪
- 回滚
- 保存点
- 设置交易
- 设置约束
会话控制
用户可以在自己的 SQL 会话中设置一些属性。这些属性使用以关键字开头的语句进行设置:
- 修改会话
- 设置角色
系统控制
除了用户会话属性之外,还有一些可以为整个 Oracle 数据库实例动态设置的属性,这些属性是使用ALTER SYSTEM语句设置的。
概括
在本指南中,我们简要介绍了 SQL 的历史和内容。SQL 语言有一个标准,但大多数供应商都有自己的风格。如果您学习了 ANSI SQL,那么您将具备支持任何至少部分符合 ANSI SQL 标准的数据库的基本需求。在这个数据成为热门商品的时代,学习与数据库交互可能是处理存储在数据库中的数据的职业生涯中迈出的一大步。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~