《数据厍设计与开发》讲义 1.3 SQL 自从20世纪80年代以来,SQL就是一个通用的、功能 极强的关系数据库语言。现在,SQL语言正从关系形 式( ANSI SQL-92标准)转向对象-关系形式(ANSI SQL-99标准,1999年颁布) SQL语言是1974年由Boyc和 Chamberlin提出。1986年 10月美国国家标准局(ANS批准了SQL作为关系数据 库语言的美国标准。同年公布了SQL标准文本(简称 SQL-86)。1987年6月国际标准化组织(SO也采纳了此 标准。1989年,美国国家标准局(ANSI)采纳了新的 规范SQL-89标准,取代SQL-86,同时SQL-89标准也被 国际标准化组织(ISO)采纳。1992年, ANSI/ISO颁布了 SQL2版本,标准的名称为SQL92。SQL92分称几个 顺序级别:从代表SQL-89最小扩展集的“ Entry到 “ ntermediate和“Ful。完成于己于1999年的SQL-99 具有更加高级的特征(包括对象-关系特性),亦称 Q上39明20080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3 SQL • 自从20世纪80年代以来,SQL就是一个通用的、功能 极强的关系数据库语言。现在,SQL语言正从关系形 式(ANSI SQL-92标准)转向对象-关系形式(ANSI SQL-99标准,1999年颁布)。 • SQL语言是1974年由Boyce和Chamberlin提出。1986年 10月美国国家标准局(ANSl)批准了SQL作为关系数据 库语言的美国标准。同年公布了SQL标准文本(简称 SQL-86)。1987年6月国际标准化组织(ISO)也采纳了此 标准。1989年,美国国家标准局(ANSI)采纳了新的 规范SQL-89标准,取代SQL-86,同时SQL-89标准也被 国际标准化组织(ISO)采纳。1992年,ANSI/ISO颁布了 SQL2版本,标准的名称为SQL-92。SQL-92分称几个 顺序级别:从代表SQL-89最小扩展集的“Entry”到 “Intermediate”和“Full”。完成于己于1999年的SQL-99 具有更加高级的特征(包括对象-关系特性),亦称 SQL3
《数据厍设计与开发》讲义 1.3 SQL 主要的几个数据库生产厂商并不可能完全遵守 SQL-99(以及更老的SQL-92)。我们一般更 加关注在产品中已经实现的SQL-99特征。 1.3.1SQL特点 3.2数据定义 1.3.3.4高级SQL语法 1.3.2.1S哑L模式的创建和删除 1.3.3.5集合函数 1.3.2.2S哑L提供的基本数据类型 1.3.3.6行分组 1.3.2.3定义、删除与修改基本表1.3.4数据更新 1.3.2.4建立与删除索引 1.3.4.1插入数据 1.3.2.5视图的创建和删除 3.4.2修改数据 1.3.3数据查询 3.4.3删除数据 1.3.3.1简单查询 1.3.3.2子查询 1.3.3.3UNI0N运算和 FOR ALL条件 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3 SQL • 主要的几个数据库生产厂商并不可能完全遵守 SQL-99(以及更老的SQL-92)。我们一般更 加关注在产品中已经实现的SQL-99特征。 1.3.1 SQL特点 1.3.2数据定义 1.3.2.1 SQL模式的创建和删除 1.3.2.2 SQL提供的基本数据类型 1.3.2.3 定义、删除与修改基本表 1.3.2.4 建立与删除索引 1.3.2.5 视图的创建和删除 1.3.3 数据查询 1.3.3.1 简单查询 1.3.3.2 子查询 1.3.3.3 UNION运算和FOR ALL条件 1.3.3.4 高级SQL语法 1.3.3.5 集合函数 1.3.3.6 行分组 1.3.4 数据更新 1.3.4.1 插入数据 1.3.4.2 修改数据 1.3.4.3 删除数据
《数据厍设计与开发》讲义 1.3.1SQ特点 1)综合统 2)高度非过程化 3)面向集合的操作方式 ·4)以同一种语法结构提供两种使用方式 5)语言简捷,易学易用 和关系代数相比,就查询能力而言,SQL并 没有根本的改进,在关系代数查询方面的经验 可以成为用SQL来实现查询的良好借鉴。在构 造查询时SQL的 select语句比关系代数要灵活 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3.1 SQL特点 • 1)综合统一 • 2)高度非过程化 • 3)面向集合的操作方式 • 4)以同一种语法结构提供两种使用方式 • 5)语言简捷,易学易用 和关系代数相比,就查询能力而言,SQL并 没有根本的改进,在关系代数查询方面的经验 可以成为用SQL来实现查询的良好借鉴。在构 造查询时SQL的select语句比关系代数要灵活
《数据厍设计与开发》讲义 1.3.2数据定义 SuL的数据定乂功能包括对模式( Schema)、表 (关系, Table)、视图(View)和索引( Index) 的创建、删除和修改操作。如下表所示 操作方式 操作对象创建 删除 修改 模式 CREATE SCHEMA DROP SCHEMA 表 CREATE TABLE DROP TABLE ALTER TABLE 视图 CREATE VIEW DROP VIEW 索引 CREATE INDEX DROP INDEX 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3.2数据定义 • SQL的数据定义功能包括对模式(Schema)、表 (关系,Table)、视图(View)和索引(Index) 的创建、删除和修改操作。如下表所示。 操作对象 操 作 方 式 创 建 删 除 修 改 模式 CREATE SCHEMA DROP SCHEMA 表 CREATE TABLE DROP TABLE ALTER TABLE 视图 CREATE VIEW DROP VIEW 索引 CREATE INDEX DROP INDEX
《数据厍设计与开发》讲义 1.3.2.1S哑L模式的创建和删除 ·在SQL-99中,模式是表、索引及其他数据库对 象的集合。模式名通常是一个用户名。在Core SQL-99和当前大多数产品中,当用户的数据库 帐户建立时,其模式在用户名之后给出,他们 不能再建立其他模式。SQL-99的扩展特性允许 用户建立附加模式,一个S哑L模式由模式名和 模式拥有者的用户名或账号来确定。 ·S哑L模式的创建可用 CREATE语句实现,其句法 如下: CREATE SCHEMA AUTHORIZATI0N<用户名 目前只有DB2UDB允许用户建立附加模式 其它产品中模式用用户名替代。 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3.2.1 SQL模式的创建和删除 • 在SQL-99中,模式是表、索引及其他数据库对 象的集合。模式名通常是一个用户名。在Core SQL-99和当前大多数产品中,当用户的数据库 帐户建立时,其模式在用户名之后给出,他们 不能再建立其他模式。SQL-99的扩展特性允许 用户建立附加模式,一个SQL模式由模式名和 模式拥有者的用户名或账号来确定。 • SQL模式的创建可用CREATE语句实现,其句法 如下: CREATE SCHEMA AUTHORIZATION 目前只有DB2 UDB允许用户建立附加模式。 其它产品中模式用用户名替代
《数据厍设计与开发》讲义 1.3.2.1S哑L模式的创建和删除 在SQL中还有一个“目录”概念。目录是SQL环 境中所有模式的集合。包含数据库中定义的对 象的信息的表,由系统维护。 ORACLE叫数据字 典,DB2UDB叫目录表, INFORMIX叫系统目录 目录表在建立数据库时建立,用户不能更新, 但DBA可以用 select获取这些信息。 ·当一个SQL模式及其所属的基本表、视图等元 素都不需要时,可以用DROP语句撤消这个SQl 模式。DROP语句的句法如下: DROP SCHEMA[ CASCADE| RESTRICT] 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3.2.1 SQL模式的创建和删除 • 在SQL中还有一个“目录”概念。目录是SQL环 境中所有模式的集合。包含数据库中定义的对 象的信息的表,由系统维护。ORACLE叫数据字 典,DB2 UDB叫目录表,INFORMIX叫系统目录。 目录表在建立数据库时建立,用户不能更新, 但DBA可以用select获取这些信息。 • 当一个SQL模式及其所属的基本表、视图等元 素都不需要时,可以用DROP语句撤消这个SQL 模式。DROP语句的句法如下: DROP SCHEMA [CASCADE|RESTRICT]
《数据厍设计与开发》讲义 1.3.2.2SQL提供的基本数据类型 SOL-99 ORACLE INFORMIX|DB2UDB说明 C char(n) char(n) char(n) char(n) 定长字符型 char n<=4000 n<=32767n<=254 array n+1 varchar(n) varsha(n) varchar(n)| varchar(mn)变长字符型 char varchar 2(n) arrayn+1l numeric(pd) numeric(pd) numeric(pd) numerIc(p.d)定点数,由p位数 decimal(p, d) decimal(p, d) decimal(p, d) decimal(p, d)|小数点)小数点后无 number(p, d) 面有d位数字 smallint smallint smallint smallint 短整数 short int Integer Integer nteger integer 长整数 int long int real rea rea rea 浮点数 float double double double double 取决于机器精 precision precIsion, precision precision 度的双精度浮| double number float float double float, I点数 float(n) float(n) float(n) 至少为n位精度 电次学软优笔 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3.2.2 SQL提供的基本数据类型 SQL-99 ORACLE INFORMIX DB2 UDB 说明 C char(n) char(n) n<=4000 char(n) n<=32767 char(n) n<=254 定长字符型 char array[n+1] varchar(n) varchar(n) varchar2(n) varchar(n) varchar(n) 变长字符型 char array[n+1] numeric(p,d) decimal(p,d) numeric(p,d) decimal(p,d) number(p,d) numeric(p,d) decimal(p,d) numeric(p,d) decimal(p,d) 定点数,由p位数 字(不包括符号、 小数点) 小数点后 面有d位数字 无 smallint smallint smallint smallint 短整数 short int integer integer integer integer 长整数 int,long int real real real real 浮点数 float double precision, float, float(n) double precision, number,float float(n) double precision, float double precision, double,float, float(n) 取决于机器精 度的双精度浮 点数 至少为n位精度 double
《数据厍设计与开发》讲义 1.3.2.3定义、删除与修改基本表 建立数据库最重要的一步就是定义一些基本表。SQL语 言使用 CREATE TABLE语句定义基本表,一般格式如下 CREATE TABLE[列级完整性约束条件] [,<表级完整性约束条件〉]); FF CREATE TABLE Student (Sno CHAR (5) PRIMARY KEY Sname CHAR (8) NOT NULL Sage Small int CHECK(Sage BETWEEN 17 AND 22) Ssex char(2) CHECK( Ssex In(男’,′女)), Sdept char(20) DEFAULT(软件学院’)) 创建学生表:Sno为主键(非空唯一), Sname非空,Sage在17到20之 间取值,Ssex只能取‘男’或‘女’, Sdept默认值为‘软件学院’ 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3.2.3 定义、删除与修改基本表 • 建立数据库最重要的一步就是定义一些基本表。SQL语 言使用CREATE TABLE语句定义基本表,一般格式如下: CREATE TABLE ([列级完整性约束条件] [,[列级完整性约束条件]]… [,]); • 例:CREATE TABLE Student (Sno CHAR(5) PRIMARY KEY, Sname CHAR(8) NOT NULL, Sage SMALLINT CHECK(Sage BETWEEN 17 AND 22), Ssex CHAR(2) CHECK(Ssex IN(’男’ , ’女’)), Sdept CHAR(20) DEFAULT(‘软件学院’)); 创建学生表:Sno为主键(非空唯一),Sname非空,Sage在17到20之 间取值,Ssex只能取‘男’或‘女’,Sdept默认值为‘软件学院’
《数据厍设计与开发》讲义 1.3.2.3定义、删除与修改基本表 ·实际使用时要有用户ID和密码,进入交互式环 境,才能完成数据库操作。 ·修改基本表 ALTER TABLE [AD LMODIFY列名入数据类型冫; 其中〈表名>是要修改的基本表,ADD子句用于 增加新列和新的完整性约束条件,DROP子句用 于删除指定的完整性约束条件, MODIPY子句用 于修改原有的列定义,包括修改列名和数据类 型 北京邮电次学软优貌 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3.2.3 定义、删除与修改基本表 • 实际使用时要有用户ID和密码,进入交互式环 境,才能完成数据库操作。 • 修改基本表 ALTER TABLE [ADD[完整性约束]] [DROP] [MODIFY]; 其中是要修改的基本表,ADD子句用于 增加新列和新的完整性约束条件,DROP子句用 于删除指定的完整性约束条件,MODIPY子句用 于修改原有的列定义,包括修改列名和数据类 型
《数据厍设计与开发》讲义 1.3.2.3定义、删除与修改基本表 ·删除基本表 DROP TABLE<表名 基本表一旦删除,表中的数据、此表上 建立的索引和视图都将自动被删除掉。 因此执行删除基本表的操作一定要格外 注意:有的系统,如 Oracle,删除基本 表后建立在此表上的视图定义仍然保留 在数据字典中。但是,当用户引用时就 报错。 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.3.2.3 定义、删除与修改基本表 • 删除基本表 DROP TABLE 基本表一旦删除,表中的数据、此表上 建立的索引和视图都将自动被删除掉。 因此执行删除基本表的操作一定要格外 小心。 • 注意:有的系统,如Oracle,删除基本 表后建立在此表上的视图定义仍然保留 在数据字典中。但是,当用户引用时就 报错