
盗传必究
本课程分为形成性考核和终结性末考两种考核形式,形成性考核占50%(满分100分),末考为网络考试占50%(满分100),其中形成性考核为完成课程网站上的形考作业任务,形考作业均为主观题,包括四个实训:实训一:在MYSQL创建数据库和表,25分;实训二:数据查询操作,25分;实训三:数据增删改操作,25分;实训四:数据库系统维护,25分。
实验训练1 在MySQL中创建数据库和表
答案:
步骤:
1、 使用 show 语句找出在服务器上当前存在什么数据库:
mysql>show databases;
2、 创建一个数据库 test :
mysql>create database test;
3、 选择你所创建的数据库:
mysql>use test;
4 创建一个数据表:
首先查看刚才创建的数据库中存在什么表:
mysql>show tables;
(说明刚才创建的数据库中还没有数据库表)
接着我们创建一个关于 students 的数据表:包括学生的学号 (id) ,姓名 (name) ,性别 (sex) ,年龄 (age) 。
mysql>create table students(id int unsigned not null auto_increment primary key,name char(8) not null,sex char(4) not null,age tinyint unsigned not null,);
解释:以 "id int unsigned not null auto_increment primary key" 行进行介绍 :
"id" 为列的名称 ;
"int" 指定该列的类型为 int( 取值范围为 -8388608 到 8388607), 在后面我们又用 "unsigned" 加以修饰 , 表示该类型为无符号型 , 此时该列的取值范围为 0 到 16777215;
"not null" 说明该列的值不能为空 , 必须要填 , 如果不指定该属性 , 默认可为空 ;
"auto_increment" 需在整数列中使用 , 其作用是在插入数据时若该列为 NULL, MySQL 将自动产生一个比现存值更大的唯一标识符值。在每张表中仅能有一个这样的值且所在列必须为索引列。
"primary key" 表示该列是表的主键 , 本列的值必须唯一 , MySQL 将自动索引该列。
下面的 char(8) 表示存储的字符长度为 8, tinyint 的取值范围为 -127 到 128, default 属性指定当该列值为空时的默认值。
创建一个表后,用 show tables 显示数据库中有哪些表:
mysql>show tables ;
5、 显示表结构:
mysql>describe students;
6、 在表中添加记录:
首先用 select 命令来查看表中的数据:
mysql>select*from students;
(说明刚才创建的数据库表中还没有任何记录)
接着加入一条新纪录:
mysql>insert into students value(‘01’,’Tom’ , ’F’ , ’18’) ;
再用 select 命令来查看表中的数据的变化:
mysql>select*from students;
7、 用文本方式将数据装入一个数据库表:
创建一个文本文件“ student.sql ”,每行包括一个记录,用 TAB 键把值分开,并且以在 create table 语句中列出的次序,例如:
02 Tony F 18
03 Amy M 18
04 Lisa M 18
将文本文件“ student.sql ”装载到 students 表中:
mysql>load data local infile”e:\\\\student.sql”into table students;
再使用 select 命令来查看表中的数据的变化:
mysql>select*from students;
实验训练4:数据库系统维护
答案:
1.1 实验目的
通过创建数据库、并进行相应的维护,了解并掌握 Mysql 数据库的创建和维护的不同方法和途径,并通过这一具体的数据库理解实际数据库所包含的各要素。
1.2 实验内容
1 .数据库创建与维护
(1) 创建数据库表
创建学生选课数据库中所包含的数据库表,数据库表结构如下:
学生(学号,姓名,性别,年龄,系别,班级)
课程(课程编号,课程名称,学分)
选修(学号,课程编号,学生成绩)
要求为各数据库表属性选择合适的数据类型。
列名、数据类型(长度列、精度、小数位数项)、是否允许空值等。
(2) 查看和修改表结构。
选择一个数据库表,练习对其表结构进行相应的修改。
(3) 练习用交互式的 SQL 语句分别完成以上操作。
(4) 对学生数据库中的三张表分别插入数据;
(5) 对表中的数据进行修改;
(6) 对表中的数据进行删除操作
2 . ( 1 )建立如下视图:
学生选修课程信息视图,包括以下内容:
学生学号、姓名、所在系、选修的课程编号、课程名称、成绩
( 2 )修改以上视图,增加学生所在班级信息。
( 3 )对以上视图删除。
1.3 实验要求
1 . 数据库创建与维护实验则要求面向具体应用领域,利用 SQL Server 相关机制,创建并维护数据库系统,为后续各个实验提供前期准备
2 . 要求学生根据以上要求确定实验步骤,完成以上实验内容。并在安装和数据库运行后熟悉 SQL SERVER 的各种运行管理。
3 . 实验完成后完成实验报告
1.4 实验环境
Windows8 pc 机
Mysql 配置的环境
Mysql 命令行工具
Workbench 可视化 工具
1.5 实验步骤及结果分析
1.5.1 student 数据库创建
打开命令行工具,输入密码,用 use 语句使用相应数据。 U se student 使用老师的给的数据库 。 在 workbench 中我们可以看到创建数据库的代码 :
下面是输入的数据
此处我们会发现乱码问题,老师给的代码中写的是 Latin ,我们改成 utf -8 , 便解决了中文乱码问题 。
创建数据库语句 , create table +` 数据库名 `(
` 属性名 ` 属性类型 约束
)
1.5.2 数据库操作 --- 属性查询
查询表结构:即各个属性和属性的完整性约束等。( desc student )
该语句给我们展示了 我们创建的数据的所有 (属性 名 + 类型 + 默认初始情况 + 约束等)信息。
1.5.3 数据库操作 - -- 数据结构修改
在老师给的默认数据库中,我发现最后一个属性 classno 的属性为 varchar ( 3 );但是数据库数 据中 classno 本来是 4 位数,所以导致存储时与原数据不匹配。因此,我们修改一下该属性。即:将它改为 4 位长度的:
alter table `student` modify `classno` varchar(4)DEFAULT NULL;
我们在数据插入操作中进行检测 。
1.5.4 数据库操作 — 数据插入
例如 , 我们加入一个 学生信息 , 以自己为例 :
insert into `student` values('33333',' 茹兴康 ',' 男 ','1997/7/7 8:00',' 计算机 ','314 6 ');
插入成功 , 因为插入的 classno 为 3146 是 4 位的,所以说明 数据库结构修改成功。
我们查询一下 :
插入成功 ,数据库结构修改成功。
1.5.5 数据库操作 --- 数据查询
例如:我们查询学号为 30201 的学生的所有信息 。
采用语句结构 : select+ 查询的属性 from+ 要查找的表 where + 约束条件 :
S elect * from student where sno=30201;
1.5.6 数据库操作 --- 数据修改
我们按学号为 30201 ,即第一个数据为例,修改他的名字,
Update student set sname = ’abc’ where sno=30201;
1.5.7 数据库操作 --- 数据删除
我们按学号为 30201 ,即第一个数据为例:
delete from `student` where sno='30201 ';
因为我们已经删除了该数据 , 所以查询 为空 。
1.5.8 视图操作 --- 视图创建
视图 , 用来更方便的展示某些信息 , 或者为了更安全的选择展示或隐藏某些信息 。
我们将 student 表 , sc 表 , course 表连接起来创建新的视图 , 从而让学生信息更直观 , 更方便 。
创建视图所需语句 : create view + 视图名 +as + 查询语句 。
create view view1 as
select sno,sname,dept,cno,cname,grade,classno
from student natural join sc natural join course;
我们在 下面的 视图查询 操作 中检测试图是否创建成功 。
1.5.9 视图操作 --- 视图查询
由于在上述实验中我们将第一个学生的数据删除掉了,所以我们选择查询后面的同学,
查询视图操作代码和查询表格是一样的。
代码 : select * from view1 where sno=30203;( 其中 view1 是我们创建的视图名称 ) ;
由于该同学选择了三门不同的课程,因此在进行表连接的时候,增加了该同学的元组数量,最终查询出 3 条结果。
1.5.10 视图操作 --- 视图结构修改
在视图创建中 , 我们创建了视图的 classno 班级信息 , 现在我们删除这一属性 。
使用语句 : create or replace view 。
C reate or replace view view1 as
select sno,sname,dept,cno,cname,grade
from student natural join sc natural join course;
然后我们在查询一下 view1 的结构 , 同 table 操作一样 , 用 desc 语句 。结果如下:
显然 , view1 视图结构中没有了 classno 属性 。
1.5.11 视图操作 --- 视图删除
最后 , 我们删除视图 view1 , 采用语句 drop view ;
语句 : drop view if exists view1;
结果 :
删除成功 , 然后我们在查询视图 view1 时产生错误 , 验证了 view1 的删除 。
1.6 实验总结
我们进行了 对数据库表的基本操作;对视图的基本操作。让我们将数据库的理论知识和具体操作很好的结合。
虽然 , 我们刚开始进行的实验操作都比较基础 , 适用语句都比较简单 , 但是我充分感受到了数据库的美妙 , 同时也大大增加了我对命令行操作的兴趣 。
在对数据库表和视图操作中 , 我经历了书上查阅 , 网上 mysql 命令行使用教程查阅 , 网上 mysql 命令语句查询 , 最终完成了此次实验 , 让我对数据库的基础语句使用以及常用语句使用有了更大的接触 。 同时 , 实验也让我对视图的作用最直接的了解 , 让我对理论课的学习有了更明确的目标性 。
