第三章关系数据库标准查询语言SQL ●3.1SQL概述 ●3.2数据定义语言(DDL) ●3.3SQL的数据查询(DML) ●3.4SQL的数据更新(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.1SQL概述 ● 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年,IS0公布SQL1999(SQL99,SQL3) ●2003年,IS0公布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) 一授权、完整性规则描述、事务控制等 ●嵌入式SOL(ESOL) -在宿主语言中使用$QL的规则
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于一体,语言 风格统一 ● 面向集合的操作方式:操作对象、查询结果都 可以是元组的集合 ●高度非过程化:存取路进透明。 ● 以统一的语法结构提供两种使用方式:自含式、 嵌入式 ●i 语言简洁,易学易用,主要共使用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([列级约束 条件][,[列级约束条件].[,]) 例: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 [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
➢ 修改表语法 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 JUNIQUE][CLUSTER]INDEX ON([][,..]) 可以是ASC和DESC 例: CREATE UNIQUE INDEX SS#ON S(S#) CREATE UNIQUE INDEX CC#ON C(C#) CREATE UNIQUE INDEX SC S#C#ON SC(S# ASC,C#DESC) >索引的删除语法 DROP INDEX[.] DROP INDEX [S.]SS#
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) ●关系代数表达式 IALA2.An(F (R1XR2X......XRn)) ●SQL语句 SELECTA,A2,......An FROM R1,R2,......Rm 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[ALLDISTINCT]{*K目标表达式1>[,.]} FROM[,].… WHERE] [GROUP BY[,] [HAVING] [ORDER BY[ASCDESCII,[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子句,则将结果按的值 升序或降序排列