第三章 关系数据库标准语言SQL

SQL的特点:综合统一 集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。 可以独立完成数据库生命周期中的全部活动: 定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据库;  对数据库中的数据进行查询和更新;  数据库重构和维护 数据库安全性、完整性控制,以及事务控制 嵌入式SQL和动态SQL定义 用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据库的运行。 数据操作符统一

高度非过程化:非关系数据模型的数据操纵语言“面向过程”,必须指定存取路径。 SQL只要提出“做什么”,无须了解存取路径。  存取路径的选择以及SQL的操作过程由系统自动完成。

面向集合的操作方式:非关系数据模型采用面向记录的操作方式,操作对象是一条记录 SQL采用集合操作方式  操作对象、查找结果可以是元组的集合  一次插入、删除、更新操作的对象可以是元组的集合

以同一种语法结构提供多种使用方式:SQL是独立的语言     能够独立地用于联机交互的使用方式 SQL又是嵌入式语言     SQL能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程序时使用

基本表的定义、删除与修改:定义基本表         CREATE TABLE <表名>       (<列名> <数据类型>[ <列级完整性约束条件> ]       [,<列名> <数据类型>[ <列级完整性约束条件>] ]    …       [,<表级完整性约束条件> ] ); <表名>:所要定义的基本表的名字 <列名>:组成该表的各个属性(列) <列级完整性约束条件>:涉及相应属性列的完整性约束条件 <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。  

修改基本表:<表名>是要修改的基本表 ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件 DROP COLUMN子句用于删除表中的列 如果指定了CASCADE短语,则自动删除引用了该列的其他对象 如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列 DROP CONSTRAINT子句用于删除指定的完整性约束条件 ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型

删除基本表:DROP TABLE <表名>[RESTRICT| CASCADE]; RESTRICT:删除表是有限制的。 欲删除的基本表不能被其他表的约束所引用 如果存在依赖该表的对象,则此表不能被删除 CASCADE:删除该表没有限制。 在删除基本表的同时,相关的依赖对象一起删除

 建立索引:语句格式 CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…); <表名>:要建索引的基本表的名字 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔 <次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE:此索引的每一个索引值只对应唯一的数据记录 CLUSTER:表示要建立的索引是聚簇索引

修改索引:ALTER INDEX <旧索引名> RENAME TO <新索引名> [例3.14] 将SC表的SCno索引名改为SCSno     ALTER INDEX SCno RENAME TO SCSno;

删除索引:DROP INDEX <索引名>; 删除索引时,系统会从数据字典中删去有关该索引的 描述。

数据字典:数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有定义信息: 关系模式定义 视图定义 索引定义 完整性约束定义 各类用户对数据库的操作权限 统计信息等 关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。

数据查询:语句格式        SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …        FROM <表名或视图名>[,<表名或视图名> ]…|(SELECT 语句)                          [AS]<别名> [ WHERE <条件表达式> ] [ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY <列名2> [ ASC|DESC ] ];

SELECT子句:指定要显示的属性列 FROM子句:指定查询对象(基本表或视图) WHERE子句:指定查询条件 GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。 HAVING短语:只有满足指定条件的组才予以输出 ORDER BY子句:对查询结果表按指定列值的升序或降序排序

外连接:外连接与普通连接的区别 普通连接操作只输出满足连接条件的元组 外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出  左外连接 列出左边关系中所有的元组  右外连接 列出右边关系中所有的元组

嵌套查询:嵌套查询概述 一个SELECT-FROM-WHERE语句称为一个查询块 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询      SELECT Sname                               /*外层查询/父查询*/      FROM Student      WHERE Sno IN                         ( SELECT Sno        /*内层查询/子查询*/                           FROM SC                           WHERE Cno= ' 2 ');上层的查询块称为外层查询或父查询 下层查询块称为内层查询或子查询 SQL语言允许多层嵌套查询 即一个子查询中还可以嵌套其他子查询 子查询的限制 不能使用ORDER BY子句

插入元组:语句格式     INSERT     INTO <表名> [(<属性列1>[,<属性列2 >…)]     VALUES (<常量1> [,<常量2>]… ); 功能 将新元组插入指定表中  INTO子句 指定要插入数据的表名及属性列 属性列的顺序可与表定义中的顺序不一致 没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致 指定部分属性列:插入的元组在其余属性列上取空值

 修改数据:语句格式    UPDATE  <表名>     SET  <列名>=<表达式>[,<列名>=<表达式>]…     [WHERE <条件>]; 功能 修改指定表中满足WHERE子句条件的元组 SET子句给出<表达式>的值用于取代相应的属性列 如果省略WHERE子句,表示要修改表中的所有元组

建立视图:语句格式        CREATE  VIEW              <视图名>  [(<列名>  [,<列名>]…)]        AS  <子查询>        [WITH  CHECK  OPTION];

删除视图:语句的格式:         DROP  VIEW  <视图名>[CASCADE]; 该语句从数据字典中删除指定的视图定义 如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除 删除基表时,由该基表导出的所有视图定义都必须显式地使用DROP VIEW语句删除

你可能感兴趣的:(第三章 关系数据库标准语言SQL)