MySQL数据库原理及应用实战教程单元导学案教案_第1页
MySQL数据库原理及应用实战教程单元导学案教案_第2页
MySQL数据库原理及应用实战教程单元导学案教案_第3页
MySQL数据库原理及应用实战教程单元导学案教案_第4页
MySQL数据库原理及应用实战教程单元导学案教案_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

单元1数据库基础教学内容及教学过程说明步骤一问题引入某图书超市,有20多名员工,经营着约数万种图书。该超市用图书销售系统进行销售管理。分析该系统的功能及优点,引入本门课程。【问题1】什么是数据库,什么是数据库管理系统?【问题2】数据库是由哪几部分组成的,各自有什么作用?【问题3】什么是数据库的模式、外模式和内模式,它们各自有什么特点?步骤二讲授一.数据管理技术1.人工管理阶段(50年代中期以前)2.文件管理阶段(50年代后期至60年代中期)3.数据库管理阶段(60年代末开始)采用对比方式进行讲解,并通过具体例子进行分析说明。二.数据库系统组成1.数据库(database,DB)2.用户(User)第一类用户,终端用户(EndUser)第二类用户,应用程序员(ApplicationProgrammer)第三类用户,数据库管理员(DatabaseAdministrator,DBA)3.软件(Software)数据库管理系统(DataBaseManagementSystem,DBMS)。4.硬件(Hardware)引导学生深刻理解DB、DBMS、DBS、DBA之间的关系。三.三级模式两级映像1.数据库系统的三级模式结构通过讲解,引导学生总结三级模式之间关系。2.数据库系统的两级映像对比讲解数据库系统的两级映像,引导学生规纳总结。四.数据库系统体系结构1.单用户数据库系统2.主从式结构数据库系统3.客户/服务器结构数据库系统4.浏览器/服务器结构数据库系统通过数据库的一个应用实例,引入数据库。进而引出数据库的广泛应用,我们日常生活中几乎所有的领域:学校、银行、企业……重点掌握数据库系统组成及各部分的主要功能,要求学生能够理解。采用图示方式对数据库系统的组成更加清晰的讲解,使专业术语进行形象化理解。通过图示清楚地描述数据库系统的三级模式两级映像。通过学生比较了解的实例,具体说明数据库的三级结构和两级映像,使学生更清楚的掌握这一关键问题。对比讲解

单元2数据库建模教学内容及教学过程说明步骤一问题引入某学校要建立一个学生选修课程管理系统,每名学生可以选修多门课程,同一门课程可以有多名学生选修。【问题1】本系统涉及几个实体?分别是什么?【问题2】本系统中实体之间具有怎样的联系?该联系的类型是什么?步骤二讲授一.概念模型(Conceptualmodel)1.基本概念实体(Entity)、属性(Attribute)、实体型(EntityType)、实体值(EntityValue)、实体集(EntitySet)、键(Key)、域(Domain)2.实体间的联系(Relationship)(15分钟)(1)一对一联系(1:1),如:学校与校长(2)一对多联系(1:n),如:辅导员与学生(3)多对多联系(m:n),如:教师与学生通过日常中常见的示例,让学生充分的理解。3.E-R图E-R模型:即Entity-Relationshipmodel,实体-联系模型。【例2-1】以企业人事管理系统为例,设计E-R模型。【例2-2】用E-R图表示图书借阅系统的概念模型。二.数据模型1.层次模型层次数据模型主要特点:有且仅有一个根结点;每个非根结点有且仅有一个父(直接上层)结点;层次模型适合表示实体的1:n联系。2.网状模型可能有多个根结点,某些非根结点可能有多个父结点;网状模型适合表示实体的m:n联系。3.关系模型(1)基本概念关系、元组、属性、属性的域、关键字、外部关键字。(2)关系模型的性质关系是一个二维表,表中的每一行对应一个元组,表中的每一列有一个属性名且对应一个域。每一列的值来自同一域,是同一类型的数据。关系中的每一个属性不可再分解。关系中任意两个元组不能完全相同。关系中行的排列顺序、列的排列顺序是无关紧要的。每个关系都有关键字的属性集唯一标识各个元组。通过实例表格,具体讲解关系模式的性质。(3)关系的键在关系中能唯一标识元组的属性集称为关系模式的超键(SuperKey)。不含有多余属性的超键称为候选键(CandidateKey)。用户选择一个候选键作为主键(PrimaryKey)。某个关系的主键相应的属性在另一关系中出现,此时该主键就是另一关系的外键(Foreignkey)。总结:超键中可能有无关的属性,而主键和候选键中没有多余的属性。主键和候选键的区别:主键是设计者选中的,是候选键的一种。超键和候选键可以有多个,而主键只有一个。在A关系中不是主键,但在B关系中是主键,则在A关系中是外键。通过分析“学生信息管理系统”的键,进行理解。(5)关系模型的完整性约束实体完整性是指关系的主键不能重复,也不能取“空值”。参照完整性约束又称为外码约束,当一个数据表中有外键时,外键的所有值,都必须出现在其所对应的表中,或者取空值。域完整性是针对某一具体关系数据库的约束条件,即对表中列数据的规范,用于限制列的数据类型、格式以及取值范围。例如:订货数不得小于0;订货数不得小于存货量等通过数据库的一个应用实例,引入本讲内容。理解概念模型的基本概念重点难点采用图示方式,更好的理解三种联系的类型。重点难点通过实例,完成完整的E-R图设计,进一步理解E-R模型设计方法。重点难点通过一棵倒放的树,以学校管理的层次结构为契机,形象地讲解。在教师引导下,让学生进行对比分析,总结出网状模型特点。重点重点难点对比讲解图示说明实例分析通过实例,引导学生进行总结四种键的区别与联系实例说明

单元2数据库模型转化教学内容及教学过程说明步骤一问题引入复习:1.层次模型、网状模型、关系模型2.超键、候选键、主键、外键3.关系模型的完整性约束步骤二讲授一.E-R模型到关系模型的转换1.在转换中要遵循以下原则(1)一个实体转换为一个关系模式(2)实体的属性就是关系的属性(3)实体的键就是关系的键2.转换方法(1)独立实体到关系模型的转化将上图转化为关系:学生(学号,姓名,民族,籍贯)(2)1:1联系到关系模型的转化对上图E-R模型转化为关系模型:经理(姓名,民族,住址,出生年月,电话,名称)公司(名称,注册地,类型,电话,姓名)其中名称和姓名分别是“公司”和“经理”两个关系模式的关键字,在两个关系中,为了表明两者间的联系。(3)1:n联系到关系模型的转化如上图所示,“班级”与“学生”的联系是1:n的联系,学生方是n方,对上图进行转化,得到关系模型:学生(学号,姓名,民族,出生年月,班号)班级(班号,名称,年级,系,专业)在学生表中增加“班级”中的关键字“班号”作为外部关键字。(4)m:n联系到关系模型的转化学生与课程的联系是m:n联系,将E-R图转化为3个关系:学生(学号,姓名,民族,出生年月)课程(课程号,课程名,学时数)学习(学号,课程号,成绩)(5)多元联系到关系模型的转化(6)自联系到关系模型的转化对上图所示E-R图转化为关系模型:员工(员工号,姓名,住址,民族,基本工资,职务)领导(领导员工号,被领导员工号)二.数据库设计举例假定一个部门的数据库包括以下的信息:职工在部门工作,部门销售产品,制造商制造产品。职工的信息:职工号、姓名、住址和所在部门。部门的信息:部门所有职工、经理和销售的产品。产品的信息:产品名、制造商、价格、型号及产品内部编号。制造商的信息:制造商名称、地址、生产的产品型号和价格。完成如下设计:(1)设计该计算机管理系统的E-R图;(2)将该E-R图转换为关系模型结构。通例习题进行复习,采用互动方式,由学生进行说明重点难点要求学生能够理解。提出E-R图到关系模型的转换原则及方法通过具体实例清楚地描述概念设计到关系设计的转化。下划线标注的属性表示关键字总结:1:1联系,要在两个实体中各自增加了对方的关键字作为外部关键字。总结:要转化1:n联系,需要在n方实体表中增加一个属性,将对方的关键字作为外部关键字处理,若有联系的属性,也一起加上。总结:m:n联系要单独建立一个关系模式,分别用两个实体的关键字作为外部关键字,再加上联系的属性。多元联系:涉及两个以上的实体。自联系:指同一个实体类中实体间的联系通过实例,详细讲解数据库的设计方法,特别是从概念设计到逻辑设计的转化。

单元4数据库规范化教学内容及教学过程说明步骤一问题引入通过天猫平台,说明一个交易量巨大的电商平台一定需要一个好的数据库模式作为基础,什么样的数据库才是一个好的数据库系统呢?【问题1】说一说一个好的关系模式应该满足什么条件?【问题2】怎样才能设计出好的关系模式呢?步骤二讲授一.关系模式的规范化问题1.操作异常【例4-1】学生选课关系模式R(sno,sname,sex,cno,cname,score)2.泛关系模式泛关系模式R(U)通常有数据冗余,需分解为多个模式的集合。由数据库的操作异常,引出泛关系模式。二.函数依赖【例4-2】对(sno,sname,cno,cname,score)有FDsno→snamecno→cnamesno→(sname,sex)(sno,cno)→score说明:关系模式R(U),若X→U,则X是R的超键。而X任一子集X1,X1→U不成立,则X是R的候选键。【例4-3】对“学生选课”关系模式R(sno,sname,sex,cno,cname,score)有FD:(sno,cno)→(sno,sname,sex,cno,cname,score)sno→(sno,sname,sex,cno,cname,score)不成立cno→(sno,sname,sex,cno,cname,score)不成立即(sno,cno)为关系模式R(U)的超键,也是候选键。有FD:(sno,sname,cno)→(sno,sname,sex,cno,cname,score)但因有FD:(sno,cno)→(sno,sname,sex,cno,cname,score)即(sno,sname,cno)只是超键而非候选键,因为包含多余属性sname【结论】关系模式R(U),X是R的候选键,则对任意YU均有X→Y。三.范式(NormalForm)1.第一范式【例4-4】将非规范化的关系改为规范化的关系。2.第二范式【定义】R∈1NF,且R的每个非主属性完全依赖于候选键,则R属于2NF。【例4-5】关系模式R(sno,cno,score,tno,taddress),约定一门课程只能由一个教师带,判断R是否属于2NF模式。2NF分解:设关系模式R(WXYZ),若存在X→Y(即Y局部依赖于候选键),则可将R分解为:R1(WXZ)和R2(XY)。【例4-6】职工信息(职工号,姓名,职称,项目号,项目名称,项目排名)判断是否是1NF,如果是1NF怎样分解为2NF。3.第三范式【定义】R∈2NF,且每个非主属性都不传递依赖于R的候选键,则R属于3NF模式。【例4-7】将R分解为R1(sno,cno,score)和R2(cno,tno,taddress),判断R2是否属于3NF模式。3NF分解:设关系模式R(WXYZ),若存在X→Y(即Y依赖于非候选键),则可将R分解为:R1(WXZ)和R2(XY)。实例介绍,学生互助讨论形式通过实例对数据库执行修改、插入、删除操作,分别出现操作异常重点难点通过实例理解函数依赖的概念。通过复习超键、候选键的概念,分析函数依赖和关键码的关系。。通过实例说明函数依赖和关键码的关系,使学生更好的理解。重点难点要求学生能够理解,并会应用。通过图示清楚的表示第一范式通过实例更好地理解什么是第二范式规纳总结出2NF的精华,学会分解重点难点实例分析第三范式图示说明第二范式和第三范式的关系图式说明三级范式的规范化方法

单元5MySQL数据库教学内容及教学过程说明步骤一问题引入MySQL数据库MySQL是一个关系型数据库,由瑞典MySQLAB公司开发,目前属于Oracle旗下公司,在众多的数据库系统管理软件中,MySQL数据库以其快速、便捷和易用等优势,成为最受欢迎的数据库之一。【问题1】使用MySQL如何创建并查看学生选课系统数据库?步骤二讲授一.MySQL数据库1.启动和停止MySQL服务器(1)通过系统服务器启动和停止MySQL服务器(2)通过命令提示符启动和停止MySQL服务器netstartservicenetstopservice2.连接与断开MySQL服务器(1)连接MySQL服务器mysql–uroot[-h|localhost]-p(2)断开MySQL服务器exit;或quit;二.MySQL语言1.数据定义语言DDL2.数据查询语言DQL3.数据操纵语言DML4.数据控制语言DCL。三.数据库的创建和管理1.查看数据库SHOWDATABASEshow<databases|schemas>[like‘模式’];【例5-1】查看MySQL服务器中的所有数据库。【例5-2】查看MySQL服务器中以“schema”结尾的数据库。2.创建数据库CREATEDATABASEcreatedatabase|schema[ifnotexists]<数据库名>[ [default]characterset[=]字符集| [default]collate[=]校对规则名称];【例5-3】创建student数据库,并查看MySQL服务器中的所有数据库。【例5-4】创建db_test数据库,并指定其字符集为GBK。【例5-5】创建数据库db_test1,并在创建前判断该数据库名称是否存在,只有不存在时才会进行创建。3.查看数据库定义SHOWCREATEDATABASEshowcreatedatabase<数据库名>;【例5-6】查看student数据库的创建信息4.选择数据库USEDATABASEuse<数据库名>;【例5-7】选择student数据库,设置其为当前默认的数据库。5.修改数据库ALTERDATABASEalter<database|schema><数据库名>[default]characterset[=]字符集[default]collater[=]校对规则名称;【例5-8】修改db_test数据库,设置字符默认字符集为UTF8。6.删除数据库DROPDATABASEdrop<database|schema>[ifexists]<数据库名>;【例5-9】删除db_test1数据库。通过问题引入,采用互动方式,由学生进行说明引出本讲内容。与生活实例结合解释和说明。教师演示,学生同步操作重点难点总结归纳通过随堂练习巩固,老师给予必要的提示,指导学生完成实际环境演示讲解演示教学,注重教学过程中相关理论知识的渗透

单元6MySQL数据的存储与管理教学内容及教学过程说明步骤一问题引入在关系型数据库中存储数据以二维表为单位,一个数据库由多个相互关联的数据表组成,我们在表中添加数据,同时也需要对表进行维护和管理。【问题1】什么是数据表?其特点是什么?【问题2】MySQL的数据类型有哪些,不同的数据列适合选择什么样的数据类型?【问题3】在MySQL中如何创建、修改、删除表?步骤二讲授一.MySQL存储引擎1.MySQL存储引擎的概念数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。2.查询MySQL中支持的存储引擎(1)查询MySQL支持的全部存储引擎showengines;showengines\G(2)修改默认的存储引擎setdefault_storage_engine=<存储引擎名>;3.MySQL常用存储引擎介绍(1)InnoDB存储引擎(2)MyISAM存储引擎(3)MEMORY存储引擎二.MySQL数据类型1.数字类型2.字符串类型3.日期和时间类型三.MySQL数据表的创建1.创建数据表CREATETABLE(1)创建基本数据表语句createtable[ifnotexists]<数据表名>( <字段名1><数据类型>, <字段名2><数据类型>,…… <字段名n><数据类型>)[engine=table_type];【例6-1】在db_test数据库中创建user(用户表),存储引擎为MyISAM。(2)创建具有自增字段的数据表<字段名><数据类型>auto_increment,【例6-2】在db_test数据库中创建book(图书表)。2.查看数据表SHOWTABLESshowtables;【例6-3】查询db_test数据库中创建的所有数据表。3.查看数据表结构SHOWCOLUMNS(1)使用SHOWCOLUMNS语句查看表结构show[full]columnsfrom<数据表名>[from数据库名];或show[full]columnsfrom<数据库名.数据表名>;【例6-4】查看db_test数据库book表的结构。(2)使用DESCRIBE语句查看表结构describe|desc<数据表名>;describe|desc<数据表名><列名>;【例6-5】查看db_test数据库user表的id字段结构。(3)查看表的详细结构SHOWCREATETABLEshowcreatetable<表名[\G]>;【例6-6】使用SHOWCREATETABLE语句查看user表的详细信息。(4)修改数据表ALTERTABLEaltertable<表名>[修改选项];修改选项的语法格式如下:[add<字段名><数据类型>|change<旧字段名><新字段名><新字段类型>|alter<字段名>[setdefault<默认值>|dropdefault]|modify<字段名><数据类型>|drop<字段名>|renameto<新表名>]【例6-7】对db_test数据库的user表进行修改,将“id”字段名修改为“number”,数据类型修改为char(6),删除“email”字段,增加新字段“telephone”,数据类型为varchar(16),修改user表名为tb_user,并修改存储引擎为InnoDB。(5)重命名数据表RENAMETABLErenametable<数据表名1>to<数据表名2>;【例6-8】对数据表tb_user进行重命名,更名后的数据表为tb_admin。(6)复制数据表CREATETABLE…AS/LIKEcreatetable[数据库名.]新表名asselect*from原表名;或者createtable[数据库名.]新表名like原表名;【例6-9】在db_test数据库中创建tb_admin1数据表,结构与tb_admin数据表一致。【例6-10】在student数据库中创建tb_user数据表,结构与db_test数据库中的tb_admin数据表一致。(7)删除数据表DELETETABLEdroptable[ifexists]<数据表名>[,<数据表名1>,<数据表名2>……];【例6-11】删除student数据库中的tb_user数据表。步通过问题引入,采用互动方式,由学生进行说明引出本讲内容。与生活实例结合解释和说明。注意区分,并能够根据用户需要选择不同的存储引擎注意不同数据类型的选择重点难点通过随堂练习巩固,老师给予必要的提示,指导学生完成实际环境演示讲解演示教学,注重教学过程中相关理论知识的渗透重点难点演示操作讲解学生与教师同步进注意:表被删除,则表的结构、数据完整性约束、数据都被删除。除非已对被删除的表做了备份,否则无法恢复。

单元7创建完整性约束教学内容及教学过程说明步骤一问题引入保证数据表中数据的正确性、有效性和一致性,需要一些规则来限制某些约束条件,这些规则也就是数据完整性规则。【问题1】约束的作用是什么?约束可以分为几类?【问题2】主键约束、非空约束、唯一性约束、默认值约束、检查约束和外键约束是怎样进行创建、修改和删除操作的?步骤二讲授一.约束概述1.约束分类(1)主键约束(PRIMARYKEY)(2)非空约束(NOTNULL)(3)唯一性约束(UNIQUE)(4)默认值约束(DEFAULT)(5)外键约束(FOREIGNKEY)(6)检查约束(CHECK)2.约束的操作(1)建立表时定义约束createtable<数据表名>( <字段名1><数据类型>[列级别约束条件][默认值], <字段名2><数据类型>[列级别约束条件][默认值],…… [表级别约束条件]);(2)修改表时添加约束altertable<数据表名>add<新字段名><数据类型>[约束条件];(3)删除约束alter

table

<数据表名>drop

constraint

<约束名>;二.主键约束PRIMARYKEY主键应该遵守下面的规则:(1)每个表只能定义一个主键。(2)主键值必须唯一标识表中的每一行,且不能为NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。(3)一个列名只能在复合主键列表中出现一次。(4)复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则。【例7-1】定义列的同时指定主键,创建学生选课管理系统数据库student,创建course(课程表)。假设主键为cname(课程号)。【例7-2】多字段主键,创建score(选课表)。主键为sno(学号)和cno(课程号)的组合。【例7-3】删除course课程表的主键。【例7-4】为course课程表添加主键cno课程号。三.唯一性约束UNIQUE唯一性约束与主键约束的区别在于:(1)一个表中可以有多个字段声明为unique,但只能有一个primarykey声明。(2)声明为primarykey的字段不允许有空值,声明为unique的字段允许有一个空值。【例7-5】创建学生表student,设置学号sno为主键,电话号码telephone为唯一的。【例7-6】修改表student,设置电子邮箱email字段为唯一的。【例7-7】删除表student中电子邮箱email字段的唯一性约束。四.默认值约束DEFAULT默认值约束(DefaultConstraint)可以指定某个字段的默认值。【例7-8】创建library数据库在library数据库中,创建读者表reader,设置读者编号readid为主键,读者性别sex的默认值为“男”。【例7-9】修改student数据库中的学生表student,设置家庭住址address的默认值为“河北省”。【例7-10】删除library数据库中读者表reader数据表的sex字段的默认值约束。五.非空约束NOTNULL非空约束(NotNullConstraint)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。【例7-11】在library数据库中创建系部表department,包括系部编号deptid,系部名称dept。系部编号deptid为主键,设置系部名称dept字段非空约束。【例7-12】修改student数据库中的课程表course,设置课程名称cname字段为非空。【例7-13】修改library数据库中的系部表department,取消系部名称dept字段的非空约束。六.检查约束CHECK检查约束用于检查用户提交的数据是否符合用户定义完整性约束要求。在MySQL中,提供了CHECK检查约束用来指定某列的可取值的范围,它通过限制输入到列中的值来强制域的完整性。【例7-14】在library数据库中创建图书表book,设置图书表book中的图书编号bookid为主键,出版时间pubtime字段取值范围介于“1900-01-01”至“2050-01-01”之间。【例7-15】修改student数据库中成绩表score中的成绩字段score,设置字段的取值介于0至100范围内。【例7-16】修改student数据库中学生表student中的电子邮箱email字段,设置该字段为合法的email地址。【例7-17】修改student数据库中学生表student,删除字段email的检查约束。七.外键约束FOREIGNKEY外键由表的一个列或多个列组成,用来维护两个表之间数据的一致性。外键约束用来建立和强调两个表之间的关系,一个表的主键属性在另一个表中出现,此时该主键就是另一个表的外键。外键约束用来实现参照完整性约束。【例7-18】在library数据库中创建借阅表borrow,设置图书编号bookid和读者编号readid为主键。设置借书日期为当前系统时间,设置图书编号bookid为外键,与数据表图书表book的主键bookid关联,设置读者编号readid为外键,与读者表reader的主键readid关联。【例7-19】修改library数据库中读者表reader,添加外键deptid字段,与系别表department的deptid字段进行关联。【例7-20】修改student数据库中的成绩表score,添加外键学号sno字段,与学生表student的主键sno进行关联。添加外键cno字段,与课程表course的主键cno进行关联。【例7-21】修改library数据库中的读者表reader,删除外键关联。通过问题引入,采用互动方式,由学生进行说明引出本讲内容。与生活实例结合解释和说明。介绍概念,注意理解。重点难点语法介绍通过随堂练习巩固,老师给予必要的提示,指导学生完成实际环境演示讲解演示教学,注重教学过程中相关理论知识的渗透演示操作讲解学生与教师同步进学生操作练习教师集体中讲解个别指导注意实验总结与积累

单元8MySQL编程基础教学内容及教学过程说明步骤一问题引入MySQL程序设计结构是在SQL标准的基础上增加了一些程序设计语言的元素,本单元将学习MySQL程序设计语言的元素,为我们后续的数据操作打下基础。【问题1】常量有哪几种类型,如何表示?【问题2】MySQL的用户自定义变量有哪几种?步骤二讲授一.MySQL编程基础知识1.常量常量类型表示方法示例字符串常量单引号或双引号括起来的字符序列,推荐使用单引号。‘数据库技术’、“hello”数值常量整型或实型数值123、5.23、62.33E5、0。十六进制常量方法1:前缀(字母“X”或小写“x”)+十六进制字符串。方法2:前缀(0x)+十六进制数X‘41’表示大写字母A,也可以表示为x‘41’或0x41。二进制常量前缀(b)+二进制字符串b‘1’对应“笑脸”,b‘11’对应“心”日期时间常量符合日期、时间标准的字符串‘2020-04-05’、“12:30:23”、‘2020/04/0512:30:23’。NULLNULL适用于各种字段类型,表示“值不确定”、“没有值”等含义。2.MySQL的变量(1)局部变量局部变量一般用在sql语句块中,一般用于存储过程或者自定义函数里,作用范围在begin到end语句块之间。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。【定义形式】declare<局部变量名><数据类型>[default默认值];【赋值形式】set局部变量名=变量值;(2)用户变量用户变量作用于整个会话,即整个会话间都是有效的。【声明并初始化】格式1:set

@用户变量名=值[,@用户变量名2=值2……];格式2:set

@用户变量名:=值[,@用户变量名2:=值2……];格式3:select

@用户变量名:=值[,@用户变量名2:=值2……];【赋值形式】格式1:set

@用户变量名=值;格式2:set

@用户变量名:=值;格式3:select

@用户变量名:=值;也可以通过SELECTINTO语句进行赋值格式4:select字段into@用户变量名from表名;

【查看形式】select

@用户变量名;(3)全局变量当服务启动时,它将所有全局变量初始化为默认值。其作用域为server的整个生命周期。【显示方法】showglobalvariables;【查看形式】格式1:showvariableslike'%sql_warnings%';格式2:select@@global.sql_warnings;【赋值形式】格式1:setsql_warnings=FALSE;格式2:setglobalsql_warnings=FALSE;格式3:set@@global.sql_warnings=OFF;(4)会话变量服务器为每个连接的客户端维护一系列会话变量。其作用域仅限于当前连接,即每个连接中的会话变量是独立的。【显示方法】showsessionvariables;【查看形式】格式1:showvariableslike'%auto_increment_increment%';格式2:select@@auto_increment_increment;格式3:select@@session.auto_increment_increment;格式4:select@@local.auto_increment_increment;【赋值形式】格式1:setauto_increment_increment=1;格式2:setsessionauto_increment_increment=1;格式3:set@@session.auto_increment_increment=1;格式4:set@@local.auto_increment_increment=1;二.MySQL系统函数1.数学函数2.字符串函数3.日期时间函数通过问题引入,采用互动方式,由学生进行说明引出本讲内容。与生活实例结合解释和说明。重点注意不同类型常量的引用方式。难点概念介绍,注意理解。通过随堂练习巩固,老师给予必要的提示,指导学生完成演示操作讲解学生与教师同步进注意4种变量的用法区别。对比介绍。了解常用函数。

单元9MySQL表数据增、删、改操作教学内容及教学过程说明步骤一问题引入【问题1】怎样使用INSERT语句向数据表中插入数据?【问题2】怎样为自增字段插入数据?步骤二讲授一.使用INSERT…VALUES语句插入数据insertinto<表名>[<列名1>[,…<列名n>]]values(值1)[…,(值n)];表名:指定被操作的表名。列名:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用INSERT<表名>VALUES(…)即可。values:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。当插入多条记录时,多条记录使用逗号分隔。【例9-1】选择db_test数据库,向表tb_admin的所有字段中插入一条记录(‘001’,‘张丽芳’,‘zhlf’,)。【例9-2】向表book插入部分数据记录。插入一条新记录,只包括两个字段,bookname字段值为“数据库技术”,author字段值为“宋杰”。【例9-3】同时向tb_admin表插入多条数据记录。向表中插入3条记录。【例9-4】同时向book表插入多条数据记录。二.使用INSERT…SET语句插入数据insertinto<表名>set<列名1>=<值1>,<列名2>=<值2>,……;【例9-5】向表tb_admin表添加数据,设置number值为“005”,name值为“赵宇”。三.修改数据UPDATEupdate<表名>set<字段1>=<值1>[,<字段2>=<值2>…][where子句][orderby子句][limit子句];【参数说明】表名:必选项,用于指定要更新的表名称。set

子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字DEFAULT表示列值。where

子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行。orderby

子句:可选项。用于限定表中的行被修改的次序。limit

子句:可选项。用于限定被修改的行数。【例9-6】修改表中的数据。修改表tb_admin中的数据,将密码“password”字段的值统一修改为“123456”。【例9-7】根据条件修改表中数据。修改表tb_admin中number为“005”的用户电话号码“telehphone”字段值为。四.使用DELETE语句删除表记录deletefrom<表名>[where子句][orderby子句][limit子句]【参数说明】表名:必选项,指定要删除数据的表名。ORDERBY

子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除。WHERE

子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中的所有行。LIMIT

子句:可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。【例9-8】删除表中全部数据。删除tb_admin的全部数据。【例9-9】删除表中指定条件的数据记录。删除book表中“date”字段值为“NULL”的数据。五.使用TRUNCATE语句清空表记录truncate[table][数据库名.]数据表名;【例9-10】使用truncatetable语句清空db_test数据库中的book表数据。DELETE语句和TRUNCATETABLE语句的区别:使用TRUNCATETABLE语句后,表中的AUTO_INCREMENT计数器将被重新设置为该列的初始值。对于参与了索引和视图的表,不能使用TRUNCATETABLE语句删除数据,只能使用DELETE语句删除数据。TRUNCATETABLE操作比DELETE操作使用的系统和事务日志资源少。DELETE语句每删除一行都会在事务日志中添加一行记录,而TRUNCATETABLE语句是通过释放存储表数据所用的数据页来删除数据的,因此只在事务日志中记录页的释放。通过问题引入,采用互动方式,由学生进行说明引出本讲内容。重点难点演示操作讲解对比讲解注意自增字段数据填入方法重点通过教学做一体化练习,让学生更好的掌握本讲内容。重点难点演示操作讲解对比讲解重点难点通过随堂练习巩固,老师给予必要的提示,指导学生完成根据条件删除数据注意区分实践演示,学生同步练习

单元10MySQL数据查询教学内容及教学过程说明步骤一问题引入【问题1】如何查看表中的数据?【问题2】如何查看系统信息?步骤二讲授导学:select语句结构select语句结构select<检索内容>[as<别名>]from<源表名>[where<检索条件>][groupby<字段分类>[having<检索条件>]][orderby<排序字段>[asc|desc]][limit<数量>]【说明】select:指定查询返回的列。from:指定语句中使用的表、视图、派生表和连接表。where:指定查询返回的行的搜索条件。groupby:按一个或多个列/表达式的值将一组选定行组合成一个集。having:与groupby子句组合使用,用来对分组结果进一步限定搜索条件。orderby:指定select语句返回的列中所使用的排列顺序,默认升序。asc为升序,desc为降序。limit:限制查询结果的数量,若限定数量大于返回的总条数,则显示全部查询结果。第一部分简单查询一、无数据源查询无数据源查询语句格式select<变量或表达式>[,…n];1.查看系统变量【例10-1】查看MySQL中所有全局变量的值。【例10-2】查看MySQL单个全局变量wait_timeout的值。2.查看自定义变量【例10-3】自定义用户变量,并显示用户变量的值。3.输出表达式和函数的值【例10-4】输出算数表达式“(2+4)×5”、关系表达式“6>7”、“6<7”以及逻辑表达式“0and1”、“0or1”、“not1”的结果。【例10-5】输出系统时间、当前年份、月份、日期的值。查询所有列查询所有列语句格式select*from<表名>;【例10-6】从student数据库中查询所有学生的全部信息。查询指定列查询指定列语句格式select<字段列表>from<表名>;【例10-7】从student数据库的student表中查询学生的学号、姓名、班级。【例10-8】将表course中的全部课程记录插入表course_bak中,假设表course_bak已存在且结构与表course相同。四、查询计算列在设计表结构时,对于能通过计算得到的数据,通常不需要再设计一个列来保存。在select语句中,可以对数值列使用+、-、*、/进行计算。同时,运算符也可以在多个列之间进行计算。【例10-9】从score表中查询学号、课程号、原成绩,以及下调10%以后的成绩。【例10-10】计算student表中学生的年龄。五、为结果列指定别名1.为表设置别名语句格式【语句格式】select<字段列表>from<表名>[as]<别名>;【例10-11】从student数据库的student表中查询女同学的sname,sex,birthday,并将表名设置为s。2.为结果列指定别名语句格式select<表达式>[as]<别名>from<表名>;<表达式>[as]<别名>,as可以省略。在语句中可以同时使用不同格式。当引用中文别名时,可以不加引号;若引用英文别名超过两个词时,必须用引号将其引起来。【例10-12】从student表中查询学生的sname,sex,birthday,并将结果列的列名分别显示为姓名、性别、出生日期。【例10-13】查询学生出生的天数。六、查询表中前N条数据1.使用limit输出前n条数据select<字段列表>from<表名>limitn;【例10-14】从student数据库的student表中查询前3条数据,并显示姓名和班级。2.使用limit输出表中部分数据select<字段列表>from<表名>limitn1,n2;n1是开始读取的第一条记录的编号,在查询结果中,第一个记录的编号是0。n2是查询记录的个数。【例10-15】显示student表中的第3、4条数据,并显示姓名和班级。消除重复记录消除重复记录语句格式select[distinct]<字段列表>from<表名>;【例10-16】使用distinct关键字查询student表中的班级信息。第二部分条件查询比较条件查询比较条件查询语句格式select<字段列表>from<表名>where表达式1比较运算符表达式2;比较条件就是用来将两个数值表达式进行对比,参与对比的表达式可以是具体的值,也可以是函数,但对比的两个参数数据类型要一致。常用的比较运算符:等于(=)、不等于(<>)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。【例10-17】查询女生的姓名、性别、班级。【例10-18】检索2000年12月31日以后出生的学生姓名和出生日期。二.逻辑条件查询逻辑条件查询语句格式select<字段列表>from<表名>where<逻辑表达式>;逻辑运算符包括:and、or、not。【例10-19】查询“网络2021”班的男生信息。【例10-20】检索所有2002年12月31日以后以及2001年1月1日以前出生的女生姓名和出生日期。三.列表条件查询列表条件查询语句格式select<字段列表>from<表名>where<列名[not]in表达式列表>;【例10-21】查询“网络2021”班和“软件2021”班学生的信息。【例10-22】查询不是“网络2021”班和“软件2021”班学生的信息。四.范围条件查询范围条件查询语句格式select<字段列表>from<表名>where<列名[not]between表达式1and表达式2>;两个表达式的数据类型要和where后列的数据类型一致。表达式1<=表达式2。【例10-23】查询成绩在90~100之间的学生学号、课程号、成绩。【例10-24】查询成绩不在90~100之间的学生学号、课程号、成绩。五.模糊条件查询1.使用like关键字模糊查询select<字段列表>from<表名>where<列名[not]like字符表达式>;【例10-25】查找所有姓“张”的学生信息。【例10-26】检索所有姓“李”以及姓名中第二个字为“丽”的,并且住址含有“河北省”的学生的姓名、性别和住址。2.使用regexp关键字匹配查询select<字段列表>from<表名>where<列名regexp字符表达式>;like匹配整个列,如果被匹配的文本在列值中出现,like将不会找到它,相应的行也不会被返回(除非使用通配符)。而regexp在列值内进行匹配,如果被匹配的文本在列值中出现,regexp将会找到它,相应的行将被返回,并且regexp能匹配整个列值(与like相同的作用)。【例10-27】检索所有姓“李”以及姓名中第二个字为“丽”的,并且住址含有“河北省”的学生的姓名、性别和住址。【例10-28】使用“*”进行正则匹配,查询电话号码中含138的学生信息。【例10-29】使用“+”进行正则匹配,查询电话号码中含138的学生信息。六.空值条件查询空值条件查询语句格式select<字段列表>from<表名>where<列名is[not]null>;要使用关键字“is”,不能使用“=”。可以在null前添加一个not运算符,表示“非空”。【例10-30】查询成绩为空的学号、课程号、成绩。【例10-31】查询成绩非空的学号、课程号、成绩。第三部分查询结果操作.对查询结果进行排序对查询结果进行排序语句格式select<字段列表>from<表名>[where<查询条件>]orderby<排序字段>[asc|desc];当有多个排序字段时,用逗号隔开,各字段后都可以跟一个排序要求。asc关键字表示升序,desc关键字表示降序,默认情况为asc。【例10-32】查询学号、课程号、成绩,并按成绩升序排序。【例10-33】查询学生的姓名、班级,查询结果按班名升序,姓名降序排序。【例10-34】查询成绩排名前3的选课记录。二.使用聚合函数查询聚合函数表:【例10-35】查询所有学生选修课程数量、总分、平均分及最高、最低分。【例10-36】查询所有学生选修课程数量、总分、平均分及最高、最低分,要求分数加5分后再求和,并设置别名显示结果。·三.对查询结果进行分组对查询结果进行分组语句格式select<字段列表>from<表名>[where<查询条件>][groupby<分类字段>];groupby子句中的分类字段可以包含多个列。select后面的检索内容必须是聚合函数或在groupby子句中的分类字段。如果select子句中包含聚合函数,则groupby将计算每组的汇总值。【例10-37】查询学生表student中男、女生人数。【例10-38】查询每个学生选修课程数量、总分及最高、最低分。【例10-39】对学生表中的数据进行分组汇总,要求按学生出生年份进行分组,统计各年份对应的学生数量。四.对分组后的结果集过滤数据对分组后的结果集过滤数据语句格式(having)select<字段列表>from<表名>[where<查询条件>][groupby<分类字段>[having<检索条件>]];使用having语句查询与where关键字类似,都是在关键字后面插入条件表达式来规范查询结果,两者不同体现在以下几点:where关键字针对列的数据,having则是针对结果组。where关键字不能与聚合函数一起使用,而having一般都与聚合函数结合使用。where关键字在分组前对数据进行过滤,having语句只过滤分组后的数据。【例10-40】查询平均成绩及格的学生选修课程数量、总分及最高、最低分。【例10-41】查询选修3门课程以上的学生学号。第四部分连接查询.交叉连接查询交叉连接查询语句格式select<列表字段>from<表名1>,<表名2>;或select*fromcoursecrossjoinscore;连接后结果集的行数就是两个表行数的乘积。连接后结果集的列数就是两个表的列数之和。没有where子句的交叉连接,将两个表不加任何约束地组合在一起,也就是将第一个表的所有记录分别与第二个表的每条记录拼接组成新记录。【例10-42】将表course与表score进行交叉连接。二.内连接查询将表中一些记录按照一定条件与其它表的一些记录连接起来,可以在FROM或WHERE子句中指定连接条件,通常是表间列的相等关系。内连接查询语句格式select<列表字段>from<表名1>,<表名2>where<表名1.列名=表名2.列名>;或select<列表字段>from<表名1>innerjoin<表名2>on<表名1.列名=表名2.列名>;列表字段中的列名若在表1和表2中都包含,则必须使用“表名.列名”形式。若有多个表连接,则表名之间用逗号隔开。可以在表名后面使用as关键字,为表设置别名。在此,as关键字可以省略,而用空格隔开原名与别名。但若为表指定了别名,则只能用“别名.列名”来表示同名列,不能使用“表名.列名”来表示。连接条件即为各表之间的关联,其形式为“表名1.主键=表名2.外键”。若n个表的连接,通常需要n-1个连接条件。如果是带条件的连接查询,则将条件表达式放在连接条件的后面,使用and关键字即可。条件表达式最好放在括号内,以免因优先级的问题发生错误。【例10-43】查询所有学生的学号、姓名、课程编号、成绩。【例10-44】查询所有学生的学号、姓名、课程编号、课程名称、成绩。【例10-45】检索选修了“数据库技术”及“计算机网络”的学生的学号、姓名、课程号、课程名、成绩。【例10-46】查询每门课程的课程号、课程名及其选课人数。三.自连接查询自连接是指将一个表与它自身连接,将表如同分身一样分成两个,使用不同的别名,成为两个独立的表。自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。自连接通常用于查询表中具有相同列值的行数据。自连接查询语句格式select<列表字段>from<表名1>as<别名1>,<表名2>as<别名2>where<别名1.列名=别名2.列名>;或select<列表字段>from<表名1>as<别名1>innerjoin<表名2>as<别名2>on<别名1.列名=别名2.列名>;因为同一张表在from子句中多次出现,为了区别该表的每一次出现,需要使用as关键字为表定义一个别名。as关键字可以省略,而用空格隔开原名与别名。若为表指定了别名,则只能用“别名.列名”来表示同名列,不能用“表名.列名”表示。、【例10-47】查询所有同时选修课程编号为“0001”和“0002”的学生的学号。【例10-48】查询至少选修两门课的学生的学号。四.外连接查询1.左外连接查询语句左外连接的结果集包括了左表的所有记录,而不仅仅时满足连接条件的记录,即将位于leftjoin关键字左侧表的所有行都输出。如果左表的某条记录在右表中没有匹配行,则该记录在结果集中属于右表的相应列值均为null。select<列表字段>from<表名1>left[outer]join<表名2>on<表名1.列名=表名2.列名>;【例10-49】查询所有学生的学号、姓名、成绩。2.右外连接查询语句右外连接的结果集包括了右表的所有记录,而不仅仅时满足连接条件的记录,即将位于rightjoin关键字右侧表的所有行都输出。如果右表的某条记录在左表中没有匹配行,则该记录在结果集中属于左表的相应列值均为null。select<列表字段>from<表名1>right[outer]join<表名2>on<表名1.列名=表名2.列名>;【例10-50】查询所有课程号、课程名及成绩信息。第五部分子查询单值子查询单值子查询语句格式单值子查询是指查询的查询结果只返回一个值,然后将某一列值与这个返回的值进行比较。在where、having子句中可以直接使用比较运算符来连接子查询。为了区分主查询和子查询,子查询应加小括号。select<字段列表>from<表名>where<列名或表达式>比较运算符(子查询);比较运算符包括=、<>、!=、>、>=、!>、<、<=、!<。一般来说,有些子查询可以转换为连接查询,并且连接查询的效率高于子查询,所以应尽可能地使用连接查询。【例10-51】查询选修“数据库技术”课程的学生的学号、成绩。【例10-52】查询与“张涛”同班的学生的学号、姓名。二.多值子查询子查询用在主查询的where或having子句中。当子查询的查询结果为单列多值时,必须使用逻辑运算符any(某个值)、some(某些值)、all(所有值)连接子查询。多值子查询语句格式select<字段列表>from<表名>where<列名或表达式>比较运算符[any|some|all](子查询);使用any或者some关键字时,只要满足子查询语句返回的结果中的任意一个值,就可以通过该条件来执行主查询语句;而使用all关键字时则需要满足子查询语句返回的所有值,才可以执行主查询。【例10-53】使用any逻辑运算符查询选修课程号为“0001”的学生姓名。【例10-54】使用all逻辑运算符查询其他班级中比“软件2021”班所有学生年龄都大的学生姓名,年龄和所在班级。三.子查询IN子查询IN语句格式select<字段列表>from<表名>where<列名或表达式>[not]in(子查询);in与“=any”或“=some”等价,notin与“<>”等价但与“<>any”或“<>some”不等价。【例10-55】查询选修“数据库技术”或“计算机网络”课程的学生学号、课程号和成绩。【例10-56】查询未选修课程编号为“0001”课程的学生学号、姓名。四.子查询EXISTS使用exists关键字引入子查询后,子查询的作用就相当于进行存在测试。主查询的where子句测试子查询返回的行是否存在。子查询实际上不产生任何数据,它只返回true或false。如果子查询语句查询到满足条件的记录,就返回一个true,否者只返回false。当返回值为true时,主查询则进行查询;如果返回的值为false时,主查询则不进行查询或查询出任何记录。子查询EXISTS语句格式select<字段列表>from<表名>where[not]exists(子查询);exists关键字前没有列名、常量或其他表达式。由exists关键字引入的子查询的字段列表,通常为星号(*)。由于只是测试是否存在符合子查询中指定条件的行,因此不必列出列名。【例10-57】查询course表中是否有课程名称为“数据库技术”的课程,如果存在该门课程,则查询score表中分数大于80的记录。【例10-58】查询没有选修任何课程的学生的学号、姓名。五.合并查询结果1.使用UNION合并结果select语句1unionselect语句2;使用union合并时,两个表对应的列数必须相同,对应的数据类型也必须兼容。系统将自动去掉合并后的结果集中重复的行。最终结果集中的列名来自第一个select语句。联合查询合并的结果集通常是同样的基表数据在不同查询条件下的查询结果。【例10-59】查询表student与表student_bak中所有学生信息(假设表student_bak已存在,且结构与表student相同)。【例10-60】查询student表中“网络2021”班的学生姓名或表中所有男生的姓名。2.使用UNIONALL合并结果select语句1unionallselect语句2;使用关键宇unionall的作用是不删除重复行也不对结果进行自动排序。【例10-61】查询表student与表student_bak中所有学生信息。对比【例10-59】和【例10-61】,使用unionall关键字合并后的查询结果没有删除重复的行,也没有对查询结果排序。通过习题进行复习,采用互动方式,由学生进行说明引出本讲内容后讲解语句格式实例讲解重点学生和教师同步操作重点、难点实例讲解只有当逻辑关系可以“翻译”为“并且”时,才应使用逻辑运算符AND。教师与学生同步操作完成重点、难点对比详细讲解通过随堂练习巩固,老师给予必要的提示,指导学生完成like和regexp的区别实例讲解学生与教师同步操作注意:SELECT列只能是分类字段或聚合函数。重点、难点通过教学做一体化练习,让学生更好的掌握本讲内容。重点、难点注:N个表的连接,通常需要N-1个连接条件。通过随堂练习巩固,老师给予必要的提示,指导学生完成难点演示教学,注重教学过程中相关理论知识的渗透演示操作讲解学生与教师同步进子查询和连接查询的关系重点、难点通过随堂练习巩固,老师给予必要的提示,指导学生完成重点、难点演示教学,注重教学过程中相关理论知识的渗透重点、难点对比讲解演示操作讲解学生与教师同步进

单元11索引教学内容及教学过程说明步骤一问题引入数据库经常被用在很多大型应用场景中,比如搜索引擎、大型购物网站、银行、电信等领域。这些应用的共性是数据存储量非常大,而对查询速度的要求又比较高。比如在百度搜索引擎中输入关键字“MYSQL”后,网页提示结果有7900多万条,但是结果在极短时间内就查询了出来。想要实现这样的查询速度就需要索引。【问题1】什么是索引?【问题2】MySQL的索引有哪些类型?【问题3】在MySQL中如何创建、查看、删除索引?步骤二讲授一.索引的概念和分类1.MySQL索引的概念索引(Index)是帮助MySQL高效获取数据的数据结构,是重要的数据库对象,在MySQL中也称作键(Key)。2.索引的分类(1)索引的物理分类B+树索引哈希索引(2)修改默认的存储引擎普通索引唯一性索引空间索引单列索引多列索引全文索引二.MySQL索引的创建1.使用CREATEINDEX语句创建索引【语句格式】create[unique|fulltext|spatial]index<索引名>[using<索引类型>]on<表名>(<列名1>|[(长度)][asc|desc],…);【例11-1】在学生表student上创建普通索引idx_s1,用于加速按姓名字段sname进行检索的速度。SQL语句如下:createindexidx_s1onstudent(sname);2.使用CREATETABLE语句创建索引【语句格式】createtable[ifnotexists]<表名>( <列定义1>, <列定义2>, … [unique|fulltext|spatial]index<索引名>(<列名1>,…))(1)创建普通索引。创建普通索引使用index语句。【例11-2】在学生选课数据库student中创建自定义学生表s1,包含的字段有学号snochar(10),姓名snamechar(20),性别sexchar(2)。在姓名字段上创建普通索引。SQL语句如下:createtableifnotexistss1( snochar(10), snamechar(20), sexchar(2), indexidx_sname(sname));(2)创建唯一索引Index前多关键字:unique。(3)创建全文索引Index前多关键字:fulltext。(4)创建单列索引(5)创建多列索引(6)创建空间索引Index前多关键字:spatial。3.使用ALTERTABLE语句创建索引语句格式】altertable<表名>add[unique|fulltext|spatial]index[<索引名>](<列名>,…);(1)创建普通索引。【例11-3】stu表经常按姓名进行查找,所以需要在此字段上建立普通索引。SQL语句如下:altertablestuaddindexidx_sname(sname);(2)创建唯一索引Index前多关键字:unique。(3)创建全文索引Index前多关键字:fulltext。(4)创建单列索引(5)创建多列索引(6)创建空间索引Index前多关键字:spatial。三.查看和删除索引1.查看索引【语句格式】showindexfrom<表名>[from<数据库名>];【例11-4】显示学生表stu中的索引信息。SQL语句如下:showindexfromstufromstudent;2.删除索引【语句格式】dropindex<索引名>on<表名>;【例11-5】使用dropindex语句删除idx_s1索引。SQL语句如下:dropindexidx_s1onstudent;通过问题引入,采用互动方式,由学生进行说明引出本讲内容。与生活实例结合解释和说明。简单介绍物理分类空间索引和全文索引非重点,了解重点:另外几种重点难点通过随堂练习巩固,老师给予必要的提示,指导学生完成实际环境演示讲解演示教学,注重教学过程中相关理论知识的渗透重点难点注意:空间索引需要使用MyISAM存储引擎重点注意:这里的关键词用法和创建表时创建索引是一样的。这些实例是重点

单元12视图教学内容及教学过程说明步骤一问题引入当用户需要一些具体数据的时候,往往需要通过复杂的连接查询、子查询等对多个表进行查询,所以这样操作并不便捷。而多个表中的数据对多数具体需求来说,多半数据又是不需要的。而直接对基本表进行查询,还对外暴露了数据库内部的真实逻辑结构,还存在一定的安全隐患。有没有方法使得数据库只展示应用和用户需求的数据呢?比如银行的柜员在办理业务的时候可以看到所有人的所有存款信息吗?如果不能,如何实现?【问题】使用MySQL如何在学生选课系统数据库中创建视图,满足辅导员在班级管理中对学生名单数据的使用需求?步骤二讲授一.视图的概念、优点及注意事项1.视图的概念视图是一个虚表。视图是从数据表或其他视图中导出的表,包含一系列带有名称的数据列和若干条数据行。对于数据库的三层模式和两级映射来说,视图属于外模式也就是用户模式的范畴。2.视图的优点简化查询,重用SQL语句;定制用户数据;提高数据库安全性;共享所需数据;更改数据格式。3.视图的注意事项与创建表类似,视图的名字必须唯一,但是创建视图的数目没有限制;视图可以嵌套,可以基于其他视图来创建视图。但是这相当于两层或者多层的嵌套查询,会带来一些性能问题,所以需要慎重;视图上不能创建索引,也不能创建触发器、默认值或规则;视图可以和表联合使用;在创建视图时可以使用排序子句orderBy;对视图进行带where子句的有条件查询时,这个查询条件会和创建视图的查询语句中的条件自动合并。二.MySQL视图的创建【语句格式】create[orreplace][algorithm={merge|temptable|undefined}]view[<数据库名>.]<视图名>as<select语句>[withcheckoption];1.创建基于单表的视图【例12-1】基于student表,创建一个名为v_wangluo2001的视图,该视图只显示网络2001班的学生信息。该视图的创建语句如下:createviewv_wangluo2001asselect*fromstudentwhereclass='网络2001';2.创建基于多表的视图【例12-2】基于学生表student和成绩表score创建视图v_sc,该视图包含每个学生的班级class,学号sno、姓名sname,课程号cno和成绩score等字段。创建视图v_sc的SQL语句如下:createviewv_scasselectclass,student.sno,sname,cno,scorefromstudent,scorewherestudent.sno=score.sno;3.创建视图时修改列名【例12-3】创建一个视图v_stuall,用于显示所有学生的学号、姓名、性别、班级。SQL语句如下:createviewv_stuall(学号,姓名,性别,班级)asselectsno,sname,sex,classfromstudent;4.查看视图【例12-4】使用describe命令查看视图v_sc的定义。SQL语句如下:describev_sc;三.MySQL视图的修改【语句格式】alterview<视图名>as<select语句>;【例12-5】使用alter语句修改视图v_sc,视图中包括班级class,学号sno,姓名sname,课程号cno,课程名cname,成绩score。SQL语句如下:alterviewv_scasselectclass,student.sno,sname,o,cname,scorefromstudent,score,coursewherestudent.sno=score.snoando=o;四.删除视图【语句格式】dropview[ifexists]<视图名1>[,<视图名2>…];【例12-6】使用dropview语句删除视图v_sc。SQL语句如下:dropviewv_sc;通过问题引入,采用互动方式,由学生进行说明引出本讲内容。与生活实例结合解释和说明。介绍视图的概念对“虚表”的“虚”进行进一步解释重点此处为了解内容重点难点难点是algorithm选项演示教学,注重教学过程中相关理论知识的渗透重点难点重点还有没有别的实现方法?注意:修改视图和创建视图并没有太多区别,只是把create改成了alter注意ifexists写与不写的区别

单元13存储过程教学内容及教学过程说明步骤一问题引入有没有什么办法可以把经常运行的SQL语句存起来,下次可以直接调用执行呢?比如,每次都要从学生表、课程表、成绩表三个表中连接查询出学生的学号,姓名,课程名,成绩,有设么办法把这组操作永久性存储起来,以后需要直接调用就行呢?【问题】使用MySQL如何在学生选课系统数据库中创建一个有参存储过程,输入学生的学号,输出该学生的成绩信息?步骤二讲授一.流程控制语句的格式1.分支结构(1)case表达式简单case表达式【语句格式】case<测试表达式>when<比较值1>then<表达式值1>…[when<比较值n>then<表达式值n>][else<表达式值n+1>]end搜索case表达式【语句格式】casewhen<判断条件1>then<表达式值1>…[when<判断条件n>then<表达式值n>][else<表达式值n+1>]end(2)if-else语句【语句格式】if<条件表达式1>then<语句列表1>[elseif<条件表达式2>then]<语句列表2>…[else<语句列表n>]endif;2.循环结构(1)while循环控制语句【语句格式】[标签:]while<循环条件>do<循环体>;endwhile[标签];(2)repeat循环控制语句【语句格式】[标签:]repeat<循环体>;until<循环结束条件>endrepea

温馨提示

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

评论

0/150

提交评论