就业数据资源平台
当前位置:首页 > 数据库技术
2012计算机三级考试数据库考点串讲资料6

第六章 关系数据库标准语言SQL
1、SQL(Structured Query Language)称为结构化查询语言,SQL已经成为关系数据库领域中的一种主流语言,1987年被国际标准化组织(ISO)采纳为国际标准
1992年公布了SQL92(SQL2),1999年公布了SQL93(SQL3,对象-关系SQL),2003年公布SQL2003(SQL4)
2、SQL 特点:SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体
综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式(自含式和嵌入式SQL)、语言简洁,易学易用。
3、SQL数据库体系结构:外模式对应于视图和部分基本表、模式对应于基本表,内模式对应于存储文件
     基本表是本身独立存在的表,一个关系就是一个基本表(存放实际数据),行对应元组,列对应属性;一个基本表可以跨一个或多个存储文件存放,一个存储文件可以存放多个基本表;所有基本表的集合构成了模式;基本表是模式和外模式的一部分。
     一个SQL表可以是一个基本表,也可以是一个视图。视图是一个或几个基本表导出的表,数据库中存放视图的定义,视图的数据仍然在基本表中。视图是一个虚表,是外模式的一部分。
一个SQL表可以有若干索引,索引放在存储文件中。存储文件的逻辑结构组成了SQL数据库的内模式。物理结构由操作系统管理,对用户透明。
SQL用户可以是一个应用程序,可以一个SQL用户。
4、SQL的数据类型:预定义数据类型、构造数据类型、用户定义数据类型
5、基本的SQL定义语句:关系数据库的基本对象是模式、表、视图、索引和域
基本对象创建删除修改
模式       CREATE SCHEMADROP SCHEMA 
基本表CREATE TABLEDROP TABLEALTER   TABLE
视图CREATE VIEWDROP TABLE 
索引CREATE INDEX       DROP INDEX 
域CREATE DOMAINDROP DOMAIN 

6、基本操作语句
(1)模式的定义与删除 Create Schema <模式名> AUTHORIZATION <用户名>  
Drop Schema <模式名>|CASCADE|RESTRICT
(2)基本表的操作:创建:CREATE TABLE[模式名.]<表名>(<列名><数据类型>(列级完整性约束〕
                   [,<列名><数据类型>[列级完整性约束]…
                     〔,<表级完整性约束>〕);
<列级完整性约束条件>:涉及相应属性列的完整性约束条件
<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
CREATE TABLE S_SC_C.SC
(S# CHAR(8),C# CHAR(8),GRADE INT NOT NULL,
PRIMARY KEY (S#,C#),FOREIGN KEY(S#) REFERENCES STU(S#)
);
PRIMARY KEY (S#,C#),FOREIGN KEY(S#) REFERENCES STU(S#)为表完整性约束
修改:ALTER TABLE<表名>
                 「ADD<新列名><数据类型>[完整性约束〕〕
                 [DROP <列名>][<完整性约束名>]〕
                 [MODIFY<列名><数据类型>」;
删除:当某个基本表不再需要时,可以用DROP TABLE语句进行删除,其格式为:
       DROP TABLE<表名>
基本表一旦被删除,表中的数据、此表上建立的索引和视图都将自动被删除。因此执行删除基本表的操作时一定要格外小心。DROP TABLE <表名> RESTRICT 视图等关联对象没有事先删除则不能执行删除操作
(3)索引操作
建立索引是加快查询速度的有效手段,提供多种存取路径
UNIQUE 唯一索引,建立的索引其值必须唯一
CLUSTER聚簇索引,表示索引值的顺序与表中记录的物理顺序一致,适合在经常查询的列上建立,不适合在经常更新的列上建立
CREATE [UNIQUE][CLUSTER]INDEX<索引名>
                   ON<表名>(<列名>[<次序>〕[,<列名>[<次序>」…」);
<次序>指定索引值的排列次序,可选ASC(升序)或DESC(降序),默认值为ASC
如:CREATE  UNIQUE  INDEX   SCno  ON  SC( Sno  ASC,Cno  DESC);
  删除索引:DROP INDEX<索引名>;删除索引时,系统会同时从数据字典中删去有关该索引的描述
4、SQL的数据操纵语句
SQL语言的数据操纵包括INSERT(插人)、DELETE(删除)、UPDATE(更新)和SELETE(检索,又称查询)4个语句
SELECT语句是数据操作的核心。
(1)数据查询 SELECT[ALLI DISTINCT]<目标列表达式>〔,<目标列表达式>]…
               FROM<基本表或视图>[,<基本表或视图>]…
               [WHERE<条件表达式>]
               [GROUP BY<列名l>[HAVING<条件表达式>]]
               [ORDER BY<列名2>[ASC 1 DESC]];
a.简单查询
    简单查询涉及数据库中的一个表,包括以下几种:
 
    (1)查询表中的若干列。
    (2)查询经过计算的值。
    (3)消除取值重复的行。DISTINCT
    (4)查询满足条件的元组。WHERE
    (5)利用LIKE的查询。_、%
    (6)涉及空值NULL的查询。IS NULL 、IS NOT NULL
    (7)对查询结果排序。ORDER BY ASC/DESC
    (8)使用集函数。Count 、SUM、AVG、MAX、MIN
    (9)对查询结果分组。Group by  having
 b. 连接查询
  外连接的三种类型:左外连接、右外连接、全外连接
左外连接(LEFT OUTER JOIN):结果表中保留连接条件左边关系中的所有元组
右外连接(RIGHT OUTER JOIN): 结果表中保留连接条件右边关系中的所有元组
全外连接(FULL OUTER JOIN): 结果表中保留连接条件左右两边关系中的所有元组
某些系统中用+=   表示左外连接、=+表示右外连接、+=+表示全外连接
c.嵌套查询 (I)由谓词IN引导的子查询:IN是最常用的谓词。
           (2)谓词是比较运算符的子查询。
           (3)由[NOT]EXISITS谓词引导的子查询。
d.集合查询。 
UNION(并)、INTERSECT(交)、EXCEPT(差)
5、SQL的修改语句
(1)插入操作(insert)insert into 表名(字段名,…)   values(常量,…)
     insert into 表名(字段名,…)  select … from
(2)删除操作(delete)delete from 表名  [where F] 删除表中的数据,表的结构还存在数据字典中
(3)更新操作(update)update 表名 set 列名=表达式,列名=表达式 where F
6、视图  
(1)创建视图CREATE VIEW<视图名>〔(<列名>〔,<列名>…〕
                               AS<子查询>
                            〔 WITH CHECK OPTION〕:
其中子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。WITH CHECK OPTION表示对视图进行UPDATE、INSERT和DELETE操作时要保证更新、插人或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
(2)几种特殊的视图:行列子集视图、表达式视图、分组视图、连接视图
(3)查询视图:将对视图的查询转换为对基本表的查询的过程称为视图的消解(View Resolution)。
视图物化(View Materialization):是指在视图第一次被查询的时候物理地建立一个临时的视图表(实表),但必须保证更新基本表时自动更新视图表,保持物化视图的最新性。
(4)修改视图
   为防止用户通过视图对数据进行增、删、改操作时,无意或有意操作不属于视图范围内的基本表数据可在定义视图时加上WITH CHECK OPTION子句,这样在视图上增、删、改数据时,DBMS会进一步检查视图定义中的条件,若不满足条件,则拒绝执行该操作。
  改视图包括插入(INSERT)、删除(DELETE)和更新(UPDATE) 3类操作。行列子集视图可以修改,带表达式视图、连接视图和分组视图不能修改。
(5)视图的作用
     (1)能够简化用户的操作。
    (2)使用户能以多种角度看待同一数据。
    (3)对重构数据库提供了一定程度的逻辑独立性。
(4)能够对机密数据提供安全保护。
7、数据控制语句和嵌入式SQL
(1)GRANT语句和REVOKE语句实现权限授予和权限回收
 GRANT 权限  ON 对象名 to 用户 [with grant option]; with grant option 获得权限的用户允许授予其他用户
 (2) REVOKE<权限>[,<权限>]… [ON<对象类型><对象名>] FROM<用户>[,<用户>]…;
(3) SQL语言分为独立语言和嵌入式语言
SQL语言嵌入主语言解决的3个问题:
SQL语言与主语言的区分:EXEC SQL<SQL语句>
数据库工作单元与程序工作单元的通信(通过主变量)
游标解决集合操作与记录操作的矛盾
DBMS可采用两种方法处理嵌入式SQL,一种是预编译,另一种是修改和扩充主语言
(4)动态SQL:程序在执行过程中动态生成SQL语句。动态SQL的两种执行方式:1、立即执行;2、先准备后执行
就业数据资源平台