分享
分销 收藏 举报 申诉 / 138
播放页_导航下方通栏广告

类型第4章-关系数据库标准语言SQL.ppt

  • 上传人:仙人****88
  • 文档编号:13355360
  • 上传时间:2026-03-06
  • 格式:PPT
  • 页数:138
  • 大小:1.65MB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    关系 数据库 标准 语言 SQL
    资源描述:
    按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,第一章 基础知识概述,按一下以編輯母片,第二層,第三層,第四層,第五層,*,第4章 关系数据库标准语言SQL,数据库原理与应用,本章主要内容,4.1,SQL,概述及特点,4.1.1,SQL,语言的发展,4.1.2,SQL,的基本概念,4.2,数据定义,4.2.1,表结构的创建,4.2.2,表结构的修改,4.2.3,索引的创建、修改和删除,4.3,数据查询,4.3.1,单表查询,4.3.2,连接查询,4.3.3,嵌套查询,4.3.3,集合查询,4.4,数据更新,4.3.1,插入数据,4.3.2,修改数据,4.3.3,删除数据,第,4,章 关系数据库标准语言,SQL,4.1.1,SQL,语言的发展,SQL,语言的发展主要经历了以下几个阶段:,1.,SQUARE,阶段,SQUARE SQUARE(Special Queries As Relation Expression),是1972,年美国,IBM,公司为关系数据管理系统,SYSTEM R,研制了一种查询语言。,2.,SEQUEL,阶段,SEQUEL,SEQUEL(Stuctured,English Query Language),是1974年,IBM,公司在,SQUARE,基础上修改后的数据库语言。,3.,SQL,阶段,1987,年,国际标准化组织(,ISO),将,SQL,语言确定为国际标准。,4.1.2,SQL,的基本概念,视图,1,视图,2,表,1,表,2,表,3,表,4,外模式,模式,内模式,存储文件,1,存储文件,2,存储文件,3,存储文件,4,用户,1,用户,2,用户,3,用户,4,4.1.2,SQL,的基本概念,SQL,的,主要功能,就是同各种数据库建立联系,进行沟通,.,SQL,语言是一种关系数据库语言,提供数据的定义、查询、更新和控制等功能,;,SQL,语言,支持关系数据库三级模式结构,其中外模式对应于视图和部分表,模式对应于表,内模式对应于存储文件,.,SQL,语言不是独立的程序开发语言,通常被称为,交互型语言和嵌入型语言,。作为独立的交互型语言,可以供,DBMS,用户使用,;,作为嵌入型宿主语言,可以成为应用开发语言的一部分,即在如,Visual Basic,和,C,语言等程序开发语言中使用。,4.1.3,SQL,的特点,1,具有极强的操作功能,SQL,语言集数据定义语言、数据操纵语言、数据控制语言的功能于一体,语言风格同一,可以独立完成数据库生命周期中的全部活动,为数据库应用系统提供了良好的环境。,2,高度非过程化,SQL,语言高度非过程化,只要提出“做什么”,而无须指明“怎么做”,减轻了用户的负担,也有利于提高数据独立性。,3,操作面向集合,SQL,语言除了操作对象、查找结果是元组的集合,插入、删除、更新操作的对象也可以是元组的集合。,4,语法结构高度统一,SQL,语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入,SQL,命令对数据库进行操作。作为嵌入式语言,,SQL,语句能够嵌入到高级语言(例如,C、Visual Basic),程序中,供程序员设计程序时使用。,5,语言简捷,易学易用,使用极少的词汇就可完成数据库的核心功能,故该,SQL,语言相对于其他的语言简单易学很多。,4.1.3,SQL,的特点,4.2,数据定义,本节例题所用的数据均来源于,StudentInfo,数据库,其中的表结构如表,4-14-3,所示,数据表如图,4-44-6,所示。,表,4.1 Student,(,学生信息)表的结构,字段名称,数据类型,字段大小,说明,SNo,文本,10,学号,SName,文本,20,姓名,SSex,文本,1,性别,Scollege,文本,30,学院,/,系,Sage,int,年龄,表,4.2 Course,的结构,字段名称,数据类型,字段 大小,说明,CNo,文本,3,课程号,CName,文本,30,课程名,CCredit,数字,单精度,学分,4.2,数据定义,表,4.3 SC,的结构,字段 名称,数据类型,字段 大小,说明,SNo,文本,10,学号,CNo,文本,3,课程号,Grade,数字,单精度,学分,CNo,CName,CCredit,001,INTERNET,技术,2.5,002,大学英语,2.5,003,网络营销学,2,004,数据库原理及应用,3,005,会计学,2,表,4.4,课程信息表(,Course,),4.2,数据定义,表,4.6,选课信息表(,SC,),SNo,CNo,GRade,4105000203,001,90,4105000203,002,86,4205000177,004,70,4205000176,004,50,4205000175,005,0,4105000301,003,50,4105000202,002,76,4105000202,005,0,4105000177,004,10,4.2,数据定义,SNo,SName,SSex,Scollege,sage,4205000175,吴利,女,经管学院,20,4205000176,黄贤明,男,经管学院,21,4205000177,吴冬生,男,经管学院,22,4105000301,谭武龙,男,文法学院,22,4105000304,吴小丽,女,文法学院,19,4105000202,许加乐,女,计算机学院,24,4105000203,李北星,男,计算机学院,18,表,4.5,学生信息表(,Student,),4.2,数据定义,在,SQL,语言中,默认如下的符号约定:,1),中的内容是必须的,是用户自定义语义;,2),为任选项;,3),或分隔符,|,表示必选项,即必选其中之一项;,4),N,表示前面得项可以重复多次;,4.2.1,表结构的创建,1,、基本的定义格式,表是数据库中最重要的对象之一,一个表由两部分组成,一部分是由各列名构成的表的结构,即一个关系模式,也称为表结构;另一部分是具体存放的数据,称为数据记录,创建表时,只需要定义表的结构,包括表名、列名、列的数据类型和列约束等。,1,、基本的定义格式,创建表时,只需要定义表的结构,包括表名、列名、列的数据类型和列约束等。,(,1,)基本的定义格式,Create Table ,(,列级完整性约束,列级完整性约束,N,N );,1,基本的定义格式,数据类型,用途,字段大小,Text,文本,最长,255,个字符,Byte,字节,1,个字节,,-2,7,2,7,-1,Integer,整型,2,字节,,-2,15,2,15,-1,Long,长整型,4,字节,,-2,31,2,31,-1,single,单精度,4,字节,,7,位有效浮点数,double,双精度,8,字节,,15,位有效浮点数,datetime,日期,/,时间,8,个字节,currency,货币,8,个字节,小数点前,15,位,后,4,位,*,自动编号,4,个字节或,8,个字节,Yesno,是,/,否,1,位,oleobject,OLE,对象,最大可达,1,吉字节,Hyperlink,超链接,最长,2048,字符,放站点、网址等,2,数据类型,【,例,4.1】,在,Access,的,SQL,视图中创建表,4-1,4-3,所示的,Student,、,Course,和,SC,。,创建表结构的步骤如下:,(,1,)进入数据库,Db1,的“查询”对象;,(,2,)依次选取“在设计视图中创建”,|“,新建(,N,)”,|“,设计视图”,|,打开“显示表”对话框,关闭该对话框;,2,数据类型,(,3,)在工具栏的,SQL,按钮中选取“,SQL,视图(,Q,)”,打开,SQL,编辑窗体,键入如下代码:,Create Table Student,(,Sno,Text(10),Sname,Text(20),Ssex,Text(1),Scollege,Text(30),Birthday,Datetime,),;,4.2.1,表结构的创建,(,4,)单击查询主菜单的“运行”子菜单,或单击工具栏的“!”按钮,运行,SQL,语句,(,5,)在数据库设计窗体打开表对象,查看创建的,Student,表。这时可以按照,Access,的操作方法对该表进行操作。,4.2.1,表结构的创建,按照创建,Student,表的方法,分别创建课程表,Course,和选课表,SC,。,创建课程表的语句为:,Create Table Course,(,Cno,Text(3),Cname,Text(30),Ccredit,Single),;,4.2.1,表结构的创建,创建选课表的代码:,Create Table SC,(,Sno,Text(10),Cno,Text(3),Grade single),;,4.2.1,表结构的创建,用代码创建表需要注意:,1,)定义表时每一个列之间用逗号分隔,最后一条语句不用逗号。,2,)单个列的定义语句的关键字之间用空格分隔,不得使用标点符号。,3,)表名称后的列要用圆括弧括起来。,4,)每个,SQL,语句以分号结束或者无任何符号,4.2.1,表结构的创建,2.,完整性约束,定义完整性约束,可以,防止非法的数据更新操作,保护数据,。对于基本表的约束分为列约束和表约束。,列约束,是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;,表约束,与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,定义表约束时必须指出要约束的那些列的名称。完整性约束的基本语法格式为:,Constraint ,约束名:为创建的约束定义的名称。,约束类型:指明定义的约束的类型。在,SQL,中可以定义五种类型的完整性约束。,1,),Null/Not Null,Null,值不是,0,也不是填入字符串“,Null”,,,而是表示“不知道”、“不确定”或“没有数据”的意思。当某一字段的值一定要输入才有意义的时候,则可以设置为,Not Null,,,如主键。只能用于定义列约束。,其语法格式如下:,Constraint ,Null|Not,Null,2.,完整性约束,2,),Unique,约束,Unique,约束用于指明基本表在某一列或多个列的组合上的取值必须唯一。唯一键允许为空,但系统为保证其唯一性,最多只可以出现一个,Null,值。,Unique,用于定义列约束时,其语法格式如下:,Constraint,Unique,Unique,用于定义表约束时,其语法格式如下:,Constraint,Unique,(,列名,),2.,完整性约束,【,例,4.2】,建立一个,Student1,表,定义,Sname,为唯一键,Create Table Student1,(,Sno,Text(10),Sname,Text(20),Constraint,Sname_unique,Unique,Ssex,Text(2),Scollege,Text(30),Birthday,Datetime,);,2.,完整性约束,【,例,4.3】,建立一个,Student2,表,定义,Sname,与,Ssex,的组合为唯一键。,Create Table Student2,(,Sno,Text(10),Sname,Text(20),Ssex,Text(2),Scollege,Text(30),Birthday,Datetime,Constraint,S_Uniq,Unique(Sname,Ssex,),2.,完整性约束,3,),Primary Key,约束,Primary Key,约束用于定义基本表的主键,起唯一标识作用,其值不能为,Null,,,也不能重复,以此来保证实体的完整性。,Primary Key,既可用于列约束,也可用于表约束。,Primary Key,用于定义列约束时,其语法格式为:,Constraint,Primary Key,Primary Key,用于定义表约束时,即将某些列的组合定义为主键,其语法格式如下:,Constraint,Primary Key,(,,,),2.,完整性约束,【,例,4.4】,建立一个,Studnet3,表,定义学生学号,Sno,为主键。,Create Table Student3,(,Sno,Text(10),Constraint,S_Primary,Primary Key,Sname,Text(20),Ssex,Text(1),Scollege,Text(30),Birthday,Datetime,);,2.,完整性约束,【,例,4.5】,建立一个,Course1,表,定义表的课程号,Cno,为主键,课程名,Cname,为唯一键。,Create Table Course1,(,Cno,Text(3)Constraint,C_primary,Primary Key,Cname,Text(30)Constraint C1_unique Unique,Ccredit,Single);,Primary Key,用于定义表约束时,即将某些列的组合定义为主键,其语法格式如下:,Constraint,Primary Key(),2.,完整性约束,【,例,4.6】,建立一个,SC1,表,定义,Sno与Cno的组合,为,SC,的主键,Create Table SC1,(,Sno,Text(10),Cno,Text(3),Grade Single,Constraint,SC_Prim,Primary,Key(Sno,Cno,),2.,完整性约束,Primary Key,与,Unique,区别:,在一个基本表中只能定义一个,Primary Key,约束,但可定义多个,Unique,约束;,对于指定为,Primary Key,的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于,Unique,所约束的唯一键,则允许为空。,注意:不能为同一个列或一组列既定义,Unique,约束,又定义,Primary Key,约束。,2.,完整性约束,【,例,4.7】,建立一个包含完整性定义的学生信息表,Student4,。,Create Table Student4,(,Sno,Text(10)Constraint,S_Prim,Primary Key,Sname,Text(20)Constraint,S_Cons,Not Null,Ssex,Text(1),Scollege,Text(30)Constraint,S_Coll,Not Null,Birthday,Datetime,Constraint,S_Uniq,Unique(Sname,Ssex,),2.,完整性约束,4,),Foreign Key,约束,Foreign Key,约束指定某一个列或一组列作为该表的外键。从表在外键上的取值要么是主键中某一个主键值,要么取空值。以此保证两个表之间的连接,确保了实体的参照完整性。用于列约束时,其语法格式为:,Constraint,References (,,,),2.,完整性约束,【,例,4.8】,建立一个,SC2,表,定义,Sno,Cno,分别为外键,(,主表分别为,Student4,和,Course1,),定义,Sno,与,Cno,的组合为该表的主键。,Create Table SC2,(,Sno,Text(10)Constraint,SC2_Forei1,References,Student4(Sno),Cno,Text(3)Constraint SC2_Forei2 References Course1(Cno),Grade Single,Constraint SC2_Prim Primary,Key(Sno,Cno,);,2.,完整性约束,用于列约束时,其语法格式为:,Constraint,Foreign Key,,,References (,,,),说明:在,J-SQL,中没有,Check,约束,所以如果要对某字段添加用户定义完整性约束条件,必须要在,Access,普通视图中添加。,2.,完整性约束,4.2.2,表结构的修改与删除,(,1,)基本的命令格式,修改表的基本命令格式为:,Alter Table,Add,完整性约束,|,Drop,Column|,Drop,Constraint,其中:,Add,子句用于增加新列和新的完整性约束条,;,Drop,子句用于删除指定的完整性约束条件。,(,2,),Add,方式,用于增加新列和完整性约束,其语法格式为:,Alter Table,Add|,【,例,4.9】,向,Student,表增加一个表示民族的列,Native,。,Alter Table Student,Add Native Text(10),Null,;,4.2.2,表结构的修改与删除,(,3,),Drop,方式,删除列的约束定义,其语法格式为:,Alter Table,Drop Constraint;,【,例,4.10】,删除,Native,列,Alter Table Student Drop Column Native;,或者,Alter Table Student Drop Native;,【,例,4.11】,删除,Student3,中的主键约束,Alter Table Student3,Drop Constraint,S_Primary,;,4.2.2,表结构的修改与删除,2,、修改基本表(,Alter,),3,、删除表,删除表的命令格式为:,Drop Table ;,【,例,4.12】,删除,Student1,表,Drop Table Student1,4.2.3,索引的创建、修改和删除,1,、索引的概念,索引是数据库随机检索的常用手段,它实际上就是记录的关键字与其相应地址的对应表。如果把数据库表比作一本书,则,表的索引就如书的目录一样,。,在实际的数据库中,所有的查询有在索引和无索引的情况下都是可以工作的,索引仅仅与速度有关,故索引的作用就是,加快查询速度,,并保证行的唯一性。,4.2.3,索引的创建、修改和删除,2,、建立索引,建立索引的基本命令格式为:,Create Unique Index,On (,次序,次序,),;,说明:索引可以建立在一列和多列之上,索引顺序可以是,Asc,(,升序)或,Desc,(,降序),缺省值是升序。,Unique,表示每一个索引值对应唯一的数据记录,。,4.2.3,索引的创建、修改和删除,【,例,4.13】,在,SC,表上建立唯一降序索引,SC_Gradeindex,。,Create Index,SC_Gradeindex,On,SC(Grade,Desc,);,4.2.3,索引的创建、修改和删除,注意:,(,1,)在创建表的时候,系统为主键自动生成一个特殊类型的唯一索引,故创建了主键的表不能再创建索引。,(,2,)创建索引后的,SC,表将按照成绩由高到低顺序有序排列,在没有创建索引之前,,SC,表是按照数据输入的先后顺序排列的,数据是无序的。,(3),如果某个数据列含有重复的数据项,则在该列创建索引时不能使用,Unique,(,Unique,表示每一个索引值对应唯一的数据记录)。,4.2.3,索引的创建、修改和删除,3,、删除索引,如果数据频繁地增加、修改、删除,系统会花大量的时间来维护索引。因此,要根据实际需要删除一些不必要的索引,删除索引的命令格式为:,Drop Index.,【,例,4.14】,删除上例创建的索引“,S_Creditindex,”,Drop Index,SC_Gradeindex,on sc,4.3,数据查询,用,SQL,语言创建查询,其基本命令格式为:,Select,All|Distinct,From,Where,Group By,Having,Order By,Asc|Desc,4.3.1,单表查询,1,Select,子句,Select,All|Distinct,;,目标列表达式可以是,“列名,1,列名,2”,的形式或“,*,”或由,列名、常量及集函数,组成的列名表达式;如果列名可能来源于,From,指定的多个表,则列名应是“,表名,.,列名,”的形式。,集函数表达式,。常用的集函数有,Count,(*,|,列名),、,Sum(,列名,),、,Avg,(,列名,),、,Max(,列名,),、,Min(,列名,),等函数。,Distinct,表示在结果集中,若查询出的记录有重复,则只保留一条记录。,All,为默认值。表示在查询结果中,显示所有的记录。,4.3.1,单表查询,(,1,)选择所有列,【,例,4.16】,查询,Student,表中所有列的数据。,Select *,From Student,该查询也称为,全表查询,。,(,2,)选择部分列并指定它们的显示次序,一般情况下,查询结果集合中列名的排列顺序与目标列中指定的列名排列顺序相同。,4.3.1,单表查询,【,例,4.17】,查询,Student,表中学号、姓名、性别,出生年月。,Select,Sno,Sname,Ssex,Birthday,From Student,【,例,4.18】,查询,Student,表中出生年月、性别和姓名。,Select,Birthday,Ssex,Sname,From Student,4.3.1,单表查询,(,3,)选择经过计算的列,中的列不仅来源于表中的属性列,,也可以是表达式。,【,例,4.19】,将所有学生的成绩提高,5%,。,Select,Sno,1.05*Grade,From SC,【,例,4.27】,的运行结果,:,Sno,Expr1001,-,4105000203 94.5,4105000203 90.3,4205000177 73.5,4205000176 53.55,4205000175,4105000301 52.5,4105000202 79.8,4105000202 0,4.3.1,单表查询,(,4,)更改列标题,用户可以通过指定别名来更改查询结果的列标题。,其定义格式为:,列名,AS,列别名,【,例,4.20】,将例,4.19,中的查询结果分别以“学号”、“成绩”表示。,Select,Sno,As,学号,1.05*,Grade As,成绩,From SC,该查询结果的数据集,例,4.19,相同,但列标题分别为学号和成绩。,4.3.1,单表查询,(,5,)删除重复行,Select,语句中使用,All,或,Distinct,选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为,All,。,使用,Distinct,选项时,对于所有重复的数据行在,Select,返回的结果集合中只保留一行。但是,,J-SQL,不接受,Count,(,Distinct,Sno,),句法,。,4.3.1,单表查询,2,From,子句,From,子句指定,与查询相关的表或视图,。在,From,子句中最多可指定,256,个,表或视图,它们之间用逗号分隔。在单表查询中,From,子句后只有一个表名。,3,使用,Where,子句设置查询条件,Where,子句设置查询条件,也就是只有满足条件的行才能出现在查询结果中。,4.3.1,单表查询,查询条件,运算符,含义,比较大小,、,、,=,、,、,!=#12-31-1986#;,查询结果为,:,Sno,Sname,Birthday,4205000175,吴利,1987-7-2,4205000177,吴冬生,1987-12-9,4105000202,许加乐,1987-2-3,两个日期时间型数据相比较,越靠后的日期时间越大,如,2005,年,1,月,1,日比,2004,年,12,月,31,日大。日期时间型数据要用号括起来。,(2),确定范围的查询,BetweenAnd,表示数据在某一范围的条件,其使用格式为,:,Between,And,4.3.1,单表查询,【,例,4.23】,查询分数在,60,分至,100,分之间的学生的,姓名,、课程号、和分数。,Select,Sname,Cno,Grade,From,SC,Student,Where Grade Between 60 And 100,and,Student.Sno,=,SC.Sno,其中,Where,子句还可以写成:,Where grade=60 And Grade=100,4.3.1,单表查询,【,例,4.24】,查询分数,不在,60,分至,100,分之间的学生的学号、课程号、和分数,Select,Sno,Cno,Grade,From SC,Where Grade Not Between 60 And 100,4.3.1,单表查询,4.3.1,单表查询,(3),确定集合的查询,【,例,4.25】,查询经管学院、计算机学院的学生的姓名、所在学院。,Select,Sname,Scollege,From Student,Where,Scollege,In(,经管学院,计算机学院,),思考:,where,子句还可以写成:,Where,Scollege,=,经管学院,or,Scollege,=,计算机学院,4.3.1,单表查询,【,例,4.26】,查询不是经管学院、也不是计算机学院的学生的姓名、所在学院。,Select,Sname,SCollege,From Student,Where,SCollege,Not In(,经管学院,计算机学院,),查询结果为,:,Sname,Scollege,谭武龙 文法学院,吴小丽 文法学院,思考:还可以使用其它形式表示,where,子句吗?,(4),字符匹配查询,该查询通常使用运算符,like,进行模糊查找,它判断列值是否与指定的字符串格式相匹配。它可用于,text,、,Datetime,等类型数据的查询。,其语法格式为:,Not Like,其含义是,查找指定的属性列值与,相匹配的元组。,可以是一个,完整的字符串,,也可以含有通配符,%,或,_,的字符串。,“,_”,仅可与单个字符相匹配,而,“,%”,可以与,0,个或更多,的字符匹配。,4.3.1,单表查询,【,例,4.27】,查询姓“吴”的学生所在的学院和他的姓名,Select,Sname,Scollege,From Student,Where,Sname,Like,吴,%,查询结果为,:,Sname,SCollege,吴利 经管学院,吴冬生 经管学院,吴小丽 文法学院,【,例,4.28】,查询姓“吴”且全名为两个汉字的学生的学号、姓名和性别。,4.3.1,单表查询,4.3.1,单表查询,(5),与空值相关的查询,在表中,如果某列中没有输入数据,则它的值就为空。如果要判断某一列是否为空,只能用,Is Null,或,Is Not Null,来比较。,【,例,4.29】,查询没有分数的学生的学号和课程号。,Select,Sno,Cno,From SC,Where Grade Is Null;,注意:,Is,不能用等号(,=,)代替。,【,例,4.30】,查询所有有分数的学生的学号和课程号。,Select,Sno,Cno,From SC,Where Grade Is Not Null;,4.3.1,单表查询,4.3.1,单表查询,查询结果为,:,Sno,Cno,4105000203 001,4105000203 002,4205000177 004,4205000176 004,4105000301 003,4105000202 002,4105000202 005,(6),多重条件查询,逻辑运算符,And,和,Or,可用来联结多个查询条件。,【,例,4.31】,查询,经管学院,并且,性别为“女”,的学生,学号、姓名、性别、年龄和所在学院。,Select,Sno,Sname,Ssex,Scollege,From Student,Where,Scollege,=,经管学院,And,Ssex,=,女,查询结果为:,Sno,Sname,Ssex,Scollege,4205000175,吴利 女 经管学院,4.3.1,单表查询,4.3.1,单表查询,【,例,4.32】,在,【,例,4.25】,中的,In,运算符实际上是多个,Or,运算符的缩写,因此该例中的查询也可以用,Or,运算符写成如下等价形式:,Select,Sname,SCollege,From Student,Where,SCollege,=,经管学院,Or,SCollege,=,计算机学院,4.3.1,单表查询,查询结果为,:,Sname,SCollege,吴利 经管学院,黄贤明 经管学院,吴冬生 经管学院,许加乐 计算机学院,李北星 计算机学院,(,7,)使用集函数,为了进一步方便用户,增强检索功能,,SQL,提供了许多集函数,下面列出几个主要的集函数及其含义:,Count(*),统计元组个数,Count,统计某一列中数据项的个数,Sum(Distinct|All,),计算一列值的总和(此列必须是数值型),Avg(Distinct|All,),计算一列值的平均值(此列必须是数值型),Max(Distinct|All,),求一列值中的最大值,Min(Distinct|All,),求一列值中的最小值,4.3.1,单表查询,列名前使用,Distinct,,,表示在计算时取消列中的重复值。否则则表示不取消重复值,,all,为默认值。,【,例,4.33】,查询课程的数目。,Select Count(*)as,课程数目,From Course;,查询结果为,:,课程数目,5,4.3.1,单表查询,【,例,4.34】,计算学号为,4105000203,的学生的平均分数。,Select,Avg(Grade,)AS,平均分数,From SC,Where,Sno,=4105000203;,查询结果为,:,平均分数,88,4.3.1,单表查询,4.3.1,单表查询,【,例,4.35】,查询学号为,4105000203,的最高分数。,Select,Max(GRade,)AS,最高分数,From SC,Where,Sno,=4105000203;,思考:,1.,查询每个学生所修课程的最高分;,2.,查询每个学生所修课程的数目。,4.,Group By,子句,1,),Group By,子句可以将查询结果的各行,按一列或多列取值相同的行进行分组。,2,),集函数将作用于每一个组,即每一组都有一个函数值。,【,例,4.36】,查询各位学生的学生号及其选课的门数。,Select,Sno,Count,(*)As,选课门数,From SC,Group By,Sno,思考,:,能否在列表达式中添加,Cno,?,4.3.1,单表查询,4.3.1,单表查询,查询结果为:,Sno,选课门数,4105000202 2,4105000203 2,4105000301 1,4205000175 1,4205000176 1,4205000177 1,思考:如果只查询选课数目大于等于,2,的学生信息,该如何设置条件?,【,例,4.37】,查询选修两门及以上课程的学生学号和选课门数。,Select,Sno,Count,(*)As,选课门数,From SC,Group By,Sno,Having Count(*)=2,查询结果为:,Sno,选课门数,4105000202 2,4105000203 2,4.3.1,单表查询,总结:,1.,Where,子句与,Having,子句都表示查询的条件,但他们的作用对象不同。,Where,子句作用于基本表,从中选择满足条件的元组。,Having,子句作用于组,从组中选择满足条件的元组。,2.,当同时使用,where,子句,,Group By,子句和,Having,子句时,,系统按照,WhereGroup,ByHaving,的顺序执行。,思考:如果要对查询结果进行排序,该如何操作?,4.3.1,单表查询,5.,Order By,子句,使用,Order By,子句对查询返回的结果按一列或多列排序。,其语法格式为:,Order By,列名,Asc|Desc,N,其中,Asc,表示升序,为默认值,,Desc,为降序。,【,例,4.38】,查询“,4105000203”,学生选修课程的课程号和成绩,并将查询结果按照,分数的升序排列,。,4.3.1,单表查询,Select,Cno,Grade,From SC,Where,Sno,=4105000203,Order By Grade,Asc,;,查询结果为:,Cno,Grade,002 86,001 90,注意:空值的显示,1,)若结果按升序排列,成绩为空值的元组将最先显示;,2,)若结果按降序排列,成绩为空值的元组将最后显示。,4.3.1,单表查询,【,例,4.39】,查询选修,001,、,002,、,004,或,005,课程的学号、课程号和分数,查询结果按学号升序排列,学号相同再按分数降序排列。,Select,Sno,Cno,Grade,From SC,Where,Cno,In(001,002,004,005),Order By,Sno,Grade Desc,4.3.1,单表查询,4.3.1,单表查询,查询结果为:,Sno,Cno,Grade,4105000202 002 76,4105000202 005 0,4105000203 001 90,4105000203 002 86,4205000175 005,4205000176 004 51,4205000177 004 70,4.3.2,连接查询,涉及两个以上表的查询称之为连接查询。包括等值连接、非等值连接、自身连接、外连接和复合条件连接查询。,1,等值与非等值连接查询,连接查询条件的一般格式为:,.,其中比较运算符主要有:,=,、,、,=,、,=,Y.Birthday,),And,Y.Sname,=,黄贤明,4.3.2,连接查询,4.3.2,连接查询,查询结果为:,Sname,Birthday_A,Birthday_B,-,吴冬生,1987-7-2 1986-1-3,黄贤明,1986-1-3,1986-1-3,吴利,1987-7-2 1986-1-3,谭武龙,1986-3-8 1986-1-3,许加乐,1987-2-3 1986-1-3,李 权,1985-10-2 1986-1-3,4.3.2,连接查询,3,复合条件连接查询,在连接查询中,,Where,子句中有多个连接条件的查询称为复合条件连接接询。,【,例,4.43】,查询所选课程分数大于,60,的学生的学号、姓名、课程号和分数。,Select,Student.Sno,Sname,Cno,Grade,From,Student,SC,Where,Student.Sno,=,SC.Sno,And,SC.Grade,60;,4.3.2,连接查询,查询结果为,:,Sno,Sname,Cno,Grade,4105000203,李北星,001 90,4105000203,李北星,002 86,4205000177,吴冬生,004 70,4105000202,许加乐,002 76,4.3.2,连接查询,【,例,4.44】,查询每个选课的学生的学号、姓名、课程号、,课程名、分数。,Select,Student.Sno,Sname,Course.Cno,Cname,Grade,From Student,Course,SC,Where,Student.Sno,=,SC.Sno,And,SC.Cno,=,Course.Cno,4.3.2,连接查询,查询结果为,:,Sno,Sname,Cno,Sname,Grade,4105000203,李北星,001,INTERNET 90,4105000203,李北星,002,大学英语,86,4205000177,吴冬生,004,数据库原理及应用,70,4205000176,黄贤明,004,数据库原理及应用,70,4205000175,吴利,005,会计学,4105000301,谭武龙,003,网络营销学,
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:第4章-关系数据库标准语言SQL.ppt
    链接地址:https://www.zixin.com.cn/doc/13355360.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork