版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库及应用(第5版)走进SQL SERVER数据库课程组学习目标【知识目标】理解数据库、数据库管理系统、数据库系统。初步认识示例数据库Xk以及5个用户数据表。 初步了解查询窗口和sqlcmd实用程序的使用方法。了解SQL Server的安装方法。【技能目标】会启动或停止SQL Server Management Studio会附加或分离数据库。会使用查询窗口或sqlcmd实现简单查询。会安装或配置SQL Server3任 务 陈 述公司的员工小李计划使用SQL Server开发数据库应用系统,现在首先需要在SQL Server Management Studio上快速创建一个用来实践的数据库
2、。在SQL Server上附加示例数据库 _学生选课数据库Xk,并实现一个简单查询。45应完成的任 务相关知识:数据、数据库、数据库管理系统、数据库系统、示例数据库Xk、sqlcmd实用程序使用方法;系统安装的步骤和方法,以及系统常见的配置方法、默认实例、命名实例项目教学单元:任务1 体验SSMS任务2 搭建实训环境任务3 实现一个简单查询任务4 分离Xk数据库任务5 安装SQL Server66课程引入【思考】1、什么是数据、数据库?2、什么是数据库管理系统、数据库系统?3、你听说过什么数据库产品?4、你知道哪些数据库系统?哪些数据库管理系统?77SQL Server简介SQL Server
3、是运行于Windows操作系统的的关系型数据库管理系统(RDBMS- Relational DataBase Manage System),是用于大规模联机事务处理(OLTP)、数据仓库和电子商务应用的数据库分析平台。SQL Server简介何为关系型数据库?为什么SQL Server往往成为中小型企业的首选?容易上手兼容性好,与windows操作系统结合紧密功能完备注意区分“数据库管理系统”与“数据库”的这两个概念899SQL Server的版本SQL Server主要版本:Enterprise Edition:企业版Standard Edition:标准版Business Intellig
4、ence Edition:商业智能版Express Edition: 免费学习版每一个版本都分为64位和32位两种类型。本书以企业版为例进行讲解,本书绝大部分内容可在SQL Server 2014 Express平台上学习。读者可以从微软网站免费下载SQL Server 2014 Express版1010Client/Server结构回应SQL 请求ClientSQL ServerSQL Server利用C/S结构把工作负载分成在C端和S端运行的任务客户端:商业逻辑处理,把数据呈现给用户服务器端:定义数据库结构、存储数据,管理数据库,并进行多用户的并发处理1111三层C/S结构发送命令处理命令
5、后请求数据返回数据处理数据后返回结果ClientApplicationServerDatabaseServer表示服务的最小商业逻辑商业逻辑数据访问和管理1212熟悉SQL Server Management Studio 任务1:体验SSMS熟悉SQL Server Management Studio界面了解数据库引擎、数据库服务器名、两种不同的身份验证模式、了解默认实例名、命名实例名、知道如何在系统的“服务”里查看服务器名、启动和停止数据库服务器熟悉示例数据可Xk任务2: 搭建实训环境在SQL Server Management Studio中附加、分离数据库Xk熟悉Xk数据库和五个数据表
6、131414熟悉选课数据库Xk五张用户表:Class表(班级表Course表(课程表)Student表(学生表)Department表(部门表)StuCou表(学生选课表)熟悉选课数据库Xk五个表及之间的关系151616实现一个简单的查询任务3:实现一个简单查询1、使用SSMStudio的查询窗口【问题】查询班级表Class的所有数据。 USE XkGOSELECT * FROM StudentGO2、使用sqlcmd实用程序【问题】查询所有姓“张”同学的基本信息。【问题】使用-Q参数查询所有姓“张”同学的信息。【问题】使用-h参数查询所有姓“张”的同学的信息,要求在标题之间只显示3行数据。分
7、离数据库Xk任务4:分离Xk数据库 当数据库的数据更新后,需要及时备份数据库,此时可采用分离数据库的办法。分离Xk数据库后,会将Xk从 SQL Server 实例中删除,并将数据文件Xk.mdf和事务日志文件Xk_log.ldf保存在磁盘上。问题:保存到磁盘的什么位置?能否找出?17安装SQL Server任务5 安装SQL Server 在安装前需要考虑是否安装命名实例,名字为什么?课本以Windows 10下安装SQL Server 2014 Enterprise Edition为例介绍SQL Server 2014的安装。181919课堂总结在本单元:了解了数据库、数据库管理系统、数据库
8、应用系统的概念。了解数据库技术应用的场景。对SQL Server有了初步的认识。掌握了启动SSMS的方法。熟悉了SSMS的学习和实训环境。了解了附加或分离示例数据库Xk及数据库中的5个用户表。会使用查询窗口或sqlcmd实用程序实现一个简单查询。课堂总结SQL Server Management Studio开发环境熟悉选课数据库Xk,并能够使用查询窗口和sqlcmd实用工具实现简单的查询【注意理解并区分几个概念】数据库管理系统、数据库20课后任务1、安装SQL Server2、复习3、完成课本上的本单元实训21 查询与统计数据数据库课程组学习目标【知识目标】掌握使用SELECT语句查询数据的
9、方法。掌握按需要重新排序查询结果的方法。掌握分组或统计查询结果的方法。【技能目标】会使用SELECT语句精确查询或模糊查询数据库中的信息。会重新排序查询结果。会分组统计或汇总查询结果。任务陈述小李和小张都是某校的学生,他们希望从选课数据库中查看某老师开设的选修课及某门课允许多少人选修;班主任孙老师需要查看自己班学生选修课程的情况;教务处赵老师希望查看并统计学生选报选修课的情况,统计所有选修课的平均报名人数。应完成的任务需要完成的任务:任务1 查询单个数据表中的数据任务2 使用聚合函数查询任务3 分组查询结果任务4 使用子查询 任务5 排名查询结果任务6 多表连接查询数据问题引入学生在选课的时候
10、需要了解课程相关信息,如课程名称、学分、上课时间等,所以选课系统必须提供这些查询功能,现在我们就来研究如何实现查询。SQL(Structured Query Language)语言是用来对数据库组织、管理和检索的语言。 SQL Server数据库提供了Transact-SQL语言我们就用Transact-SQL语言实现数据查询基本知识实例数据库分析Transact-SQL语言查询语句的标准格式: select 列名 from 表名 where 查询条件查询单个数据表中的数据【问题21】从课程表(Course)中查询所有课程的信息。USE XkGO SELECT *FROM CourseGO 【
11、问题22】查询课程表(Course)中的课程编号、课程名称、教师、上课时间、限制选课人数和报名人数,要求显示汉字标题。【问题23】从课程表(Course)中查询课程类别的信息。问题:如何消除重复的数据行?在列名前加上Distinct。查询单个数据表中的数据【问题24】从学生表(Student)中查询所有信息,要求只显示查询结果的前6行数据。【问题25】查询课程表(Course)的信息,要求给出查询结果为:课程名称 课程编号SQL Server实用技术 课程编号为: 001【问题26】查询学号为“00000001”同学的姓名和班级编号。【问题27】查询报名人数少于等于25并且多于等于15人的课程
12、信息。运算符逻辑运算符有AND(与)、OR(或)、NOT(非)。AND(与):当给出的所有查询条件都为真时,则值为真。OR(或):当给出的所有查询条件中只要有一个查询条件为真,则值为真。NOT(非):否定其后的表达式。算术运算符有+(加法)、-(减法)、*(乘法)、/(除法)、%(求余)运 算 符比较运算符描述=等于大于=大于等于=小于等于、!=不等于!不大于!不小于()用来控制优先级范围运算符用来查询在某一指定范围内的数据行,它总是和关键字AND一起使用。范围运算符有BETWEEN、NOT BETWEEN。列表运算符IN用来给出要查找的那些值的列表查询单个数据表中的数据【问题28】查询报名人
13、数多于25人或者少于15人的课程信息。【问题29】查询课程编号分别为“004”、“007”、“013”的课程信息。【问题210】查询课程编号不为“004”、“007”、“013”的课程编号和课程名称。【问题211】查询课程表(Course)的课程信息、报名人数与限选人数之比。查询单个数据表中的数据重新排序查询结果【问题212】查询课程信息、报名人数与限选人数之比。要求查询结果按照报名人数升序排序。【问题213】查询课程表(Course)的教师名、课程编号、课程名,要求查询结果首先按照教师名降序排序,教师名相同时,则按照课程编号升序排序。使用ORDER BY子句,在要排序的列名后使用关键字ASC
14、,则指明为升序,使用DESC,则指明为降序。如果省略ASC或DESC,则系统默认为升序排序。查询单个数据表中的数据使用LIKE进行模糊查询【问题214】在课程表(Course)中查看周二有哪些选修课,要求按上课时间排序升序查询结果。查询指定列未输入值的数据行【问题215】查询学生选课表(StuCou)中随机数为空的课程信息。 通配符描述%表示匹配0个或多个长度的字符_(下划线)表示匹配任意单个字符 表示匹配指定范围内的任意单个字符表示匹配不在指定范围内的任意单个字符 使用聚合函数查询聚合函数功能及举例SUM (ALL|DISTINCTexpression )计算一组数据的和。例:查看总学分:S
15、ELECT SUM(Credit) FROM Course与SELECT SUM(ALL Credit) FROM Course作用相同,计算所有课程的学分和。SELECT SUM(DISTINCT Credit) FROM Course消除重复学分后的和。MIN (ALL|DISTINCTexpression )给出一组数据的最小值。例:查看最小的学分:SELECT MIN(Credit) FROM CourseMAX (ALL|DISTINCTexpression )给出一组数据的最大值。例:查看最大的学分:SELECT MAX(Credit) FROM CourseCOUNT (ALL|
16、DISTINCTexpression )|*)计算总行数。COUNT(*)表示给出总行数,包括含有空值的行。COUNT(expression)表示去掉expression值为空的那些行。例:查看学生总数。SELECT COUNT(*) FROM Student表示计算Student表的总行数。SELECT COUNT(StuNo) FROM Student表示去掉StuNo值为空后的总行数AVG (ALL|DISTINCTexpression )计算一组值的平均值。例:查看平均学分SELECT AVG(Credit) FROM Course使用聚合函数查询【问题216】统计课程表(Course
17、)中共有多少门选修课。【问题217】查看课程表(Course)中能提供多少人选修课程。【问题218】查看课程表(Course)中最少报名人数、最多报名人数和平均报名人数。分组查询结果可用来分组查询的有GROUP BY子句、CUBE运算符、GROUP BY ALL。使用GROUP BY子句分组查询,需要使用聚合函数。在GROUP BY子句中使用CUBE运算符,会在查询结果中增加一个汇总行。CUBE运算符可用于所有的聚合函数。HAVING子句:用于对分组后的数据进行条件限定,写在GROUP BY子句之后。在HAVING子句中允许使用聚合函数。GROUP BY ALL用于显示所有的组,包括那些被WH
18、ERE排除的组。分组查询结果【问题219】按课程类别分组统计各类课程的门数。 【问题220】按课程类别分组统计各类课程的门数,并给出课程总门数。【问题221】查看报名人数大于15的各类课程的最少报名人数和最多报名人数。【问题222】查看报名人数大于15并且每组平均报名人数大于30的课程类别和各组的平均报名人数。 【问题223】查看课程类别为信息技术、管理的平均报名人数,并给出其他课程类别。使用子查询子查询是返回单值的SELECT查询。子查询可以嵌在SELECT、INSERT、UPDATE或DELETE语句中,也可以用在WHERE或HAVING子句中。包括一个或更多子查询的SELECT查询称为嵌
19、套查询。【问题224】查询报名人数大于平均报名人数的课程信息。 【问题225】查询学生选课表(StuCou)中报名状态为“报名”的课程名。【问题226】查询已经报名选修课程的学生信息,要求显示学号和姓名。排名查询结果SQL Server的排名函数能将查询结果按照所指定的列排出顺序,还可根据需要给出有间断的排名和没有间断的排名。排名函数请见表2-7。【问题227】查询课程表(Course)的所有信息,要求查询结果按照报名人数排序,并且返回每一行的序号、有间断的每一行的序号、没有间断的每一行的序号,并比较执行结果。排名函数功 能ROW_NUMBER() OVER ( )在查询结果中给出每行的序号,
20、其中order_by_clause为要排序的列RANK() OVER ( )在查询结果中给出每行的排名,排序有可能会间断。其中order_by_clause为要排序的列。DENSE_RANK () OVER ( )在查询结果中给出每行的排名,排序没有间断。其中order_by_clause为要排序的列。多表连接查询数据从多个表中查询数据需要建立起表与表(两个表)之间的连接,连接的类型有交叉连接、内连接和外连接。内连接又可分为相等连接、自然连接、比较连接和自连接。交叉连接:使用CROSS JOIN子句将一个以上的表连接起来的查询称为交叉连接(Cross Join)查询,这种连接的结果为笛卡儿积。
21、【问题228】查询学生表(Student)和班级表(Class)的信息(使用交叉连接查询)。请仔细观察查询结果,有什么结论?多表连接查询数据内连接查询:只保留满足连接条件的数据行的连接称为内连接,使用JOIN子句连接两个表。连接条件写为:主表.主键=从表.外键。表与表之间的连接条件要写在ON子句中。一般来说,对来自n个表(或视图)的查询需要写出n-1个连接条件,并使用AND运算符连接这些连接条件。1相等连接查询相等连接就是作相等比较的连接。相等连接的查询结果中存在完全相同的两个列(连接两个表的列)。2自然连接查询在相等连接中只保留一个连接列的连接称为自然连接。多表连接查询数据【问题229】查看
22、学生基本信息和所在班级的信息(相等连接)。SELECT *FROM Class JOIN StudentON Class.ClassNo=Student.ClassNoGO【问题230】查看学生基本信息和学生所在班级名称(自然连接)。【问题231】查询学生的选课信息,要求显示学号、姓名、课程编号、课程名称、志愿号,并按照学号升序排序,当学号相同时则按照志愿号升序排序。【问题232】查询学生报名“计算机应用工程系”开设的选修课程情况,显示信息包括学生姓名、课程名称和教师名。多表连接查询数据3比较连接查询表与表之间使用比较运算符进行的连接。【问题233】查询每个班级可以选修的、不是自己所在部门开设
23、的选修课程的信息,显示信息包括班级、课程名、课程类别、学分、老师、上课时间和报名人数。多表连接查询数据4自连接查询 自连接就是一个表和它自身进行连接,是多表连接的特例。 在自连接中,要先在FROM子句中为表分别定义两个不同的别名,然后使用这两个别名写出一个连接条件。【问题234】查询课程类别相同但开课部门不同的课程信息,要求显示课程编号、课程名称、课程类别和部门编号,并按照课程编号升序排序查询结果。多表连接查询数据外连接查询 解决内连接时丢失信息的问题。例,查询所有学生报名选修课程的详细情况,要求包括已报名选修课程的学生,也包括未报名选修课程的学生情况。内连接丢失了没有学生报名的课程信息。1左
24、外连接查询左外连接查询的FROM子句写为:FROM 左表名 LEFT JOIN 右表名。左外连接查询是在两个表进行内连接查询结果的基础上,再增加不满足连接条件的那些行,这些行的右表的列值显示为空值(NULL)。多表连接查询数据2右外连接查询 右外连接查询的FROM子句写为:FROM 左表名 RIGHT JOIN 右表名。 右外连接查询是在两个表进行内连接查询结果的基础上,再增加不满足连接条件的那些行,这些行的左表的列值显示为空值(NULL)。3全外连接查询 全外连接查询的FROM子句写为:FROM 左表名 FULL JOIN 右表名。 全外连接查询完成左外连接查询和右外连接查询的操作,查询结果
25、包括了左外连接查询和右外连接查询都不满足连接条件的那些数据行。多表连接查询数据【问题235】使用左外连接查询所有学生报名选修课程的详细情况,要求包括已报名选修课程的学生,也包括未报名选修课程的学生情况,显示内容有学号、课程编号和课程名称。【问题236】使用右外连接查询学生的已报名和未报名的课程信息(课程编号、课程名称、学号)。【问题237】使用全外连接查询学生报名信息(课程编号、课程名称、学号)。课程总结在本单元:会将要使用的数据库切换为当前数据库。查询时会使用星号(*)显示表的全部列。会根据需要改变查询结果的列标题。会使用DISTINCT消除查询结果的重复数据行。会使用TOP n PERCE
26、NT返回查询结果的前n(%)行。会在查询结果中增加要显示的字符串。会使用WHERE子句写出限制查询的条件。会将表达式作为查询的列。会使用ORDER BY子句按要求重新排序查询结果。会在查询中根据需要使用列表运算符IN。会在查询中根据需要使用范围运算符BETWEEN。了解精确查询和模糊查询的区别。会使用LIKE及4个通配符(%、_、 、 )实现模糊查询。会使用IS NULL查询指定列未输入值的数据行。会根据需要使用聚合函数(SUM函数、MAX函数、MIN函数、COUNT函数、AVG函数)进行统计或汇总。会根据需要分组查询结果。掌握GROUP BY子句、CUBE运算符、HAVING子句、GROUP
27、 BY ALL子句的使用。了解HAVING子句与WHERE子句的区别。会实现子查询。能根据需要按照要求排序查询结果。了解笛卡儿积的概念。会实现交叉连接查询。会根据需要实现多表连接查询,写出正确的表与表之间的连接条件。会实现内连接查询中的相等连接查询、自然连接查询、比较连接查询、自连接查询。了解外连接查询要解决的问题。会实现外连接查询中的左外连接查询、右外连接查询和全外连接查询。会定义表别名及使用表别名进行查询。课后任务1、复习2、完成课本本单元实训 题8-11 管理数据表数据数据库课程组学习目标【知识目标】掌握INSERT、INSERT与UNION配合、UPDATE、DELETE语句的使用方法
28、。掌握UNION运算符的使用方法。掌握带有INTO子句的SELECT语句的使用方法。【技能目标】会使用INSERT语句向数据表添加数据。会使用UPDATE语句更新数据表中的数据。会使用DELETE语句删除数据表中的数据。会将两个或多个查询结果合并为一个查询结果会从一个表中抽取数据到另一个表中。任务陈述小赵提出,需要向数据表中输入数据,或者修改、或删除数据表中的数据。小赵还需要将两个或多个不同的查询结果合并成为一个查询结果进行显示;需要从一个表中抽取数据保存到另一个表中。应完成的任务需要完成的任务:任务1 维护数据表数据 向表中添加数据更新数据表数据删除数据表数据任务2 合并多个查询结果中的数据
29、问题引入需要向部门表中添加其他部门信息某位同学因故取消了某门已选修的课程,现在需要在表中进行处理。某位同学报名了选修课程。现在需要从已存在的学生表、班级表中生成学生所属班级信息表。新增数据向表中新增数据的方法:1使用INSERT语句 还可以使用INSERT与UNION配合添加多行数据2使用SSMS3将表中数据复制到新表中【问题31】向部门表(Department)添加如下3行数据。DepartNo=11,DepartName=数学系DepartNo=12,DepartName=物理系DepartNo=13,DepartName=化学系USE Xk /*一定先切换到Xk数据库*/GOINSERT
30、 Department VALUES (11,数学系) INSERT Department(DepartName,DepartNo) VALUES (物理系,12) INSERT Department(DepartNo,DepartName) VALUES (13,化学系) 新增数据【问题32】向班级表(Class)添加如下4行数据。ClassNo=20110001,ClassName=03旅游管理1,DepartNo=03ClassNo=20110002,ClassName=03旅游管理2,DepartNo=03ClassNo=20110003,ClassName=02建筑管理1,Depar
31、tNo=02ClassNo=20110004,ClassName=02旅游管理2,DepartNo=02INSERT 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 CourseWill
32、NumFROM 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。
33、UPDATE语句用来更新表中已经存在的数据。UPDATE语句一次可以更新一行数据,也可以一次更新多行数据,甚至可以一次更新表中所有数据行。UPDATE语句语法如下:UPDATE 要更新的表名SET 要更新的列名=更新后的值FROM 涉及的表名WHERE 条件更新数据表数据【问题35】需要将课程表(Course)中“电子出版概论”课程的上课时间修改为“周二晚”。UPDATE ?SET ?=?FROM ?WHERE ?GO【问题36】将“01数据库”班级所有学生的选课密码初始化为“#*3456”。删除数据表数据DELETE语句用来从表中删除数据。一次可以删除一行数据,也可以删除多行数据。DELET
34、E语句的简化语法如下:DELETE 要删除数据的表名FROM 涉及的表名列表 WHERE 条件 【问题37】学号为“00000005”的同学因故取消课程编号为“017”的选修课。【问题38】学号为“00000005”的同学因故取消“中餐菜肴制作”选修课。合并多个查询结果中的数据常会遇到这样的问题:将两个或更多的的查询结果合并为一个查询结果,此时可以使用UNION或UNION ALL,其区别是使用UNION ALL合并的查询结果中会包含重复行。注意事项请见课本。【问题39】查看课程编号、课程名称及报名状态。 【问题310】查看课程编号、课程名称及报名状态的情况,并将数据保存到名称为CourseS
35、tate表中(注意,数据库中没有CourseState表)。课程总结在本单元:会使用INSERT语句向表中添加数据行。会将INSERT与UNION运算符配合使用,向表中添加数据行会使用UPDATE语句根据需要更新数据表数据。会使用DELETE语句根据需要删除数据表数据。会使用UNION运算符将两个或更多查询结果合并为一个查询结果。会使用带有INTO子句的SELECT语句将查询抽取出来的数据存储到一个新表中。课后任务1、复习2、完成课本本单元实训 题1-4数据库设计数据库课程组学习目标【知识目标】理解实体、属性、属性间联系及联系类型。掌握信息化现实世界的方法,理解实体关系图(E-R图)。掌握关系
36、模型的概念,掌握规范化关系数据模型的方法。理解数据完整性概念。【技能目标】会将现实世界的事物和特性抽象为信息世界的实体与属性。会用E-R图描述实体、属性与实体间的联系。会将E-R图转换为关系数据模型,并规范化到一定的程度(范式)。66任务陈述每学期学生选报选修课程,人工处理繁琐,效率不高,又易出错,因此学校计划开发网上学生选课系统。现在,首先需要将现实世界中的学生选课数据进行处理,建立概念数据模型,然后将概念数据模型转换为关系模型,并将关系模型规范到一定化的程度。67项目概述项目名称:数据库设计项目介绍:按照数据库设计的一般步骤,本项目的主要内容包括:数据库建模将E-R模型转换成关系模型使用三
37、大范式进行关系模型规范化项目分析:本项目学习如何设计一个规范的关系型数据库。68数据库设计69项目概述相关知识:数据建模并画出E-R图的方法;使用三大范式进行关系模型的规范化。项目教学单元:任务1:数据库建模任务2:将E-R图转换成关系模型任务3:关系模型的规范化(三大范式)70设计数据库的一般步骤建立E-R(实体-关系)模型现实世界抽象化为信息世界将E-R模型转换为关系模型信息世界数据化为数据世界对关系模型进行规范化本单元目标:设计一个规范的学生选课数据库717272任务1:数据建模E-R模型实体及其属性、实体标识符实体间的联系(1:1, 1:n, m:n)E-R模型(E-R图、实体关系图)
38、实体用矩形表示属性用椭圆形表示,并用连线与实体连接起来实体之间的联系用菱形框表示,并用连线与有关实体连接起来73实战训练完成实训任务单2-1描述学生选课系统,进行需求分析,提取实体;根据需求分析,分析实体间的联系;绘制选课系统的E-R图74学生选课E-R图7576任务2:将E-R图转换成关系模型关系模型关系数据模型:是数据库应用系统广泛采用的数据模型之一。关系数据模型用二维表来表示实体及实体之间的联系。只有具有如下特点的二维表才是关系数据模型。(1)表中的每列都是不可再细分的基本数据项。(2)每列的名字不同,数据类型相同或者兼容。(3)行的顺序无关紧要。(4)列的顺序无关紧要。(5)关系中不能
39、存在完全相同的两行77关系模型关系模型:通过二维表格数据来表示实体以及实体间的联系。关系就是一个表格关系表格的特点将E-R模型转换为关系模型将一个实体或实体间的联系转换为表,将实体的属性或联系的属性转换为表的列。实体或联系的标识符就是表的主关键字(简称主键),它能唯一标识表中的每一行。78实战训练完成实训任务单2-2将实训2-1中所得出的学生选课系统的E-R图转换为关系模型79课程编号课程名称课程类别学分教师部门编号部门名称上课时间限选人数报名人数被选中人数001SQL Server实用技术信息技术3徐人凤01计算机应用工程系周二5-6204320002JAVA技术的开发应用信息技术2程伟斌0
40、1计算机应用工程系周二5-6403434011中外建筑欣赏人文2林泉02建筑工程系周二5-6节202720012智能建筑工程技术2王娜02建筑工程系周二5-6节20352080学号姓名班级选课密码00000001林斌00电子商务47FE680E00000002彭少帆00电商A946EF8C00000011朱川00多媒体19C5653D学号姓名课程名称志愿号选课状态00000001林斌SQL Server实用技术1报名00000002彭少帆ASP.NET应用3报名00000011朱川 81任务3:关系模型的规范化(三大范式)规范关系模型规范化的目的:消除数据冗余,以保证数据完整性。I范式定义:一
41、个关系的每个属性都是不可再分的基本数据项函数依赖和函数传递依赖函数依赖:完全依赖或部分依赖于主关键字函数传递依赖82规范关系模型(续)II范式定义:首先是第一范式,并且关系中的每个非主属性完全函数依赖(而不是部分依赖)于主关键字将非第二范式转换为第二范式例子:规范学生选课表III范式定义:首先是第二范式,并且关系中的任何一个非主属性都不传递依赖于任何主关键字将非第三范式转换为第三范式例子:规范课程表83关键字候选关键字:可以用来作为关键字的属性或属性的组合主关键字(唯一的,不允许为空)外关键字公共关键字主表和从表84规范后的关系模型部门编号部门名称01计算机工程系02建筑工程系03旅游系85课
42、程编号课程名称课程类别学分教师部门编号上课时间限选人数报名人数被选中人数001SQL Server实用技术信息技术3徐人凤01周二5-6204320002JAVA技术的开发应用信息技术2程伟斌01周二5-6403434011中外建筑欣赏人文2林泉02周二5-6节202720012智能建筑工程技术2王娜02周二5-6节203520学号姓名班级编号选课密码00000001林斌2000000147FE680E00000002彭少帆20000001A946EF8C00000011朱川2000000219C5653D班级编号班级名称部门编号2000000100电子商务012000000200多媒体012
43、000000300数据库01学号课程编号志愿号选课状态000000010011报名000000020123报名00000011保证数据完整性规则数据完整性用来保证数据的一致性和正确性。分为列数据完整性(列完整性)、表数据完整性表(表完整性)和表与表之间的参照完整性。列(域)完整性:是指表中的每一列数据都必须满足所定义的数据类型,并且其值在有效范围之内表完整性:是指表中必须有一个主关键字(不能为NULL)参照完整性:是指每两个关联的表中的数据必须是一致的、协调的,主关键字和外关键字也必须是一致的、协调的保证参照完整性的规则86课程总结掌握现实世界信息化掌握将E-R图转换成关系模型的方法理解何为三
44、大范式能使用三大范式对关系模型进行规范化掌握保证数据完整性的方法学会如何设计一个规范的数据库(方法、步骤)87课后任务1、复习2、完成课本上的本单元实训88数据库的实现数据库课程组项目概述项目名称:数据库的实现项目介绍:数据库的实现主要包括四个方面:创建与管理数据库创建和管理数据库表数据完整性的实现优化查询速度项目分析:在完成了数据库设计的基础上,需要在SQL Server中实现出来。数据库的实现包括:创建数据库;在数据库中创建表格;为了保证数据完整性,增加约束;为了加快检索和方便查询,创建索引和视图。90项目概述相关知识:创建和管理数据库和数据库表;增加约束、默认值和规则的方法;创建索引和视
45、图的方法。项目教学单元:任务1:创建与管理数据库任务2:创建和管理数据库表任务3:数据完整性的实现任务4:优化查询速度919292任务1:创建与管理数据库数据库的组成93系统数据库介绍系统数据库master数据库:记录系统的所有系统级的信息model数据库:模板数据库msdb数据库:记录了有关SQL Server Agent服务的信息tempdb数据库:临时数据库,用于保存中间数据94数据库的存储结构数据库文件主数据文件:包含数据库的启动信息、数据信息唯一的事务日志:包含恢复数据库的所有日志信息至少一个次数据文件:包含除了主文件外的所有数据信息零个、一个或多个物理文件(操作系统中实际存在的文件
46、)和逻辑文件(数据库中的标志)95数据库的存储结构(续)数据库文件组主文件组、次文件组、用户定义文件组可以提高数据库的查询性能设计文件和文件组的规则一个文件或文件组不能用于多个数据库,只能用于一个数据库一个文件只能是一个文件组的成员一个数据库的数据信息和事务日志信息总是分开存放的事务日志文件不能成为任何文件组的成员96创建数据库使用SSMS使用向导创建(简略)使用SQL语句创建(重点)【问题51】使用SSMS创建逻辑名字为Xk的选课数据库,数据库的主数据文件名为Xk.mdf,文件大小为10MB,最大可以增长到20MB,文件增量为2MB。事务日志文件名为Xk_log.ldf,大小为15MB,文件
47、可以增长到30MB,文件增量为2MB。【问题52】使用CREATE DATABASE完成上题(先在SSMS下删除该数据库)显示数据库信息 sp_helpdb 数据库名97创建数据库【问题53】创建名称为mydb的数据库,它有容量分别为10MB、8MB的两个数据文件mydb_data1.mdf和mydb_data2.ndf。事务日志文件mydb_log.ldf容量为7MB。文件存储在C:mydbfile目录下。数据文件和日志文件的最大容量均为20MB,文件增量为2MB。98管理数据库【问题54】在mydb中新增名为TableGroup的文件组。扩充数据库和事务日志的容量增加次要文件和事务日志文件
48、【问题55】将数据库mydb的数据文件的容量扩充10MB,事务日志文件的容量扩充6MB。添加容量为5MB的名称分别为mydb_data3.ndf、mydb_data4.ndf的两个次数据文件,并且将这两个次数据文件添加到文件组TableGroup中。数据文件和事务日志文件容量上限为50MB,文件增量为3MB。扩充的数据文件与主文件在不同的存储设备上(此处保存在E盘上)。【问题56】将数据库Xk的数据文件Xk.mdf容量从原来的10MB扩充到15MB,将事务日志文件Xk_ldf的容量从原来的15MB扩充到25MB。99缩小数据文件和数据库【问题57】从mydb数据库中删除5MB的数据文件mydb
49、_data4.ndf、6MB的事务日志文件mydb_log2.ldf,使mydb数据库容量为23MB,事务日志容量为7MB。【问题58】将Xk数据库的15MB的数据文件xk.mdf收缩为5MB。【问题59】使用SSMS收缩Xk数据库。100修改或查看数据库选项【问题510】在SSMS中将Xk数据库修改为只读。【问题511】 使用SSMS将数据库Xk设置为单用户模式。使用sp_dboption101重新命名数据库【问题512】 使用SSMS将数据库Xk名字重命名为MyXk。【问题513】使用sp_renamedb存储过程将MyXk数据库重命名为Xk。102删除数据库【问题514】使用SSMS删除
50、mydb数据库。【问题515】使用DROP DATABASE语句删除Xk数据库。 103课堂总结理解数据库的存储结构(物理文件和逻辑文件)熟练掌握创建、删除和修改数据库的方法(重点)104105105任务2:创建与管理数据库表概述数据库中的表的概念SQL Server的数据类型数据类别长度精度小数位数空值:没有输入的值,未知或未定义避免用空值直接参与运算尽量不要允许用空值(用默认值解决没有输入的问题)106创建表使用SSMS【演示】创建Department表【练习】创建Course表使用Transact-SQL语句创建表【演示】创建Class表【练习】创建Student、StuCou表【注意】
51、int、smallint的后面无需写精度和小数位数107修改表ALTER TABLE ClassADD TempCl char(8) NULL -增加列ALTER COLUMN TempCl char(10) NULL -修改列DROP COLUMN TempCl -删除列 sp_rename 表名.旧列名, 新列名, COLUMN -修改列名 【问题64】给Student表新增2列:生日列birthday,数据类型为日期型,允许为空;备注列bz,数据类型为nvarchar,长度为20,允许为空。 【问题65】删除Student表的生日列Birthday。【问题66】修改Student表的备注
52、列bz,将列定义的长度修改为30。【问题67】将Student表的备注列bz名字修改为StuBz。【问题68】将Xk数据库的Department表重命名为Depart。【问题611】删除Xk数据库中的Department表。108其他表操作显示表结构sp_help 表名重命名表sp_rename 旧表名, 新表名删除表DROP TABLE 表名109课堂总结掌握SQL Server中常见的数据类型理解空值的概念能使用Management Studio和SQL语句创建、修改、删除表(重点)110111111任务3:数据完整性的实现何为约束?何为约束(Constraint)?限制用户可以输入到表或
53、字段中的值,防止数据库中出现不正确或不一致的数据112主键约束在已有的表上增加主键约束ALTER TABLE table_nameADD CONSTRAINT constraint_name PRIMARY KEY CLUSTERED(column_name)【例子】为Class表创建基于ClassNo、名为PK_Class的主键约束。【练习】为Department表创建主键约束。删除主键约束:ALTER TABLE table_nameDROP CONSTRAINT constraint_name113外键约束在已有的表上增加外键约束ALTER TABLE table_nameADD CON
54、STRAINT constraint_name FOREIGN KEY (column1_name)REFERENCES table2_name(column2_name)注意:必须先设置主表的主键【例子】先为Department表创建基于DepartNo、名为PK_Department的主键约束,再为Class表创建名为FK_Class的外键约束,该约束限制DepartNo列的数据只能是Department表中DepartNo列存在的数据删除外键约束:ALTER TABLE table_nameDROP CONSTRAINT constraint_name114练习1【练习】为StuCou表
55、创建名为FK_StuCou的外键约束,该约束限制StuNo列的数据只能是Student表的StuNo列中存在的数据。提示:必须先为Student表(主表)建立主键约束115CHEAK约束在已有的表上增加CHECK约束ALTER TABLE table_nameADD CONSTRAINT constraint_name CHECK (check_expression)【例子】为Class表创建CHECK约束,该约束限制ClassNo列中只允许8位数字删除CHECK约束:ALTER TABLE table_nameDROP CONSTRAINT constraint_name116练习2【练习】
56、为StuCou表创建CHECK约束,使得State只能是报名或选中。117约束的作用约束的作用:保证了数据的完整性(复习:数据完整性分为哪几种?)思考:主键约束、外键约束、CHECK约束分别是保证了哪种数据完整性?约束的种类:课本118创建约束总结一个表只能创建一个主键约束,但可以同时创建多个外键约束主键约束的列中的值不能为空、不能重复外键约束、CHECK约束都是限制存放在列中的数据值。它们之间有何区别?(思考)119UNIQUE约束UNIQUE约束要求所约束的列值不能重复,同时允许列值为空,但只能有一个空值【例子】为Student表创建基于Pwd列,名为UN_Student的惟一约束说明:一
57、个表上可以创建多个UNIQUE约束,它主要用于不是主键但又要求不能有重复值的列120DEFAULT约束对于一个不允许为空的列,如果定义了DEFAULT约束,当用户没有输入数据时列值为DEFAULT约束提供的数据(避免空值的有效方法之一)【例子】为StuCou表的State字段建立DEFAULT约束,提供“报名”的默认值说明:一个列上只能建立一个DEFAULT约束121练习3为Class表创建基于ClassNo列,名为UN_Class的惟一约束为Course表创建DEFAULT约束,让Teacher列的默认值为“待定”122删除约束格式:ALTER TABLE table_nameDROP CO
58、NSTRAINT constraint_name123课堂总结理解:各种约束分别用在什么情况下掌握创建各种约束的方法(重点)理解默认值和规则的使用方法124125125任务4:优化查询速度内容提要索引(Index):加快查询速度视图(View):方便查询、提高安全性126索引概述概念:索引是一个表中所包含的值以及相应的存储位置的列表分类:聚集索引非聚集索引注意:一个表格中可以建立的索引的数量复合索引惟一索引127使用SSMS创建索引【例】在Student表上创建基于StuName列,名为IX_StuName的索引【例】在Student表上创建基于StuNo列,名为IX_StuNo的索引128何
59、时使用索引在那些经常被用来查询的列上建立索引,以提高查找效率【讨论】下面两个查询分别使用上面的哪个索引?SELECT StuName FROM Student WHERE StuNo = 00000001SELECT StuNo FROM Student WHERE StuName = 林斌 索引将占用磁盘空间,并且降低添加、删除和更新行的速度,所以要慎用!129使用SQL语句创建索引使用SQL语句格式:CREATEUNIQUECLUSTERED| NONCLUSTEREDINDEX index_nameON table_name(column_name,.)【例】使用SQL语句在StuCou
60、表上创建名为IX_StuNoCouNo的聚集、惟一、复合索引,该索引基于StuNo列和CouNo列创建130惟一索引说明注意:创建主键约束和惟一约束时,会自动在这些列上创建惟一索引131复合索引说明在(列1,列2)上创建的复合索引和在(列2,列1)上创建的复合索引是不同的查找数据时,只有在where子句中指定了索引的第一个列时才使用该复合索引复合索引中列的顺序很重要:在次序上首先定义最具惟一性的列(略)132删除索引使用SSMS使用SQL语句格式:DROP INDEX table_name.index_name【例】删除StuCou表中的IX_StuNoCouNo索引思考:Student表中的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省汕头市潮南区陈店实验2024-2025学年九年级上学期11月期中考试数学试题
- 梅州企业环保整改方案
- 客运品牌创建方案
- 2024年陕西省中考物理试题(A卷)含答案
- 2012年7月2日下午面试真题
- 福建公务员面试模拟15
- 山东省行政职业能力测验模拟27
- 第三章+第二节+早期情绪的产生(教案)-《幼儿心理学》(人教版第二版)
- 海南省公务员面试真题汇编6
- 广东行政职业能力模拟48
- 贝塔内酰胺类抗生素的护理
- 计算机毕业设计jsp家庭美食食谱网站系统vue论文
- 数学家的故事
- 读书分享遥远的救世主
- 室内防火通道设立提高逃生速度
- 《倾斜角与斜率》课件
- 名著导读:《西游记》课件
- 国外中小学教育专题
- 《破坏性地震》课件
- 高等分离工程-05多组分多级分离计算-简捷法
- 乐理与视唱练耳:附幼儿歌曲创编(第三版) 教案全套 学前教育专业
评论
0/150
提交评论