关系数据库标准语言SQL1.ppt_第1页
关系数据库标准语言SQL1.ppt_第2页
关系数据库标准语言SQL1.ppt_第3页
关系数据库标准语言SQL1.ppt_第4页
关系数据库标准语言SQL1.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章 关系数据库标准语言SQL,1,第三章 关系数据库标准语言SQL,3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图,2,第三章 关系数据库标准语言SQL,3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图,3,3.1 SQL概述,SQL(Structured Query Language) 结构化查询语言,是关系数据库的标准语言。 1974年由Boyce和Chamberlin提出,并在IBM公司研制的关系数据库管理系统原型System R上实现。 由于SQL简单易学,功能丰富,深受用户及计算机工业界欢迎,因此被数据库厂商所采用。经各公司的不断修改、扩充和完善,SQL得到业界的认可。 1986年10月美国国家标准局(ANSI)的数据库委员会X3H2批准了SQL作为关系数据库语言的美国标准。,4,3.1 SQL概述,SQL标准从1986年公布以来随着数据库技术的发展而不断发展和丰富。 标准 大致页数 发布日期 SQL/86 1986年10月 SQL/89 120页 1989年 SQL/92 622页 1992年 SQL/99 1700页 1999年 SQL2003 3600页 2003年,5,3.1 SQL概述,作为关系数据库的标准语言,SQL已被众多商用数据库管理系统产品所采用,而不同的数据库管理系统在其实践过程中都对SQL规范做了某些改变和扩充。 实际上,不同数据库管理系统之间的SQL语言不能完全通用。 微软公司的MS SQL Server支持的是T-SQL,而甲骨文公司的Oracle 数据库所使用的SQL语言则是PL-SQL。,6,第三章 关系数据库标准语言SQL,3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图,7,3.2 学生-课程数据库,在本章中用学生-课程数据库作为一个例子来讲解SQL的数据定义、数据操作、数据查询和数据控制语句的具体应用。 学生-课程数据库中包括以下3个表 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Cpno,Ccredit) 学生选课表:SC(Sno,Cno,Grade),8,3.2 学生-课程数据库,9,3.2 学生-课程数据库,10,3.2 学生-课程数据库,11,第三章 关系数据库标准语言SQL,3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图,12,3.3 数据定义,SQL的数据定义功能包括数据库定义、表定义、视图和索引定义。,13,3.3 数据定义,数据库的定义与删除 基本表的定义、删除与修改 索引的建立与删除,14,3.3.1 数据库的定义与删除,定义数据库 CREATE DATABASE 确保用户具有创建数据库的权限 例1 定义学生-课程数据库S_T CREATE DATABASE S_T;,15,3.3.1 数据库的定义与删除,定义数据库 CREATE DATABASE S_T ON PRIMARY ( NAME = S_T_data1, FILENAME = D:dataS_T_data1.mdf, SIZE = 20 MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% ) LOG ON ( NAME = S_T_log1, FILENAME = D:dataS_T_log1.ldf, SIZE = 50 MB, MAXSIZE = 100 MB, FILEGROWTH = 10 MB );,16,3.3.1 数据库的定义与删除,删除数据库 DROP DATABASE 例2 删除学生-课程数据库S_T DROP DATABASE S_T;,17,3.3.2 基本表的定义、删除与修改,定义基本表 CREATE TABLE ( , ,); :所要定义的基本表的名字 :组成该表的各个属性(列) :涉及相应属性列的完整性约束条件 :涉及一个或多个属性列的完整性约束条件,18,3.3.2 基本表的定义、删除与修改,定义基本表 例3 建立一个“学生”表Student,学号是主码,姓名取值唯一。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );,19,3.3.2 基本表的定义、删除与修改,定义基本表 例4 建立一个“课程”表Course CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4) REFERENCES Course(Cno), Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) );,20,3.3.2 基本表的定义、删除与修改,定义基本表 例5 建立学生选课表SC,成绩取值在1-100之间。 CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT check(Grade=1 and Grade=100), PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno);,21,3.3.2 基本表的定义、删除与修改,定义基本表 常用完整性约束 实体完整性约束:PRIMARY KEY 参照完整性约束:FOREIGN KEY 用户自定义的完整性约束: CHECK约束 唯一性约束(UNIQUE) 非空值约束(NOT NULL) PRIMARY KEY与 UNIQUE的区别?,22,3.3.2 基本表的定义、删除与修改,修改基本表 ALTER TABLE ADD 完整性约束 DROP ALTER COLUMN ; :要修改的基本表 ADD子句:增加新列和新的完整性约束条件 DROP子句:删除指定列和完整性约束条件 ALTER COLUMN子句:用于修改列名和数据类型,23,3.3.2 基本表的定义、删除与修改,修改基本表 例6 向Student表中增加“入学时间”列,其数据类型为日期型。 ALTER TABLE Student ADD Scome DATE; 不论基本表中原来是否已有数据,新增加的列一律为空值。,24,3.3.2 基本表的定义、删除与修改,修改基本表 例7 将Student表中属性列Scome删除 ALTER TABLE Student DROP COLUMN Scome; 例8 将年龄的数据类型改为整型 ALTER TABLE Student ALTER COLUMN Sage INT; 注:修改原有的列定义有可能会破坏已有数据 例9 增加/删除课程名称必须取唯一值的约束 ALTER TABLE Course ADD UNIQUE(Cname); ALTER TABLE Course DROP UQ_C_7D78A4E7;,25,3.3.2 基本表的定义、删除与修改,删除基本表 DROP TABLE RESTRICT:删除表是有限制的 欲删除的基本表不能被其他表的约束所引用 如果存在依赖该表的对象,则此表不能被删除 CASCADE:删除该表没有限制。 在删除基本表的同时,相关的依赖对象一起删除,26,3.3.2 基本表的定义、删除与修改,删除基本表 例10 删除Student表 DROP TABLE Student CASCADE; 基本表定义被删除,数据被删除 表上建立的索引、视图、触发器等一般也将被删除,27,3.3.2 基本表的定义、删除与修改,删除基本表 例11 若表上建有视图,选择RESTRICT时表不能删除 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept=IS; DROP TABLE Student RESTRICT;,28,3.3.2 基本表的定义、删除与修改,删除基本表 例12 若表上建有视图,选择CASCADE时可以删除表,视图也自动被删除 DROP TABLE Student CASCADE; 注意:不同的数据库产品在遵循SQL标准的基础上具体实现细节和处理策略上会与标准有差别,29,3.3.3 索引的建立与删除,建立索引是加快查询速度的有效手段 建立索引 DBA或表的属主(即建立表的人)根据需要建立 有些DBMS自动建立以下列上的索引 PRIMARY KEY UNIQUE 维护索引 DBMS自动完成 使用索引 DBMS自动选择是否使用索引以及使用哪些索引,30,3.3.3 索引的建立与删除,建立索引 CREATE UNIQUE CLUSTER INDEX ON (, ); 用指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引。,31,3.3.3 索引的建立与删除,建立索引 例13 为学生-课程数据库中的S,C,SC三个表建立索引。其中S表按学号升序建唯一索引,C表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引 CREATE UNIQUE INDEX Stusno ON S (Sno); CREATE UNIQUE INDEX Coucno ON C (Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);,32,3.3.3 索引的建立与删除,建立索引 唯一值索引 对于已含重复值的属性列不能建UNIQUE索引 对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束,33,3.3.3 索引的建立与删除,建立索引 聚簇索引 建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致 CREATE CLUSTER INDEX Stusname ON S (Sname) 在S表的Sname(姓名

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论