数据库及应用(第5版)整本书课件完整版电子教案(最新).ppt
数据库及应用(第5版)走进SQL SERVER数据库课程组学学习习目目标标【知识目标】|理解数据库、数据库管理系统、数据库系统。|初步认识示例数据库Xk以及5个用户数据表。|初步了解查询窗口和sqlcmd实用程序的使用方法。|了解SQL Server的安装方法。|【技能目标】|会启动或停止SQL Server Management Studio|会附加或分离数据库。|会使用查询窗口或sqlcmd实现简单查询。|会安装或配置SQL Server3任任 务务 陈陈 述述|公司的员工小李计划使用SQL Server开发数据库应用系统,现在首先需要在SQL Server Management Studio上快速创建一个用来实践的数据库。在SQL Server上附加示例数据库 _学生选课数据库Xk,并实现一个简单查询。45应完成的任务|相关知识:数据、数据库、数据库管理系统、数据库系统、示例数据库Xk、sqlcmd实用程序使用方法;系统安装的步骤和方法,以及系统常见的配置方法、默认实例、命名实例|项目教学单元:z任务1 体验SSMSz任务2 搭建实训环境z任务3 实现一个简单查询z任务4 分离Xk数据库z任务5 安装SQL Server6 6课程引入|【思考】1、什么是数据、数据库?2、什么是数据库管理系统、数据库系统?3、你听说过什么数据库产品?4、你知道哪些数据库系统?哪些数据库管理系统?7 7SQLServer简介|SQL Server是运行于Windows操作系统的的关系型数据库管理系统(RDBMS-Relational DataBase Manage System),是用于大规模联机事务处理(OLTP)、数据仓库和电子商务应用的数据库分析平台。SQLServer简介|何为关系型数据库?|为什么SQL Server往往成为中小型企业的首选?z容易上手z兼容性好,与windows操作系统结合紧密z功能完备zz注意区分注意区分“数据库管理系统数据库管理系统”与与“数数据库据库”的这两个概念的这两个概念89 9SQLServer的版本|SQL Server主要版本:Enterprise EditionEnterprise Edition:企业企业版版Standard EditionStandard Edition:标准标准版版Business Business Intelligence Intelligence EditionEdition:商业商业智能智能版版Express EditionExpress Edition:免费学习免费学习版版每一个版本都分为每一个版本都分为6464位和位和3232位两种类型。位两种类型。本书以企业版为例进行讲解,本书绝大本书以企业版为例进行讲解,本书绝大部分内容可在部分内容可在SQL Server 2014 ExpressSQL Server 2014 Express平台上学习平台上学习。读者读者可以从微软网站免费下载可以从微软网站免费下载SQL SQL Server 2014 ExpressServer 2014 Express版版1010Client/Server结构回应回应回应回应SQLSQL请求请求请求请求ClientSQLServerSQL ServerSQL Server利用利用C/SC/S结构把工作结构把工作负载分成在负载分成在C C端端和和S S端运行的任端运行的任务务客户端:商业逻辑处理,把客户端:商业逻辑处理,把数据呈现给用户数据呈现给用户服务器端:定义数据库结构、服务器端:定义数据库结构、存储数据,管理数据库,并存储数据,管理数据库,并进行多用户的并发处理进行多用户的并发处理1111三层C/S结构发送命令处理命令后请求数据返回数据处理数据后返回结果ClientApplicationServerDatabaseServer表示服务的最小商业逻辑商业逻辑数据访问和管理1212熟悉SQLServerManagement Studio|任务1:体验SSMS熟悉SQL Server Management Studio界面了解数据库引擎、数据库服务器名、两种不同的身份验证模式、了解默认实例名、命名实例名、知道如何在系统的“服务”里查看服务器名、启动和停止数据库服务器熟悉示例数据可Xk|任务2:搭建实训环境在SQL Server Management Studio中附加、分离数据库Xk熟悉Xk数据库和五个数据表131414熟悉选课数据库Xk|五张用户表:Class表(班级表Course表(课程表)Student表(学生表)Department表(部门表)StuCou表(学生选课表)熟悉选课数据库Xk|五个表及之间的关系151616实现一个简单的查询|任务3:实现一个简单查询1、使用SSMStudio的查询窗口【问题】查询班级表Class的所有数据。USE Xk USE XkGOGOSELECT*FROM StudentSELECT*FROM StudentGOGO2、使用sqlcmd实用程序【问题】查询所有姓“张”同学的基本信息。【问题】使用-Q参数查询所有姓“张”同学的信息。【问题】使用-h参数查询所有姓“张”的同学的信息,要求在标题之间只显示3行数据。分离数据库Xk任务4:分离Xk数据库 当数据库的数据更新后,需要及时备份数据库,此时可采用分离数据库的办法。分离Xk数据库后,会将Xk从 SQL Server 实例中删除,并将数据文件Xk.mdf和事务日志文件Xk_log.ldf保存在磁盘上。问题:保存到磁盘的什么位置?能否找出?17安装SQLServer任务5 安装SQL Server 在安装前需要考虑是否安装命名实例,名字为什么?课本以Windows 10下安装SQL Server 2014 Enterprise Edition为例介绍SQL Server 2014的安装。181919课堂总结|在本单元:|了解了数据库、数据库管理系统、数据库应用系统的概念。|了解数据库技术应用的场景。|对SQL Server有了初步的认识。|掌握了启动SSMS的方法。|熟悉了SSMS的学习和实训环境。|了解了附加或分离示例数据库Xk及数据库中的5个用户表。|会使用查询窗口或sqlcmd实用程序实现一个简单查询。课堂总结|SQL Server Management Studio开发环境|熟悉选课数据库Xk,并能够使用查询窗口和sqlcmd实用工具实现简单的查询【注意理解并区分几个概念】数据库管理系统、数据库20课后任务|1、安装SQLServer|2、复习|3、完成课本上的本单元实训21 查询与统计数据数据库课程组学习目标|【知识目标】【知识目标】|掌握使用SELECT语句查询数据的方法。|掌握按需要重新排序查询结果的方法。|掌握分组或统计查询结果的方法。|【技能目标】【技能目标】|会使用SELECT语句精确查询或模糊查询数据库中的信息。|会重新排序查询结果。|会分组统计或汇总查询结果。任务陈述|小李和小张都是某校的学生,他们希望从选课数据库中查看某老师开设的选修课及某门课允许多少人选修;班主任孙老师需要查看自己班学生选修课程的情况;教务处赵老师希望查看并统计学生选报选修课的情况,统计所有选修课的平均报名人数。应完成的任务|需要完成的任务:z任务1 查询单个数据表中的数据z任务2 使用聚合函数查询z任务3 分组查询结果z任务4 使用子查询 z任务5 排名查询结果z任务6 多表连接查询数据问题引入|学生在选课的时候需要了解课程相关信息,如课程名称、学分、上课时间等,所以选课系统必须提供这些查询功能,现在我们就来研究如何实现查询。|SQL(Structured Query Language)语言是用来对数据库组织、管理和检索的语言。|SQL Server数据库提供了Transact-SQL语言|我们就用Transact-SQL语言实现数据查询基本知识|实例数据库分析|Transact-SQL语言查询语句的标准格式:select 列名 from 表名 where 查询条件查询单个数据表中的数据【问题21】从课程表(Course)中查询所有课程的信息。USEXkGOSELECT*FROMCourseGO【问题22】查询课程表(Course)中的课程编号、课程名称、教师、上课时间、限制选课人数和报名人数,要求显示汉字标题。【问题23】从课程表(Course)中查询课程类别的信息。问题:如何消除重复的数据行?在列名前加上DistinctDistinct。查询单个数据表中的数据【问题24】从学生表(Student)中查询所有信息,要求只显示查询结果的前6行数据。【问题25】查询课程表(Course)的信息,要求给出查询结果为:课程名称 课程编号SQL Server实用技术 课程编号为:001【问题26】查询学号为“00000001”同学的姓名和班级编号。【问题27】查询报名人数少于等于25并且多于等于15人的课程信息。运算符|逻辑运算符有AND(与)、OR(或)、NOT(非)。AND(与):当给出的所有查询条件都为真时,则值为真。OR(或):当给出的所有查询条件中只要有一个查询条件为真,则值为真。NOT(非):否定其后的表达式。|算术运算符有+(加法)、-(减法)、*(乘法)、/(除法)、%(求余)运 算 符比较运算符比较运算符描述描述=等于等于 大于大于=大于等于大于等于=小于等于小于等于、!=!=不等于不等于!不大于不大于!不小于不小于()()用来控制优先级用来控制优先级范围运算符用来查询在某一指定范围内的数据行,它总是和关键字AND一起使用。范围运算符有BETWEEN、NOT BETWEEN。列表运算符IN用来给出要查找的那些值的列表查询单个数据表中的数据【问题28】查询报名人数多于25人或者少于15人的课程信息。【问题29】查询课程编号分别为“004”、“007”、“013”的课程信息。【问题210】查询课程编号不为“004”、“007”、“013”的课程编号和课程名称。【问题211】查询课程表(Course)的课程信息、报名人数与限选人数之比。查询单个数据表中的数据|重新排序查询结果|【问题212】查询课程信息、报名人数与限选人数之比。要求查询结果按照报名人数升序排序。|【问题213】查询课程表(Course)的教师名、课程编号、课程名,要求查询结果首先按照教师名降序排序,教师名相同时,则按照课程编号升序排序。|使用ORDER BY子句,在要排序的列名后使用关键字ASC,则指明为升序,使用DESC,则指明为降序。如果省略ASC或DESC,则系统默认为升序排序。查询单个数据表中的数据|使用LIKE进行模糊查询【问题214】在课程表(Course)中查看周二有哪些选修课,要求按上课时间排序升序查询结果。查询指定列未输入值的数据查询指定列未输入值的数据行行【问题215】查询学生选课表(StuCou)中随机数为空的课程信息。通配符通配符描述描述%表示匹配表示匹配0 0个或多个长度的字符个或多个长度的字符_ _(下划线)(下划线)表示匹配任意单个字符表示匹配任意单个字符 表示匹配指定范围内的任意单个字符表示匹配指定范围内的任意单个字符表示匹配不在指定范围内的任意单个字表示匹配不在指定范围内的任意单个字符符 使使用用聚聚合合函函数数查查询询聚合函数聚合函数功能及举例功能及举例SUM(ALL|DISTINCTexpression)SUM(ALL|DISTINCTexpression)计算一组数据的和。例:查看总学分:计算一组数据的和。例:查看总学分:SELECT SUM(Credit)FROM CourseSELECT SUM(Credit)FROM Course与与SELECT SUM(ALL SELECT SUM(ALL Credit)FROM CourseCredit)FROM Course作用相同,计算所有课程的学分作用相同,计算所有课程的学分和。和。SELECT SUM(DISTINCT Credit)FROM CourseSELECT SUM(DISTINCT Credit)FROM Course消除重复消除重复学分后的和。学分后的和。MIN(ALL|DISTINCTexpression)MIN(ALL|DISTINCTexpression)给出一组数据的最小值。例:查看最小的学分:给出一组数据的最小值。例:查看最小的学分:SELECT MIN(Credit)FROM CourseSELECT MIN(Credit)FROM CourseMAX(ALL|DISTINCTexpression)MAX(ALL|DISTINCTexpression)给出一组数据的最大值。例:查看最大的学分:给出一组数据的最大值。例:查看最大的学分:SELECT MAX(Credit)FROM CourseSELECT MAX(Credit)FROM CourseCOUNT(COUNT(ALL|DISTINCTexpression ALL|DISTINCTexpression)|*|*)计算总行数。计算总行数。COUNT(*)COUNT(*)表示给出总行数,包括含有表示给出总行数,包括含有空值的行。空值的行。COUNT(expression)COUNT(expression)表示去掉表示去掉expressionexpression值值为空的那些行。为空的那些行。例:查看学生总数。例:查看学生总数。SELECT COUNT(*)FROM StudentSELECT COUNT(*)FROM Student表示计算表示计算StudentStudent表的总行数。表的总行数。SELECT COUNT(StuNo)FROM StudentSELECT COUNT(StuNo)FROM Student表示去掉表示去掉StuNoStuNo值为空后的总行数值为空后的总行数AVG(ALL|DISTINCTexpression)AVG(ALL|DISTINCTexpression)计算一组值的平均值。例:查看平均学分计算一组值的平均值。例:查看平均学分SELECT AVG(Credit)FROM CourseSELECT AVG(Credit)FROM Course使使用用聚聚合合函函数数查查询询【问题216】统计课程表(Course)中共有多少门选修课。【问题217】查看课程表(Course)中能提供多少人选修课程。【问题218】查看课程表(Course)中最少报名人数、最多报名人数和平均报名人数。分组查询结果|可用来分组查询的有GROUP BY子句、CUBE运算符、GROUP BY ALL。使用GROUP BY子句分组查询,需要使用聚合函数。在GROUP BY子句中使用CUBE运算符,会在查询结果中增加一个汇总行。CUBE运算符可用于所有的聚合函数。HAVING子句:用于对分组后的数据进行条件限定,写在GROUP BY子句之后。在HAVING子句中允许使用聚合函数。GROUP BY ALL用于显示所有的组,包括那些被WHERE排除的组。分组查询结果|【问题219】按课程类别分组统计各类课程的门数。|【问题220】按课程类别分组统计各类课程的门数,并给出课程总门数。|【问题221】查看报名人数大于15的各类课程的最少报名人数和最多报名人数。|【问题222】查看报名人数大于15并且每组平均报名人数大于30的课程类别和各组的平均报名人数。|【问题223】查看课程类别为信息技术、管理的平均报名人数,并给出其他课程类别。使用子查询|子查询是返回单值的SELECT查询。子查询可以嵌在SELECT、INSERT、UPDATE或DELETE语句中,也可以用在WHERE或HAVING子句中。包括一个或更多子查询的SELECT查询称为嵌套查询。|【问题224】查询报名人数大于平均报名人数的课程信息。|【问题225】查询学生选课表(StuCou)中报名状态为“报名”的课程名。|【问题226】查询已经报名选修课程的学生信息,要求显示学号和姓名。排名查询结果|SQL Server的排名函数能将查询结果按照所指定的列排出顺序,还可根据需要给出有间断的排名和没有间断的排名。排名函数请见表2-7。|【问题227】查询课程表(Course)的所有信息,要求查询结果按照报名人数排序,并且返回每一行的序号、有间断的每一行的序号、没有间断的每一行的序号,并比较执行结果。|排名函数排名函数功功 能能ROW_NUMBER()OVER()ROW_NUMBER()OVER()在查询结果中给出每行的序号,其中在查询结果中给出每行的序号,其中order_by_clauseorder_by_clause为要排序的列为要排序的列RANK()OVER RANK()OVER()在查询结果中给出每行的排名,排序有可能会间在查询结果中给出每行的排名,排序有可能会间断。其中断。其中order_by_clauseorder_by_clause为要排序的列。为要排序的列。DENSE_RANK()OVER()DENSE_RANK()OVER()在查询结果中给出每行的排名,排序没有间断。在查询结果中给出每行的排名,排序没有间断。其中其中order_by_clauseorder_by_clause为要排序的列。为要排序的列。多表连接查询数据|从多个表中查询数据需要建立起表与表(两个表)之间的连接,连接的类型有交叉连接、内连接和外连接。内连接又可分为相等连接、自然连接、比较连接和自连接。|交叉连接:使用CROSS JOIN子句将一个以上的表连接起来的查询称为交叉连接(Cross Join)查询,这种连接的结果为笛卡儿积。|【问题228】查询学生表(Student)和班级表(Class)的信息(使用交叉连接查询)。|请仔细观察查询结果,有什么结论?多表连接查询数据|内连接查询:只保留满足连接条件的数据行的连接称为内连接,使用JOIN子句连接两个表。|连接条件写为:主表.主键=从表.外键。表与表之间的连接条件要写在ON子句中。一般来说,对来自n个表(或视图)的查询需要写出n-1个连接条件,并使用AND运算符连接这些连接条件。|1 1相等连接查询相等连接查询相等连接就是作相等比较的连接。相等连接的查询结果中存在完全相同的两个列(连接两个表的列)。|2自然连接查询在相等连接中只保留一个连接列的连接称为自然连接。多表连接查询数据|【问题229】查看学生基本信息和所在班级的信息(相等连接)。SELECT*FROM Class JOIN StudentON Class.ClassNo=Student.ClassNoGO|【问题230】查看学生基本信息和学生所在班级名称(自然连接)。|【问题231】查询学生的选课信息,要求显示学号、姓名、课程编号、课程名称、志愿号,并按照学号升序排序,当学号相同时则按照志愿号升序排序。|【问题232】查询学生报名“计算机应用工程系”开设的选修课程情况,显示信息包括学生姓名、课程名称和教师名。多表连接查询数据|3 3比较连接比较连接查询查询表与表之间使用比较运算符进行的连接。【问题233】查询每个班级可以选修的、不是自己所在部门开设的选修课程的信息,显示信息包括班级、课程名、课程类别、学分、老师、上课时间和报名人数。多表连接查询数据|4 4自连接查询自连接查询 自连接就是一个表和它自身进行连接,是多表连接的特例。在自连接中,要先在FROM子句中为表分别定义两个不同的别名,然后使用这两个别名写出一个连接条件。【问题234】查询课程类别相同但开课部门不同的课程信息,要求显示课程编号、课程名称、课程类别和部门编号,并按照课程编号升序排序查询结果。多表连接查询数据|外连接查询 解决内连接时丢失信息的问题。例,查询所有学生报名选修课程的详细情况,要求包括已报名选修课程的学生,也包括未报名选修课程的学生情况。内连接丢失了没有学生报名的课程信息。1 1左外连接查询左外连接查询左外连接查询的FROM子句写为:FROM 左表名 LEFT JOIN 右表名。左外连接查询是在两个表进行内连接查询结果的基础上,再增加不满足连接条件的那些行,这些行的右表的列值显示为空值(NULL)。多表连接查询数据2 2右外连接查询右外连接查询 右外连接查询的FROM子句写为:FROM 左表名 RIGHT JOIN 右表名。右外连接查询是在两个表进行内连接查询结果的基础上,再增加不满足连接条件的那些行,这些行的左表的列值显示为空值(NULL)。|3全外连接查询全外连接查询 全外连接查询的FROM子句写为:FROM 左表名 FULL JOIN 右表名。全外连接查询完成左外连接查询和右外连接查询的操作,查询结果包括了左外连接查询和右外连接查询都不满足连接条件的那些数据行。多表连接查询数据|【问题235】使用左外连接查询所有学生报名选修课程的详细情况,要求包括已报名选修课程的学生,也包括未报名选修课程的学生情况,显示内容有学号、课程编号和课程名称。|【问题236】使用右外连接查询学生的已报名和未报名的课程信息(课程编号、课程名称、学号)。|【问题237】使用全外连接查询学生报名信息(课程编号、课程名称、学号)。课程总结在本单元:|会将要使用的数据库切换为当前数据库。|查询时会使用星号(*)显示表的全部列。|会根据需要改变查询结果的列标题。|会使用DISTINCT消除查询结果的重复数据行。|会使用TOP n PERCENT返回查询结果的前n(%)行。|会在查询结果中增加要显示的字符串。|会使用WHERE子句写出限制查询的条件。|会将表达式作为查询的列。|会使用ORDER BY子句按要求重新排序查询结果。|会在查询中根据需要使用列表运算符IN。|会在查询中根据需要使用范围运算符BETWEEN。|了解精确查询和模糊查询的区别。会使用LIKE及4个通配符(%、_、)实现模糊查询。|会使用IS NULL查询指定列未输入值的数据行。|会根据需要使用聚合函数(SUM函数、MAX函数、MIN函数、COUNT函数、AVG函数)进行统计或汇总。|会根据需要分组查询结果。掌握GROUP BY子句、CUBE运算符、HAVING子句、GROUP BY ALL子句的使用。了解HAVING子句与WHERE子句的区别。|会实现子查询。|能根据需要按照要求排序查询结果。|了解笛卡儿积的概念。会实现交叉连接查询。|会根据需要实现多表连接查询,写出正确的表与表之间的连接条件。会实现内连接查询中的相等连接查询、自然连接查询、比较连接查询、自连接查询。|了解外连接查询要解决的问题。会实现外连接查询中的左外连接查询、右外连接查询和全外连接查询。|会定义表别名及使用表别名进行查询。课后任务|1、复习|2、完成课本本单元实训 题8-11 管理数据表数据数据库课程组学习目标【知识目标】【知识目标】|掌握INSERT、INSERT与UNION配合、UPDATE、DELETE语句的使用方法。|掌握UNION运算符的使用方法。|掌握带有INTO子句的SELECT语句的使用方法。【技能目标】【技能目标】|会使用INSERT语句向数据表添加数据。|会使用UPDATE语句更新数据表中的数据。|会使用DELETE语句删除数据表中的数据。|会将两个或多个查询结果合并为一个查询结果|会从一个表中抽取数据到另一个表中。任务陈述|小赵提出,需要向数据表中输入数据,或者修改、或删除数据表中的数据。小赵还需要将两个或多个不同的查询结果合并成为一个查询结果进行显示;需要从一个表中抽取数据保存到另一个表中。应完成的任务|需要完成的任务:任务1 维护数据表数据 z向表中添加数据z更新数据表数据z删除数据表数据|任务2 合并多个查询结果中的数据问题引入|需要向部门表中添加其他部门信息|某位同学因故取消了某门已选修的课程,现在需要在表中进行处理。|某位同学报名了选修课程。|现在需要从已存在的学生表、班级表中生成学生所属班级信息表。新增数据|向表中新增数据的方法:向表中新增数据的方法:1使用INSERT语句 还可以使用INSERT与UNION配合添加多行数据2使用SSMS3将表中数据复制到新表中【问题31】向部门表(Department)添加如下3行数据。DepartNo=11,DepartName=数学系DepartNo=12,DepartName=物理系DepartNo=13,DepartName=化学系USE Xk /*USE Xk /*一定先切换到一定先切换到XkXk数据库数据库*/*/GOGOINSERT INSERT Department Department VALUES VALUES(11,(11,数学系数学系)INSERT INSERT Department(DepartName,DepartNoDepartment(DepartName,DepartNo)VALUES)VALUES(物理系物理系,12),12)INSERT INSERT Department(DepartNo,DepartName)Department(DepartNo,DepartName)VALUES VALUES(13,(13,化学系化学系)新增数据【问题32】向班级表(Class)添加如下4行数据。ClassNo=ClassNo=2011000120110001,ClassName=ClassName=0303旅游管理旅游管理1 1,DepartNo=DepartNo=0303ClassNo=ClassNo=2011000220110002,ClassName=ClassName=0303旅游管理旅游管理2 2,DepartNo=DepartNo=0303ClassNo=ClassNo=2011000320110003,ClassName=ClassName=0202建筑管理建筑管理1 1,DepartNo=DepartNo=0202ClassNo=ClassNo=2011000420110004,ClassName=ClassName=0202旅游管理旅游管理2 2,DepartNo=DepartNo=0202INSERT INTO ClassSELECT 20110001,03旅游管理,03UNION SELECT 20110002,03旅游管理,03UNION SELECT 20110003,02建筑管理,02UNION SELECT 20110004,02建筑管理,02GO新增数据【问题33】从课程表(Course)中将报名人数超过40(含)人的课程数据复制到CourseWillNum表中(注意:Xk 数据库中无CourseWillNum表)。SELECT*INTO CourseWillNumFROM CourseWHERE WillNum=40GO【问题34】将“01旅游管理”班同学的学号、姓名和选修的课程编号、课程名称数据复制到名字为My_Class的新表中。SELECT S.StuNo,StuName,C.CouNo,CouName INTO My_ClassFROM Student S,Course C,StuCou SC,Class CLWHERE S.StuNo=SC.StuNo AND C.CouNo=SC.CouNo AND CL.ClassNo=S.ClassNo AND ClassName=01旅游管理GO更更新新数数据据表表数数据据|使用UPDATE语句或使用SSMS。|UPDATE语句用来更新表中已经存在的数据。UPDATE语句一次可以更新一行数据,也可以一次更新多行数据,甚至可以一次更新表中所有数据行。|UPDATE语句语法如下:UPDATE 要更新的表名SET 要更新的列名=更新后的值FROM 涉及的表名WHERE 条件更更新新数数据据表表数数据据【问题35】需要将课程表(Course)中“电子出版概论”课程的上课时间修改为“周二晚”。UPDATE?SET?=?FROM?WHERE?GO【问题36】将“01数据库”班级所有学生的选课密码初始化为“#*3456”。删删除除数数据据表表数数据据DELETE语句用来从表中删除数据。一次可以删除一行数据,也可以删除多行数据。DELETE语句的简化语法如下:DELETE 要删除数据的表名FROM 涉及的表名列表 WHERE 条件|【问题37】学号为“00000005”的同学因故取消课程编号为“017”的选修课。|【问题38】学号为“00000005”的同学因故取消“中餐菜肴制作”选修课。合并多个查询结果中的数据|常会遇到这样的问题:将两个或更多的的查询结果合并为一个查询结果,此时可以使用UNION或UNION ALL,其区别是使用UNION ALL合并的查询结果中会包含重复行。注意事项请见课本。|【问题39】查看课程编号、课程名称及报名状态。|【问题310】查看课程编号、课程名称及报名状态的情况,并将数据保存到名称为CourseState表中(注意,数据库中没有CourseState表)。课程总结在本单元:|会使用INSERT语句向表中添加数据行。|会将INSERT与UNION运算符配合使用,向表中添加数据行|会使用UPDATE语句根据需要更新数据表数据。|会使用DELETE语句根据需要删除数据表数据。|会使用UNION运算符将两个或更多查询结果合并为一个查询结果。|会使用带有INTO子句的SELECT语句将查询抽取出来的数据存储到一个新表中。课后任务|1、复习|2、完成课本本单元实训 题1-4数据库设计数据库课程组学习目标【知识目标】【知识目标】|理解实体、属性、属性间联系及联系类型。|掌握信息化现实世界的方法,理解实体关系图(E-R图)。|掌握关系模型的概念,掌握规范化关系数据模型的方法。|理解数据完整性概念。【技能目标】【技能目标】|会将现实世界的事物和特性抽象为信息世界的实体与属性。|会用E-R图描述实体、属性与实体间的联系。|会将E-R图转换为关系数据模型,并规范化到一定的程度(范式)。66任务陈述|每学期学生选报选修课程,人工处理繁琐,效率不高,又易出错,因此学校计划开发网上学生选课系统。现在,首先需要将现实世界中的学生选课数据进行处理,建立概念数据模型,然后将概念数据模型转换为关系模型,并将关系模型规范到一定化的程度。67项目概述|项目名称:数据库设计|项目介绍:按照数据库设计的一般步骤,本项目的主要内容包括:z数据库建模z将E-R模型转换成关系模型z使用三大范式进行关系模型规范化|项目分析:本项目学习如何设计一个规范的关系型数据库。68数据库设计69项目概述|相关知识:数据建模并画出E-R图的方法;使用三大范式进行关系模型的规范化。|项目教学单元:任务1:数据库建模任务2:将E-R图转换成关系模型任务3:关系模型的规范化(三大范式)70设计数据库的一般步骤1.建立E-R(实体-关系)模型现实世界抽象化为信息世界2.将E-R模型转换为关系模型信息世界数据化为数据世界3.对关系模型进行规范化|本单元目标:设计一个规范的学生选课数据库717272任务1:数据建模E-R模型|实体及其属性、实体标识符|实体间的联系(1:1,1:n,m:n)|E-R模型(E-R图、实体关系图)z实体用矩形表示z属性用椭圆形表示,并用连线与实体连接起来z实体之间的联系用菱形框表示,并用连线与有关实体连接起来73实战训练|完成实训任务单2-1z描述学生选课系统,进行需求分析,提取实体;z根据需求分析,分析实体间的联系;z绘制选课系统的E-R图74学生选课E-R图7576任务2:将E-R图转换成关系模型关系模型|关系数据模型:关系数据模型:是数据库应用系统广泛采用的数据模型之一。关系数据模型用二维表来表示实体及实体之间的联系。只有具有如下特点的二维表才是关系数据模型。(1)表中的每列都是不可再细分的基本数据项。(2)每列的名字不同,数据类型相同或者兼容。(3)行的顺序无关紧要。(4)列的顺序无关紧要。(5)关系中不能存在完全相同的两行77关系模型|关系模型:通过二维表格数据来表示实体以及实体间的联系。z关系就是一个表格z关系表格的特点|将E-R模型转换为关系模型将一个实体或实体间的联系转换为表,将实体的属性或联系的属性转换为表的列。实体或联系的标识符就是表的主关键字(简称主键),它能唯一标识表中的每一行。78实战训练|完成实训任务单2-2z将实训2-1中所得出的学生选课系统的E-R图转换为关系模型79课程编号课程名称课程类别学分教师部门编号部门名称上课时间限选人数报名人数被选中人数001SQL Server实用技术信息技术3徐人凤01计算机应用工程系周二5-6204320002JAVA 技 术的开发应用信息技术2程伟斌01计算机应用工程系周二5-6403434011中外建筑欣赏人文2林泉02建筑工程系周 二 5-6节202720012智能建筑工程技术2王娜02建筑工程系周 二 5-6节20352080学号姓名班级选课密码00000001林斌00电子商务47FE680E00000002彭少帆00电商A946EF8C00000011朱川00多媒体19C5653D学号姓名课程名称志愿号选课状态00000001林斌SQLServer实用技术1报名00000002彭少帆ASP.NET应用3报名00000011朱川81任务3:关系模型的规范化(三大范式)规范关系模型|规范化的目的:消除数据冗余,以保证数据完整性。|I范式z定义:一个关系的每个属性都是不可再分的基本数据项|函数依赖和函数传递依赖z函数依赖:完全依赖或部分依赖于主关键字z函数传递依赖82规范关系模型(续)|II范式z定义:首先是第一范式,并且关系中的每个非主属性完全函数依赖(而不是部分依赖)于主关键字z将非第二范式转换为第二范式z例子:规范学生选课表|III范式z定义:首先是第二范式,并且关系中的任何一个非主属性都不传递依赖于任何主关键字z将非第三范式转换为第三范式z例子:规范课程表83关键字|候选关键字:可以用来作为关键字的属性或属性的组合|主关键字(唯一的,不允许为空)|外关键字|公共关键字|主表和从表84规范后的关系模型部门编号部门名称01计算机工程系02建筑工程系03旅游系85课程编号课程名称课程类别学分教师部门编号上课时间限选人数报名人数被选中人数001SQLServer实用技术信息技术3徐人凤01周二5-6204320002JAVA 技术的开发应用信息技术2程伟斌01周二5-6403434011中外建筑欣赏人文2林泉02周二5-6节202720012智能建筑工程技术2王娜02周二5-6节203520学号姓名班级编号选课密码00000001林斌2000000147FE680E00000002彭少帆20000001A946EF8C00000011朱川2000000219C5653D班级编号班级名称部门编号2000000100电子商务012000000200多媒体012000000300数据库01学号课程编号志愿号选课状态000000010011报名000000020123报名00000011保保证证数数据据完完整整性性规规则则|数据完整性用来保证数据的一致性和正确性。分为列数据完整性(列完整性)、表数据完整性表(表完整性)和表与表之间的参照完整性。|列(域)完整性:是指表中的每一列数据都必须满足所定义的数据类型,并且其值在有效范围之内|表完整性:是指表中必须有一个主关键字(不能为NULL)|参照完整性:是指每两个关联的表中的数据必须是一致的、协调的,主关键字和外关键字也必须是一致的、协调的|保证参照完整性的规则86课程总结|掌握现实世界信息化|掌握将E-R图转换成关系模型的方法|理解何为三大范式|能使用三大范式对关系模型进行规范化|掌握保证数据完整性的方法|学会如何设计一个规范的数据库(方法、步骤)87课后任务|1、复习|2、完成课本上的本单元实训88数据库的实现数据库课程组项目概述|项目名称:数据库的实现|项目介绍:数据库的实现主要包括四个方面:z创建与管理数据库z创建和管理数据库表z数据完整性的实现z优化查询速度|项目