1.5**关系数据库SQL语言 **
SQL数据库的数据体系结构
SQL数据库的数据体系结构基本上也是3级结构,但术语与传统关系模型术语不同。SQL中,关系模型称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”。
SQL语言的组成
一个SQL数据库是表的汇集,它用一个或多个SQL模式定义。
一个SQL表由行集构成,一行是列的序列,每列对应一个数据项。
一个表或者是一个基本表,或者是一个视图。基本表是实际存储在数据库的表,视图是由若干基本表或其他视图构成的表的定义。
SQL包括了所有对数据库的操作,主要有4个部分:数据定义(SQL DDL)、数据操纵(SQL DML)、访问数据控制、嵌入式SQL语言的规定。
SQL DDL主要是定义基本表、视图、索引3个部分:
◆ 基本表的定义、修改、撤销
基本表的定义可用“CREATE TABLE”语句实现,增加属性可以用“ALTER…ADD…”语句,删除属性可以用“ALTER…DROP…”语句;删除已存在的表可用“DROP TABLE…”语句。
◆视图的定义和撤销
视图的定义可以用CREATE VIEW语句实现。视图的撤消可以用DROP VIEW语句实现。
◆索引的定义和撤销
索引的定义可以用CREATE ,用DROP撤销。
◆SQL DML 数据查询语句
SQL的查询语句只有SELECT语句。
◆SELECT查询语句
在关系代数中最常用的式子是“投影选择联接表达式”:πA1,A2,,…An(δF(R1×R2×…×Rm)),这里R1,R2,…Rm为基本表,F是公式,A1,A2,…An为属性。针对这个表达式,SQL 设计了SELECT句型:
SELCET A1,A2,…An
FROM R1,R2,…Rm
WHERE F
在WHERE子句的条件表达式F中可出现下列操作符和运算特点:算术比较符、逻辑运算符、集合运算符、集合成员资格运算符、谓词和聚合函数。
◆库函数
COUNT(*) 计算元组的个数
COUNT(列名) 对某一列中的值计算个数。
SUM(列名) 求某一列值的总和
AVG(列名) 求某一列值的平均值
MAX(列名) 求某一列值中的最大值
MIN(列名) 求某一列值中的最小值
◆SELECT语句完整的句法
SELECT 目标表的列名或列表达式序列
FROM 基本表或(和)视图序列
[WHERE 行条件表达式
[GROUT BY 列名序列
[HAVING 组条件表达式
[DRDER BY 列名[序]…
前两个句子是必不可少的,后面的4个句子可以缺省。整个语句的语义如下:从FROM子句中列出的表,选取满足WHERE子句中给出的行条件表达式的元组,然后按GROUP子句(分组子句)中指定列的值分组,再提取满足HAVING子句中组条件表达式的那些组,按SELECT子句给出的列名或列表达式求值输出。ORDER子句(排序子句)是对输出的目标表进行排序,可附加说明ASC(升序)或DESC(降序)
◆SQL DML的数据更新语句
INSERT 插入语句
DELETE 删除语句
UPDATE 修改语句
◆SQL的访问控制
SQL的访问控制功能主要是指对用户访问数据的控制。有授权语句和回收语句。
授权语句的格式如下:
GRANT 权限表
ON 表名
TO 用户名表
[WITH GRANT OPTION]
该语句把表的使用权授予指定的若干用户。在有WITH GRANT OPTION短语时,被授权的用户还可将获得的权限再转授给其他用户。权限表中的权限可以有:SELECT, INSERT, DELETE, UPDATE, EXPAND, INDEX, ALL PRIVILEGES。
回收语句格式:
REVOKE 权限表
ON 表名
FROM 用户名表
该语句把已授给指定用户的在指定表上的使用权限收回。
◆嵌入式SQL
由于SQL是基于关系模型的语言,而高级语言是基于整数、实数、字符、记录、数组等的数据类型,因此两者之间有很大的区别,称为有缝隙。为了能在宿主语言的程序中嵌入SQL语句,有一些规定:
I.在程序中要区分SQL语句和宿主语言的语句;
II.在嵌入的SQL语句中可以引用宿主语言的程序变量,但主语言的语句不能引用数据库中的各种变量(属性名、关系名),SQL的集合处理方式与宿主语言的单记录处理方式之间的协调用游标技术实现。
1.6 数据库设计 **
数据库应用系统的开发是一项软件工程,但又有自身的特点,所以称为“数据库工程”。数据库系统从开始规划、设计、实现、维护到最后被新的系统取代而停止使用的整个期间,称为数据库系统生存期。此生存期可分为7个阶段:规划、需求分析、概念设计、逻辑设计、物理设计、实现、运行和维护。
按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下六个阶段:
◆需求分析阶段
需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。
◆概念结构设计阶段
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。
◆逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。
◆数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
◆数据库实施阶段
运用DBMS提供的数据语言(例如SQL)及其宿主语言(例如C),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
◆数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
设计一个完善的数据库应用系统不可能一蹴而就,它往往是上述六个阶段的不断反复。