
第三章关系数据库标准查询语言SQL3.1SOL概述(DDL)3.2数据定义语言(DML)3.3SQL的数据查询3.4SOL的数据更新(DML)3.5视图3.6数据控制语言(DCL)3.7嵌入式SQL语言3.8存储过程*(T-SQL)
第三章 关系数据库标准查询语言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)

3.1 SQL概述SQL(Standard/Structured Query Language)是关系数据库标准1986年10月,美国国家标准局(AmericanNational Standard Institute ANSI)公布第一个标准ANSIX3.135-1986,国际标准化组织(International Organization for StandardizationISO)也通过这一标准称SOL一861989年ANSI再次公布标准ANSIX3.135-1989,ISO相应SOL一891999年,ISO公布 SQL-1999(SQL99,SQL3)2003年,ISO公布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.1SOL语言的组成数据定义(DDLData Definition/DescriptionLanguage )一定义数据库的逻辑结构,包括基本表、视图、索引等数据操纵(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.2.SOL语言的特点综合统一:集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

3.2数据定义语言(DDL)3.2.1定义、删除与修改基本表>定义基本表语法CREATE TABLE([列级约束条件Ⅱ,[列级约束条件]......IⅡI,J)例: CREATE TABLE S(S#CHAR(5)SNCHAR (20) NOT NULL UNIQUE,SA INT,SDCHAR(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[ADD[列级约束条件1][DROP][MODIFY];例:ALTER TABLE S ADD SCome DATE;ALTER TABLE S MODIFY SA SMALLINT:ALTER TABLE S DROP UNIQUE(S#);>删除表语法DROPTABLE例:DROPTABLES
➢ 修改表语法 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] INDEXON([I[,.…....I)可以是ASC和DESC例:CREATE UNIQUE INDEX S S# ON S(S#)CREATE UNIQUE INDEX C C# ON C(C#)CREATE UNIOUE INDEX SC S# C# ON SC(S#ASC,C# DESC)>索引的册删除语法DROP INDEX[,DROP INDEX [S.JS 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#

3.3SQL的数据查询(DML)关系代数表达式IIA1,...n(oF (R, XR, X.....XR.)SQL语句SELECT A’ A2' ...FROMR,R2,....RmWHEREF
3.3 SQL的数据查询(DML) ⚫ 关系代数表达式 A1,A2,.An(F (R1×R2×. .×Rn )) ⚫ SQL 语句 SELECT A1,A2,.An FROM R1,R2,. .Rm WHERE F

详细语法SELECT「ALLDISTINCTI{*.....J}FROM「,]...[WHERE][GROUPBY[,]][HAVING][ORDERBY[ASCDESCI],[ASCDESC]
详细语法 SELECT [ALL|DISTINCT] {*| [, . .]} FROM [,]. . [WHERE ] [GROUP BY [,]] [HAVING ] [ORDER BY [ASC|DESC]], [ASC|DESC]]

执行过程1)先按WHERE子句条件从FROM子句指定的表/视图中找出满足条件的元组(选择):2)如有GROUP子句,则将结果按的值分组,该值相等的元组为一个组,通常会在每组中使用聚合函数。3)如果GROUP子句带HAVING子句,则对组过虑,将满足条件的组输出4)再按SELECT子句中的目标表达式选择出元组中的属性,形成结果表(投影);5)如果ORDER子句,则将结果按的值升序或降序排列
执行过程 1)先按WHERE子句条件从FROM子句指定的表/视图中 找出满足条件的元组(选择); 2)如有GROUP子句,则将结果按的值分 组,该值相等的元组为一个组,通 常会在每组中使用聚合函数。 3)如果GROUP子句带HAVING子句,则对组过虑,将 满足条件的组输出 4)再按SELECT子句中的目标表达式选择出元组中的 属性,形成结果表(投影); 5)如果ORDER子句,则将结果按的值 升序或降序排列