MySQL数据库实训报告
方案
实验目的
1、掌握系统数据类型的特点和功能:通过实际操作,了解不同数据类型的使用场景及其优缺点。
2、掌握创建、修改表结构的方法:能够熟练使用SQL语句进行表的创建、修改及删除操作。
3、掌握数据添加的方法:学会使用SQL命令向表中插入数据,并能处理常见的数据操作问题。
实验预习与准备
1、MySQL中创建数据库的命令:了解并熟悉如何使用CREATE DATABASE命令来创建新的数据库。
2、表结构的创建、修改和删除:掌握CREATE TABLE、ALTER TABLE和DROP TABLE等命令的使用。
3、MySQL导入导出表数据的方式:学习使用MySQL的数据导入/导出工具,如mysqldump和LOAD DATA INFILE。
4、添加数据的SQL命令:掌握INSERT INTO命令,用于向表中插入新记录。
1、数据库的创建:使用SQL命令创建一个名为“jwgl”+“自己学号”的数据库,如果学号是123456,则数据库命名为jwgl123456。
2、数据表的创建
student表(学生表)
列名 | 类型 | 是否允许为空 | 字段说明 | |
sno | char(10) | not null | 学号 | |
sname | char(10) | not null | 姓名 | |
sex | enum('男', '女') | not null | 性别 | |
birth | date | not null | 出生日期 | |
source | varchar(16) | null | 生源地 | |
clno | char(10) | null | 班级号 | |
phone | char(11) | null | 电话 | |
credit | smallint | null | 学分 | |
picture | varchar(30) | null | 照片地址 | |
remark | text | null | 备注 | |
pwd | char(6) | not null | 密码 |
course表(课程表)
列名 | 数据类型(宽度) | 是否允许为空 | 字段说明 | |
cno | char(6) | not null | 课程号 | |
cname | varchar(16) | not null | 课程名 | |
credit | tinyint | not null | 学分 | |
hour | smallint | not null | 学时 | |
term | tinyint | not null | 开课学期 |
score表(成绩表)
列名 | 类型 | 是否允许为空 | 字段说明 | |
sno | char(10) | not null | 学生编号 | |
cno | char(6) | not null | 课程编号 | |
score | decimal(4,1) | null | 期末成绩 |
teacher表(教师表)
列名 | 数据类型(宽度) | 是否允许为空 | 字段说明 | |
tno | char(4) | not null | 教师号 | |
tname | char(10) | not null | 姓名 | |
pwd | char(6) | not null | 密码 | |
sex | enum('男', '女') | not null | 性别 | |
tel | char(11) | null | 电话 | |
department | varchar(10) | not null | 院系名称 | |
type | char(1) | not null | 身份(0:管理员;1:教师) | |
remark | text | null | 备注 |
class表(班级表)
列名 | 类型 | 是否允许为空 | 字段说明 | |
clno | char(8) | not null | 班级编号 | |
clname | varchar(16) | not null | 班级名称 | |
department | varchar(12) | not null | 院系名称 |
course_class表(教师授课表)
列名 | 数据类型(宽度) | 是否允许为空 | 字段说明 | |
tno | char(4) | not null | 教师编号 | |
clno | char(8) | not null | 班级编号 | |
cno | char(6) | not null | 课程编号 |
3、修改表结构:使用ALTER TABLE命令对表结构进行修改。
修改student表中clno属性的数据类型为varchar(8),并且不允许为空:ALTER TABLE student MODIFY clno varchar(8) NOT NULL;
将student表中的phone属性名修改为tel,类型不变:ALTER TABLE student CHANGE phone tel char(11);
为student表增加point属性(入学成绩),数据类型为smallint,允许为空,并将属性至于tel属性之后,credit属性之前:ALTER TABLE student ADD point smallint NULL AFTER tel;
为student表增加email属性,数据类型为varchar(30),允许为空,并将属性至于picture属性之后,remark属性之前:ALTER TABLE student ADD email varchar(30) NULL AFTER picture;
为score表增加usual属性(平时成绩),数据类型为decimal(4,1),允许为空:ALTER TABLE score ADD usual DECIMAL(4,1) NULL;
删除student表中的pwd属性:ALTER TABLE student DROP COLUMN pwd;
4、数据导入/导出:利用MySQL的数据导入/导出功能将jwgl数据库中的相应表中数据导入到自己创建的数据表中,使用mysqldump工具导出数据,再使用LOAD DATA INFILE导入数据。
5、插入数据:向student表和score表中插入示例数据。
向student表中插入如下两条学生记录,其中第二条记录根据个人信息填写:INSERT INTO student (sno, sname, sex, birth, clno, point, tel, email) VALUES ('0922221326', '李杰', '男', '19880203', '19020301', '754', '13456734522', 'Lijie@sina.com');
向score表中插入一条记录,学生学号为:0922221326,课程编号为:010003,其余属性取空值:INSERT INTO score (sno, cno) VALUES ('0922221326', '010003');
实验中遇到的问题及解决方法
1、问题一:导入数据库数据时出现错误,错误提示:ERROR 1273 (HY000): Unknown collation: ‘utf8mb4_0900_ai_ci’
解决方法:百度搜索后发现是版本问题,根据百度方法进行设置后成功导入,把文件中的所有的utf8mb4_0900_ai_ci替换为utf8_general_ci,以及utf8mb4替换为utf8。
2、问题二:数据库导入后出现中文乱码
解决方法:百度后是编码格式问题,在my.ini文件中找到[client]和[mysqld]字段,在下面均加上defaultcharacterset=utf8,保存并关闭。
3、问题三:不知道为什么student中首行sno出现主键冲突
解决方法:找了好多方法后,使用ignore忽略错误成功插入数据,具体命令为在INSERT语句后加上IGNORE关键字。
在MySQL数据库实训的过程中,我遇到了一些小问题,知识点记得不够牢固,我会翻看课本教材,去寻找答案;又或者是在百度上寻找相应的博客学习、参考;和同学讨论也是解决问题的方法之一,不断加深我对于MySQL数据库这门课程的理解,更加深入的了解这门课程,在以后对于学习计算机编程所具有的重要意义,MySQL数据库的应用范围非常广泛,学好这门课程就显得尤为重要,这次的MySQL数据库实训课让我受益匪浅,让我懂得了自主学习,和向他人学习的好处,加深了对于MySQL数据库的应用,能够更加熟练的掌握MySQL数据库的基本语法和使用方法,感谢老师对本次实训的悉心指导,这些便是我对本次实训的所有心得。
FAQs(常见问题解答)
问题1:如何在MySQL中创建一个新的数据库?
答:在MySQL中创建一个新的数据库可以使用CREATE DATABASE命令,要创建一个名为“testdb”的数据库,可以执行以下SQL命令:
CREATE DATABASE testdb;
执行成功后,可以通过SHOW DATABASES命令查看所有已创建的数据库列表,确认数据库是否创建成功。
问题2:如何在MySQL中修改表结构?
答:在MySQL中修改表结构通常使用ALTER TABLE命令,要将student表中的phone属性名修改为tel,类型不变,可以使用以下命令:
ALTER TABLE student CHANGE phone tel char(11);
还可以使用ALTER TABLE命令来添加或删除列、修改数据类型等,为student表增加一个email列:
ALTER TABLE student ADD email varchar(30) NULL;