《数据库整理》第3章sql_第1页
《数据库整理》第3章sql_第2页
《数据库整理》第3章sql_第3页
《数据库整理》第3章sql_第4页
《数据库整理》第3章sql_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

第3章关系数据库标准语言SQL,2,3.1SQL语言的基本概念与特点3.2了解SQLServer20083.3创建与使用数据库3.4创建与使用数据表3.5创建与使用索引3.6数据查询3.7数据更新3.8视图3.9数据控制,3,结构化查询语言StructuredQueryLanguage,数据查询数据定义数据操纵数据控制,SQL简洁、方便实用、功能齐全,已成为目前应用最广泛的关系数据库语言。,4,3.1SQL语言的基本概念与特点,3.1.1SQL语言的发展及标准化SQL语言的发展,Chamberlin,SEQUEL,SQL,大型数据库SybaseINFORMIXSQLServerOracleDB2INGRES-小型数据库FoxProAccess,5,3.1.2SQL语言的基本概念,基本表(BaseTable)一个关系对应一个基本表一个或多个基本表对应一个存储文件视图(View)视图是从一个或几个基本表导出的表,是一个虚拟的表S(SNo,SN,Sex,Age,Dept)S_Male(SNo,SN,Age,Dept),无数据,只有定义,Sex=男,在数据库中只存有S_Male的定义,数据仍在S表中,6,SQL语言支持的关系数据库的三级模式结构,7,3.1.3SQL语言的主要特点,SQL语言是类似于英语的自然语言,简洁易用SQL语言是一种非过程语言SQL语言是一种面向集合的语言SQL语言既是自含式语言,又是嵌入式语言SQL语言具有数据查询、数据定义、数据操纵和数据控制四种功能,8,3.2了解SQLServer2008,企业版SQLServer2008是满足企业联机事务处理和数据仓库应用程序高标准要求的综合数据平台。标准版SQLServer2008Standard是一个完整的数据管理和商业智能平台,为正在运行的部门应用程序提供一流的易用性和易管理性。Specialized版本工作组版在此可靠的数据管理和报表平台上运行分机位置,提供安全性的远程同步和管理功能。网络版借助于面向Web服务环境的高度可用的Internet,为您的客户提供低成本、大规模、高度可用的Web应用程序或主机解决方案。移动版可以免费下载,为所有MicrosoftWindows平台上的移动设备、桌面和Web客户端构建单机应用程序和偶尔连接的应用程序。免费版可以免费下载,Express对于学习和构建桌面和小型服务器应用程序以及对于通过ISV重新分发非常理想。,9,SQLServer发展,10,3.2.1SQLServer2008的组件与体系结构,SQLServer2008系统由4个主要部分组成,这4个部分被称为4个服务,分别是上面的数据引擎、分析服务、报表服务和集成服务。这些服务之间相互依存。,数据库引擎是(SQLServerDatabaseEngine,SSDE)是SQLServer2008系统的核心服务,负责完成业务数据的存储、处理、查询和安全管理等操作。例如:创建数据库、创建表、执行各种数据查询、访问数据库等操作都是由数据库引擎完成的。分析服务(SQLServerAnalysisServer,SSAS)提供了多维分析和数据挖掘功能,可以支持用户建立数据库和进行商业智能分析。报表服务(SQLServerReportingServices,SSRS)为用户提供了支持Web的企业级的报表功能。通过使用SQLServer2008系统提供的SSRS服务,用户可以方便地定义和发展布满足自己需求的报表。集成服务(SQLServerIntegrationSevives,SSIS)是一个数据集成平台,可以完成有关数据的提取、转换、加载等。,11,3.2.2企业管理器,由EnterpriseManager产生的SQL脚本是一个后缀名为.sql的文件企业管理器的管理工作,文本文件,管理数据库,管理数据库对象,管理备份,管理复制,管理登录和许可,管理SQLServerAgent,管理SQLServerMail,企业管理器界面、菜单、工具栏,12,3.2.3查询分析器,使用查询分析器的熟练程度是衡量一个SQLServer用户水平的标准。,自SQLserver2005开始微将企业管理器和查询分析器合二为一,统一整合到SQLServerManagementStudio中。,13,3.3创建与使用数据库,数据文件1,事务日志文件,数据库,数据文件n,存放数据库数据和数据库对象的文件主要数据文件(.mdf)+次要数据文件(.ndf),只有一个,可有多个,记录数据库更新情况,扩展名为.ldf当数据库破坏时可以用事务日志还原数据库内容,采用多个数据文件来存储数据的优点体现在:(1)数据文件可以不断扩充而不受操作系统文件大小的限制。(2)可将数据文件存储在不同的硬盘中,同时对多个硬盘做数据存取,提高效率。,14,文件组文件组(FileGroup)是将多个数据文件集合起来形成的一个整体主要文件组+次要文件组一个数据文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用日志文件不分组,它不能属于任何文件组,15,3.3.1SQLServer的系统数据库,Model,Msdb,Tempdb,系统默认数据库,系统信息:磁盘空间;文件分配和使用;系统级的配置参数;登录账号信息;SQLServer初始化信息;系统中其他系统数据库和用户数据库的相关信息,Model数据库存储了所有用户数据库和Tempdb数据库的创建模板通过更改Model数据库的设置可以大大简化数据库及其对象的创建设置工作,存储计划信息以及与备份和还原相关的信息,Tempdb数据库用作系统的临时存储空间存储临时表,临时存储过程和全局变量值,创建临时表,存储用户利用游标说明所筛选出来的数据,Master,16,3.3.2SQLServer的实例数据库,实例数据库,pubs,Northwind,虚构的图书出版公司的基本情况,包含了一个公司的销售数据,SQLServer2005及SQLServer2008中,代码示例和示例数据库不再随产品一起提供。但可以从,17,3.3.3创建用户数据库,用SQLServerManagementStudio(SSMS)创建数据库用SQL命令创建数据库CREATEDATABASEdatabase_nameON,.n,.nLOGON,.nCOLLATEcollation_nameFORLOAD|FORATTACH,18,例3-1用SQL命令创建一个教学数据库Teach,数据文件的逻辑名称为Teach_Data,数据文件物理地存放在D:盘的根目录下,文件名为TeachData.mdf,数据文件的初始存储空间大小为10MB,最大存储空间为50MB,存储空间自动增长量为5MB;日志文件的逻辑名称为Teach_Log,日志文件物理地存放在D:盘的根目录下,文件名为TeachLog.ldf,初始存储空间大小为10MB,最大存储空间为25MB,存储空间自动增长量为5MB。,CREATEDATABASETeachON(NAME=Teach_Data,FILENAME=D:TeachData.mdf,SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON(NAME=Teach_Log,FILENAME=D:TeachLog.ldf,SIZE=5,MAXSIZE=25,FILEGROWTH=5),19,CREATEDATABASEMyDBONPRIMARY(NAME=MyDB_file1,FILENAME=NC:DataMyDB_1.mdf,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10%),(NAME=MyDB_file2,FILENAME=NC:DataMyDB_2.ndf,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10%),FILEGROUPNewFileGroup1(NAME=MyDB_file3,FILENAME=NC:DataMyDB_3.ndf,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10%),(NAME=MyDB_file4,FILENAME=NC:DataMyDB_4.ndf,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10%),FILEGROUPNewFileGroup2(NAME=MyDB_file5,FILENAME=NC:DataMyDB_5.ndf,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10%)LOGON(NAME=MyDB_Logfile1,FILENAME=NC:DataMyDB_Logfile1.ldf,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10%),(NAME=MyDB_Logfile2,FILENAME=NC:DataMyDB_Logfile2.ldf,SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)GO,数据库MyDB,主文件组10MBC:DataMyDB_1.mdf10MBC:DataMyDB_2.ndf,NewFileGroup1文件组10MBC:DataMyDB_3.ndf10MBC:DataMyDB_4.ndf,NewFileGroup2文件组10MBC:DataMyDB_5.ndf,日志文件组10MBC:DataMyDB_Logfile1.ldf10MBC:DataMyDB_Logfile2.ldf,21,3.3.4修改用户数据库,用SSMS修改数据库用SQL命令修改数据库ALTERDATABASEdatabase_nameADDFILE,.nTOFILEGROUPfilegroup_name|ADDLOGFILE,.n|REMOVEFILElogical_file_nameWITHDELETE|ADDFILEGROUPfilegroup_name|REMOVEFILEGROUPfilegroup_name|MODIFYFILE|MODIFYNAME=new_dbname|MODIFYFILEGROUPfilegroup_namefilegroup_property|NAME=new_filegroup_name|SET,.nWITH|COLLATE,22,例3-2修改Teaching数据库中的逻辑文件名Teaching_Data的文件增容方式为一次增加2MB。,ALTERDATABASETeachingMODIFYFILE(NAME=Teaching_Data,FILEGROWTH=2mb),23,3.3.5删除用户数据库,用SSMS删除数据库用SQL命令删除数据库DROPDATABASEdatabase_name,.n例3-3删除数据库Teach。DROPDATABASETeach,24,3.3.6查看数据库信息,用SSMS查看数据库信息(属性)用系统存储过程显示数据库信息用系统存储过程显示数据库结构用系统存储过程显示文件信息用系统存储过程显示文件组信息,Sp_helpdbdbname=name,Sp_helpfilefilename=name,Sp_helpfilegroupfilegroupname=name,25,EXECSp_helpdbNorthwindEXECSp_helpfileNorthwindEXECSp_helpfilegroup,26,3.4创建与使用数据表,3.4.1数据类型,整数数据,精确数值,近似浮点数值,日期时间数据,bigint,int,smallint,tinyint,numeric和decimal,float和real,datetime与smalldatetime,27,字符串数据,Unicode字符串数据,二进制数据,货币数据,char、varchar、text,nchar、nvarchar与ntext,binary、varbinary、image,money与smallmoney,标记数据,timestamp和uniqueidentifier,28,3.4.2创建数据表,用SSMS创建数据表相关属性定义“字段名”“数据类型”字段的“长度”、“精度”和“小数位数”“允许空”“默认值”,同一表中不许有重名字段,系统默认为NULL,29,用SQL命令创建数据表CREATETABLE(,|)例3-4用SQL命令建立一个学生表S。CREATETABLES(SNoCHAR(6),SNVARCHAR(8),SexCHAR(2)DEFAULT男,AgeINT,DeptVARCHAR(20),DEFAULT,缺省值为“男”,30,3.4.3定义数据表的约束,正确性,有效性,相容性,数据的完整性,约束(Constraint)默认(Default)规则(Rule)触发器(Trigger)存储过程(StoredProcedure),SQLServer的数据完整性机制,第3章,第5章,第7章,31,完整性约束的基本语法格式CONSTRAINT,NULL/NOTNULL,UNIQUE,PRIMARYKEY,FOREIGNKEY,CHECK,约束是SQLServer自动强制数据库完整性的方式,约束定义了列中允许的取值。列约束CONSTRAINT表约束,CONSTRAINT(,),列约束,列约束/表约束,列约束/表约束,列约束/表约束,列约束/表约束,32,NULL/NOTNULL约束NULL表示“不知道”、“不确定”或“没有数据”的意思主键列不允许出现空值CONSTRAINTNULL|NOTNULL例3-5建立一个S表,对SNo字段进行NOTNULL约束。CREATETABLES(SNoCHAR(6)CONSTRAINTS_ConsNOTNULL,SNVARCHAR(8),SexCHAR(2),AgeINT,DeptVARCHAR(20),可省略约束名称:SNoCHAR(6)NOTNULL,33,UNIQUE约束(惟一约束)指明基本表在某一列或多个列的组合上的取值必须惟一在建立UNIQUE约束时,需要考虑以下几个因素:使用UNIQUE约束的字段允许为NULL值。一个表中可以允许有多个UNIQUE约束。可以把UNIQUE约束定义在多个字段上。UNIQUE约束用于强制在指定字段上创建一个UNIQUE索引,缺省为非聚集索引。UNIQUE用于定义列约束CONSTRAINTUNIQUEUNIQUE用于定义表约束CONSTRAINTUNIQUE(,),34,例3-6建立一个S表,定义SN为惟一键。CREATETABLES(SNoCHAR(6),SNCHAR(8)CONSTRAINTSN_UniqUNIQUE,SexCHAR(2),AgeINT,DeptVARCHAR(20)例3-7建立一个S表,定义SN+SEX为惟一键,此约束为表约束。CREATETABLES(SNoCHAR(6),SNCHAR(8)UNIQUE,SexCHAR(2),AgeINT,DeptVARCHAR(20),CONSTRAINTS_UNIQUNIQUE(SN,Sex),SN_Uniq可以省略SNCHAR(8)UNIQUE,35,PRIMARYKEY约束(主键约束)用于定义基本表的主键,起惟一标识作用PRIMARYKEY与UNIQUE的区别:一个基本表中只能有一个PRIMARYKEY,但可多个UNIQUE对于指定为PRIMARYKEY的一个列或多个列的组合,其中任何一个列都不能出现NULL值,而对于UNIQUE所约束的惟一键,则允许为NULL对于指定为PRIMARYKEY的一个列或多个列的组合,其中任何一个列都不能出现NULL值,而对于UNIQUE所约束的惟一键,则允许为NULL,不能为NULL,不能重复,36,PRIMARYKEY用于定义列约束CONSTRAINTPRIMARYKEYPRIMARYKEY用于定义表约束CONSTRAINTPRIMARYKEY(,)例3-8建立一个S表,定义SNo为S的主键,建立另外一个数据表C,定义CNo为C的主键。CREATETABLES(SNoCHAR(6)CONSTRAINTS_PrimPRIMARYKEY,SNCHAR(8),SexCHAR(2),AgeINT,DeptVARCHAR(20)CREATETABLEC(CNoCHAR(5)CONSTRAINTC_PrimPRIMARYKEY,CNCHAR(20),CTINT),37,例3-9建立一个SC表,定义SNo+CNo为SC的主键。CREATETABLESC(SNoCHAR(5)NOTNULL,CNoCHAR(5)NOTNULL,ScoreNUMERIC(4,1),CONSTRAINTSC_PrimPRIMARYKEY(SNo,CNo),38,FOREIGNKEY约束(外键约束)CONSTRAINTFOREIGNKEYREFERENCES(,),外部键,从表,主键,主表,引用,39,例3-10建立一个SC表,定义SNo,CNo为SC的外部键。CREATETABLESC(SNoCHAR(5)NOTNULLCONSTRAINTS_ForeFOREIGNKEYREFERENCESS(SNo),CNoCHAR(5)NOTNULLCONSTRAINTC_ForeFOREIGNKEYREFERENCESC(CNo),ScoreNUMERIC(4,1),CONSTRAINTS_C_PrimPRIMARYKEY(SNo,CNo);,40,CHECK约束CHECK约束用来检查字段值所允许的范围在建立CHECK约束时,需要考虑以下几个因素:一个表中可以定义多个CHECK约束。每个字段只能定义一个CHECK约束。在多个字段上定义的CHECK约束必须为表约束。当执行INSERT、UNDATE语句时CHECK约束将验证数据。CONSTRAINTCHECK(),41,例3-11建立一个SC表,定义Score的取值范围为0100之间。CREATETABLESC(SNoCHAR(5),CNoCHAR(5),ScoreNUMERIC(4,1)CONSTRAINTScore_ChkCHECK(Score=0ANDScore85,59,多重条件查询NOT、AND、OR用户可以使用括号改变优先级例3-29查询选修C1或C2且分数大于等于85分学生的学号、课程号和成绩。SELECTSNo,CNo,ScoreFROMSCWHERE(CNo=C1ORCNo=C2)AND(Score=85),高,低,60,确定范围例3-30查询工资在1000至1500元之间的教师的教师号、姓名及职称。SELECTTNo,TN,ProfFROMTWHERESalBETWEEN1000AND1500例3-31查询工资不在1000至1500之间的教师的教师号、姓名及职称。SELECTTNo,TN,ProfFROMTWHERESalNOTBETWEEN1000AND1500,WHERESal=1000ANDSal=2),GROUPBY子句按SNo的值分组,所有具有相同SNo的元组为一组,对每一组使用函数COUNT进行计算,统计出每位学生选课的门数。HAVING子句去掉不满足COUNT(*)=2的组,70,3.3.5查询的排序,当需要对查询结果排序时,应该使用ORDERBY子句,ORDERBY子句必须出现在其他子句之后。排序方式可以指定,DESC为降序,ASC为升序,缺省时为升序。例3-45查询选修C1的学生学号和成绩,并按成绩降序排列。SELECTSNo,ScoreFROMSCWHERE(CNo=C1)ORDERBYScoreDESC,71,例3-46查询选修C2、C3、C4或C5课程的学号、课程号和成绩,查询结果按学号升序排列,学号相同再按成绩降序排列。SELECTSNo,CNo,ScoreFROMSCWHERE(CNoIN(C2,C3,C4,C5)ORDERBYSNo,ScoreDESC,72,例3-47求选课在三门及以上且各门课程均及格的学生的学号及其总成绩,查询结果按总成绩降序列出。SELECTSNo,SUM(Score)ASTotalScoreFROMSCWHERE(Score=60)GROUPBYSNoHAVING(COUNT(*)=3)ORDERBYSUM(Score)DESC,取出整个SC,筛选Score=60的元组,将选出的元组按SNo分组,筛选选课三门以上的分组,将选取结果排序,在剩下的组中提取学号和总成绩,ORDERBY2DESC;“2”代表查询结果的第二列,73,3.6.6数据表连接及连接查询,连接查询:一个查询需要对多个表进行操作表之间的连接:连接查询的结果集或结果表连接字段:数据表之间的联系是通过表的字段值来体现的连接操作的目的:从多个表中查询数据表的连接方法:方法1:表之间满足一定条件的行进行连接时,FROM子句指明进行连接的表名,WHERE子句指明连接的列名及其连接条件方法2:利用关键字JOIN进行连接:当将JOIN关键词放于FROM子句中时,应有关键词ON与之对应,以表明连接的条件,74,JION的分类,75,等值连接与非等值连接例3-48查询“刘伟”老师所讲授的课程,要求列出教师号、教师姓名和课程号。方法1:SELECTT.TNo,TN,CNoFROMT,TCWHERE(T.TNo=TC.TNo)AND(TN=刘伟)方法2:SELECTT.TNo,TN,CNoFROMTINNERJOINTCONT.TNo=TC.TNoWHERE(TN=刘伟),连接条件,当比较运算符为“”时,称为等值连接。其他情况为非等值连接。,引用列名TNo时要加上表名前缀,这是因为两个表中的列名相同,必须用表名前缀来确切说明所指列属于哪个表,以避免二义性。,76,例3-49查询所有选课学生的学号、姓名、选课名称及成绩。SELECTS.SNo,SN,CN,ScoreFROMS,C,SCWHERES.SNo=SC.SNoANDSC.CNo=C.CNo例3-50查询每门课程的课程名、任课教师姓名及其职务、选课人数。selectCN,COUNT(SNo)asNum,TN,ProffromSC,C,TC,TwhereC.CNo=SC.CNoandC.CNo=TC.CNoandTC.TNo=T.TNogroupbyC.CN,T.TN,Prof,77,自身连接例3-51查询所有比“刘伟”工资高的教师姓名、工资和刘伟的工资。,方法1:SELECTX.TN,X.SalASSal_a,Y.SalASSal_bFROMTASX,TASYWHEREX.SalY.SalANDY.TN=刘伟,方法2:SELECTX.TN,X.Sal,Y.SalFROMTASXINNERJOINTASYONX.SalY.SalANDY.TN=刘伟,方法3:SELECTR1.TN,R1.Sal,R2.SalFROM(SELECTTN,SalFROMS)ASR1INNERJOIN(SELECTSalFROMTWHERETN=刘伟)ASR2ONR1.SalR2.Sal,78,例3-52检索所有学生姓名,年龄和选课名称。,方法1:SELECTSN,Age,CNFROMS,C,SCWHERES.SNo=SC.SNoANDSC.CNo=C.CNo,方法2:SELECTR3.SNo,R3.SN,R3.Age,R4.CNFROM(SELECTSNo,SN,AgeFROMS)ASR3INNERJOIN(SELECTR2.SNo,R1.CNFROM(SELECTCNo,CNFROMC)ASR1INNERJOIN(SELECTSNo,CNoFROMSC)ASR2ONR1.CNo=R2.CNo)ASR4ONR3.SNo=R4.SNo,selectSN,Age,CNfromSinnerjoinSConS.SNo=SC.SNoinnerjoinConSC.CNo=C.CNo,79,外连接而在外部连接中,参与连接的表有主从之分,以主表的每行数据去匹配从表的数据列。符合连接条件的数据将直接返回到结果集中,对那些不符合连接条件的列,将被填上NULL值后再返回到结果集中。例3-53查询所有学生的学号、姓名、选课名称及成绩(没有选课的同学的选课信息显示为空)。SELECTS.SNo,SN,CN,ScoreFROMSLEFTOUTERJOINSCONS.SNo=SC.SNoLEFTOUTERJOINCONC.CNo=SC.CNo,左外部连接右外部连接,例:selectS.SNo,SC.CNofromsleftjoinSConS.SNo=SC.SNo,80,3.6.7子查询,在WHERE子句中包含一个形如SELECT-FROM-WHERE的查询块,此查询块称为子查询或嵌套查询。返回一个值的子查询例3-54查询与“刘伟”老师职称相同的教师号、姓名SELECTTNo,TNFROMTWHEREProf=(SELECTProfFROMTWHERETN=刘伟),使用比较运算符(=,=,ANY(SELECTSalFROMTWHEREDept=计算机)AND(Dept计算机)SELECTTN,SalFROMTWHERESal(SELECTMIN(Sal)FROMTWHEREDept=计算机)ANDDept计算机,83,使用ALL例3-58查询其他系中比计算机系所有教师工资都高的教师的姓名和工资。SELECTTN,SalFROMTWHERE(SalALL(SELECTSalFROMTWHEREDept=计算机)AND(Dept计算机)例3-59查询不讲授课程号为C5的教师姓名。SELECTDISTINCTTNFROMTWHERE(C5ALL(SELECTCNoFROMTCWHERETNo=T.TNo),Sal(SELECTMAX(Sal),NOTIN,84,子查询分为:普通子查询相关子查询二者执行顺序不同:普通子查询:首先执行子查询,再将子查询的结果作为父查询的查询条件的值.只执行一次.相关子查询:首先选取父查询表中的第一行记录,内部的子查询利用些行中的相关属性值进行查询,然后父查询根据子查询返回的结果判断此行是否满足查询条件.如满足,则将该行放入父查询的结果集中.相关子查询的执行次数由父查询表的行数决定.上例中,子查询的查询条件引用父查询中表中的属性值T.TNO,为相关子查询,85,使用EXISTS带有EXISTS的子查询不返回任何实际数据,它只得到逻辑值“真”或“假”。当子查询的的查询结果集合为非空时,外层的WHERE子句返回真值,否则返回假值。NOTEXISTS与此相反。含有IN的查询通常可用EXISTS表示,但反过来不一定。例3-60使用Exists量词,查询讲授课程号为C5的教师姓名。selecttnfromtwhereexists(select*fromTCwheret.TNo=TC.TNoandCNo=C5),86,例3-62查询选修所有课程的学生姓名。SELECTSNFROMSWHERE(NOTEXISTS(SELECT*FROMCWHERENOTEXISTS(SELECT*FROMSCWHERESNo=S.SNoANDCNo=C.CNo)选出这样一些学生名单,在SC表中不存在他们没有选修课程的记录,87,3.6.8合并查询,合并查询就是使用UNION操作符将来自不同查询的数据组合起来,形成一个具有综合信息的查询结果。参加合并查询的各子查询的使用的表结构应该相同。例3-63从SC数据表中查询出学号为“S1”同学的学号和总分,再从SC数据表中查询出学号为“S5”的同学的学号和总分,然后将两个查询结果合并成一个结果集。SELECTSNoAS学分,SUM(Score)AS总分FROMSCWHERE(SNo=S1)GROUPBYSNoUNIONSELECTSNoAS学分,SUM(Score)AS总分FROMSCWHERE(SNo=S5)GROUPBYSNo,88,3.6.9存储查询结果到表中,使用SELECTINTO语句可以将查询结果存储到一个新建的数据库表或临时表中。例3-64从SC数据表中查询出所有同学的学号和总分,并将查询结果存放到一个新的数据表cal_table中。SELECTSNoAS学分,SUM(Score)AS总分INTOCal_TableFROMSCGROUPBYSNo,89,3.7数据更新,3.7.1添加数据用EnterpriseManager添加数据不能应付数据的大量添加用SQL命令添加数据,数据更新,添加数据(INSERTINTO)修改数据(UPDATE)删除数据(DELETE),INSERTINTO,90,用SQL命令添加数据添加一行新记录INSERTINTO(,)VALUES()例3-65在S表中添加一条学生记录(学号:S7、姓名:郑冬、性别:女、年龄:21、系别:计算机)。INSERTINTOS(SNo,SN,Age,Sex,Dept)VALUES(S7,郑冬,21,女,计算机),必须用逗号将各个数据分开,字符型数据要用单引号括起来。如果INTO子句中没有指定列名,则新添加的记录必须在每个属性列上均有值,且VALUES子句中值的排列顺序要和表中各属性列的排列顺序一致。,91,添加一行记录的部分数据值例3-66在SC表中添加一条选课记录(S7,C1)。INSERTINTOSC(SNo,CNo)VALUES(S7,C1)添加多行记录INSERTINTO(,)子查询,92,例3-67求出各系教师的平均工资,把结果存放在新表AvgSal中。首先建立新表AvgSal,用来存放系名和各系的平均工资CREATETABLEAvgSal(DepartmentVARCHAR(20),AvgSSMALLINT)求出T表中各系的平均工资,把结果存放在新表AvgSal中INSERTINTOAvgSalSELECTDept,AVG(Sal)FROMTGROUPBYDept,相当于:selectdept,avg(sal)asAvgSintoAvgSalfromtgroupbydept,93,3.7.2修改数据,用EnterpriseManager修改数据不能应付数据的大量修改用SQL命令修改数据UPDATESET=,=WHERE,UPDATE,94,例3-68把刘伟老师转到信息系UPDATETSETDept=信息WHERESN=刘伟,例3-69将所有学生的年龄增加1岁UPDATESSETAge=Age+1,修改多行,修改一行,例3-71把讲授C5课程的教师的岗位津贴增加100元。UPDATETSETComm=Comm+100WHERE(TNoIN(SELECTTNoFROMT,TCWHERET.TNo=TC.TNoANDTC.CNo=C5),用子查询选择要修改的行,用子查询提供要修改的值,例3-72把所有教师的工资提高到平均工

温馨提示

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

最新文档

评论

0/150

提交评论