数据库第3章.ppt

上传人:s****8 文档编号:82775032 上传时间:2023-03-26 格式:PPT 页数:284 大小:1.45MB
返回 下载 相关 举报
数据库第3章.ppt_第1页
第1页 / 共284页
数据库第3章.ppt_第2页
第2页 / 共284页
点击查看更多>>
资源描述

《数据库第3章.ppt》由会员分享,可在线阅读,更多相关《数据库第3章.ppt(284页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、返回返回第第3章章SQL语言语言1返回返回结构化查询语言结构化查询语言SQL(StructuredQueryLanguage)是一是一种介于种介于关系代数关系代数与与关系演算关系演算之间的语言,其功能包括之间的语言,其功能包括查询、查询、操纵、定义操纵、定义和和控制控制四个方面,是一个通用的、功能极强的四个方面,是一个通用的、功能极强的关系数据库关系数据库语言。目前已成为关系数据库的标准语言。语言。目前已成为关系数据库的标准语言。2返回返回SQL概述概述3返回返回3.1SQL概貌及其特点概貌及其特点主要特点:主要特点:1.1.语言简洁、易学易用:语言简洁、易学易用:核心功能只有核心功能只有8

2、8个动词,个动词,语法简语法简单,接近英语。单,接近英语。SQL功能操作符数据查询SELECT数据定义CREATE,DROP数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKE4返回返回2.2.高度非过程化的语言:高度非过程化的语言:用户只需提出用户只需提出“干什么干什么”,至至于于“怎么干怎么干”由由DBMSDBMS解决;用户只需要在查询语句中解决;用户只需要在查询语句中提出需要什么,提出需要什么,DBMSDBMS即可按路径存取,并把结果返回即可按路径存取,并把结果返回给用户。给用户。3.3.面向集合的语言:面向集合的语言:SQLSQL语言采用集合操作方式,不仅语

3、言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。更新操作的对象也可以是元组的集合。5返回返回4.4.以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式SQLSQL语言既是自含式语言,又是嵌入式语言。语言既是自含式语言,又是嵌入式语言。作为自含式语言作为自含式语言,它能够独立地用于联机交互的使用方,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入式,用户可以在终端键盘上直接键入SQLSQL命令对数据库进命令对数据库进行操作。行操作。作为嵌入式语言,作为嵌入式语言,S

4、QLSQL语句能够嵌入到高级语言程序中,语句能够嵌入到高级语言程序中,供程序员设计程序时使用。供程序员设计程序时使用。而在两种不同的使用方式下,而在两种不同的使用方式下,SQLSQL语言的语法结构基本语言的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的使用上是一致的。这种以统一的语法结构提供两种不同的使用方式的作法,为用户提供了极大的灵活性与方便性。方式的作法,为用户提供了极大的灵活性与方便性。6返回返回5.5.具有查询、操作、定义和控制四种语言一体化的特点。具有查询、操作、定义和控制四种语言一体化的特点。而而SQLSQL语言则集语言则集数据定义语言数据定义语言DDLDDL、数据操

5、纵语言数据操纵语言DMLDML、数数据控制语言据控制语言DCLDCL的功能于一体,包括定义关系模式、录入的功能于一体,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据以建立数据库、查询、更新、维护、数据库重构、数数据库重构、数据库安全性控制据库安全性控制等一系列操作要求,这就为数据库应用系等一系列操作要求,这就为数据库应用系统开发提供了良好的环境。统开发提供了良好的环境。7返回返回3.1.2SQL语言的基本概念语言的基本概念首先介绍两个基本概念:基本表和视图。首先介绍两个基本概念:基本表和视图。基基本本表表(BASETABLE):是是独独立立存存在在的的表表,不不是是由由其其它它

6、的的表表导导出出的的表表。一一个个关关系系对对应应一一个个基基本本表表,一一个个或多个基本表对应一个存储文件。或多个基本表对应一个存储文件。视视图图(VIEW):是是一一个个虚虚拟拟的的表表,是是从从一一个个或或几几个个基基本本表表导导出出的的表表。它它本本身身不不独独立立存存在在于于数数据据库库中中,数数据据库库中中只只存存放放视视图图的的定定义义而而不不存存放放视视图图对对应应的的数数据据,这这些些数数据据仍仍存存放放在在导导出出视视图图的的基基本本表表中中。当当基基本本表表中中的的数数据据发发生生变变化化时时,从从视视图图中中查查询询出出来来的的数数据据也也随随之之改改变。变。8返回返回

7、例如:例如:学生数据库中有学生基本情况表学生数据库中有学生基本情况表STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT),此表此表为基本表,对应一个存储文件。可以在其基础上定义为基本表,对应一个存储文件。可以在其基础上定义一个男生基本情况视图一个男生基本情况视图STUDENT_MALE(SNO,SNAME,SAGE,SDEPT),它是从STUDENT中选择SSEX=男的各个行,然后在SNO,SNAME,SAGE,SDEPT上投影得到的。在数据库中只存有STUDENT_MALE的定义,而STUDENT_MALE的记录不重复存储。在用户看来,视图是通过不同路径去看一个实际表,就象一

8、个窗口一样,我们通过窗户去看外面的高楼,可以看到高楼的不同部分,而透过视图可以看到数据库中自己感兴趣的内容。9返回返回SQL视图1视图2基本表1基本表2基本表3基本表4存储文件1存储文件2外模式模式内模式图3.1SQL语言支持的关系数据库的三级逻辑结构SQL语言支持数据库的三级模式结构,如图语言支持数据库的三级模式结构,如图3.1所示。所示。其中其中外模式外模式对应于视图和部分基本表,对应于视图和部分基本表,模式模式对应于基对应于基本表,本表,内模式内模式对应于存储文件。对应于存储文件。10返回返回3.2SQL数据定义数据定义SQL语语言言使使用用数数据据定定义义语语言言(DATA DEFIN

9、ITIONLANGUAGE,简简称称DDL)实实现现其其数数据据定定义义功功能能,可可对数据库对数据库用户用户、基本表基本表、视图视图、索引索引进行定义和撤消。进行定义和撤消。3.2.13.2.1定义、删除、修改基本表定义、删除、修改基本表11返回返回一一.定义基本表定义基本表(1)(1)定义基本表的语句格式:定义基本表的语句格式:CREATE TABLECREATE TABLE (列级完整性约束条件列级完整性约束条件 ,列级完整性约束条件列级完整性约束条件.).),;其中是所要定义的基本表的名字;建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当

10、用户操作表中数据时由DBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。12返回返回2、定义表的各个属性时需要指明其数据类型及长度。不同的数据库系统支持的数据类型不完全相同,例如IBM DB2 SQL主要支持以下数据类型:SMALLINT 半字长二进制整数。INTEGER或INT 全字长二进制整数。DECIMAL(p,q)或DEC(p,q)压缩十进制数,共p位,其中小数点后有q位。0qp15,q=0时可以省略。FLOAT 双字长浮点数。CHARTER(n)或CHAR(n)长度为n的定长字符串。VA

11、RCHAR(n)最大长度为n的变长字符串。GRAPHIC(n)长度为n的定长图形字符串。VARGRAPHIC(n)最大长度为n的变长图形字符串。DATE 日期型,格式为YYYY-MM-DD。TIME 时间型,格式为HH.MM.SS。TIMESTAMP 日期加时间。13返回返回例例建建立立一一“学学生生”表表Student由由学学号号(Sno)、姓姓名名(Sname)、性别(性别(Ssex)、)、年龄(年龄(Sage)、)、所在系(所在系(Sdept)五个属性组成,五个属性组成,其中学号属性不能为空,并且其值是唯一的。其中学号属性不能为空,并且其值是唯一的。CREATETABLEStudent(

12、SnoCHAR(8)NOTNULLUNIQUE,SnameVARCHAR(20),SsexCHAR(2),sageINT,SdeptVARCHAR(20);执行该语句后,便产生了学生基本表的表框架,此表为一个空表。执行该语句后,便产生了学生基本表的表框架,此表为一个空表。14返回返回例题例题(续)(续)15返回返回3.定义完整性约束定义完整性约束上上例例为为创创建建基基本本表表的的最最简简单单形形式式,还还可可以以对对表表进进一一步步定定义义,如如主主键键、空空值值的的设设定定,使使数数据据库库用用户户能能够够根根据据应应用用的的需需要要对对基基本本表表的的定定义义做做出出更更为为精精确和详尽

13、的规定。确和详尽的规定。在在SQLSERVER中中,对对于于基基本本表表的的约约束束分分为为列列约约束束和和表约束表约束。列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用,分隔,定义表约束时必须指出要约束的那些列的名称。16返回返回约束类型:约束类型:在定义完整性约束时必须指定完整性约束的类型。在定义完整性约束时必须指定完整性约束的类型。在在SQLSERVER中中可可以以定定义义五五种种类类型型的的完完整整性性约约束束,下下面面分分别加以介绍:别加以介绍:(1)

14、NULL/NOTNULL是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串“NULL”,而是表示“不知道”、“不确定”或“没有数据”的意思。当某一字段的值一定要输入才有意义的时候,则可以设置为NOTNULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用只能用于定义列约束,17返回返回例例建立一个建立一个S表,对表,对SNO字段进行字段进行NOTNULL约束。约束。CREATETABLES(SNOCHAR(10)NOTNULL,SNVARCHAR(20),AGEINT,SEXCHAR(2),DEPTVARCHAR(20);当当SNO为空时,系统给出错误信息

15、,无为空时,系统给出错误信息,无NOTNULL约约束时,系统缺省为束时,系统缺省为NULL。18返回返回(2)UNIQUE约束约束UNIQUE约束用于指明基本表在某一列或多个列的组合上约束用于指明基本表在某一列或多个列的组合上的取值必须唯一。的取值必须唯一。定义了定义了UNIQUE约束的那些列称为约束的那些列称为唯一键唯一键,系统自动为唯,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。一键建立唯一索引,从而保证了唯一键的唯一性。唯一键允许为空,但系统为保证其唯一性,最多只可以出唯一键允许为空,但系统为保证其唯一性,最多只可以出现一个现一个NULL值。值。UNIQUE既可用于列约束,也

16、可用于表约束。既可用于列约束,也可用于表约束。例例建立一个建立一个S表,定义学号和姓名为唯一键,其中学号非空。表,定义学号和姓名为唯一键,其中学号非空。CREATETABLES(SNOCHAR(6)NOTNULLUNIQUE,SNCHAR(8)UNIQUE,SEXCHAR(2),AGEINT(2);19返回返回(3)PRIMARYKEY约束约束PRIMARYKEY约束用于定义基本表的主键,起唯一约束用于定义基本表的主键,起唯一标识作用,其值不能为标识作用,其值不能为NULL,也不能重复,以此来保也不能重复,以此来保证实体的完整性。证实体的完整性。20返回返回PRIMARYKEY与与UNIQUE

17、约束类似,但它们之间存约束类似,但它们之间存在着很大的在着很大的区别区别:在一个基本表中只能定义一个PRIMARYKEY约束,但可定义多个UNIQUE约束;对于指定为PRIMARYKEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。注意:不能为同一个列或一组列既定义注意:不能为同一个列或一组列既定义UNIQUE约束,约束,又定义又定义PRIMARYKEY约束。约束。PRIMARYKEY既可用于列约束,也可用于表约束。既可用于列约束,也可用于表约束。PRIMARYKEY用于定义用于定义列约束列约束时,其语法格式如下:时,其语法格式如下:在列在

18、列定义之后定义之后+PRIMARYKEY21返回返回例例建立一个建立一个S表,定义表,定义SNO为为S的主键的主键CREATETABLES(SNOCHAR(5)PRIMARYKEY,SNCHAR(8),AGENUMERIC(2);PRIMARYKEY用于定义用于定义表约束表约束时,即将某些列的组时,即将某些列的组合定义为主键,其语法格式如下:合定义为主键,其语法格式如下:PRIMARYKEY()22返回返回例例建立一个建立一个SC表,定义表,定义SNO+CNO为为SC的主键的主键CREATETABLESC(SNOCHAR(5),CNOCHAR(5),gradeNUMERIC(3),PRIMAR

19、YKEY(SNO,CNO);23返回返回(4)FOREIGNKEY约束约束FOREIGNKEY约束指定某一个列或一组列作为外部约束指定某一个列或一组列作为外部键,其中,包含外部键的表称为键,其中,包含外部键的表称为从表从表,包含外部键所,包含外部键所引用的主键或唯一键的表称引用的主键或唯一键的表称主表主表。系统保证从表在外部键上的取值要么是主表中某一个系统保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。以此保证两个表之主键值或唯一键值,要么取空值。以此保证两个表之间的连接,确保了实体的参照完整性。间的连接,确保了实体的参照完整性。FOREIGNKEY既可用于列约束,也可

20、用于表约束,既可用于列约束,也可用于表约束,其语法格式为:其语法格式为:FOREIGN KEY REFERENCES()24返回返回例例建立一个建立一个SC表,定义表,定义SNO,CNO为为SC的外部键。的外部键。CREATETABLESC(SNOCHAR(5)FOREIGN KEY REFERENCES S(SNO),CNOCHAR(5)FOREIGN KEY REFERENCES C(CNO),gradeNUMERIC(3),PRIMARY KEY(SNO,CNO);25返回返回(5)CHECK约束约束CHECK约约束束用用来来检检查查字字段段值值所所允允许许的的范范围围,如如,一一个个字

21、字段段只只能能输输入入整整数数,而而且且限限定定在在0-100的的整整数数,以以此此来来保证域的完整性。保证域的完整性。CHECK既可用于列约束,也可用于表约束,既可用于列约束,也可用于表约束,其语法格式为:其语法格式为:CHECK()例例建立一个建立一个SC表,定义表,定义grade的取值范围为的取值范围为0到到100之间。之间。CREATETABLESC(SNOCHAR(5),CNOCHAR(5),gradeNUMERIC(5,1)CHECK(grade=0 AND grade=100);26返回返回例例建立包含完整性定义的学生表建立包含完整性定义的学生表CREATETABLES(SNOC

22、HAR(6)PRIMARY KEY,SNCHAR(8)NOT NULL,AGENUMERIC(2)NOT NULL,CHECK(AGE BETWEEN 15 AND 50),SEXCHAR(2),DEPTCHAR(10)NOT NULL;27返回返回上次课内容回顾上次课内容回顾28返回返回创建表:创建表:CREATE TABLECREATE TABLE (列级完整性约束条件列级完整性约束条件 ,列级完整性约束条件列级完整性约束条件.).),;29返回返回例例建建立立一一“学学生生”表表Student由由学学号号(Sno)、姓姓名名(Sname)、性性别别(Ssex)、年年龄龄(Sage)、所所

23、在在系系(Sdept)五个属性组成,)五个属性组成,CREATETABLEStudent(SnoCHAR(8),SnameVARCHAR(20),SsexCHAR(2),sageINT,SdeptVARCHAR(20);30返回返回约束类型:约束类型:NOTNULLUNIQUEPRIMARYKEYFOREIGNKEYREFERENCECHECK31返回返回例例建立包含完整性定义的学生表建立包含完整性定义的学生表,其中其中sno为主码,为主码,sn不能取空值,不能取空值,age只能在只能在15至至35岁之间。岁之间。Dept是外码是外码(相对与(相对与D表中的表中的dno)USESTUDENTC

24、REATETABLES(SNOCHAR(6)PRIMARY KEY,SNCHAR(8)NOT NULL,AGENUMERIC(2)CHECK(AGE BETWEEN 15 AND 50),SEXCHAR(2),DEPTCHAR(10)foreignkeyreferenceD(dno);32返回返回二二修改基本表修改基本表由于应用环境和应用需求的变化,经常需要修改基本表的结构,由于应用环境和应用需求的变化,经常需要修改基本表的结构,比如,增加新列、修改原有的列定义和完整性约束等。比如,增加新列、修改原有的列定义和完整性约束等。SQL语言使用语言使用ALTERTABLE命令来完成这一功能,有如下三

25、种命令来完成这一功能,有如下三种修改方式:修改方式:1).ADD方式方式用于增加新列和完整性约束,定义方式同用于增加新列和完整性约束,定义方式同CREATETABLE语句语句中的定义方式相同,其语法格式为:中的定义方式相同,其语法格式为:ALTERTABLEADD|例例3.12在在S表中增加一个班号列表中增加一个班号列CLASS_NO和住址列和住址列ADDRESS。ALTERTABLESADDCLASS_NOCHAR(6),ADDRESSCHAR(40)33返回返回注意:使用此方式增加的新列注意:使用此方式增加的新列自动填充自动填充NULL值值,所以,所以不能为增加的新列指定不能为增加的新列指

26、定NOTNULL约束约束。向向Student表增加表增加“入学时间入学时间”列列Scome,其数据类型为日期,其数据类型为日期型型ALTERTABLEStudentADDScomeDATE;34返回返回2).DROP方式方式删除完整性约束定义,其语法格式为:删除完整性约束定义,其语法格式为:ALTERTABLEDROP例例3.15删除删除S表中的学生姓名必须取唯一值的约束表中的学生姓名必须取唯一值的约束ALTERTABLESDROPUNIQUE(Sname);35返回返回3 3)alter columnalter column方式方式该方式能对基本表中已有的列定义进行修改该方式能对基本表中已有

27、的列定义进行修改语法格式:语法格式:ALTER TABLEALTER TABLE alter column alter column 例:把例:把S S表中表中SnoSno列加宽到列加宽到1010位字符宽度位字符宽度ALTER TABLE ALTER TABLE S Salter columnalter column SnoSno CHAR(10);CHAR(10);36返回返回三三删除基本表删除基本表当某个基本表无用时,可将其删除。当某个基本表无用时,可将其删除。基本表定义一旦删除,表中的数据、在此表上建立的索引都将自动被删基本表定义一旦删除,表中的数据、在此表上建立的索引都将自动被删除掉,

28、而建立在此表上的视图虽仍然保留,但已无法引用。因此执行删除掉,而建立在此表上的视图虽仍然保留,但已无法引用。因此执行删除操作一定要格外小心。除操作一定要格外小心。删除表的语法格式:删除表的语法格式:DROPTABLERESTRICTCASCADERESTRICT:表示若此基本表被其他表的约束引用(例如有外码约束),或表示若此基本表被其他表的约束引用(例如有外码约束),或在此表上建立有视图,则该表不能被删除。在此表上建立有视图,则该表不能被删除。CASCADE:表示该表的删除没有限制。在删除此表的同时,相关的依赖:表示该表的删除没有限制。在删除此表的同时,相关的依赖对象也一并被删除。对象也一并被

29、删除。例例3.17删除表删除表STUDENTDROPTABLESTUDENTRESTRICTDROPTABLESTUDENTCASCADE这两个删除有何区别?这两个删除有何区别?37返回返回3.2.2建立和删除索引建立和删除索引一一 索引的作用索引的作用在日常生活中我在日常生活中我们们会会经经常遇到索引,例如常遇到索引,例如图书图书目目录录、词词典索引典索引等。等。借助索引,人借助索引,人们们会很快地找到需要的会很快地找到需要的东东西。西。索引是索引是数据数据库库随机随机检检索索的常用手段,的常用手段,它它实际实际上就是上就是记录记录的关的关键键字与其相字与其相应应地址的地址的对应对应表。表。

30、例如例如,当我当我们们要在本要在本书书中中查查找有关找有关“SQLSQL查询查询”的内的内容容时时,应该应该先通先通过过目目录录找到找到“SQLSQL查询查询”所所对应对应的的页页码码,然后从,然后从该页码该页码中找出所要的信息。中找出所要的信息。这这种方法比种方法比直接翻直接翻阅书阅书的内容要快。的内容要快。如果把数据如果把数据库库表比作一本表比作一本书书,则则表的索引就如表的索引就如书书的的目目录录一一样样,通,通过过索引可大大提高索引可大大提高查询查询速度。速度。38返回返回二二 索引的分类索引的分类聚集索引:聚集索引:按照索引的字段排列记录,并且依照排按照索引的字段排列记录,并且依照排

31、好的顺序将记录存储在表中。好的顺序将记录存储在表中。唯一索引唯一索引表示表中每一个索引值只对应唯一的数据表示表中每一个索引值只对应唯一的数据记录。记录。唯一性索引常用于唯一性索引常用于PRIMARY KEYPRIMARY KEY的字段上,以区的字段上,以区别每一笔记录。别每一笔记录。而当表中有而当表中有PRIMARY KEYPRIMARY KEY的字段时,的字段时,SQL SERVERSQL SERVER会在会在PRIMARY KEYPRIMARY KEY字段建立字段建立一个唯一索引一个唯一索引。复合索引复合索引是将两个字段或多个字段组合起来建立的是将两个字段或多个字段组合起来建立的索引,而单

32、独的字段允许有重复的值。索引,而单独的字段允许有重复的值。39返回返回三三建立索引建立索引建立索引的语句是建立索引的语句是CREATEINDEX,其语法格式为:其语法格式为:CREATEUNIQUECLUSTERINDEXON(次序次序,次序次序)UNIQUE表明建立唯一索引。表明建立唯一索引。唯一索引唯一索引表示表中每一个索引值只对应唯一的数据记录。表示表中每一个索引值只对应唯一的数据记录。不允许表中不同的行在索引列上取相同值。若已有相同不允许表中不同的行在索引列上取相同值。若已有相同值存在,则系统给出相关信息,不建此索引。值存在,则系统给出相关信息,不建此索引。CLUSTER表示建立聚集索

33、引。表示建立聚集索引。表中元组按索引项的值排序并物理地聚集在一起。一个基表中元组按索引项的值排序并物理地聚集在一起。一个基本表上只能建一个聚集索引。本表上只能建一个聚集索引。次序用来指定索引值的排列顺序,可为次序用来指定索引值的排列顺序,可为ASC(升序)或升序)或DESC(降序),缺省值为降序),缺省值为ASC。例例3.18为表为表SC在在SNO上建立唯一索引。上建立唯一索引。CREATEUNIQUEINDEXSCIONSC(SNO)40返回返回例例为教师表为教师表T在在TN上建立聚集索引。上建立聚集索引。CREATECLUSTERINDEXTIONT(TN)执行此命令后,为执行此命令后,为

34、T表建立一个索引名为表建立一个索引名为TI的聚集索引,的聚集索引,T表中的表中的记录将按照记录将按照TN值的升序存放。值的升序存放。例例为学生为学生-课程数据库中的课程数据库中的Student、Couse、SC三个表建立索引。三个表建立索引。其中其中Student表按学号升序建唯一索引,表按学号升序建唯一索引,Couse表按课程号升序建表按课程号升序建唯一索引,唯一索引,Sno、Cno表按学号升序和课程号降序建唯一索引。表按学号升序和课程号降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno

35、ON Couse(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);41返回返回注意:注意:1.改变表中的数据(如增加或删除记录)时,索引改变表中的数据(如增加或删除记录)时,索引将自动更新。将自动更新。索引建立后,在查询使用该列时,系统将自动使用索引建立后,在查询使用该列时,系统将自动使用索引进行查询。索引进行查询。2.索引数目无限制,但索引越多,更新数据的速度索引数目无限制,但索引越多,更新数据的速度越慢。对于仅用于查询的表可多建索引,对于数越慢。对于仅用于查询的表可多建索引,对于数据更新频繁的表则应少建索引。据更新频繁的表则应少建

36、索引。42返回返回四四删除索引删除索引建立索引是为了提高查询速度,但随着索引的增多,数据建立索引是为了提高查询速度,但随着索引的增多,数据更新时,系统会花费许多时间来维护索引。这时,应删除更新时,系统会花费许多时间来维护索引。这时,应删除不必要的索引。不必要的索引。删除索引的语句是删除索引的语句是DROPINDEX,其语法格式为:其语法格式为:DROPINDEX例例3.20删除表删除表SC的索引的索引SCI。DROPINDEXSCI43返回返回3.3SQL数据查询数据查询一、一、SELECT-FROM-WHERESELECT-FROM-WHERE句型:句型:组成的查询块,一般形式:组成的查询块

37、,一般形式:SELECT SELECT,(指出要检索的数据项指出要检索的数据项)FROM FROM,(给出要操作的关系表名给出要操作的关系表名)WHERE WHERE (给出查询结果应满足的条件给出查询结果应满足的条件)等价于:等价于:A A1 1,A,A2 2,A,An n(p p(r(r1 1 r r2 2 r rm m)n根据根据 Select Select 子句中的属性列表,对上述结果作投子句中的属性列表,对上述结果作投影(影()操作操作n对对 From From 子句中的各关系,作笛卡儿积子句中的各关系,作笛卡儿积()()n对对 Where Where 子句中的逻辑表达式进行选择(子

38、句中的逻辑表达式进行选择()运运算,找出符合条件的元组。算,找出符合条件的元组。44返回返回1、查询指定列、查询指定列例例查询全体学生的学号、姓名和年龄。查询全体学生的学号、姓名和年龄。SELECTSno,SName,SageFROMStudent结结果果表表中中的的各各个个列列的的先先后后顺顺序序可可以以与与表表中中的的顺顺序序不不一一致致。也也就就是是说说,用用户户在在查查询询时时可可以以根根据据应应用用的的需需要要改改变列的显示顺序。变列的显示顺序。例例查询全体学生的姓名、学号、所在系查询全体学生的姓名、学号、所在系SELECTSname,Sno,SdeptFROMStudent;这时结

39、果表中的列的顺序与基表中不同,是按查询要求,这时结果表中的列的顺序与基表中不同,是按查询要求,先列出姓名属性,然后再列学号属性和所在系属性。先列出姓名属性,然后再列学号属性和所在系属性。Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)45返回返回2、查询全部列查询全部列例例3.22查询学生的全部信息。查询学生的全部信息。SELECT*FROMStudent用用*表示表示S表的全部列名,而不必逐一列出。表的全部列名,而不必逐一列出。这是最简单的一种查询。这是最简单的一种查询。Stude

40、nt(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)46返回返回3 3、查询经过计算的值、查询经过计算的值SELECT子句的子句的不仅可以是表中的属性不仅可以是表中的属性列,也可以是有关表达式,即可以将查询出来的属性列列,也可以是有关表达式,即可以将查询出来的属性列经过一定的计算后列出结果。经过一定的计算后列出结果。例例 查全体学生的姓名及其出生年份查全体学生的姓名及其出生年份SELECTSname,2012-SageFROMStudent;Student(Sno,Sname,Ssex,Sage,

41、Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)47返回返回本例中,本例中,中第二项不是通常的列名,而是中第二项不是通常的列名,而是一个计算表达式,是用当前的年份(假设为一个计算表达式,是用当前的年份(假设为2012年)减去年)减去学生的年龄,这样,所得的即是学生的出生年份。输出的学生的年龄,这样,所得的即是学生的出生年份。输出的结果为:结果为:Sname2012-Sage-李勇1986刘晨1987王名1988张立1988不仅可以是算术表达式,还可以是字符串常量、函数等。不仅可以是算术表达式,还可以是字符串常量、函数等。48例例 查全体学

42、生的姓名、出生年份和所有系,要求用小查全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名写字母表示所有系名SELECTSname,YearofBirth:,2012-Sage,ISLOWER(Sdept)FROMStudent;结果为:结果为:SnameYearofBirth:2009-SageISLOWER(Sdept)-李勇李勇YearofBirth:1986cs刘晨刘晨YearofBirth:1987if王名王名YearofBirth:1988ma张立张立YearofBirth:1988if字符串常量字符串常量49返回返回另另外外,利利用用投投影影查查询询可可控控制制列列名名的

43、的顺顺序序,并并可可通通过过指指定定别名别名改变查询结果的列标题的名字。改变查询结果的列标题的名字。例例查询全体学生的姓名、学号和年龄。查询全体学生的姓名、学号和年龄。SELECTSNAMENAME,Sno,SageFROMS其中,其中,NAME为为SNAME的别名的别名Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)50用户可以用户可以通过指定别名来改变查询结果的列标题通过指定别名来改变查询结果的列标题,这对于含算术表,这对于含算术表达式、常量、函数名的目标列表达式尤为有用。例如对

44、于上例,达式、常量、函数名的目标列表达式尤为有用。例如对于上例,可可以如下定义列别名以如下定义列别名SELECTSnameNAME,YearofBirth:BIRTH,2012-SageBIRTHDAY,ISLOWER(Sdept)DEPARTMENTFROMStudent;结果为:结果为:NAMEBIRTHBIRTHDAYDEPARTMENT-李勇李勇YearofBirth:1986cs刘晨刘晨YearofBirth:1987if王名王名YearofBirth:1988ma张立张立YearofBirth:1988if51返回返回二、选择表中的若干元组1.消除取值重复的行假设SC表中有下列数据

45、:SnoCnoGrade-9500119295001285950013889500229095002380查所有选修过课的学生的学号SELECTSnoFROMSC;Sno-9500195001950019500295002执行上面的执行上面的SELECT语句语句后,结果为:后,结果为:Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)52返回返回该查询结果里包含了许多重复的行。如果想去掉结果表中该查询结果里包含了许多重复的行。如果想去掉结果表中的重复行,必须指定的重复行,必须指定DIS

46、TINCT短语:短语:SELECTDISTINCTSnoFROMSC;执行结果为:执行结果为:Sno-950019500253返回返回4条件查询条件查询当当要要在在表表中中找找出出满满足足某某些些条条件件的的行行时时,则则需需使使用用WHERE子句指定查询条件。子句指定查询条件。WHERE子句中,条件通常通过三部分来描述:子句中,条件通常通过三部分来描述:1列名;2比较运算符;3列名、常数。运算符含义=,=,85Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)55返回返回查所有年龄在

47、查所有年龄在20岁以下的学生姓名及其年龄岁以下的学生姓名及其年龄SELECTSname,SageFROMStudentWHERESage20;Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)56返回返回查考试成绩有不及格的学生的学号查考试成绩有不及格的学生的学号SELECTDISTINCTSnoFROMSCWHEREGrade=1000ANDSAL=1500教师表教师表T(TNO,TN,PROF,SAL)59返回返回5确定集合确定集合利用利用“IN”操作可以查询属性值属于指定集合的元

48、组。操作可以查询属性值属于指定集合的元组。例例查询选修查询选修C1或或C2的学生的学号、课程号和成绩。的学生的学号、课程号和成绩。SELECTSNO,CNO,gradeFROMSCWHERECNOIN(C1,C2)此语句也可以使用逻辑运算符此语句也可以使用逻辑运算符“OR”实现。实现。Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)60返回返回SELECTSNO,CNO,gradeFROMSCWHERECNO=C1ORCNO=C2利用利用“NOTIN”可以查询指定集合外的元组。可以查

49、询指定集合外的元组。例例查查询询没没有有选选修修C1,也也没没有有选选修修C2的的学学生生的的学学号号、课课程号和成绩。程号和成绩。SELECTSNO,CNO,gradeFROMSCWHERECNONOTIN(C1,C2)61返回返回3.3.2.5部分匹配查询部分匹配查询上上例例均均属属于于完完全全匹匹配配查查询询,当当不不知知道道完完全全精精确确的的値値时时,用用户户还还可可以以使使用用LIKE或或NOTLIKE进进行行部部分分匹匹配配查查询询(也称模糊查询)。(也称模糊查询)。LIKE定义的一般格式为:定义的一般格式为:LIKE属性名必须为字符型,字符串常量的字符可以包含如下两个特殊符号:

50、%:表示任意长度的字符串;a%b表示什么?_:表示任意单个字符。a_b表示什么?例例3.32查询所有姓张的教师的教师号和姓名。查询所有姓张的教师的教师号和姓名。SELECTTNO,TNFROMTWHERETNLIKE张%教师表教师表T(TNO,TN,PROF,SAL)62返回返回例例3.33查询姓名中第二个汉字是查询姓名中第二个汉字是“力力”的教师号和姓名。的教师号和姓名。SELECTTNO,TNFROMTWHERETNLIKE_力%注:一个汉字占两个字符。注:一个汉字占两个字符。查名字中第二字为“阳”字的学生的姓名和学号SELECTSname,SnoFROMStudentWHERESname

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com