您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 数据库系统概论课件第三章(3)
AnIntroductiontoDatabaseSystem数据库系统概论AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL(续2)AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL3.8小结AnIntroductiontoDatabaseSystem3.4数据更新3.4.1插入数据3.4.2修改数据3.4.3删除数据AnIntroductiontoDatabaseSystem3.4.1插入数据三种插入数据方式插入单个元组插入子查询结果插入新表AnIntroductiontoDatabaseSystem1.插入单个元组语句格式INSERTINTO表名[(属性列1[,属性列2…)]VALUES(常量1[,常量2]…)功能将新元组插入指定表中。AnIntroductiontoDatabaseSystem插入单个元组(续)[例1]将一个新学生记录(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。INSERTINTOStudentVALUES(‘200215128','陈冬','男','IS',18);AnIntroductiontoDatabaseSystem插入单个元组(续)[例2]插入一条选课记录(‘200215128','1')。INSERTINTOSC(Sno,Cno)VALUES('200215128','1');新插入的记录在Grade列上取空值AnIntroductiontoDatabaseSystem插入单个元组(续)INTO子句指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致指定部分属性列:插入的元组在其余属性列上取空值VALUES子句提供的值必须与INTO子句匹配值的个数值的类型AnIntroductiontoDatabaseSystem2.插入子查询结果语句格式INSERTINTO表名[(属性列1[,属性列2…)]子查询;功能将子查询结果插入指定表中AnIntroductiontoDatabaseSystem插入子查询结果(续)[例3]对每一个系,求学生的平均年龄,并把结果存入数据库。第一步:建表CREATETABLEDeptage(SdeptCHAR(15)/*系名*/AvgageSMALLINT);/*学生平均年龄*/AnIntroductiontoDatabaseSystem插入子查询结果(续)第二步:插入数据INSERTINTODeptage(Sdept,Avgage)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;AnIntroductiontoDatabaseSystem插入子查询结果(续)INTO子句(与插入单条元组类似)指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致没有指定属性列:表示要插入的是一条完整的元组指定部分属性列:插入的元组在其余属性列上取空值子查询SELECT子句目标列必须与INTO子句匹配•值的个数•值的类型AnIntroductiontoDatabaseSystem插入子查询结果(续)DBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则实体完整性参照完整性用户定义的完整性对于有NOTNULL约束的属性列是否提供了非空值对于有UNIQUE约束的属性列是否提供了非重复值对于有值域约束的属性列所提供的属性值是否在值域范围内AnIntroductiontoDatabaseSystem3.向新表中插入数据使用select语句:格式--Select列名列表into新表名[Where条件…]AnIntroductiontoDatabaseSystem3.4数据更新3.4.1插入数据3.4.2修改数据3.4.3删除数据AnIntroductiontoDatabaseSystem3.4.2修改数据语句格式UPDATE表名SET列名=表达式[,列名=表达式]…[WHERE条件];功能修改指定表中满足WHERE子句条件的元组AnIntroductiontoDatabaseSystem修改数据(续)三种修改方式修改某一个元组的值修改多个元组的值带子查询的修改语句AnIntroductiontoDatabaseSystem1.修改某一个元组的值[例4]将学生200215121的年龄改为22岁。UPDATEStudentSETSage=22WHERESno='200215121';AnIntroductiontoDatabaseSystem2.修改多个元组的值[例5]将所有学生的年龄增加1岁。UPDATEStudentSETSage=Sage+1;AnIntroductiontoDatabaseSystem修改多个元组的值(续)[例6]将信息系所有学生的年龄增加1岁。UPDATEStudentSETSage=Sage+1WHERESdept='IS';AnIntroductiontoDatabaseSystem3.带子查询的修改语句[例7]将计算机科学系全体学生的成绩置零。UPDATESCSETGrade=0WHERE'CS'=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);AnIntroductiontoDatabaseSystem修改数据(续)SET子句指定修改方式要修改的列修改后取值WHERE子句指定要修改的元组缺省表示要修改表中的所有元组AnIntroductiontoDatabaseSystem修改数据(续)DBMS在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则实体完整性主码不允许修改用户定义的完整性NOTNULL约束UNIQUE约束值域约束AnIntroductiontoDatabaseSystem3.4数据更新3.4.1插入数据3.4.2修改数据3.4.3删除数据AnIntroductiontoDatabaseSystem3.4.3删除数据DELETEFROM表名[WHERE条件];–功能删除指定表中满足WHERE子句条件的元组–WHERE子句指定要删除的元组缺省表示要修改表中的所有元组AnIntroductiontoDatabaseSystem删除数据(续)三种删除方式删除某一个元组的值删除多个元组的值带子查询的删除语句AnIntroductiontoDatabaseSystem1.删除某一个元组的值[例8]删除学号为200215128的学生记录。DELETEFROMStudentWHERESno='2002151218';AnIntroductiontoDatabaseSystem2.删除多个元组的值[例9]删除2号课程的所有选课记录。DELETEFROMSC;WHERECno='2';[例10]删除所有的学生选课记录。DELETEFROMSC;AnIntroductiontoDatabaseSystem3.带子查询的删除语句[例11]删除计算机科学系所有学生的选课记录。DELETEFROMSCWHERE'CS'=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);AnIntroductiontoDatabaseSystem删除数据(续)DBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则–参照完整性•不允许删除•级联删除AnIntroductiontoDatabaseSystem更新数据与数据一致性DBMS在执行插入、删除、更新语句时必须保证数据库一致性必须有事务的概念和原子性完整性检查和保证AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL3.8小结AnIntroductiontoDatabaseSystem3.5视图视图的特点虚表,是从一个或几个基本表(或视图)导出的表只存放视图的定义,不会出现数据冗余基表中的数据发生变化,从视图中查询出的数据也随之改变AnIntroductiontoDatabaseSystem3.5视图基于视图的操作查询删除受限更新定义基于该视图的新视图AnIntroductiontoDatabaseSystem3.5视图3.5.1定义视图3.5.2查询视图3.5.3更新视图3.5.4视图的作用AnIntroductiontoDatabaseSystem1.建立视图语句格式CREATEVIEW视图名[(列名[,列名]…)]AS子查询[WITHCHECKOPTION];AnIntroductiontoDatabaseSystem建立视图(续)DBMS执行CREATEVIEW语句时只是把视图的定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出。AnIntroductiontoDatabaseSystem组成视图的属性列名全部省略或全部指定省略:由子查询中SELECT目标列中的诸字段组成明确指定视图的所有列名:(1)某个目标列是集函数或列表达式(2)多表连接时选出了几个同名列作为视图的字段(3)需要在视图中为某个列启用新的更合适的名字AnIntroductiontoDatabaseSystem行列子集视图[例1]建立信息系学生的视图。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS';从单个基本表导出,只是去掉了基本表的某些行和某些列,保留了码AnIntroductiontoDatabaseSystem建立视图(续)WITHCHECKOPTION透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式)AnIntroductiontoDatabaseSystemWITHCHECKOPTION的视图[例2]建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS'WITHCHECKOPTION;AnIntroductiontoDatabaseSystem对IS_Student视图的更新操作修改操作:DBMS自动加上Sdept='IS'的条件删除操作:DBMS自动加上Sdept='IS'的条件插入操作:DBMS自动检查Sdept属性值是否为'IS'如果不是,则拒绝该插入操作如果没有提供Sdept属性值,则自动定义Sdept为'IS'AnIntroductiontoDatabaseSystem基于多个基表的视图[例4]建立信息系选修了1号课程的学生视图。CREATEVIEWIS_S1(Sno,Sname,Grade)ASSELECTStudent.Sno,Sname,GradeFROMStudent,SCWHERESdept='IS'ANDStudent.Sno=SC.SnoANDSC.Cno='1';AnIntroductiontoDatabaseSystem基于视图的视图[例5]建立信息系选修了1号课程且成绩在90分以上的学生的视图。CREATEVIEWIS_S2ASSELECTSno,Sname,GradeFROMIS_S1WHEREGrade=90;AnIntroduction
本文标题:数据库系统概论课件第三章(3)
链接地址:https://www.777doc.com/doc-3800351 .html