ehxz 发表于 2007-10-16 08:56:45

关系数据库SQL语言

1. SQL数据库的数据体系结构
    SQL数据库的数据体系结构基本上也是3级结构,但术语与传统关系模型术语不同。SQL中,关系模型称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”。

2. SQL语言的组成
    一个SQL数据库是表的汇集,它用一个或多个SQL模式定义。

    一个SQL表由行集构成,一行是列的序列,每列对应一个数据项。

    一个表或者是一个基本表,或者是一个视图。基本表是实际存储在数据库的表,视图是由若干基本表或其他视图构成的表的定义。

    SQL包括了所有对数据库的操作,主要有4个部分:数据定义(SQL DDL)、数据操纵(SQL DML)、访问数据控制、嵌入式SQL语言的规定。

    SQL DDL主要是定义基本表、视图、索引3个部分:

      -   基本表的定义、修改、撤销

    基本表的定义可用“CREATE TABLE”语句实现,增加属性可以用“ALTER...ADD...”语句,删除属性可以用“ALTER...DROP...”语句;删除已存在的表可用“DROP TABLE...”语句。

      -      视图的定义和撤销

    视图的定义可以用CREATEVIEW语句实现。视图的撤消可以用DROPVIEW语句实现。

      -   索引的定义和撤销

    索引的定义可以用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

    WHEREF

    在WHERE子句的条件表达式F中可出现下列操作符和运算特点:算术比较符、逻辑运算符、集合运算符、集合成员资格运算符、谓词和聚合函数。

      -      库函数

    COUNT(*) 计算元组的个数

    COUNT(列名) 对某一列中的值计算个数。

    SUM(列名) 求某一列值的总和

    AVG(列名) 求某一列值的平均值

    MAX(列名) 求某一列值中的最大值

    MIN(列名) 求某一列值中的最小值

      -      SELECT语句完整的句法

    SELECT 目标表的列名或列表达式序列

    FROM 基本表或(和)视图序列

    [WHERE行条件表达式

    [GROUT BY 列名序列

    [HAVING组条件表达式

    ...

    前两个句子是必不可少的,后面的4个句子可以缺省。整个语句的语义如下:从FROM子句中列出的表,选取满足WHERE子句中给出的行条件表达式的元组,然后按GROUP子句(分组子句)中指定列的值分组,再提取满足HAVING子句中组条件表达式的那些组,按SELECT子句给出的列名或列表达式求值输出。ORDER子句(排序子句)是对输出的目标表进行排序,可附加说明ASC(升序)或DESC(降序)

      -      SQL DML的数据更新语句

    INSERT 插入语句

    DELETE 删除语句

    UPDATE 修改语句

      -   SQL的访问控制

    SQL的访问控制功能主要是指对用户访问数据的控制。有授权语句和回收语句。

    授权语句的格式如下:

    GRANT 权限表

    ON 表名

    TO 用户名表

   

    该语句把表的使用权授予指定的若干用户。在有WITH GRANT OPTION短语时,被授权的用户还可将获得的权限再转授给其他用户。权限表中的权限可以有:SELECT, INSERT, DELETE, UPDATE,    EXPAND, INDEX, ALL PRIVILEGES。

    回收语句格式:

    REVOKE 权限表

    ON 表名

    FROM 用户名表

    该语句把已授给指定用户的在指定表上的使用权限收回。

      -   嵌入式SQL

    由于SQL是基于关系模型的语言,而高级语言是基于整数、实数、字符、记录、数组等的数据类型,因此两者之间有很大的区别,称为有缝隙。为了能在宿主语言的程序中嵌入SQL语句,有一些规定:

    -在程序中要区分SQL语句和宿主语言的语句;

    - 在嵌入的SQL语句中可以引用宿主语言的程序变量,但主语言的语句不能引用数据库中的各种变量(属性名、关系名),SQL的集合处理方式与宿主语言的单记录处理方式之间的协调用游标技术实现。
页: [1]
查看完整版本: 关系数据库SQL语言