APP下载

高职院校数据库技术课程案例分析

2023-08-02黄岭

电脑知识与技术 2023年17期
关键词:主键视图备份

黄岭

(常州纺织服装职业技术学院,江苏常州 213164)

0 引言

数据库技术课程是高职院校计算机专业基础理论课程之一,虽然是基础理论课程,但它的重要性也是随着近年网络大数据的发展变得越来越明显。各行各业都离不开数据库,随着现在数字产业化和产业数字化发展,逐渐形成了数字技术与工业、农业、服务业的深度融合,涌现出如互联网业、信息通信业、电子信息制造业、软件服务业等新兴行业[1]。数据库技术课程所选用的是MySQL 数据库管理系统。MySQL 是一个典型的关系型数据库管理系统,也是目前最流行的关系型数据库管理系统之一。可以说在Web 应用方面,它是最好的关系数据库管理系统应用软件。由于MySQL使用的是最常用的SQL标准化语言,加之低成本、小巧灵活、开源的特色,中小型网站大多会首选其作为网站数据库,高职院校计算机专业选择其作为数据库技术课程教学也更贴近实际应用。

1 问题案例分析

数据库技术课程应该根据高等职业教育知识遵循“必需,够用”的原则,还应结合高职学生的学习特点,按照认知规律编排内容,由浅入深,详略得当。针对学生在MySQL 安装、数据库与表的创建、查询、索引、视图、触发器、权限、备份恢复这八个教学内容学习实践过程中容易出现的各种问题案例做分析汇总,有利于后续课程教学的优化与设计[2]。

1.1 MySQL安装问题案例

“工欲善其事,必先利其器”,MySQL 数据库的学习过程中,高职学生掌握对此软件的安装就显得十分必要。当然在学习过程中,由于各自计算机软硬件配置不同,学生也遇到了许多的问题。其实对于初学者,遇到问题并能引导其解决,是可以为他们树立自信心的[3]。下面列举MySQL安装常出现的问题。

1)C++插件安装提示。在自主安装MySQL 软件过程中部分学生遇到如图1所示的提示窗,这说明当前计算机操作系统里缺少了安装MySQL 产品和服务所需的插件,图中显示缺少“Microsoft Visual C++2013”。由于这是必备插件,单击“Execute”按钮,开始安装需要安装的组件,进入下一步安装过程。

图1 C++插件安装提示

2)防火墙影响安装进程。在安装进行到应用配置阶段,部分学生的计算机会出现配置步骤停滞在“Starting Server”,而无法继续下去。这个主要是由于杀毒软件防火墙阻止了程序的运行,可暂时关闭杀毒软件或安装过程中允许MySQL安装进程运行。

3)安装过程中途退出。部分同学在安装过程中中断过安装,重新运行MySQL安装程序就出现了如图所示的情况,然后发现安装的MySQL版本被升级或安装不完整。如果想恢复到以前版本,一般遵循以下步骤完全卸载:

①打开计算机里“控制面板”的“程序与功能”,按照先卸载列表里除“MySQL Installer -Community”之外的其他以“MySQL”开头的组件,然后再卸载“MySQL Installer -Community”的步骤完成MySQL 应用程序的卸载。

②然后检查C:下的Program Files文件夹(64位操作系统,32位操作系统则为Program Files(x86)文件夹)里面是否还存在“MySQL”文件夹,如果还存在则删除“MySQL”文件夹。

③然后检查C:下的ProgramData 文件夹(注意此文件夹默认为隐藏属性,可去隐藏查看)里面是否还存在“MySQL”文件夹,如果还存在则删除“MySQL”文件夹。

至此完全卸载了之前安装的MySQL,如需重新安装可再次运行MySQL安装程序。

4)配置环境变量。MySQL 安装完毕之后在CMD模式下测试出现如图2 所示的无法运行MySQL 的情况,这时就需要配置环境变量。由于mysql.exe等命令位于“C:Program FilesMySQLMySQL Server 5.7in”的目录下,需要把这个目录路径作为“PATH”变量的值添加到如图3 所示的用户变量中。然后再重新在CMD 模式下运行MySQL 测试,必要时可加“net start mysql57”命令,就可进入如图4所示MySQL环境。

图2 MySQL测试错误

图3 配置MySQL环境变量

图4 CMD模式正常运行MySQL

1.2 数据库与表的创建问题案例

1)符号及语法错误。对于数据库和表的创建,初学者除了语法错误之外,还容易用错标点符号,所有符号都要用英文状态下的。经常出现如在cmd 模式下用中文状态下的“;”,创建表的语句时多参数之间缺少了分隔符“,”,这些都会引起无法结束语句或出现错误提示的情况。另外还要注意在navicate下调试语句如果只有一条可以省略最后的“;”,但是在cmd模式下行不通。

2)主键约束问题。为了能既快速又高效地实现对数据库表中数据的更新查找,一般会使用给表中的一个或多个字段添加主键约束。当然设置了主键的字段要能保证输入数据时不能为空,而且要唯一。另外在数据库中的表之间也可以通过主键实现关联数据完整一致。表中只有一个字段设置为主键是最常见的方法,只需在创建表语句该字段的后面,加上“primary key”主键标识。当需要用多个字段来唯一标识表中数据时,就需要设置复合主键了。但复合主键不是像图5 所示的各自字段后面加上“primary key”,应该是如图6所示在所有字段声明之后设置。

图6 正确的复合主键添加方法

3)外键约束问题。一位同学在创建表(tb_employees2)时,出现如图7 所示无法添加外键约束的错误提示。设置外键的目的主要是实现表与表之间的数据关联与统一,外键表(设置有外键的表)中的外键字段的取值一定要来源于主键表(取值来源表)中主键字段,添加外键语法如图8所示。另外需要注意的是先要创建主键表,再创建外键表。为了方便今后查询调用,外键约束的取名也不要重复。经过查询这位同学主键表(tb_office)里并没有id 这个主键字段,应改为officeid。

图7 无法添加外键约束

4)默认值约束问题。一位同学在创建表时,出现如图9 所示无效默认值的错误提示。经过如图10 查询创建数据库语句发现前期创建数据库时未设置字符集,系统默认使用了latin1字符集,这就会出现无法识别中文的问题,可使用运行语句“alter database 1001HL2 character set utf8;”来解决此问题。

图10 查询创建数据库语句

1.3 查询操作问题案例

1)Select语法结构顺序问题。

一位同学在查询过程中遇到如图11 所示的查询语句错误提示。在MySQL 中从数据表中查询数据的基本语句是select语句。select语句的语法如下:

图11 查询语句错误

select 语句主要用到select、from、where、group by、having、order by 这六个关键词,并且他们的书写顺序也是按这六个词在select 语句语法出现顺序,除了select 和from 外,其他关键词可选。这位同学的错误就显而易见了,having和group by的语法顺序不对。

2)Select语法问题

Select语法错误是多数学生在这块练习遇到的问题。例如图12所示就是某学生使用select 语句时,误把所选择的列用小括号括了起来,造成查询报错。图13所示是某学生在select语句中使用sum()函数时,误在sum 和()之间加了个空格,造成无法识别函数而报错。

图12 查询语法错误1

图13 查询语法错误2

1.4 索引问题案例

索引的创建可以加快表与表之间的连接以及数据的检索速度,如果创建唯一性索引,还可以确保数据库表中字段数据保持唯一。其创建方法有两种,一种是在创建表的同时创建索引,以普通索引为例,代码如下:

另一种是在已有表上创建索引,以普通索引为例,代码如下:

create index index_itemId on tb_student_item(itemId);

唯一索引、全文索引、多列索引的创建方法和普通索引类似。这块内容学生容易出现的问题主要集中在多列索引,不少同学会误把每个字段单独创建一条索引语句。

1.5 视图问题案例

1)未知列名错误。一位学生在使用视图做查询时出现如图14所示的未知列名的错误。通过查询该视图的创建语句(如图15所示)发现,该视图的字段已用中文别名,那么之后对视图做操作时引用字段就应使用相应的中文别名。

图14 未知列名的错误

图15 视图创建语句

2)视图修改错误。一位同学通过删除命令来对一个视图的数据进行删除时出现如图16所示的错误信息。通过查询该视图的创建语句(如图15所示)发现此视图为多表关联视图,而多表关联视图是不能通过更改视图来修改表内容的。

图16 视图修改错误

1.6 触发器问题案例

学生在做一个检测图书借阅天数的触发器时,遇到了如图17所示计算出来的天数超出数据范围的情况,而测试数据‘2022-01-07’到‘2022-03-16’的间隔天数明显不大,不应超出数据范围。这个问题主要出在借阅字段的日期型数据上,两个日期型数据相减并不能得到天数,需要用如下语句进行转换才行。@howlong:=(UNIX_TIMESTAMP(new.returnDATE) -UNIX_TIMESTAMP(new.LendDate))/(60*60*24);

图17 触发器超限错误

1.7 权限问题案例

1)用户权限问题。部分学生在使用新创建的用户账号对表做更新操作时出现如图18所示的权限错误提示。经检查是因为之前给创建用户分配权限之后,未及时使用“FLUSH PRIVILEGES”语句刷新权限所致。

图18 用户权限问题

2)用户账号问题。部分学生在使用MySQL 语句登录时出现如图19所示的用户错误提示。经检查在创建该用户时取的用户名是“Test6”,而登录语句中使用的是“test6”。MySQL 在不同的操作系统下对大小写的敏感性不同,在Windows下虽然对大部分语句大小写是不敏感的,但用户账号还是区分大小写的。语句里使用的用户名和主机名一定要和创建时设置的严格保持一致。

图19 用户账号问题

1.8 备份恢复问题案例

1)数据备份语法。Mysqlpump可以实现数据库转储,但它并不是SQL 语句,它是可以在命令行模式下调用的实用程序,因此要注意它是在命令行中执行的,而不是在MySQL里输入的。主要使用其来完成三类备份:数据表的备份、多个数据库的备份、全部数据库的备份,这三类备份具体语句举例如图20所示。

图20 三类备份语句

2)数据恢复语法。恢复备份的语句书写有两种,一种是进入MySQL数据库恢复备份,命令举例如下:

mysql>source c:ackup2.sql/*恢复部分数据库*/

还有一种是在cmd命令行模式下恢复备份,命令举例如下:

C:UsersJASON>mysql -u root -p<c:ackup3.sql/*恢复全部数据库*/

这里要注意如果只是恢复部分数据表的话,存放该表的数据库要存在,否则会出现如图21所示的错误信息。

图21 备份恢复错误

2 课程实施建议

高职学生对学习内容存在“挑食”的情况,对感兴趣或操作类的内容学习热情较高,而对理论性的内容普遍提不起精神。即便是感兴趣或操作性的内容,一旦遇到如前文讲到的某些问题案例,很容易停滞不前或放弃。因此对数据库技术课程内容的选取,既要考虑到内容精简,又要考虑知识完整性;既要考虑到加强实践教学,又要考虑适时理论穿插[4]。建议对于数据库和表的创建、查询操作、索引、视图、权限这几部分案例可采用直接指导模式,帮助学生树立起自信心。对于MySQL 安装、触发器、备份恢复这几部分案例可采用模拟训练模式,提供给他们更多可以发挥的余地[5]。

猜你喜欢

主键视图备份
创建vSphere 备份任务
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
旧瓶装新酒天宫二号从备份变实验室
出版原图数据库迁移与备份恢复
数据库主键设置探讨