背景
结构化查询语句(structured query language)是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。其功能不仅仅是查询,而是包括数据模式创建、数据库数据的插入于修改、数据库安全性完整性定义与控制等一系列功能。从1974年提出(最初叫sequel),随着数据库技术的发展而不断地发展、不断丰富,目前没有一个数据库能够支持SQL标准的所有概念和特性,同时许多软件厂商对SQL基本命令集还进行了不同程度的扩充和修改,又可以支持标准以外一些功能特性。
一、SQL概述
特点
- 综合统一
- 高度非过程化:使用SQL进行数据操作时,只要提出“做什么”,而无须指明“怎么做”,因此无须了解存取路径,由系统自动完成。
- 面向集合的操作方式
- 以同一种语法结构提供多种使用方式:既是独立的语言,又是嵌入式语言
- 语言简洁,易学易用
基本概念
支持SQL的关系数据库管理系统同样支持关系数据库三级模式结构,其中外模式包括视图和部分基本表,模式包括若干基本表,内模式包括若干存储文件。
视图是从一个或几个基本表导出的表,他本是不独立存储在数据库中,即数据库只存放视图的定义而不存放对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表,用户可以在视图上再定义视图。
二、数据定义
SQL的数据定义功能包括:模式定义、表定义、视图和索引的定义,一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。
模式的定义和删除
- 定义:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>,例如CREATE SCHEMA “S-T” AUTHORIZATION WANG
- 删除:DROP SCHEMA <模式名> <CASCADE|RESTRICT>,其中CASCADE代表级联,RESTRICT限制
表的定义与删除
- CREATE TABLE <表名> (列名,数据类型,[列级完整性约束条件];列名,数据类型,[列级完整性约束条件];....)
- 数据类型:char, varchar,clob,int...
- 修改表:ALTER TABLE <表名> [ADD [column] <新列名> 数据类型,[列级完整性约束条件]], [DROP [column] <列名> <CASCADE|RESTRICT>], [ALTER COLUMN <列名> <数据类型>]
- 删除表:DROP <表名> [CASCADE|RESTRICT]
索引的建立与删除
- 建立:CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名>(列名,...),其中UNIQUE每个索引值只对应唯一的记录,CLUSTER为聚簇索引
- 修改:ALTER INDEX <old索引名> RENAME TO <new索引名>
- 删除:DROP INDEX <索引名>
数据字典
数据字典就是系统内部的一组系统表,记录了数据库中所有的定义信息,包括以上定义、用户对数据库的操作权限、统计信息等,在修改是实际上就是在更新数据字典的相应信息
三、数据查询
单表查询、连接查询、嵌套查询、聚集函数查询等,具体内容略
四、数据更新
插入数据(INSERT)、修改数据(UPDATE)、删除数据(DELETE)
五、视图
定义视图
- CREATE VIEW <视图名> [列名...] AS <子查询> [WITH CHECK OPTION], 其中WITH CHECK OPTION表示对视图进行修改、插入和删除操作时要保证满足视图定义中的谓语条件(<子查询>)
- 行列子集视图:从单个表导出的,只是去了几个列,但保留了主码的视图
- 删除视图: DROP VIEW <视图名> [CASCADE],集联删除其他由该视图导出的视图
查询视图
略
更新视图
在关系数据库中,并不是所有的视图都是可以更新的,有的对视图的更新无法转换成对基本表的更新。一般的行列子集视图是可以更新的。
视图的作用
- 简化用户的操作
- 使用户能以多种角度看待同一数据
- 视图对重构数据库提供一定程度的逻辑独立性
- 视图能够对机密数据提供安全保护
- 适当利用视图可以更清晰地表达查询