版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教案一:数据库技术的产生与发展(2学时)一、授课内容本节课主要讲授数据库技术的基础知识,具体包括以下内容:(一)数据与数据处理1.数据与信息的概念与区别:数据是客观事物的物理符号表示,信息是数据加工处理后有意义的表达2.数据类型:数值型数据、字符型数据、多媒体数据3.数据处理:将数据转换为信息的过程4.数据管理:数据的收集、组织、存储、检索和维护(二)数据管理技术的发展1.人工管理阶段(20世纪50年代中期以前)2.文件管理阶段(20世纪50年代后期至60年代后期)3.数据库管理阶段(20世纪60年代后期至今)4.新型数据库系统二、教学目标(一)知识目标1.理解数据与信息的概念及二者之间的关系2.掌握数据处理和数据管理的基本概念3.了解数据管理技术发展的四个阶段及其特点(二)能力目标1.能够区分数据与信息的概念2.能够分析不同数据管理阶段的特点3.能够理解数据库技术相比早期数据管理技术的优势(三)素养目标1.培养学生对数据库技术的学习兴趣2.增强学生的数据管理意识三、教学重点与难点(一)教学重点1.数据与信息的概念及区别2.数据管理技术发展的四个阶段及其特点3.数据库系统的优势(二)教学难点1.数据与信息的关系理解2.人工管理阶段与文件管理阶段的区别四、教学实施(一)导入环节(10分钟)通过提问引导学生思考:在日常生活中,计算机是如何帮助我们管理数据的?举例说明什么是数据,什么是信息。(二)讲授环节(60分钟)1.数据与信息(20分钟)(1)讲解数据的定义:数据是用于记录事物情况的物理符号,包括数字、字符、图形、图像、声音等(2)讲解信息的定义:信息是数据中所包含的意义,是经过加工处理后对人类决策产生影响的数据(3)举例说明数据与信息的区别:如"575"是数据,"某考生入学成绩575分"是信息2.数据处理与数据管理(15分钟)(1)数据处理:将数据转换成信息的过程,基本目的是从大量数据中提炼出有价值的信息(2)数据管理:数据的收集、组织、存储、检索和维护,是数据处理的中心环节(3)数据管理的基本目的:实现数据共享、降低数据冗余、提高数据独立性、安全性和完整性3.数据管理技术的发展(25分钟)(1)人工管理阶段:数据不保存、由应用程序管理、数据冗余大、数据与程序不独立(2)文件管理阶段:数据可长期保存、程序与数据有一定独立性、由文件管理系统管理(3)数据库管理阶段:数据结构化、数据共享性高、数据独立性高、数据由DBMS统一管理(4)新型数据库系统:分布式数据库、面向对象数据库、大数据技术等(三)课堂练习(15分钟)1.判断以下哪些是数据,哪些是信息2.讨论:如果没有数据库技术,我们的日常生活会怎样?(四)课堂总结(5分钟)1.提问:数据库技术相比文件管理技术有哪些优势?2.总结本节课的重点内容五、总结与反思(一)本节课总结本节课主要学习了数据库技术的基础知识,包括数据与信息的概念、数据处理与数据管理的基本原理,以及数据管理技术发展的四个阶段。通过学习,学生应理解数据与信息的区别,了解数据管理技术从人工管理到数据库管理的发展历程,为后续学习数据库系统奠定基础。(二)教学反思(1)优点:通过大量生活实例帮助学生理解抽象概念,教学效果良好(2)需要改进:可增加更多互动环节,提高学生参与度(3)改进措施:下次课可准备一些实际的数据管理案例,让学生分析对比教案二:数据库系统构成与数据模型(2学时)一、授课内容本节课主要讲授数据库系统的构成和关系数据库的基本原理,具体包括以下内容:(一)数据库系统构成1.数据库系统的组成2.数据库管理系统(DBMS)的功能3.数据库管理员(DBA)的职责(二)数据库系统结构1.数据库系统的三级模式结构2.外模式、概念模式、内模式3.数据独立性(三)数据模型与关系数据库1.数据模型的概念2.概念模型与E-R图3.关系模型与关系运算4.关系规范化理论二、教学目标(一)知识目标1.掌握数据库系统的组成及各部分的功能2.理解数据库系统的三级模式结构3.掌握数据模型的概念和分类4.理解关系数据库的基本概念和运算(二)能力目标1.能够绘制简单的E-R图2.能够进行基本的关系运算3.能够理解数据库设计的基本原则(三)素养目标1.培养学生的数据库系统思维2.为后续的数据库设计打下基础三、教学重点与难点(一)教学重点1.数据库系统的三级模式结构2.E-R图的绘制方法3.关系运算(选择、投影、连接)4.关系规范化基本概念(二)教学难点1.数据库系统的三级模式与两级映像2.E-R图向关系模型的转换3.关系规范化的理解四、教学实施(一)导入环节(10分钟)复习上节课内容,提问:什么是数据库管理系统?它有什么作用?(二)讲授环节(70分钟)1.数据库系统构成(20分钟)(1)数据库系统的组成:硬件、软件(DBMS、应用开发工具、应用系统)、数据、用户(2)DBMS的功能:数据定义、数据操作、数据库运行管理、数据库维护(3)用户分类:终端用户、应用程序员、数据库管理员(DBA)2.数据库系统结构(20分钟)(1)三级模式结构:外模式(用户模式)、概念模式(逻辑模式)、内模式(存储模式)(2)两级映像:外模式/概念模式映像、概念模式/内模式映像(3)数据独立性:物理独立性、逻辑独立性3.数据模型与E-R图(20分钟)(1)数据模型的概念:三要素(数据结构、数据操作、完整性约束)(2)概念模型与E-R图:实体、属性、联系(3)E-R图的绘制方法:实体矩形、属性椭圆、联系菱形4.关系模型与关系运算(10分钟)(1)关系模型的基本概念:关系、元组、属性、关键字(2)关系运算:选择(σ)、投影(π)、连接(⋈)(3)关系完整性:实体完整性、参照完整性、用户定义完整性(三)实践环节(10分钟)1.绘制学生-课程数据库的E-R图2.将E-R图转换为关系模型(四)课堂总结(10分钟)1.总结本节课的重点内容2.布置课后思考题五、总结与反思(一)本节课总结本节课主要学习了数据库系统的构成、三级模式结构以及关系数据库的基本原理。通过学习E-R图和关系运算,学生应能够理解数据库设计的基本方法,为后续的数据库开发和应用奠定理论基础。(二)教学反思(1)优点:E-R图的讲解结合实例,学生理解较直观(2)需要改进:关系运算部分较为抽象,学生掌握有一定难度(3)改进措施:可增加上机实践环节,让学生在数据库系统中实际操作关系运算教案一:MySQL数据库基础(2学时)一、授课内容本节课主要讲授MySQL数据库的基础知识,具体包括以下内容:(一)MySQL数据库简介1.MySQL的发展历史:从mSQL到MySQL,MySQLAB公司成立,被Sun收购,被Oracle收购2.MySQL的主要特点:开源免费、体积小、速度快、支持多种操作系统和编程语言API3.MySQL软件授权:社区版(免费)与商业版(二)MySQL8.0的新特性1.性能优化:相较于MySQL5.7性能峰值提升近两倍2.默认字符集:由latin1改为utf8mb4,彻底解决中文乱码问题3.DDL原子化:DDL操作支持事务完整性,要么成功要么回滚4.计算列:列值可由其他列计算得出5.JSON功能增强:新增聚合函数、JSON_PRETTY()等实用工具6.窗口函数:在查询中对数据进行分组分析,结果保留在每条记录中7.公用表表达式(CTE):命名的临时结果集,可复用、可引用其他CTE8.降序索引:InnoDB存储引擎真正支持降序索引(三)MySQL服务器的安装与配置1.安装类型:典型安装、定制安装、完全安装2.MySQL服务的启动与停止3.默认端口:TCP/IP端口3306(四)MySQL管理工具Workbench1.MySQLWorkbench功能概述:数据库设计、管理与SQL开发2.创建数据库连接3.创建用户并授予权限4.执行SQL查询(五)SQL语言概述1.SQL的发展历史与标准化(SQL89、SQL92、SQL99、SQL2003)2.SQL的分类:DQL(数据查询语言)、DDL(数据定义语言)、DML(数据操纵语言)、DCL(数据控制语言)3.MySQL对SQL的扩展:流程控制语句、局部/全局变量、新数据类型二、教学目标(一)知识目标1.了解MySQL数据库的发展历史与特点2.掌握MySQL8.0的主要新特性3.熟悉MySQL服务器的安装与配置方法4.了解SQL语言的发展和分类(二)能力目标1.能够独立完成MySQL8.0的安装和配置2.能够使用MySQLWorkbench进行数据库管理3.能够理解SQL语言的分类和功能(三)素养目标1.培养学生规范安装和配置数据库软件的意识2.增强学生的数据库安全意识三、教学重点与难点(一)教学重点1.MySQL数据库的特点和MySQL8.0新特性2.MySQL服务器的安装与配置3.MySQLWorkbench的基本使用4.SQL语言的分类(二)教学难点1.MySQL8.0新特性(窗口函数、公用表表达式)的理解2.MySQLWorkbench的熟练使用四、教学实施(一)导入环节(10分钟)通过提问引导学生思考:上一章学习了数据库技术的基本概念,那么如何安装和使用一个实际的数据库管理系统呢?MySQL作为最流行的开源数据库,它有哪些特点和优势?(二)讲授环节(80分钟)1.MySQL数据库简介(20分钟)(1)讲解MySQL的发展历史:从1995年首次发布,到MySQLAB公司成立,再到被Sun收购、被Oracle收购(2)讲解MySQL的主要特点:开源免费、体积小、读写速度快、支持多种操作系统和编程语言(3)介绍MySQL的双授权策略:社区版与商业版2.MySQL8.0新特性(20分钟)(1)性能提升:介绍MySQL8.0在只读查询场景下的性能倍增(2)字符集改进:默认utf8mb4,从根本上解决中文存储乱码问题(3)DDL原子化:以示例说明DDL操作的事务支持(4)重点讲解窗口函数与公用表表达式的概念和使用场景3.MySQL服务器的安装与配置(20分钟)(1)演示MySQL8.0安装过程:选择安装类型、配置端口、设置root密码(2)演示MySQL服务的启动与停止(3)验证安装成功:命令行连接MySQL服务器4.MySQLWorkbench的使用(15分钟)(1)介绍Workbench的功能模块(2)演示创建数据库连接(3)演示创建用户和授予权限(4)演示在查询窗口中执行SQL语句5.SQL语言概述(5分钟)(1)SQL的发展历程与标准化过程(2)SQL的四大分类:DQL、DDL、DML、DCL各自的功能(3)MySQL对SQL的三大扩展:流程控制语句、变量、新数据类型(三)课堂练习(10分钟)1.在实验机上安装MySQL8.0数据库2.使用MySQLWorkbench创建数据库连接3.在查询窗口中执行SELECTVERSION()查看版本号(四)课堂总结(10分钟)1.提问:MySQL相比其他数据库有哪些主要特点?2.提问:SQL语言分为哪四类?各自完成什么功能?3.总结本节课的重点内容五、总结与反思(一)本节课总结本节课主要学习了MySQL数据库的基础知识,包括MySQL的发展历史、特点和8.0新特性,MySQL服务器的安装与配置方法,MySQLWorkbench管理工具的使用,以及SQL语言的发展和分类。通过学习,学生应能够独立完成MySQL8.0的安装和配置,为后续的数据库操作打下基础。(二)教学反思(1)优点:通过实际操作演示,学生能够直观地理解MySQL的安装过程(2)需要改进:部分学生对SQL语言的分类理解不够清晰(3)改进措施:可以增加SQL分类的辨析练习题教案一:数据库和表(2学时)一、授课内容本节课主要讲授MySQL数据库和数据表的创建与管理,具体包括以下内容:(一)数据库介绍1.MySQL数据库类型:系统数据库(mysql)和用户数据库2.数据库文件:数据文件(.frm、.MYD、.MYI)和事务日志文件3.系统数据库mysql的重要性(二)创建数据库1.使用Workbench创建数据库2.使用SQL语句创建数据库:CREATEDATABASE3.数据库命名规则(三)管理数据库1.查看数据库:SHOWDATABASES2.选择数据库:USE3.删除数据库:DROPDATABASE(四)MySQL数据类型1.数值类型:INT、FLOAT、DOUBLE、DECIMAL2.日期时间类型:DATE、TIME、DATETIME、TIMESTAMP3.字符串类型:CHAR、VARCHAR、TEXT、BLOB4.JSON类型(五)创建和管理数据表1.创建表:CREATETABLE2.查看表结构:DESCRIBE/DESC3.修改表:ALTERTABLE(添加列、修改列、删除列)4.删除表:DROPTABLE(六)表数据操作1.插入数据2.更新数据3.删除数据(七)表的分区1.表分区的概念与作用:将大表数据分布在不同的物理文件中,提高查询性能2.表分区的优点:数据分布存储、易于维护、避免访问瓶颈、支持独立备份恢复3.范围(RANGE)分区:按列值所在连续范围划分,使用VALUESLESSTHAN定义4.列表(LIST)分区:按列值所属枚举列表划分,适用于离散值场景5.哈希(HASH)分区:MySQL自动将数据均匀分布到指定数量的分区中6.键(KEY)分区:类似哈希分区,使用系统提供的哈希函数,支持更多数据类型二、教学目标(一)知识目标1.掌握MySQL数据库的创建、查看和删除方法2.熟悉MySQL的常用数据类型及选择原则3.掌握数据表的设计和创建4.掌握表数据的增、删、改操作(二)能力目标1.能够使用SQL语句创建和管理数据库2.能够根据需求选择合适的数据类型设计数据表3.能够对表中的数据进行增删改操作(三)素养目标1.培养学生规范的数据库设计习惯2.增强学生的数据管理能力三、教学重点与难点(一)教学重点1.CREATEDATABASE创建数据库的语法2.MySQL数据类型的特点及选择方法3.CREATETABLE创建表的语法4.表数据的增删改操作(INSERT、UPDATE、DELETE)5.四种分区类型的概念及适用场景(二)教学难点1.数据类型的选择(CHAR与VARCHAR的区别、DATE与DATETIME的适用场景)2.表结构的设计原则(主键、自增、非空约束的设置)3.ALTERTABLE语句的多种用法4.四种分区类型的区别与适用场景的辨析四、教学实施(一)导入环节(10分钟)通过提问引导学生思考:上节课我们安装了MySQL数据库,那么如何在MySQL中创建数据库和数据表来存储数据呢?本节课将学习数据库和表的基本操作。(二)讲授环节(70分钟)1.数据库介绍(10分钟)(1)讲解MySQL数据库的类型:系统数据库(mysql)和用户数据库(sakila、world及用户自建)(2)讲解数据库文件:数据文件和事务日志文件的作用(3)强调系统数据库mysql的重要性,不可随意修改2.创建与管理数据库(10分钟)(1)演示使用Workbench创建数据库,设置字符集utf8mb4(2)讲解CREATEDATABASE语法及数据库命名规则(3)讲解SHOWDATABASES查看数据库、USE选择数据库、DROPDATABASE删除数据库3.MySQL数据类型(15分钟)(1)数值类型:INT(整数)、FLOAT/DOUBLE(浮点数)、DECIMAL(精确小数)(2)日期时间类型:DATE(日期)、DATETIME(日期时间)、TIMESTAMP(时间戳)(3)字符串类型:CHAR(定长,如身份证号)、VARCHAR(变长,如姓名)、TEXT(长文本,如简历)(4)JSON类型:存储JSON格式数据,自动验证合法性(5)举例说明各数据类型的选择原则4.创建和管理数据表(15分钟)(1)讲解CREATETABLE语法:定义列名、数据类型及约束(PRIMARYKEY、AUTO_INCREMENT、NOTNULL、DEFAULT)(2)演示DESCRIBE查看表结构(3)讲解ALTERTABLE的用法:添加列(ADDCOLUMN)、修改列(MODIFYCOLUMN)、删除列(DROPCOLUMN)(4)讲解DROPTABLE删除表,强调操作不可逆5.表数据的增删改(10分钟)(1)INSERTINTO:单条插入与批量插入(2)UPDATE:带WHERE条件更新,强调不加WHERE则更新全表(3)DELETE:带WHERE条件删除,强调不加WHERE则清空全表6.表的分区(10分钟)(1)表分区的概念:将大表数据按规则分布在不同物理文件中,提高查询性能(2)表分区的优点:数据分布存储、便于维护、避免索引互斥瓶颈、支持独立备份恢复、优化查询效率(3)范围(RANGE)分区:使用VALUESLESSTHAN定义连续范围,适用于按日期或数值范围存储(如按成绩分区)(4)列表(LIST)分区:按离散枚举值划分,适用于分类存储(如按专业、地区分区)(5)哈希(HASH)分区:MySQL自动将数据均匀分布到指定数量的分区,仅支持数值列(6)键(KEY)分区:使用系统哈希函数,支持更多数据类型(除TEXT和BLOB外),主键列默认作为分区列(三)实践环节(10分钟)1.创建学生信息数据库student(字符集utf8mb4)2.创建学生表student_info(字段:学号INT主键自增、姓名VARCHAR(20)非空、性别CHAR(2)、出生日期DATE、电话VARCHAR(13))3.向表中插入3条学生记录4.修改其中一条记录的电话号码5.删除其中一条记录(四)课堂总结(5分钟)1.提问:CHAR与VARCHAR有何区别?2.提问:CREATETABLE时常用哪些列约束?3.提问:表数据的增删改分别使用什么语句?4.提问:MySQL有哪四种分区类型?各自适用于什么场景?5.总结本节课的重点内容,布置课后习题五、总结与反思(一)本节课总结本节课主要学习了MySQL数据库和表的基本操作,包括数据库的创建、查看和删除,MySQL数据类型的选择,数据表的设计和创建,表数据的增删改操作,以及表的分区技术。通过学习,学生应能够独立完成数据库和数据表的基本管理,理解分区技术在大数据处理中的重要作用,为后续的SQL查询和数据库性能优化打下基础。(二)教学反思(1)优点:通过实践操作,学生能够熟练掌握数据库和表的基本操作(2)需要改进:部分学生对数据类型的选择原则掌握不够牢固(3)改进措施:可以增加数据类型选择的判断练习题教案一:数据插入、更新、删除与基本查询(4.1-4.4)(2学时)一、授课内容本节课主要讲授MySQL中使用SQL进行数据库操作的四大基本语句,包括数据插入(INSERT)、数据更新(UPDATE)、数据删除(DELETE)以及基本查询(SELECT),具体包括以下内容:(一)数据插入1.INSERT语句的基本语法INSERT[INTO]table_name[(column_list)]VALUES(value_list)。table_name为接收数据的表名;column_list为列的列表,指定要插入数据的列,若省略则默认包含所有列;value_list为值的列表,每个值可以是DEFAULT、NULL或表达式。2.插入数据的几种方式(1)简单插入:省略列名,按表定义顺序插入(2)指定列插入:显式列出列名,值按指定列顺序对应(3)带自增列插入:自增列可不提供值或手动指定(4)批量插入:一条INSERT语句同时插入多条记录(5)插入查询结果:INSERTINTO...SELECT将查询结果插入到表中(二)数据更新1.UPDATE语句的语法UPDATEtable_nameSETcolumn_name=expression[,…][WHEREsearch_condition]。SET子句指定要更新的列和新值,WHERE子句限定要更新的行,若省略则更新所有行。2.注意事项更新操作应保证数据类型兼容且不违反约束,通常应通过WHERE子句限制被更新的记录。(三)数据删除1.DELETE语句DELETE[FROM]table_name[WHEREsearch_condition]。DELETE逐行删除并记入事务日志,可通过事务回滚恢复。2.TRUNCATETABLE语句TRUNCATETABLEtable_name。通过释放数据页快速删除所有行,不记录行级日志,速度更快但不可回滚,且会重置自增列计数器。对于被外键引用的表不能使用TRUNCATETABLE。3.DELETE与TRUNCATETABLE的区别DELETE逐行删除、可回滚、不重置自增值、触发触发器;TRUNCATETABLE释放数据页、不可回滚、重置自增值、不触发触发器。(四)基本查询1.简单查询SELECT[ALL|DISTINCT]select_listFROMtable_name。select_list可以是字段名、表达式或函数,使用AS关键字可设置列标题,使用*表示全部字段。2.集合函数常用集合函数包括AVG(平均值)、SUM(求和)、MAX(最大值)、MIN(最小值)、COUNT(统计行数)等。3.带条件查询使用WHERE子句指定查询条件,支持比较运算符(=,>,<,>=,<=,!=)、范围运算符(BETWEEN…AND)、模式匹配(LIKE)、集合运算符(IN)、空值判断(ISNULL)以及逻辑运算符(AND,OR,NOT)。4.查询结果处理(1)排序输出:ORDERBY子句,ASC升序(默认)、DESC降序,支持多字段排序(2)重定向输出:CREATETABLE新表SELECT…将查询结果存入新表(3)联合查询:UNION操作符合并多个查询结果,自动去除重复行(4)分组统计与筛选:GROUPBY子句分组,HAVING子句筛选分组(5)限制返回记录数:LIMIT子句限制返回行数和偏移量(6)去掉重复记录:DISTINCT关键字去除重复行二、教学目标(一)知识目标1.掌握INSERT语句插入数据的多种方式2.掌握UPDATE语句修改数据的语法和使用3.掌握DELETE和TRUNCATETABLE语句删除数据的区别4.掌握SELECT语句的基本查询和条件查询5.掌握集合函数、ORDERBY、GROUPBY、HAVING、LIMIT等子句的用法(二)能力目标1.能够使用INSERT、UPDATE、DELETE语句完成数据的增删改操作2.能够根据实际需求编写带条件的复杂查询语句3.能够灵活使用分组、排序和限制子句处理查询结果(三)素养目标1.培养学生严谨的数据操作意识,注意WHERE子句的重要性三、教学重点与难点(一)教学重点1.INSERT语句的多种插入方式2.WHERE子句在UPDATE和DELETE中的重要作用3.SELECT语句的完整语法结构及各子句的功能4.GROUPBY与HAVING子句的配合使用(二)教学难点1.DELETE与TRUNCATETABLE的区别及适用场景2.WHERE子句中各种条件运算符的灵活运用3.GROUPBY与HAVING的区别,HAVING与WHERE的作用对象不同四、教学实施(一)导入环节(5分钟)数据库建表之后,最核心的工作就是对表中的数据进行增、删、改、查。这四类操作对应SQL的四条基本语句:INSERT、DELETE、UPDATE、SELECT。它们是数据库应用开发中使用最频繁的操作,掌握这些语句是学好数据库的关键。(二)讲授环节(55分钟)1.数据插入(10分钟)(1)讲解INSERT语句的基本语法和各参数含义重点讲解column_list省略和显式指定的区别,值列表中DEFAULT、NULL和表达式的用法。(2)演示插入的多种方式演示例4-1到例4-7:简单插入、指定列插入、自增列插入、批量插入、插入查询结果。2.数据更新(5分钟)(1)讲解UPDATE语句语法强调WHERE子句的重要性——省略WHERE将更新所有行。演示例4-8、例4-9。3.数据删除(10分钟)(1)讲解DELETE语句语法和用法演示例4-10、例4-11。强调DELETE与DROPTABLE的区别。(2)讲解TRUNCATETABLE语句演示例4-12。对比DELETE和TRUNCATETABLE在执行方式、回滚能力、自增列重置、触发器激活等方面的区别。4.基本查询(30分钟)(1)简单查询与集合函数(10分钟)演示SELECT*、指定列、列别名、表达式和集合函数。演示例4-13到例4-18。(2)带条件查询(10分钟)演示WHERE子句的各种运算符:BETWEEN、LIKE、IN、ISNULL、AND/OR/NOT。演示例4-19到例4-27。(3)查询结果处理(10分钟)演示ORDERBY排序、UNION联合查询、GROUPBY分组统计、HAVING筛选、LIMIT限制返回行数、DISTINCT去重。演示例4-28到例4-37。(三)实践环节(25分钟)【课堂练习】学生根据student数据库,完成以下操作:练习1:向course表插入一条新课程记录(C909,人工智能,选修,3)练习2:将所有必修课程的学分增加1练习3:删除course表中学分为0的课程练习4:查询入学成绩在550到600之间的学生信息,按成绩降序排列练习5:统计每个专业的学生人数,只显示人数大于2的专业练习6:查询姓"李"的学生信息练习7:查询选修了课程但还没有成绩的学生学号(四)课堂总结(5分钟)1.提问:INSERT语句中如果省略列名列表,值列表需要满足什么条件?2.提问:DELETE和TRUNCATETABLE有什么区别?3.提问:HAVING和WHERE子句的区别是什么?4.总结本节课重点,布置课后习题(教材习题4的选择题和填空题)五、总结与反思(一)本节课总结本节课系统学习了MySQL中数据的增、删、改、查四大基本操作。INSERT语句支持多种插入方式,包括简单插入、指定列插入、批量插入和插入查询结果。UPDATE语句用于修改数据,必须注意WHERE子句以避免误更新全部记录。DELETE语句逐行删除并记录日志,而TRUNCATETABLE通过释放数据页快速清空表。SELECT语句功能最为强大,包括简单查询、条件查询(WHERE)、排序(ORDERBY)、分组统计(GROUPBY/HAVING)、限制返回行数(LIMIT)、联合查询(UNION)和去重(DISTINCT)等子句。(二)教学反思(1)优点:通过对比DELETE和TRUNCATETABLE,学生能清晰理解两者区别(2)需要改进:查询部分内容较多,学生可能消化不良(3)改进措施:可将查询部分的练习更多融入实践环节,让学生多动手教案二:嵌套查询、连接查询与窗口函数(4.5-4.7)(2学时)一、授课内容本节课主要讲授MySQL中的高级查询技术,包括嵌套查询(子查询)、连接查询和窗口函数查询,具体包括以下内容:(一)嵌套查询1.嵌套查询的概念在一个SELECT语句的WHERE条件子句中嵌入另一个SELECT查询语句称为嵌套查询。嵌套查询的处理由里向外进行,先处理最内层子查询,再逐层向外执行外层查询。子查询中不能使用ORDERBY子句。2.单值嵌套查询子查询返回一个值,外层可直接使用=、<>、>、<等关系运算符。3.多值嵌套查询子查询返回多个值,需结合ANY(满足任意一个)、ALL(满足所有)、IN(属于集合)、EXISTS(存在性判断)运算符使用。(二)连接查询1.连接概述连接查询用于根据表之间的关系从多个表中检索数据。连接可以在WHERE子句或FROM子句中建立,MySQL推荐在FROM子句中使用JOIN…ON语法。2.内连接(INNERJOIN)内连接只返回符合连接条件的数据行,分为等值连接、不等值连接和自然连接三种。3.外连接(OUTERJOIN)左外连接(LEFTOUTERJOIN)返回左表所有行及右表匹配行,右表无匹配时显示NULL。右外连接(RIGHTOUTERJOIN)返回右表所有行及左表匹配行。4.交叉连接(CROSSJOIN)交叉连接不带WHERE子句,返回笛卡儿积,结果行数等于两表行数的乘积。(三)窗口函数查询1.窗口函数的概念MySQL8.0开始支持窗口函数(OLAP函数),对查询的每一行都使用与该行相关的行进行计算。窗口函数与GROUPBY的区别在于窗口函数会对每个分组后的数据分别操作,而GROUPBY一般使用聚合函数汇总。2.常用窗口函数排序类:ROW_NUMBER(连续序号)、RANK(间断排名)、DENSE_RANK(不间断排名)。偏移类:LAG(向前取值)、LEAD(向后取值)。首末值:FIRST_VALUE、LAST_VALUE。统计类:PERCENT_RANK、CUME_DIST。3.窗口函数语法函数名()OVER([PARTITIONBY分组列][ORDERBY排序列])。PARTITIONBY类似GROUPBY进行分组,ORDERBY指定窗口内的排序。二、教学目标(一)知识目标1.理解嵌套查询的概念和执行过程2.掌握单值嵌套查询和多值嵌套查询的语法3.掌握ANY、ALL、IN、EXISTS运算符的用法4.掌握内连接、外连接和交叉连接的语法和区别5.掌握常用窗口函数的功能和语法(二)能力目标1.能够使用子查询实现复杂的数据检索2.能够根据需求选择合适的连接类型进行多表查询3.能够使用窗口函数实现排名、累计分析等功能(三)素养目标1.培养学生分析复杂查询需求、分解为多步SQL操作的能力三、教学重点与难点(一)教学重点1.多值嵌套查询中ANY、ALL、IN运算符的区别2.内连接、左外连接、右外连接的区别3.ROW_NUMBER、RANK、DENSE_RANK的区别(二)教学难点1.EXISTS和NOTEXISTS的用法和执行逻辑2.窗口函数中PARTITIONBY和ORDERBY的组合使用3.多表连接查询时表别名的使用和字段歧义的处理四、教学实施(一)导入环节(5分钟)上节课我们学习了基本的SELECT查询,但实际应用中经常需要更复杂的查询。比如"查询和李思思同专业的同学"——需要先查李思思的专业,再用这个结果去查其他学生。这就需要嵌套查询。又比如"查询学生成绩单,需要同时显示学号、姓名、课程名称、成绩"——这些信息分散在学生表、课程表和选课表中,需要使用连接查询。(二)讲授环节(55分钟)1.嵌套查询(20分钟)(1)讲解嵌套查询的概念和执行过程(3分钟)强调嵌套查询由里向外执行,子查询中不能使用ORDERBY。(2)单值嵌套查询(5分钟)演示例4-38:查询与"李思思"相同专业的所有同学。(3)多值嵌套查询(12分钟)演示例4-39到例4-42:ANY运算符(比子查询中任意值满足条件即可)、ALL运算符(比子查询中所有值都满足条件)、IN运算符(属于子查询结果集合)、EXISTS运算符(判断子查询是否有结果返回)。2.连接查询(25分钟)(1)连接概述(5分钟)讲解WHERE子句连接和FROM子句JOIN…ON连接两种方式。演示例4-43:三表连接查询学生成绩单。(2)内连接(10分钟)演示等值连接(例4-44:统计每门课程选课人数)、不等值连接(例4-45:自连接查询)、自然连接(例4-46)。(3)外连接和交叉连接(10分钟)演示左外连接(例4-47:包含未选课学生)、右外连接(例4-48:包含无人选课程)、交叉连接(例4-49)。对比左外连接和右外连接的结果差异。3.窗口函数查询(10分钟)(1)讲解窗口函数的概念和语法对比窗口函数与GROUPBY的区别,讲解OVER子句中PARTITIONBY和ORDERBY的作用。(2)演示常用窗口函数演示例4-50:查询各专业平均成绩(AVGOVERPARTITIONBY)。演示例4-51:按成绩排名(RANKOVERORDERBY)。(三)实践环节(25分钟)【课堂练习】学生根据student数据库,完成以下操作:练习1:查询入学成绩高于平均入学成绩的所有学生信息(用子查询)练习2:查询选修了"数据库"相关课程的学生学号和姓名(用IN子查询)练习3:查询有学生选修的课程信息(用EXISTS子查询)练习4:查询所有学生的选课成绩单(学号、姓名、课程名、成绩),包括未选课的学生(用左外连接)练习5:查询每门课程的课程名称和平均成绩(用内连接+GROUPBY)练习6:对学生表按入学成绩排名,使用ROW_NUMBER和RANK分别实现(四)课堂总结(5分钟)1.提问:ANY和ALL运算符的区别是什么?2.提问:左外连接和内连接的区别是什么?3.提问:ROW_NUMBER和RANK在处理相同值时有什么不同?4.总结本节课重点,布置课后习题(教材习题4的问答题和应用题)五、总结与反思(一)本节课总结本节课学习了三种高级查询技术。嵌套查询将一个SELECT嵌入另一个SELECT的WHERE子句中,由里向外执行,支持单值嵌套(使用关系运算符)和多值嵌套(使用ANY、ALL、IN、EXISTS)。连接查询用于从多个表中检索数据,包括内连接(只返回匹配行)、外连接(保留不匹配的行)和交叉连接(笛卡儿积)。窗口函数是MySQL8.0的新特性,可以在不改变结果行数的情况下进行排序、排名和分析计算。(二)教学反思(1)优点:通过对比左外连接和内连接的结果差异,学生直观理解外连接(2)需要改进:EXISTS运算符的逻辑较抽象,学生理解有困难(3)改进措施:用生活化的例子解释EXISTS(如"如果有人点了这道菜,就查出来")教案一:索引和数据完整性——索引概述与索引操作(2学时)一、授课内容本节课主要讲授MySQL数据库中索引的基本概念、分类以及索引的创建、查看和删除操作,具体包括以下内容:(一)索引概述1.索引的概念索引是与表或视图关联的物理结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键,这些键存储在B树结构中,使MySQL可以快速有效地查找与键值关联的行。表的存储由数据页面和索引页面两部分组成,查询时先搜索索引页面找到指针,再通过指针读取数据。2.索引的优点(1)通过创建唯一索引,可以保证数据库表中每一行数据的唯一性(2)可以大大加快数据的查询速度,这也是创建索引的主要原因(3)在实现数据的参考完整性方面,可以加速表和表之间的连接(4)在使用分组和排序子句进行数据查询时,也可以显著减少查询中分组和排序的时间3.索引的缺点(1)创建索引和维护索引要耗费时间,随数据量增加所耗费时间也会增加(2)索引需要占用磁盘空间,除数据表空间外每个索引还要占用额外物理空间(3)对数据进行增加、删除和修改时索引也需动态维护,降低了数据维护速度4.索引的分类(1)普通索引(INDEX)最基本的索引类型,索引的列可以包括重复的值。(2)唯一索引(UNIQUE)保证列不包含重复的值,但可以为空。对于多列唯一索引,保证多列值的组合不重复。(3)主键索引(PRIMARYKEY)又称为聚簇索引,使用B-Tree构建,与UNIQUE索引非常类似。一个表只能包含一个PRIMARYKEY,不能为空值。(4)全文索引(FULLTEXT)在定义索引的列上支持值的全文查找,可以在CHAR、VARCHAR或TEXT类型的列上创建。MySQL中只有MyISAM存储引擎支持全文索引。(5)空间索引(SPATIAL)对空间数据类型(GEOMETRY、POINT、LINESTRING、POLYGON)字段建立的索引,只能在MyISAM存储引擎中创建。5.索引的特点所有MySQL列类型都能被索引;索引在存储引擎中实现,不同存储引擎支持的索引类型不同;MyISAM和InnoDB支持BTREE索引,MEMORY/HEAP支持HASH和BTREE索引;可索引列的前缀;支持最多15个列的组合索引。(二)索引的操作1.索引设计准则(1)为表设置索引应适度,避免对经常更新的表进行过多的索引(2)在经常查询的字段上创建索引,但要避免添加不必要的字段(3)不要为包含很少唯一值的列创建索引(如性别字段)(4)组合索引应考虑列的顺序,等值、范围查询和连接条件的列放在最前面(5)当唯一性是数据本身的特征时,指定唯一索引(6)在频繁排序或分组的列上建立索引2.使用Workbench创建索引(1)建表时定义PRIMARYKEY约束或UNIQUE约束对表列定义PRIMARYKEY约束或UNIQUE约束,系统会自动创建索引。(2)使用AlterTable菜单创建索引选择表,右键选择"AlterTable"菜单,单击"Indexes"选项卡,输入索引名称,选择索引类型和包含的列,单击"Apply"按钮。3.使用SQL语句创建索引(1)在创建表的同时创建索引语法格式:CREATETABLEtable_name(col_namedata_type,[UNIQUE|FULLTEXT|SPATIAL][INDEX|KEY][index_name](col_name[length])[ASC|DESC])。UNIQUE、FULLTEXT和SPATIAL为可选参数,INDEX与KEY为同义词。(2)使用ALTERTABLE语句为已有表创建索引ALTERTABLEtable_nameADDINDEXindex_name(column_list)创建普通索引;ALTERTABLEtable_nameADDUNIQUEindex_name(column_list)创建唯一索引;ALTERTABLEtable_nameADDPRIMARYKEY(column_list)创建主键索引。(3)使用CREATEINDEX语句创建索引CREATEINDEXindex_nameONtable_name(column_list)创建普通索引;CREATEUNIQUEINDEXindex_nameONtable_name(column_list)创建唯一索引。注意不能用CREATEINDEX创建PRIMARYKEY索引。4.查看索引效果(EXPLAIN语句)使用EXPLAIN语句分析SQL查询的执行计划,查看查询是否使用了索引。EXPLAIN可查询:表的读取顺序、操作类型、哪些索引可用和实际使用、表间引用方式、预估扫描行数等。重点关注type、possible_keys、key、key_len、rows等字段。5.复合索引对表的多个列创建索引。复合索引遵循最左前缀原则:只有查询条件中使用了索引字段的最左边的字段时,复合索引才会被使用。例如在(name,gender,national)上建立复合索引,查询条件包含(name)、(name,gender)、(name,gender,national)时会使用,包含(gender,national)时不会使用。6.查看索引(1)使用Workbench查看索引(2)使用SQL语句查看索引SHOWINDEXFROMtable_name;可以查看表中所有索引的详细信息。7.删除索引(1)使用Workbench删除索引在索引查看界面中右键选择"DeleteSelected",点击"Apply"按钮。(2)使用SQL语句删除索引ALTERTABLEtable_nameDROPINDEXindex_name删除普通索引和唯一索引;ALTERTABLEtable_nameDROPPRIMARYKEY删除主键索引;DROPINDEXindex_nameONtable_name删除索引。二、教学目标(一)知识目标1.理解索引的概念、作用和基本原理2.掌握索引的分类:普通索引、唯一索引、主键索引、全文索引、空间索引3.掌握创建索引的多种方式:CREATETABLE、ALTERTABLE、CREATEINDEX4.掌握使用EXPLAIN语句查看索引效果5.理解复合索引的最左前缀原则6.掌握查看和删除索引的方法(二)能力目标1.能够根据实际查询需求设计合理的索引方案2.能够使用SQL语句创建、查看和删除索引3.能够使用EXPLAIN分析查询执行计划,判断是否使用了索引4.能够正确使用复合索引并遵循最左前缀原则(三)素养目标1.培养学生权衡索引利弊的数据库优化意识2.增强学生根据实际业务场景选择合适索引策略的综合分析能力三、教学重点与难点(一)教学重点1.索引的分类和各类索引的特点2.使用ALTERTABLE和CREATEINDEX创建索引3.使用EXPLAIN语句查看索引效果4.复合索引的最左前缀原则(二)教学难点1.索引的底层原理(B树结构)和查询优化器的工作机制2.复合索引的最左前缀原则的理解和应用3.索引设计准则——在什么场景下应该或不应该创建索引4.EXPLAIN执行计划中各字段的含义和分析四、教学实施(一)导入环节(5分钟)通过类比引导学生思考:大家在使用字典或书本时,如何快速找到需要的内容?——通过目录。数据库中的索引就像书本的目录,可以帮助快速定位数据,而无需扫描整张表。在大数据量的情况下,没有索引的查询可能需要几秒甚至几分钟,有了索引可能只需要几毫秒。本节课将系统学习索引的概念和操作。(二)讲授环节(55分钟)1.索引概述(20分钟)(1)讲解索引的概念和基本原理类比书本目录,讲解索引页面和数据页面的关系,以及B树结构的基本思想。(2)讨论索引的优缺点从查询加速、唯一性保证、连接加速等方面讲解优点;从时间消耗、空间占用、维护开销等方面讲解缺点。引导学生思考"索引是不是越多越好"。(3)讲解索引的五种分类普通索引、唯一索引、主键索引、全文索引、空间索引,对比各自的特点和使用场景。(4)讲解索引的特点存储引擎对索引的支持差异(BTREEvsHASH)、前缀索引、组合索引。2.索引的操作(35分钟)(1)讲解索引设计准则从适度原则、查询频率、唯一值、列顺序、排序分组等维度讲解索引设计应考虑的因素。通过反面案例说明不当索引设计的问题。(2)演示使用Workbench创建索引演示建表时定义主键约束自动创建索引,以及通过AlterTable菜单手动创建索引。(3)讲解并演示使用SQL语句创建索引演示例5-1:CREATETABLE同时创建唯一索引。演示例5-2:ALTERTABLE创建普通索引。演示例5-3:ALTERTABLE创建唯一索引。对比三种创建方式的适用场景。(4)讲解并演示EXPLAIN语句演示EXPLAINSELECT*FROMstudentWHEREname='周',逐字段解读执行计划:select_type、table、type、possible_keys、key、key_len、ref、rows、Extra。(5)讲解复合索引和最左前缀原则演示ALTERTABLEstudentADDINDEX(name,gender,national),分析不同查询条件下索引是否被使用。(6)演示查看和删除索引演示例5-4:SHOWINDEXFROMcourse。演示例5-5~5-7:三种删除索引的方式。(三)实践环节(25分钟)【课堂练习】学生根据student数据库,完成以下索引操作:练习1:在student表的major列上使用ALTERTABLE创建普通索引练习2:在course表的name和category列上创建复合索引练习3:使用EXPLAIN分析SELECT*FROMstudentWHEREmajor='通信工程'的执行计划,确认是否使用了索引练习4:使用EXPLAIN对比分析以下两个查询的执行计划差异:WHEREmajor='通信工程'和WHEREcategory='必修'练习5:使用SHOWINDEX查看student表的索引信息练习6:删除练习1中创建的索引,并使用DROPINDEX语句再次创建后删除(四)课堂总结(5分钟)1.提问:索引有哪五种分类?各自有什么特点?2.提问:创建索引有哪些方式?3.提问:什么是复合索引的最左前缀原则?4.总结本节课重点,布置课后习题(教材习题5的相关部分)五、总结与反思(一)本节课总结本节课系统学习了索引的概念和操作。索引是与表关联的物理结构,通过B树存储键值来加速数据检索。索引分为普通索引、唯一索引、主键索引、全文索引和空间索引五种类型。创建索引有多种方式:建表时同时创建、ALTERTABLE、CREATEINDEX。使用EXPLAIN语句可以分析查询执行计划,判断索引是否被使用。复合索引遵循最左前缀原则,只有查询条件包含最左列时才会命中索引。同时需要权衡索引的利弊,避免过度索引。(二)教学反思(1)优点:通过书本目录的类比,学生能够直观理解索引的概念和作用(2)需要改进:EXPLAIN执行计划中各字段的含义较为抽象,学生理解有难度(3)改进措施:可准备多个查询案例,通过对比有索引和无索引时的执行计划差异,让学生直观感受索引对查询性能的影响;复合索引最左前缀部分可增加更多测试案例教案二:索引和数据完整性——实施数据完整性(2学时)一、授课内容本节课主要讲授MySQL数据库中数据完整性的概念和六种约束的使用方法,具体包括以下内容:(一)数据完整性概述1.数据完整性的概念保证数据的正确性、有效性和一致性就是实施数据完整性的要求。完整性约束通过逻辑表达式定义列的有效值,通过建立表间关系确保一个表中的数据改动不会使另一个表中的数据失效。2.数据完整性的四种类型(1)实体完整性一个表中的每一条记录必须唯一且不能为空,通过指定主键来保证。可以通过索引、UNIQUE约束、PRIMARYKEY约束和AUTO_INCREMENT属性等实现。(2)域完整性限制字段的值域,保证列的任何值都在取值范围。一般通过FOREIGNKEY约束、CHECK约束、DEFAULT定义、NOTNULL定义保证。(3)参照完整性定义主表主键与从表外键之间的关系,要求外键的取值必须参照主键的取值范围。通过FOREIGNKEY约束、CHECK约束和触发器等实施。(4)用户自定义完整性针对具体业务逻辑设置完整性约束,通过列级和表级约束、存储过程和触发器等实现。(二)六种完整性约束1.主键约束(PRIMARYKEY)(1)主键约束的作用主键能够唯一标识表中每一行记录,一个表只能设置一个主键,主键的值不能为NULL。(2)列级主键约束定义格式:[CONSTRAINTconstraint_name]PRIMARYKEY。单列主键可定义为列级约束。(3)表级主键约束定义格式:[CONSTRAINTconstraint_name]PRIMARYKEY(column_name[,...])。多列组合主键必须定义为表级约束,列数最大值为16。(4)注意事项一个表只能包含一个PRIMARYKEY约束;主键约束中定义的所有列都必须定义为NOTNULL,如未指定则系统自动设置为NOTNULL。2.外键约束(FOREIGNKEY)(1)外键约束的作用外键约束定义表与表之间的关系,用于建立和加强两个表数据之间的连接,强制参照完整性。外键只能引用所引用表的PRIMARYKEY或UNIQUE约束中的列。(2)表级外键约束语法[CONSTRAINTconstraint_name]FOREIGNKEY(column_name)REFERENCESref_table(ref_column)[ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}]。(3)级联操作ONDELETECASCADE:主键表中某行被删除时,外键表中所有相关行也被删除。ONUPDATECASCADE:主键表中某行键值被修改时,外键表中所有相关行的外键值也自动修改。NOACTION为默认值,表示禁止删除或修改被引用的行。(4)注意事项外键约束只能引用同一服务器同一数据库中的表;外键约束仅能引用PRIMARYKEY或UNIQUE约束中的列。3.非空值约束(NOTNULL)(1)非空值约束的作用限制数据列不能为空,对于有非空值约束的字段在添加或更新记录时必须给出确定的值。(2)设置方式使用ALTERTABLEtable_nameCHANGECOLUMN列名数据类型NOTNULL来设置非空约束。(3)注意事项NULL不是零或空白,NULL表示该列的值未知或没有值。4.唯一性约束(UNIQUE)(1)唯一性约束的作用限制约束列在表的范围内不允许有两行包含相同的非空值,可以有NULL属性但最多只能有一行为NULL。(2)创建方式可以在建表时定义,也可以使用Workbench的Indexes选项卡创建。定义格式:[CONSTRAINTconstraint_name]UNIQUE(column_name[,...])。(3)唯一性约束与主键约束的区别一个表可以定义多个唯一性约束但只能定义一个主键约束;主键约束不允许NULL值,唯一性约束允许NULL值(最多一行);每个UNIQUE约束都会生成一个索引。5.检查约束(CHECK)(1)检查约束的作用对输入列或整个表中的值设置检查条件(通常是一个取值范围),保证数据库的数据完整性。只有符合检查约束条件的值才能输入该列。(2)语法格式[CONSTRAINTconstraint_name]CHECK(logical_expression)。(3)注意事项每列可以指定多个CHECK约束;列级CHECK约束只能引用被约束的列;搜索条件必须取值为布尔表达式,不能引用其他表。6.默认值约束(DEFAULT)(1)默认值约束的作用通过定义列的默认值,确保在没有为某列指定数据时,由MySQL来指定列的值。默认值可以是常量、表达式或NULL值。(2)语法格式[CONSTRAINTconstraint_name]DEFAULTconstant_expression[forcolumn_name]。(3)注意事项每列中只能有一个默认约束;默认约束只能用于INSERT语句;不能应用于timestamp类型和AUTO_INCREMENT属性的列;可以使用CURRENT_TIMESTAMP、CURRENT_USER等系统提供的值。二、教学目标(一)知识目标1.理解数据完整性的概念和四种类型2.掌握主键约束(PRIMARYKEY)的定义和使用3.掌握外键约束(FOREIGNKEY)的定义、级联操作4.掌握非空约束(NOTNULL)、唯一性约束(UNIQUE)的使用5.掌握检查约束(CHECK)和默认值约束(DEFAULT)的使用(二)能力目标1.能够使用SQL语句创建和管理各种完整性约束2.能够根据业务需求选择合适的约束类型保证数据完整性3.能够设计表间关系并正确设置外键约束和级联操作(三)素养目标1.培养学生从设计阶段就考虑数据完整性的规范意识2.增强学生对数据库设计质量的重视程度三、教学重点与难点(一)教学重点1.数据完整性的四种类型及其含义2.主键约束和外键约束的定义和使用3.级联删除和级联修改的设置4.六种约束的定义语法和使用方法(二)教学难点1.外键约束中级联操作(CASCADEvsNOACTION)的理解2.唯一性约束与主键约束的区别3.列级约束与表级约束的适用场景4.参照完整性的实际应用——多表间约束关系的设计四、教学实施(一)导入环节(5分钟)通过实际案例引入:假设一个学生选课系统,如果选课表中录入了一个不存在的学号,或者一门课程被删除后选课表中仍然有该课程的记录,会导致什么问题?这些就是数据完整性需要解决的问题。本节课将学习如何通过约束来保证数据库中数据的正确性、有效性和一致性。(二)讲授环节(55分钟)1.数据完整性概述(10分钟)(1)讲解数据完整性的概念(2)讲解四种数据完整性类型通过学生表-课程表-选课表的关联关系,逐一举例说明实体完整性、域完整性、参照完整性和用户自定义完整性的含义和保证方式。2.主键约束(10分钟)(1)讲解主键约束的定义和特点唯一性、非空性、一个表只能有一个主键。(2)演示列级和表级主键约束演示例5-8:为选课表增加组合主键约束,设置学号和课程编号的组合为主键。强调系统自动将主键列设置为NOTNULL。3.外键约束(15分钟)(1)讲解外键约束的定义和作用以学生表、课程表、选课表为例,说明选课表的学号和课程编号应作为外键分别引用学生表和课程表。(2)讲解级联操作详细讲解ONDELETECASCADE和ONUPDATECASCADE的机制,通过具体场景说明:删除一门课程时,选课表中该课程的所有选课记录是否自动删除。(3)演示外键约束的创建和级联操作效果演示例5-9:为选课表增加两个外键约束。演示删除和更新主表数据时,从表数据的自动变化。强调外键只能引用PRIMARYKEY或UNIQUE约束的列。4.其他四种约束(20分钟)(1)非空值约束(NOTNULL)演示例5-10:为课程表的课程名称字段设置非空值约束。强调NULL与空字符串的区别。(2)唯一性约束(UNIQUE)演示例5-11:创建student_2表,设置身份证号唯一性约束。对比唯一性约束与主键约束的区别。(3)检查约束(CHECK)演示例5-12:为选课表的成绩列添加检查约束,确保成绩在0至100之间。(4)默认值约束(DEFAULT)演示例5-13:修改学生表,设置is_bonus字段默认约束为0。讲解DEFAULT可以使用CURRENT_TIMESTAMP等系统值。(三)实践环节(25分钟)【课堂练习】学生根据student数据库,完成以下约束操作:练习1:为选课表(student_course)添加主键约束,设置学号和课程编号的组合为主键练习2:为选课表添加外键约束,学号引用学生表,课程编号引用课程表练习3:将外键约束设置为级联删除(ONDELETECASCADE),然后测试删除学生表中某条记录,观察选课表的变化练习4:为课程表的name列设置非空约束练习5:为选课表的mark列添加检查约束,确保成绩在0~100之间练习6:为选课表添加默认值约束,设置mark的默认值为0(四)课堂总结(5分钟)1.提问:数据完整性有哪四种类型?2.提问:主键约束和唯一性约束有什么区别?3.提问:外键约束的级联删除和级联修改分别是什么含义?4.总结本节课重点,布置课后习题(教材习题5的选择题、填空题和问答题)五、总结与反思(一)本节课总结本节课系统学习了MySQL的数据完整性机制。数据完整性包括实体完整性、域完整性、参照完整性和用户自定义完整性四种类型。MySQL提供了六种约束来保证数据完整性:NOTNULL约束、PRIMARYKEY约束、FOREIGNKEY约束(含级联操作)、UNIQUE约束、CHECK约束和DEFAULT约束。通过课堂实践,学生应能够根据实际业务需求,合理设计和实施各种约束,保证数据库中数据的正确性、有效性和一致性。(二)教学反思(1)优点:通过学生选课系统的实际案例,学生能够直观理解各种约束的作用和必要性(2)需要改进:外键约束中级联操作的机制较复杂,部分学生理解不透彻(3)改进措施:可增加更多级联操作的实际演示,分别展示CASCADE和NOACTION的不同效果;综合练习部分可让学生先设计ER图再实施约束,增强设计能力教案一:视图——视图的创建、管理与更新(2学时)一、授课内容本节课主要讲授MySQL数据库中视图的概念、创建方法、管理操作以及视图的更新,具体包括以下内容:(一)视图介绍1.视图的概念视图的定义包含一系列带有名称的列和数据行,但不存储任何物理数据。数据库中只存放视图的定义,视图行列的数据来自于定义视图的查询所引用的基本表,且在每次查看视图时动态生成。视图是一个虚拟表。2.视图的优点(1)简化用户操作通过定义视图使数据库看起来结构简单、清晰,将表与表之间的连接操作隐藏起来,用户只需对虚拟表进行简单查询。(2)保障数据安全通过视图用户只能查询和修改他们所能见到的数据。使用权限可被限制在基表的行、列或连接的子集上,也可限制在统计汇总上。(3)保持数据逻辑上的独立性视图作为应用程序和数据表之间的中介,当数据库重构时,用户的应用程序不会受影响。(二)创建视图使用CREATEVIEW语句创建视图,语法格式:CREATE[ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]VIEW视图名[(属性清单)]ASSELECT语句[WITH[CASCADED|LOCAL]CHECKOPTION]。ALGORITHM参数可选,取值UNDEFINED(自动选择)、MERGE(合并语句)、TEMPTABLE(存入临时表)。WITHCHECKOPTION可选,CASCADED为默认值,更新视图时需满足所有相关视图和表的条件;LOCAL只需满足该视图本身定义的条件。(三)视图的管理1.查看视图使用SHOWCREATEVIEWview_name语句查看视图定义。2.修改视图(1)CREATEORREPLACEVIEW语句修改视图(2)ALTERVIEW语句修改视图3.删除视图使用DROPVIEW[IFEXISTS]view_name语句删除视图。(四)视图的应用1.通过视图查询数据2.通过视图插入数据当视图满足一定条件时,可以通过视图插入数据到基本表。3.通过视图修改数据4.通过视图删除数据UPDATE和DELETE语句不能修改视图的计算列,也不允许修改包含集合函数和内置函数的视图列。二、教学目标(一)知识目标1.理解视图的概念、特点和优点2.掌握CREATEVIEW语句创建视图的语法3.掌握ALGORITHM和WITHCHECKOPTION参数的含义4.掌握查看、修改和删除视图的方法5.理解视图的可更新条件和限制(二)能力目标1.能够根据实际需求创建单表和多表视图2.能够通过视图进行数据的查询、插入、修改和删除操作3.能够利用视图实现数据安全和简化复杂查询(三)素养目标1.培养学生通过视图优化数据库设计和保障数据安全的意识三、教学重点与难点(一)教学重点1.视图的概念和优点2.CREATEVIEW语句的语法和使用3.视图的查看、修改和删除操作(二)教学难点1.ALGORITHM参数的三种取值及其区别2.WITHCHECKOPTION中CASCADED和LOCAL的区别3.视图的可更新条件和限制四、教学实施(一)导入环节(5分钟)通过类比引入:大家去图书馆时,面对成千上万本书,如何快速找到需要的?——通过目录。在数据库中,基本表存储了大量数据,但不同用户只需要看到其中一部分。如何让每个用户只看到自己关心的数据?——视图。视图就是数据库中的"自定义窗口"。(二)讲授环节(55分钟)1.视图介绍(10分钟)(1)讲解视图的概念视图是虚拟表,只存放定义不存放数据,数据来自基本表且动态生成。(2)讲解视图的三种优点简化操作(隐藏复杂连接)、保障安全(限制行列访问)、逻辑独立性(重构不影响应用)。2.创建视图(15分钟)(1)讲解CREATEVIEW语法详细讲解ALGORITHM参数(UNDEFINED、MERGE、TEMPTABLE)和WITHCHECKOPTION参数(CASCADED、LOCAL)。(2)演示创建单表视图和多表视图演示例6-1:创建score_view视图,连接student和student_course表显示学生选课成绩。3.视图的管理(15分钟)(1)演示查看视图:SHOWCREATEVIEW(2)演示修改视图:CREATEORREPLACEVIEW和ALTERVIEW(3)演示删除视图:DROPVIEW4.视图的应用(15分钟)(1)演示通过视图查询、插入、修改、删除数据讲解视图可更新的条件:不能修改计算列、不能修改含集合函数的列、WITHCHECKOPTION的限制。(2)对比视图操作与直接操作基本表的效果(三)实践环节(25分钟)【课堂练习】学生根据student数据库,完成以下视图操作:练习1:创建视图v_female,显示所有女生的学号、姓名、专业和入学成绩练习2:创建视图v_course_avg,显示每门课程的课程名称和平均成绩练习3:创建视图v_major_count,显示每个专业的名称和学生人数练习4:通过视图v_female查询入学成绩大于550的女生信息练习5:使用SHOWCREATEVIEW查看v_female的定义练习6:修改视图v_female,增加显示性别字段,然后删除该视图(四)课堂总结(5分钟)1.提问:视图与基本表有什么区别?2.提问:ALGORITHM参数有哪三种取值?3.提问:WITHCHECKOPTION中CASCADED和LOCAL有什么区别?4.总结本节课重点,布置课后习题(教材习题6的相关部分)五、总结与反思(一)本节课总结本节课系统学习了视图的概念、创建、管理和应用。视图是虚拟表,只存储定义不存储数据,其数据来自基本表。创建视图使用CREATEVIEW语句,可设置ALGORITHM算法和WITHCHECKOPTION检查选项。通过视图可以简化用户操作、保障数据安全和保持数据逻辑独立性。通过视图可以进行查询、插入、修改和删除操作,但需要满足一定的可更新条件。(二)教学反思(1)优点:通过"自定义窗口"的类比,学生能直观理解视图的概念(2)需要改进:WITHCHECKOPTION的CASCADED和LOCAL区别较抽象(3)改进措施:可准备多级视图的案例,对比CASCADED和LOCAL的不同效果教案一:运算符、变量、游标、流程控制与函数(7.1-7.5)(2学时)一、授课内容本节课主要讲授MySQL中SQL程序设计的基础知识,包括运算符与表达式、变量应用、游标应用、程序流程控制语句以及函数,具体包括以下内容:(一)运算符与表达式1.算术运算符加(+)、减(-)、乘(*)、除(/)和取模(%),优先级为*、/、%同级高于+、-同级。2.位运算符按位与(&)、或(|)、求反(~)、异或(^)、左移(<<)、右移(>>)。3.比较运算符与逻辑运算符比较运算符:>、<、>=、<=、!=、<>。逻辑运算符:AND、OR、NOT。4.字符串连接运算使用concat函数连接字符串,加号(+)只能对数值进行加法运算。5.运算符的优先级从高到低:括号→正负取反→乘除取模→加减→比较运算符→位运算符→NOT→AND→ALL/ANY/BETWEEN/IN/LIKE/OR→赋值。(二)变量应用1.局部变量DECLAREvar_namedata_type[DEFAULTvalue],作用范围为begin…end之间,通过SET赋值或SELECTINTO从表中赋值。2.会话变量SET@session_var=value,只在当前连接中有效,连接关闭时消失。3.全局变量SETGLOBALvariable_name=value,SETPERSIST使设置永久有效。(三)游标应用1.游标的概念和使用流程游标用于逐条处理查询结果,流程为声明(DECLARE…CURSORFOR)、打开(OPEN)、读取(FETCH…INTO)和关闭(CLOSE)。游标只能在函数和存储过程中使用。2.游标与异常处理的配合使用DECLARECONTINUEHANDLERFORSQLSTATE'02000'处理游标遍历结束的异常。(四)程序流程控制语句1.分支控制(1)IF…ELSE条件语句:IFboolean_expressionTHEN…ELSE…ENDIF(2)CASE函数:简单CASE和搜索CASE两种格式,实现多分支选择(3)RETURN语句:只能用于函数中,结束执行并返回值2.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年江西省多校联考高三上学期入学检测语文试题(解析版)
- 2025-2026年危险化学品安全操作规程模拟试卷
- 2025-2026年康复治疗专业综合测试题库
- 2026年大学物理实验操作技巧课件
- 2026年教师资格证《小学语文》专项训练试题及答案
- 采煤班组竞赛理论题库1000题
- 危化品经营单位(生产管理人员)考试试题及答案
- 维修证考试题目及答案
- 物业服务保洁管理培训考试试题及答案
- 小学教师资格考试教育心理学试题及答案
- 腹透患者心理健康教育
- 景区安全工作培训课件
- 医疗咨询服务合同范本
- 综合实践设计参观农业基地
- 《SMT贴片技术培训》课件
- 2024年新人教版7年级道德与法治上册全册课件
- N1叉车司机作业模拟考试1000题及答案
- 外聘法律顾问报名表(律师事务所)
- 华东师大版八年级体育与健康全册教案
- (正式版)JBT 14762-2024 电动摩托车和电动轻便摩托车用阀控式铅酸蓄电池
- 《社区康复》课件-第一章 总论
评论
0/150
提交评论