前言笔记:第3章 关系数据库标准语言SQL
- **SQL的定义**:
- 关系数据库的标准和通用语言。
- 功能强大,不仅限于查询。
- 功能覆盖:数据库模式创建、数据插入/修改、数据库安全性与完整性定义及控制等。
- **本章焦点**:
- 详解SQL的核心功能。
- 深入探讨关系数据库的基本概念。
- **SQL的普及与重要性**:
- 成为国际标准后,广大数据库厂商推出与SQL相关的软件或接口。
- SQL作为各大数据库的共通数据存取语言和标准接口,为不同数据库间的互操作提供了基础。
- SQL被视为数据库领域的主导语言,有其重大意义。确立其为标准及其后续发展被称为一场“革命”。
笔记:3.1.1 SQL的产生与发展
- **起源**:
- 1974年,由Boyce和Chamberlin提出。
- 初始名为Sequel。
- 在IBM的System R上首次实现。
- **接受度与普及**:
- 由于其简易性与功能丰富,受到广大用户与计算机行业的欢迎。
- 数据库厂商广泛采纳。
- **标准化**:
- 1986年10月,被ANSI的数据库委员会X3H2批准为美国关系数据库标准语言,简称SQL-86。
- 1987年,ISO也认可了SQL作为标准。
- **SQL标准的进化**:
- 自公布起,随技术发展而持续丰富。
- 从SQL/86至SQL2011,内容逐渐增多,结构也日益复杂。
- 如,SQL/92增加了调用接口与永久存储模块;SQL99进一步扩展,涵盖多个部分如框架、宿主语言绑定等。
- **数据库系统对SQL的支持**:
- 无系统全面支持所有SQL标准。
- 大多数支持SQL/92主要功能及SQL99、SQL2003的部分新概念。
- 许多软件厂商对SQL命令集做了扩展与修改,增加了非标准功能。
【备注】:在使用特定数据库时,建议查阅其用户手册,了解其对SQL的具体支持。
笔记:3.1.2 SQL的特点
- **综合统一性**:
- SQL整合了数据定义、操纵、控制的功能,拥有统一的语言风格。
- 可独立完成数据库生命周期的所有活动:定义、查询、更新、重构、安全性、完整性、事务控制等。
- 提供了便于数据库应用开发的环境,允许随时修改模式,而不影响数据库运行。
- 关系模型中实体与实体间的联系都是通过关系表示,导致数据操作的统一性。
- **高度非过程化**:
- SQL为非过程化语言,用户只需指明“做什么”而不是“怎么做”。
- 无需了解存取路径,系统自动完成操作过程。
- **面向集合的操作方式**:
- SQL采用集合操作方式,与非关系数据模型的面向记录方式对比,SQL允许一次性操作多个元组。
- **统一的语法结构**:
- SQL既可以独立使用也可嵌入高级语言中,但在两种方式下,语法结构保持一致。
- 这种统一性提供了灵活性和方便性。
- **简洁性与易用性**:
- 虽然功能强大,但SQL设计简洁,核心功能仅需9个动词。
- 接近英语,易于学习和使用。
【核心动词】:
- **数据查询**: SELECT
- **数据定义**: CREATE, DROP, ALTER
- **数据操纵**: INSERT, UPDATE, DELETE
- **数据控制**: GRANT, REVOKE
这些特点使SQL成为业界所接受的国际标准,并且得到了广泛的应用。
笔记:3.1.3 SQL的基本概念
- **关系数据库的三级模式结构**:
- **外模式**:包含若干视图和部分基本表。
- **模式**:由多个基本表组成。
- **内模式**:由若干存储文件组成。
- **基本表**:
- 独立存在的表,每个关系对应一个基本表。
- 一个或多个基本表对应一个存储文件。
- 表可能带有若干索引,存储在存储文件中。
- **存储文件**:
- 组成关系数据库的内模式。
- 物理结构对用户是隐蔽的。
- **视图(View)**:
- 从一个或多个基本表导出的表。
- 不独立存储,只存放定义,不存放对应数据。
- 被视为虚表,因为实际数据仍存于基本表中。
- 用户可在视图上再定义视图,视图与基本表在概念上等同。
- **关于SQL实现**:
- 这里主要介绍SQL的核心概念和功能,许多语法细节被省略。
- 各关系数据库管理系统的SQL实现有所不同,标准符合度通常在85%以上。
- 使用特定的关系数据库管理系统时,应参考相关手册。
总结:本节概述了SQL在关系数据库中的基本概念,包括基本表、视图和存储文件的定义和功能,以及它们如何在三级模式结构中互相关联。
**SQL概述总结**:
**重点**:
1. **定义**:SQL是关系数据库的标准语言,不仅用于查询,还包括数据库模式创建、数据插入/修改、安全性与完整性定义等功能。
2. **普及与重要性**:自成为国际标准后,SQL已成为各大数据库的共通数据存取语言和标准接口,促进了不同数据库间的互操作。
3. **发展**:从1974年的Sequel到现今的SQL标准,它经历了多次版本更新与功能扩展,如SQL/86、SQL/92、SQL99、SQL2003等。
4. **结构**:支持关系数据库的三级模式结构,包括外模式、模式和内模式。
**难点**:
1. **高度非过程化**:与传统的过程化编程语言不同,SQL用户只需要指明“做什么”而不是“怎么做”,这可能对初学者来说不太直观。
2. **视图的概念**:视图是从一个或几个基本表导出的表,是虚拟的,不直接存储数据,这与直观的数据存储概念有所不同。
**易错点**:
1. **误解SQL的功能**:很多初学者可能会认为SQL仅用于查询,而忽略了其其他强大功能。
2. **视图与基本表的混淆**:初学者可能会误以为视图和基本表是完全相同的,而不理解视图的虚拟性。
**使用技巧**:
1. **实践为主**:理解SQL的最佳方法是通过大量实践。创建自己的数据库,尝试不同的查询和命令。
2. **使用工具**:利用现有的SQL开发工具,如SQL Server Management Studio、MySQL Workbench等,这些工具通常提供语法高亮、错误提示等功能,帮助用户更高效地编写SQL。
3. **持续学习**:随着SQL标准的发展,新的功能和命令会被添加。定期查看更新和学习新的技巧是很重要的。
4. **查询手册**:当使用特定的数据库管理系统时,尤其是在考虑性能优化时,查阅相关的官方文档或手册是很有帮助的。
综上所述,SQL是一个功能强大且广泛应用的数据库语言。通过理解其核心概念、注意常见难点和易错点,并应用有效的使用技巧,可以更有效地利用SQL进行数据操作。