数据库系统教程DBS第三章1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三章关系数据库语言SQL3.1SQL的体系结构3.2SQL的数据定义3.3SQL的数据查询3.4SQL的数据更新3.5视图3.6嵌入式SQL第三章关系数据库语言SQL第三章关系数据库语言SQL3.1SQL的体系结构3.1SQL的体系结构SQL:StructuredQueryLanguage高度非过程化语言→各种RDBMS都支持,但有差异第三章关系数据库语言SQL3.1SQL的体系结构3.1.1SQL的产生和发展1989年ISO公布SQL89(增强完整性)1974年由Boyce和Chamberlin提出,IBM的SystemR上实现SEQUEL(结构化英语查询语言)1986年10月ANSI公布第一个SQL标准SQL861987年被ISO接受公布第一个SQL标准SQL861992年ISO公布SQL92→SQL2(支持远程数据库访问)1999年ISO公布SQL3(增加了面向对象及触发器功能)1972年IBM研制SYSTEMR,配查询语言SQUARE1970年E.F.Codd提出关系模型第三章关系数据库语言SQL3.1SQL的体系结构第五章关系数据库语言SQL3.1SQL的体系结构3.1.2SQL数据库的体系结构——三级结构基本表1基本表2基本表3基本表4概念模式存储文件1存储文件2存储文件3存储文件4内模式视图1视图2外模式用户1用户2用户3用户4要点:*一个SQL模式(Schema)是已命名的数据组,由表、授权、规则、约束等组成*一个SQL表(Table)由行集组成,行是列的序列,每列对应一个数据项*表有三种类型:基表:实际存储在数据库中的表视图:由若干基表或视图构成的表的定义→虚表是逻辑定义,无具体数据同一基表可为不同用户提供不同的视图视图增强了数据独立性、有利于安全、方便了用户导出表:执行查询后产生的表第三章关系数据库语言SQL3.1SQL的体系结构要点(续):*一个SQL基表可以跨越一个或多个存储文件,每个存储文件与外存上的一个物理文件对应*用户可以用SQL语句对基表和视图进行查询,但对视图的其它操作受限*SQL用户类型:应用程序、终端用户第三章关系数据库语言SQL3.1SQL的体系结构数据定义语言DDL――用于定义、撤销和修改数据模式SQL模式、基表、视图、索引查询语言QL――用于查询数据数据操纵语言DML――用于增、删、改数据数据控制语言DCL――用于数据访问权限的控制完整性规则描述事务控制等按功能分为四大部分:第三章关系数据库语言SQL3.1SQL的体系结构3.1.2SQL的组成交互式SQL(ISQL)→单独使用的SQL,不能编程嵌入式SQL→将SQL嵌入其它程序设计语言(主语言)中两种使用方法:数据定义语言DDL数据操纵语言DML:查询语言QL+更新语言数据控制语言DCL说明:教材中SQL的组成嵌入式SQL的使用规定第三章关系数据库语言SQL3.1SQL的体系结构程序设计语言—(宿)主语言SQL语句对数据库进行(访问)操作宿主语言对数据进行计算、处理、流程控制3.2SQL的数据定义一、SQL模式的创建和撤销二、基本数据类型三、基表的创建、修改和撤销四、索引的创建和撤销第三章关系数据库语言SQL3.2SQL的数据定义3.2.1SQL模式的创建和撤销1.SQL模式的创建CREATESCHEMA模式名AUTHORIZATION用户名SQL模式由模式名和拥有者的用户名或帐号确定2.SQL模式的撤销DROPSCHEMA模式名[CASCADE|RESTRICT]CASCADE:该模式下的数据库对象随模式而撤消RESTRICT:只当该模式下无元素时才可撤消3.1SQL的体系结构3.2SQL的数据定义3.3SQL的数据查询3.4SQL的数据更新3.5视图3.6嵌入式SQL第三章关系数据库语言SQLCREATESCHEMATLAUTHORIZATIONU1;DROPSCHEMATLCASCADE;数据类型说明符备注整数INT字长32位短整数SMALLINT字长16位十进制数NUMBERIC(m,n)m为总位数(不包括小数点),n为小数位数浮点数FLOAT一般指双精度浮点数,即字长64位定长字符串CHAR(n)按固定长度n存储字符串。如果实际长度小于n,后面填空格;如果实际字符串长大于n,则报错变长字符串VARCHAR(n)按实际字符串长度存储,超过n否则报错日期DATE格式为“yyyymmdd”,年份为0000至9999;月份,为1至12;dd为1至31时间TIME格式为“hhmmss”,hh表示时,范围为0至24;mm表示分,ss表示秒,范围都是0至59时标TIMESTAMP格式为“yyyymmddhhmmssnnnnnn”,nnnnnn表示微秒,范围为0至999999,其它符号意义同上位串型BIT(n)时间间隔INTERVAL第三章关系数据库语言SQL3.2SQL的数据定义3.2.2基本的数据类型(1)基本句法:(2)域完整性约束条件CREATETABLE表名(列名类型[域完整性约束条件]{,列名类型[域完整性约束条件]}[,表级完整性约束条件]);――三个任选项NOTNULL→此列不得取NULL,主键可不指出UNIQUE→列值唯一,不得重复DEFAULT→此列的值空缺时,由系统填该缺省值缺省值有三种:事先定义的字值例如:数值型置为0用户标识符账目上的储蓄所名NULL前面应无NOTNULL选项第三章关系数据库语言SQL3.2SQL的数据定义一、基表的创建--CREATETABLE3.2.3基表的创建、修改和撤销例1:定义有关学生信息的STUDENT基表。CREATETABLESTUDENT(SNOCHAR(7)NOTNULL,SNAMEVARCHAR(8)NOTNULL,SEXCHAR(2)NOTNULL,BDATEDATENOTNULL,HEIGHTDEC(5,2)DEFAULT000.00,…);第三章关系数据库语言SQL3.2SQL的数据定义(3)表级完整性约束条件(主键子句,外键子句,检查子句)作用:提供实体完整性约束的说明每表一个主键(任选项)格式:PRIMARYKEY(列名表)列名表中的各列必须满足NOTNULL和唯一性系统一般自动在主键上建索引并在插入新行时做唯一性检查主键为单属性时:可直接在属性定义后用PRIMARYKEY主键(PRIMARYKEY)子句第三章关系数据库语言SQL3.2SQL的数据定义例:CREATETABLESTUDENT(SNOCHAR(7)NOTNULL,…或CREATETABLESTUDENT(SNOCHAR(7)PRIMARYKEY,…);第三章关系数据库语言SQL3.2SQL的数据定义,PRIMARYKEY(SNO));作用:提供引用完整性约束的说明每表可有0~多个外键(任选项)可以附加引用完整性约束选项[ONDELETE]外键(FOREIGNKEY)子句格式:FOREIGNKEY[外键名](列名表1)REFERENCES主表名[(列名表2)][ONDELETERESTRICT|CASCADE|SETNULL]从表的列随主表主键的删除设为NULL,该列应无NOTNULL说明从表的行随主表主键的删除而删除被引用的主键不得删除第三章关系数据库语言SQL3.2SQL的数据定义给定义外键这个完整性约束取一个名称例如:说明分数GRADE应取NULL或0~100之间的整数值CREATETABLESC(SNOCHAR(7)NOTNULL,…,GRADESMALLINT,可选的检查(CHECK)子句作用:对某元组某属性的取值的约束说明(例:成绩)格式:CHECK(约束表达式)CHECK((GRADEISNULL)OR(GRADEBETWEEN0AND100)));第三章关系数据库语言SQL3.2SQL的数据定义(4)举例例1:定义基表学生STUDENT、课程COURSE、选课SC。CREATETABLESTUDENT(SNOCHAR(7)NOTNULL,SNAMEVARCHAR(8)NOTNULL,SEXCHAR(2)NOTNULL,BDATEDATENOTNULL,HEIGHTDEC(5,2)DEFAULT000.00,PRIMARYKEY(SNO));第三章关系数据库语言SQL3.2SQL的数据定义CREATETABLECOURSE(CNOCHAR(6)NOTNULL,LHOURSMALLINTNOTNULL,,CREDITDEC(1,0)NOTNULL,SEMESTERCHAR(2)NOTNULL,,PRIMARYKEY(CNO));第三章关系数据库语言SQL3.2SQL的数据定义CREATETABLESC(SNOCHAR(7)NOTNULL,CNOCHAR(6)NOTNULL,GRADEDEC(4,1)DEFAULTNULL,PRIMARYKEY(SNO,CNO),FOREIGNKEY(SNO)REFERENCESSTUDENTONDELETECASCADE,FOREIGNKEY(CNO)REFERENCESCOURSEONDELETERESTRICT);第三章关系数据库语言SQL3.2SQL的数据定义(5)说明数据库对象(基表、视图等)都有其拥有者(用户or模式)其它用户对该对象的访问受限,并且要说明表创建者:表的创建者名.表名〉用CREATE语句创建的基表,只是一个空框架,需装入数据才可使用数据的装入可用Insert命令、数据装载程序第三章关系数据库语言SQL3.2SQL的数据定义复制某表结构的命令如下:createtable名asselect*from(1)增加属性ALTERTABLE[表的创建者名.]基表名ADD属性名类型;*对该表的创建者本身,可略去[表的创建者名.](2)删除属性ALTERTABLE基表名DROP属性名[CASCADE|RESTRICT]CASCADE:引用该列的视图和约束随之删除RESTRICT:只在没有被引用时才可删除*不是所有的DBMS都支持第三章关系数据库语言SQL3.2SQL的数据定义二、基表结构的修改(列.主键.外键.别名)--ALTERTABLE(4)补充定义主键ALTERTABLE表名ADDPRIMARYKEY(列名表);*可用于在插入大批数据时,暂时撤销主键定义,提高系统效率*被定义为主键的属性集的值必须满足NOTNULL和唯一性条件第三章关系数据库语言SQL3.2SQL的数据定义ALTERTABLE基表名MODIFY列名类型;(3)修改属性类型(5)撤销主键定义ALTERTABLE表名DROPPRIMARYKEY;*可用于在插入大批数据时,暂时撤销主键定义,提高系统效率第三章关系数据库语言SQL3.2SQL的数据定义ALTERTABLE从表名ADDFOREIGNKEY[外键名](列名表)REFERENCES主表名[ONDELETERESTRICT|CASCADE|SETNULL];(6)补充定义外键(7)撤销外键定义ALTERTABLE表名DROP外键名;*供必要时暂时撤销外键之用DROPTABLE表名[CASCADE|RESTRICT];*注意与DELETE的区别三、基表的撤销--DROPTABLE删除该基本表时,所有引用该基本表的视图和约束一起自动被删除没有视图和约束引用该基本表时,才能撤销第三章关系数据库语言SQL3.2SQL的数据定义索引键按降序排列创建:CREATE[UNIQUE]INDEX索引名ON基表名(列名[ASCDESC][{,列名[ASCDESC]}]);索引键按升序排列(1)索引――是物理存取路径,不属于逻辑数据模式RDBMS通常在主键上自动建立索引查询、更新时自动起作用索引属性名,也称索引键名DROPINDEX索引名列表;撤销:(2)句法:可在多属性上建立索引每个属性排序可不同第三章关系数据库语言SQL3.2SQL的数据定义3.

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功