数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
数据库实验报告
java高级程序设计实验报告
实验九
专业:
软件工程
班级:
学号:
学生姓名:
指导教师:
郭丽
2015年12月27日
1.登陆MySQL
首先要以管理员身份运行“命令提示符”
然后打开MySQL服务:
netstartmysql
然后登陆MySQL数据库:
mysql-uroot–p123456
2.创建stu数据库
创建数据库命令:
createdatabasestu;
创建表
创建表teacher命令:
createtableteacher(
TIDvarchar(13),
TNAMEvarchar(4)NOTNULL,
GENDERBIT,
AGETINYINT(3),
RESEARCHtextNOTNULL,
PRIMARYKEY(TID)
);
创建表teacher命令:
createtablestudent(
SNOvarchar(13),
SNAMEvarchar(4)NOTNULL,
GENDERBIT,
BIRTHDAYDATE,
INDAYDATE,
PHONEvarchar(100),
DESCRIPTIONtextNOTNULL,
TIDvarchar(13),
PRIMARYKEY(SNO),
FOREIGNKEY(TID)REFERENCESteacher(TID)
);
创建表relation命令:
createtablerelation(
TIDvarchar(13),
SNOvarchar(13),
XSTATUSTINYINTdefault'0'NOTNULL,
FOREIGNKEY(TID)REFERENCESteacher(TID),
FOREIGNKEY(SNO)REFERENCESstudent(SNO)
);
1)、向数据库stu的student表中插入10条学生数据,其中有一条数据是自己的信息,截图,写出SQL脚本。
(1)向教师表中添加信息:
SQL脚本:
INSERTINTOteacher(TID,TNAME,GENDER,AGE,RESEARCH)
VALUES('66666','a',1,30,'Java'),
('55555','b',1,35,'Java-Javaweb'),
('44444','c',0,40,'Java-Javaweb'),
('33333','d',0,43,'Java-C语言'),
('22222','e',1,32,'Java-C语言'),
('11111','f',0,41,'Java-C语言');
2)、向数据库stu的teacher表中插入5条教师数据,截图,写出SQL脚本,其中一条教师的ID要是66666.
(2)向学生表中添加信息:
SQL脚本:
INSERTINTOstudent(SNO,SNAME,GENDER,BIRTHDAY,INDAY,PHONE,DESCRIPTION)
VALUES('201470024231','s',1,'1996-01-31','2014-09-01','s.jpg','学生一名'),
('201470024211','s1',1,'1996-01-31','2014-09-01','s1.jpg','学生一名'),
('201470024222','s2',0,'1996-01-31','2014-09-01','s2.jpg','学生一名'),
('201470024233','s3',1,'1996-01-31','2014-09-01','s3.jpg','学生一名'),
('201470024244','s4',0,'1996-01-31','2014-09-01','s4.jpg','学生一名'),
('201470024255','s5',1,'1996-01-31','2014-09-01','s5.jpg','学生一名'),
('201470024266','s6',0,'1996-01-31','2014-09-01','s6.jpg','学生一名'),
('201470024277','s7',1,'1996-01-31','2014-09-01','s7.jpg','学生一名'),
('201470024288','s8',0,'1996-01-31','2014-09-01','s8.jpg','学生一名'),
('201470024299','s9',1,'1996-01-31','2014-09-01','s9.jpg','学生一名');
3)、向数据库stu的relation表中插入6条选报数据,截图,写出SQL脚本,其中一条数据的内容为你自
己与ID为6666的选报关系。
(3)向选报表中添加信息:
SQL脚本:
INSERTINTOrelation(TID,SNO,XSTATUS)
VALUES('66666','201470024231',1),
('22222','201470024222',1),
('33333','201470024255',1),
('33333','201470024244',1),
('22222','201470024233',0),
('33333','201470024211',1);
4)、修改自己的数据信息,将个人简介的内容修改为“万能”,截图,写出SQL脚本
SQL脚本:
updatestudentsetDESCRIPTION='万能‘whereSNO='201470024231';
5)、编写SQL,完成查询你自己的历史选报记录,即你都选报过哪些老师,这些选报信息的状态是什么,
要求显示的结果包括:
学生学号,学生名字,选报的老师的姓名,选报的老师的研究方向,选报状态
SQL脚本:
selectstudent.SNO,SNAME,TNAME,RESEARCH,XSTATUS
fromrelation,student,teacher
whererelation.SNO=student.SNOANDrelation.TID=teacher.TIDANDstudent.SNO='201470024231';
6)、编写SQL,完成查询ID为6666的老师的历史被选报记录,要求显示的结果包括:
学生学号,学生名字,选报的老师的姓名,选报的老师的研究方向,选报状态
SQL脚本:
selectstudent.SNO,SNAME,TNAME,RESEARCH,XSTATUS
fromrelation,student,teacher
whererelation.SNO=student.SNOANDrelation.TID=teacher.TIDANDteacher.TID='66666';
7)、编写SQL,完成查询没有进行任何选报操作的学生列表,显示结果包括:
学生学号,学生名字,性别,出生年月,个人简介
SQL脚本:
selectSNO,SNAME,GENDER,BIRTHDAY,DESCRIPTION
fromstudent
wherestudent.SNONOTIN(selectrelation.SNOfromrelation);
8)、编写SQL,完成统计当前完成选报的学生的个数。
SQL脚本:
selectcount(*)fromrelation
9)、编写SQL,完成统计每个老师指导的学生人数,显示结果包括:
教师姓名,所带学生人数
SQL脚本:
selectTNAME,count(SNO)
fromrelation,teacher
whererelation.TID=teacher.TIDANDrelation.XSTATUS=1
groupbyteacher.TNAME;
10)、编写SQL,统计报选老师数最多的学生的姓名
SQL脚本:
selectSNAME,COUNT(SNAME)
fromrelation,student
whererelation.SNO=student.SNO
GROUPBYSNAME
ORDERBYCOUNT(SNAME)DESC;(limit0,1)获取第一行数据
11)、编写SQL,统计被报选次数最多的老师的姓名
SQL脚本:
selectTNAME,COUNT(TNAME)
fromrelation,teacher
whererelation.TID=teacher.TID
GROUPBYTNAME
ORDERBYCOUNT(TNAME)DESC
limit0,1;
12)、编写SQL,统计知道学生人数最多的老师的姓名
SQL脚本:
selectTNAME,COUNT(TNAME)
fromrelation,teacher
whererelation.TID=teacher.TIDANDrelation.XSTATUS=1
GROUPBYTNAME
ORDERBYCOUNT(TNAME)DESC
limit0,1;
13)、编写SQL脚本,完成你自己选报数据表teacher中的某个老师的完整的过程
SQL脚本:
starttransaction;(出错会回滚)
INSERTINTOrelation(TID,SNO,XSTATUS)
VALUES('11111','201470024231',0);
commit;
14)、编写SQL脚本,完成删除teacher表中某个教师的完整过程。
由于teacher表与student表和relation表存在主外键关系,所以如果删除某个老师信息可能会对数据库造成影响。
所以我们在这里要用到事务。
(13题同理)
SQL脚本:
starttransaction;
DELETEfromteacher
whereTID='55555';(需要删除的老师ID)
commit;
总结
什么是事务?
事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务
注意:
mysql数据支持事务,但是要求必须是innoDB存储引擎
解决这个问题:
mysql的事务解决这个问题,因为mysql的事务特性,要求这组操作,要不全都成功,要不全都失败,这样就避免了某个操作成功某个操作失败。
利于数据的安全
如何使用:
(1)在执行sql语句之前,我们要开启事务starttransaction;
(2)正常执行我们的sql语句
(3)当sql语句执行完毕,存在两种情况:
1,全都成功,我们要将sql语句对数据库造成的影响提交到数据库中,committ 。
2,某些sql语句失败,我们执行rollback(回滚),将对数据库操作赶紧撤销 。