第三章关系数据库标准查询语言SQL ●3.1SQL概述 ●3.2数据定义语言(DDL ●3.3SQL的数据查询(DML) ●34SQL的数据更新(DML) ●3.5视图 ●3.6数据控制语言(DCL) 37嵌入式SQL语言 ●3.8存储过程*(TSQL)
第三章 关系数据库标准查询语言SQL ⚫ 3.1 SQL概述 ⚫ 3.2数据定义语言(DDL) ⚫ 3.3 SQL的数据查询(DML) ⚫ 3.4 SQL的数据更新(DML) ⚫ 3.5视图 ⚫ 3.6数据控制语言(DCL) ⚫ 3.7嵌入式SQL语言 ⚫ 3.8 存储过程*(T-SQL)
31SQL概述 ● SQL(Standard/Structured Query Language)是关系 数据库标准 ●1986年10月,美国国家标准局( American National standard Institute ansi)公布第一个标 准 ANSI X3.135-1986,国际标准化组织 International Organization for standardization ISO)也通过这一标准称SQL-86 ●1989年ANS再次公布标准 ANSI X3.135-1989, ISO相应SQL-89 ●1999年,ISO公布SQL-199(SQ99,SQL3) ●2003年,ⅠSO公布SQL-2003
3.1 SQL概述 ⚫ SQL(Standard/Structured Query Language)是关系 数据库标准 ⚫ 1986年10月,美国国家标准局(American National Standard Institute ANSI)公布第一个标 准ANSI X3.135-1986,国际标准化组织 (International Organization for Standardization ISO)也通过这一标准称SQL-86 ⚫ 1989年ANSI再次公布标准ANSI X3.135-1989 , ISO 相应SQL-89 ⚫ 1999年,ISO公布 SQL-1999(SQL99,SQL3) ⚫ 2003年,ISO公布 SQL-2003
3.1.1SQL语言的组成 ●数据定义( DDL Data definition/ Description language 定义数据库的逻辑结构,包括基本表、视图、索引等 ●数据操纵( DML Data Manipulation Language) 包括查询和更新,更新又包含插入、删除和修改 ●数据控制( DCL Data Control Language) 授权、完整性规则描述、事务控制等 ●嵌入式SQL(ESQL) 在宿主语言中使用SQL的规则
3.1.1 SQL语言的组成 ⚫ 数据定义(DDL Data Definition/Description Language ) – 定义数据库的逻辑结构,包括基本表、视图、索引等 ⚫ 数据操纵(DML Data Manipulation Language) – 包括查询和更新,更新又包含插入、删除和修改 ⚫ 数据控制(DCL Data Control Language ) – 授权、完整性规则描述、事务控制等 ⚫ 嵌入式SQL(ESQL) – 在宿主语言中使用SQL的规则
3.1.2SQL语言的特点 ●综合统一:集DDL、DML、DCL于一体,语言 风格统一 ●面向集合的操作方式:操作对象、査询结果都 可以是元组的集合 ●高度非过程化:存取路进透明 以统一的语法结构提供两种使用方式:自含式、 嵌入式 ●语言简洁,易学易用,主要共使用11个关键词 DDL: create drop alter DML: select insert delete update DCL: grant revoke commit rollback
3.1.2 SQL语言的特点 ⚫ 综合统一:集DDL、DML、DCL于一体,语言 风格统一 ⚫ 面向集合的操作方式:操作对象、查询结果都 可以是元组的集合 ⚫ 高度非过程化:存取路进透明。 ⚫ 以统一的语法结构提供两种使用方式:自含式、 嵌入式 ⚫ 语言简洁,易学易用,主要共使用11个关键词 – DDL:create drop alter – DML:select insert delete update – DCL:grant revoke commit rollback
32数据定义语言(DDL) 32.1定义、删除与修改基本表 定义基本表语法 CREATE TABLE(数据类型冮列级约束 条件][[列级约束条件].[<表级完 整性约束条件] 例: CREATE TABLE S( S# CHAR (5) SN CHAR(20) NOT NULL UNIQUE SA INT, SD CHAR (3) PRIMARY KEY (S#
3.2数据定义语言(DDL) 3.2.1定义、删除与修改基本表 ➢ 定义基本表语法 CREATE TABLE ([列级约束 条件][,[列级约束条件]... ...][,]) 例:CREATE TABLE S( S# CHAR(5) , SN CHAR(20) NOT NULL UNIQUE , SA INT, SD CHAR(3), PRIMARY KEY (S#) );
修改表语法 ALTER TABLE数据类型>列级约束条件1 [DROP 例 ALTER TABLE S ADD SCome date ALTER TABLE S MODIFY SA SMALLINT ALTER TABLE S DROP UNIQUE(S#); 删除表语法 DROP TABLE DROP TABLE S
➢ 修改表语法 ALTER TABLE [ADD [列级约束条件]] [DROP ] [MODIFY ]; 例: ALTER TABLE S ADD SCome DATE; ALTER TABLE S MODIFY SA SMALLINT; ALTER TABLE S DROP UNIQUE(S#); ➢ 删除表语法 DROP TABLE 例: DROP TABLE S
3.2.2建立和删除索引 索引的建立语法 CREATE[ UNIQUE] CLUSTER]ⅠNDEX ON([[,] 可以是ASC和DESC 例 CREATE UNIQUE INDEX SS# ON S(S#) CREATE UNIQUE INDEX C C# ON C(C#) CREATE UNIQUE INDEX SC S# C# ON SC(S# ASC. C# DESC 索引的删除语法 DROPⅠNDEX[表名>]索引名> DROP INDEX SS S#
3.2.2建立和删除索引 ➢ 索引的建立语法 CREATE [UNIQUE][CLUSTER] INDEX ON ([][,... ...]) 可以是ASC和DESC 例: CREATE UNIQUE INDEX S_S# ON S(S#) CREATE UNIQUE INDEX C_C# ON C(C#) CREATE UNIQUE INDEX SC_S#_C# ON SC(S# ASC,C# DESC) ➢ 索引的删除语法 DROP INDEX [.] DROP INDEX [S.]S_S#
33SQL的数据査询(DML) ●关系代数表达式 ∏A1A2Am(GF(R1×R2×R ●SQL语句 SELECT A1,A2,……A FROMRI, R2 WHERE F
3.3 SQL的数据查询(DML) ⚫ 关系代数表达式 A1,A2,.....An(F (R1×R2×... ...×Rn )) ⚫ SQL 语句 SELECT A1,A2,......An FROM R1,R2,... ...Rm WHERE F
详细语法 SELECT IALLDISTINCT{*目标表达式1>[目标表 达式2>……]} FROM[, WHERE GROUP BY] HAVING] [ ORDER BY[ ASCDESO],[ ASCDESO]
详细语法 SELECT [ALL|DISTINCT] {*| [, ... ...]} FROM [,]... ... [WHERE ] [GROUP BY [,]] [HAVING ] [ORDER BY [ASC|DESC]], [ASC|DESC]]
执行过程 )先按 WHERE子句条件从FROM子句指定的表视图中 找出满足条件的元组(选择) 2)如有 GROUP子句,则将结果按的值分 组,该值相等的元组为一个组,通 常会在每组中使用聚合函数 3)如果 GROUP子句带 HAVING子句,则对组过虑,将 满足条件的组输出 4)再按 SELECT子句中的目标表达式选择出元组中的 属性,形成结果表(投影); 5)如果 ORDER子句,则将结果按的值 升序或降序排列
执行过程 1)先按WHERE子句条件从FROM子句指定的表/视图中 找出满足条件的元组(选择); 2)如有GROUP子句,则将结果按的值分 组,该值相等的元组为一个组,通 常会在每组中使用聚合函数。 3)如果GROUP子句带HAVING子句,则对组过虑,将 满足条件的组输出 4)再按SELECT子句中的目标表达式选择出元组中的 属性,形成结果表(投影); 5)如果ORDER子句,则将结果按的值 升序或降序排列