数据库原理与设计课件:第4章 SQL

上传人:窝*** 文档编号:260549638 上传时间:2022-02-28 格式:PPTX 页数:208 大小:958.51KB
返回 下载 相关 举报
数据库原理与设计课件:第4章 SQL_第1页
第1页 / 共208页
数据库原理与设计课件:第4章 SQL_第2页
第2页 / 共208页
数据库原理与设计课件:第4章 SQL_第3页
第3页 / 共208页
数据库原理与设计课件:第4章 SQL_第4页
第4页 / 共208页
数据库原理与设计课件:第4章 SQL_第5页
第5页 / 共208页
点击查看更多>>
资源描述

《数据库原理与设计课件:第4章 SQL》由会员分享,可在线阅读,更多相关《数据库原理与设计课件:第4章 SQL(208页珍藏版)》请在金锄头文库上搜索。

1、第4章关系数据库标准语言SQL22013/3/284.1SQL简介n结构化查询语言SQL(StructuredQueryLanguage)是一种介于关系代数与关系演算之间的语言,是一个通用的、功能极强的关系数据库语言,是关系数据库的标准语言。nSQL语言的版本包括: SQL-89,SQL-92, SQL-99(SQL3)增加了面向对象的概念 SQL2003(SQL4),nSQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,充分体现了关系数据语言的特点和优点32013/3/28SQL的特点n综合统一 集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,可以完成数据

2、库生命周期中的全部活动。 关系模型中实体和实体间的联系都用关系来表示,使得操作符单一,每种操作只使用一个操作符。n高度非过程化 使用SQL语言,只需要提出“做什么”,而无需指明“怎么做”,无需了解存取路径,提高了数据的独立性n面向集合的操作方式 SQL语言采用集合操作方式,查询、插入、删除、修改操作的对象都是集合。42013/3/28SQL的特点n以同一种语法结构提供多种使用方式 作为独立的语言提供联机交互工具,在终端键盘上直接键入SQL命令对数据库进行操作,由DBMS来进行解释 作为嵌入式语言SQL语句能嵌入到高级语言程序中,使应用程序充分利用SQL访问数据库的能力n不同方式下,SQL的语法

3、结构基本上是一致的,提供了极大的灵活性和方便性。52013/3/28第4章关系数据库标准语言SQLn4.1 SQL简介n4.2 SQL的系统结构n4.3 SQL的数据定义n4.4 SQL的数据操纵n4.5 SQL中的视图n4.6 SQL的数据控制n4.7 嵌入式SQLn4.8 小结62013/3/284.2SQL的系统结构nSQL语言支持数据库的三级模式结构 在SQL中,关系模式称为基本表(Table),基本表的集合形成数据库模式,对应三级模式结构的模式 基本表在物理上与存储文件相对应,所有存储文件的集合为物理数据库。 外模式由视图(View)组成视图图存储文件视图基本表基本表基本表SQL存储

4、文件存储文件外模式模式内模式72013/3/284.3数据定义nSQL的数据定义功能主要包括定义表、定义视图和定义索引,在SQL2中还增加了对SQL数据库模式的定义82013/3/284.3.1模式的定义和删除n在SQL中,一个SQL模式(SQLSchema)由模式名、权限标识符和模式中元素的描述符组成。 权限标识符指明拥有该模式的用户或帐号 模式元素包含一个数据库应用的表、视图和索引等 属于同一应用的表、视图和索引等可以定义在同一模式中。n在定义模式时可先给出模式名和权限标识符,以后再定义其中的元素,语法格式:CREATESCHEMAAUTHORIZATION 如果没有指定,则隐含为9201

5、3/3/284.3.1模式的定义和删除n【例4-1】定义学生数据库模式SST,用户为SDBA。CREATESHEMASSTAUTHORITHZATIONSDBA;n例CREATESCHEMAAUTHORIZATIONWANG没有指定“模式名”,所以“模式名”隐含为用户名WANG102013/3/28关于模式nOracle中:用户帐号拥有的对象集称为用户的模式n在SQLServer中, 由于架构的原因,User和Schema总有一层隐含的关系,让用户很少意识到其实User和Schema是两种完全不同的概念。 在SQLServer2000中,在某一个数据库中创建了用户Bosco,后台默认地创建了S

6、chema【Bosco】。 SQLServer2000中表的名称体现数据库、用户和表名三方面的信息:database_name.owner.table_name 在SQLServer2005中这种架构被打破,User和Schema被分开112013/3/28SQLServer2005中的模式n用CreateUser创建数据库用户时,可以为该用户指定一个已经存在的Schema作为默认Schema,如果不指定,则该用户所默认的Schema即为dboSchema,dboSchema好比一个大的公共房间n在SQLServer2005中创建一个数据库的时候,会有一些Schema包括进去,被包括进去的Sc

7、hema有:dbo,guest,sys,INFORMATION_SCHEMA,还有一些角色Schema等等n当createtableA时,如果没有指定特定的Schema,则A表创建在: 1.如果当前操作数据库的用户有默认的Schema(在创建用户的时候指定了),那么表A被创建在了默认的Schema上。 2.如果当前操作数据库的用户没有默认的Schema(即在创建User的时候默认为空),创建在dboSchema上。 3.如果在创建表A的时候指定了特定的Schema做前缀,则表A被创建在了指定的Schema上122013/3/28SQLServer2005中的模式n现在如果登录的用户为Sue,该

8、用户有一个默认Schema也为Sue,那么如果现在有一条查询语句为Select*frommytable,那么搜寻每个房间(Schema)的顺序是怎样的呢? 1.首先搜寻sys.mytable(SysSchema) 2.然后搜寻Sue.mytable(DefaultSchema) 3.最后搜寻dbo.mytable(DboSchema)n每个数据库在创建后,有4个Schema是必须的(删不掉),这4个Schema为 dbo,guest,sys INFORMATION_SCHEMA132013/3/284.3.1模式的定义和删除n定义模式后,实际上定义了一个命名空间,可以进一步定义该模式包含的数据

9、库对象,如表,视图和索引等n可以在创建模式的同时在模式定义中进一步创建基本表、视图、定义授权等CREATESCHEMA模式名AUTHORIZATION用户名表定义子句视图定义子句授权定义子句n例创建相互依赖的FOREIGNKEY约束CREATESCHEMAAUTHORIZATIONrossCREATETABLEt1(c1INTPRIMARYKEY,c2INTREFERENCESt2(c1)CREATETABLEt2(c1INTPRIMARYKEY,c2INTREFERENCESt1(c1)用其它方法完成需要执行多个步骤142013/3/284.3.1模式的定义和删除n删除模式语句:DROPSC

10、HEMA模式名CASCADERESTRICT CASCADE(级联式)方式表示在删除模式的同时把该模式中所有的数据库对象全部一起删除 RESTRICT(限制式)方式表示如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行152013/3/284.3.2表的定义、删除与修改n1.定义基本表CREATETABLE(,); :所要定义的基本表的名字 :组成该表的各个属性(列) :涉及相应属性列的完整性约束条件 :涉及一个或多个属性列的完整性约束条件162013/3/281.定义基本表n【例4-3】建立学生表Student,表中属性有:学号Sno,姓名Sname,年龄Sage,性别Ssex,

11、学生所在系SdeptCREATETABLEStudent(SnoCHAR(6)NOTNULLUNIQUE,SnameCHAR(8),SageINT,SsexCHAR(2),SdeptCHAR(12),CONSTRAINTC1CHECK(SsexIN(男,女),CONSTRAINTS_PKPRIMARYKEY(Sno); CONSTRAINT子句定义列级或表级约束,其格式为CONSTRAINT172013/3/281.定义基本表n在SQL2中增加了定义域的语句,可以用域名代替指定列的数据类型。n如果有一个或多个表的属性的域是相同的,通过对域的修改可以很容易地改变属性的数据类型。n域定义语句的格式

12、为:CREATEDOMAIN; 例CREATEDOMAINSdept_TYPECHAR(12);n域Sdept_TYPE创建后,定义学生表时,对列Sdept的类型定义可以用域名代替:SdeptSdept_TYPE。182013/3/281.定义基本表【例4-4】CREATETABLECourse(CnoCHAR(6)NOTNULL,CnameCHAR(20),CcreditINT,PRIMARYKEY(Cno);CREATETABLESC(SnoCHAR(6)NOTNULL,CnoCHAR(6)NOTNULL,GradeINTCHECK(GradeBETWEEN0AND100),CONSTRA

13、INTSC_PKPRIMARYKEY(Sno,Cno),CONSTRAINTSC_FK1FOREIGNKEY(Sno)REFERENCESStudent(Sno),CONSTRAINTSC_FK2FOREIGNKEY(Cno)REFERENCESCourse(Cno);192013/3/281.定义基本表n例CREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40),CpnoCHAR(4),CcreditSMALLINT,FOREIGNKEY(Cpno)REFERENCESCourse(Cno);CREATETABLESC(SnoCHAR(9),C

14、noCHAR(4),Gradesmallint,Primarykey(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno);202013/3/281.定义基本表n在定义基本表时,表所属的数据库模式一般被隐式指定,也可以显式地在定义表时指定表所属的数据库模式名。 如下语句在定义学生表时,同时指出学生表所在的模式为学生数据库模式SST。CREATETABLESST.Student(SnoCHAR(6)NOTNULLUNIQUE,);n在创建模式语句中同时创建表212013/3/282.

15、修改基本表ALTERTABLEADDDROPCASCADE|RESTRICTALTER; ADD子句用于增加新列,包括列名、数据类型和列级完整性约束 DROP子句用于删除指定的列名,CASCADE表示删除列时自动删除引用该列的视图和约束RECTRICT表示没有视图和约束引用时才能删除该列,否则将拒绝删除操作 ALTER子句用于修改列的定义,如修改列的数据类型或修改列的宽度222013/3/282.修改基本表n【例4-5】在学生表Student中增加一列,列名为班级。ALTERTABLEStudentADDCLASSCHAR(8); 不论基本表中原来是否已有数据,新增加的列一律为空值n【例4-6

16、】修改学生表Student中姓名列的长度为20。ALTERTABLEStudentALTERSnameCHAR(20); 修改原有的列定义有可能会破坏已有数据232013/3/283.删除基本表nDROPTABLE表名RESTRICTCASCADE; 若选择RESTRICT,则删除的基本表不能是由FOREIGNKEY约束引用的表,不能有视图,不能有触发器,不能有存储过程或函数等。如果存在这些依赖该表的对象,则此表不能被删除 若选择CASCADE,则该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图等都将被一起删除。 在缺省的情况下,默认为RESTRICT242013/3/283.删除基本表nSQLServer删除表DROPTABLE表名 数据、表上的索引都删除,删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述 表上的视图往往仍然保留,但无法引用 DROPTABLE不能用于删除有FOREIGNKEY约束引用的表nOracle删除表时, 自动删除表上所有索引, 保留视图定义(但失效), 保留建立在此表上的存储过程和函数(但失效), CASCADE选项下可以删

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号