第三章 关系数据库标准语言SQL
SQL集数据查询,数据操纵,数据定义和数据控制功能于一体,主要特点包括:
综合统一(各个过程各个部分的语言风格统一)
高度非过程化
面向集合的操作方式
以同一种语法结构提供多种使用方式(既可独立使用,也可以嵌入到高级语言如C程序中)
语言简洁,易学易用(完成核心功能只用了9个动词)
SQL通常不提供修改模式定义、修改视图定义和修改索引定义的操作。用户如果想修改这些对象,只能将它们先删除掉,然后再重建。
SQL同样支持数据库三级模式结构(外模式,模式和内模式,模式和内模式为唯一,外模式可不唯一)
定义模式
基本表的定义、删除与修改
关系模型中的一个重要概念是域,每一个属性来自一个域,它的取值必须是域中的值。在SQL中域的概念用数据类型来实现。
每一个基本表都属于某一个模式,一个模式包含多个基本表。定义基本表时定义它所属的模式共有三种方法:
若用户创建基本表(其他数据库对象也相同)时没有指定模式,系统根据搜索路径来确定该对象所属的模式。
SHOW search_path; 此语句可以显示当前搜索路径。
搜索路径的当前默认值是:$user. PUBLIC. 含义为首先搜索与用户名相同的模式名,若不存在,则使用PUBLIC模式。
修改基本表
删除基本表
索引的建立与删除
建立索引是加快查询速度de有效手段。用户可以根据应用环境的需要,在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。
数据查询
SQL提供了SELECT语句进行数据库的查询,其一般格式为:
SELECT既可以完成简单的单表查询(仅涉及一个表的查询),也可以完成复杂的连接查询和嵌套查询。
最后形成一个结果关系作为输出。
取消取值重复的行使用DISTINCT
连接查询:一个查询同时涉及两个以上的表,则称之为连接查询。
自身连接:连接操作不仅可以在两个表之间进行,也可以是一个表与其自己进行连接,称为表的自身连接。
复合条件连接
WHERE子句中有多个连接条件。
嵌套查询
相关子查询是循环查询,就是先查询一个父查询元组,传入子查询,再进行父查询,然后再进行下一个元组(就是子查询的数值需要父查询传入);而不相关子查询是一次性检查完子查询,再进行父查询。
就是属性列名和值一一对应。
视图的作用:
视图能够简化用户的操作
视图使用户能以多种角度看待同一数据
视图对重构数据库提供了一定程度的逻辑独立性
视图能够对机密数据提供安全保护
适当的利用视图可以更清晰的表达查询