数据库原理及课程设计实验报告册期末提交 2Word文件下载.docx
《数据库原理及课程设计实验报告册期末提交 2Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库原理及课程设计实验报告册期末提交 2Word文件下载.docx(32页珍藏版)》请在冰点文库上搜索。
20610508
实验实习地点
完成日期
学生姓名
学生学号
学院专业
软件工程学院物联网专业
所在班级
19物联网工程
一、实验实习目的及要求
熟练掌握使用Navicat和Transact-SQL语言两种方法创建、修改和删除表。
掌握管理表的有关系统存储过程。
二、实验实习设备(环境)及要求(软硬件条件)
电脑和NavicatforMySQL软件
三、实验实习过程和结果分析(源代码、步骤截图等)
1、利用Navicat创建满足以下要求的数据库:
①数据库存在于连接MySQL中;
②数据库名称为xsgl;
③字符集选择utf8--UTF-8Unicode;
排序规则选择utf8_general_ci。
2、在数据库xsgl中,利用Navicat创建以下表格:
1)表格名为xs(学生基本情况表);
2)表格中各个属性的定义如下:
列名
含义
数据类型
长度
能否取空值
备注
xh
学号
int
no
主码
xm
姓名
char
8
yes
xb
性别
2
nl
年龄
tinyint
zy
专业
16
jtzz
家庭住址
50
具体步骤如下:
打开新建的数据库“xsgl”–右键点击“表”--“新建表”。
按照上表内容输入个属性的定义,填写“列名”、“数据类型”,并取消或选择“允许NULL值”前的选项,并右键点击“xh”,选择将其设为主键,如图2.1所示:
图2.1
点击“保存”,输入表名:
xs。
结果如图2.2所示:
图2.2
3、按照以下步骤向表格xs中添加如下记录:
(学号)
(姓名)
(性别)
(年龄)
(专业)
(家庭住址)
200809412
庄小燕
女
24
计算机
上海市中山北路12号
200809415
洪波
男
25
青岛市解放路105号
200109102
肖辉
23
杭州市凤起路111号
200109103
柳嫣红
22
上海市邯郸路1066号
200307121
张正正
20
应用数学
上海市延安路123号
200307122
李丽
21
杭州市解放路56号
1)打开Navicat;
2)打开连接MySQL找到数据库xsgl中的表格xs;
3)在表格xs上右击鼠标,选择“打开表”;
4)在接着出现的记录录入界面上添加记录。
(方向键下增加新纪录)
添加完后如图3.1所示:
图3.1
4、向表xs中增加“入学时间”属性列,其列名为rxsj,数据类型为datetime型。
步骤:
右键单击xs表—设计表—加入列rxsj,设置数据类型为datetime。
如图4.1所示:
图4.1
5、将表xs中nl(年龄)列的数据类型改为int型。
与第4项类似
6、在数据库xsgl中,利用Transact-SQL语言创建以下表格:
1)表格名为kc(课程情况表);
kch
课程号
4
kcm
课程名
xss
学时数
xf
学分
点击“新建查询”,输入以下代码,点击运行
USExsgl;
createtablekc
(
kchchar(4)notnull,
kcmchar(20)null,
xssintnull,
xfintnull,
primarykey(kch)
)engine=innodbdefaultcharset=utf8auto_increment=1;
命令成功完成后,在“xggl”数据库中右键点击“表”,选择“刷新”,
7、利用Transact-SQL语言修改kc表。
①增加“成绩”一列cj,int型,允许为空值,默认为0。
ALTERTABLEkcADDCOLUMNcjINTDEFAULT0;
②修改cj列的类型为char。
ALTERTABLEkcCHANGECOLUMNcjcjCHAR(4);
③修改cj列的列名为mark。
ALTERTABLEkcCHANGEcjmarkCHAR(4)DEFAULT0;
④删除mark列。
ALTERTABLEkcDROPCOLUMNmark;
7、利用Navicat和Transact-SQL语言两种方式删除表kc。
①步骤:
右键点击表“kc”,选择删除。
②步骤:
点击“新建查询”,输入以下代码,点击执行
DROPTABLEkc
8、利用Transact-SQL将表xs重命名为Students。
RENAMETABLExsgl.xsTOxsgl.Students;
四、实验遇到问题及解决办法(有就写,没有就不写)
五、实验心得
进一步熟悉了Navicat和Transact-SQL语言两种方法创建、修改和删除表。
了解学习了管理表的有关系统存储过程。
实验实习日志2
表格数据的基本查询操作
彭泽玉
1403
10.10
肖洋
2019116034
掌握SELECT语句的基本用法。
掌握计算列的用法。
掌握WHERE子句中各类查询条件的写法。
图5.1
图6.1
学习了新的控制语句,掌握SELECT语句的基本用法。
实验实习日志3
表格数据的编辑和维护
10.14
田恩
2019116028
熟练掌握使用Transact-SQL语言和通过Navicat输入表数据、修改表数据和删除表数据的操作。
1、在数据库world中建立一个名为newlanguage的表,其结构与表countrylanguage完全一样(注意各字段的默认值、字符集、排序方式等;
enum型要添加枚举值否则报错),如图1.1:
图1.1
2、在表newlanguage中插入中国的客家话,其名称为CountryCode为CHN,language为Kejia,isOfficial为F,percentage为0.3。
USEworld;
INSERTINTOnewlanguage
VALUES('
CHN'
'
Kejia'
F'
0.3);
4、试将表countrylanguage中的所有记录插入到表newlanguage中去,其SQL命令为:
SELECT*
FROMcountrylanguage;
5、将表newlanguage中Language为“Kejia”的语言的Percentage改为0.4
UPDATEnewlanguage
SETPercentage=0.4
WHERELanguage='
;
6、将表newlanguage中语言的Percentage均减去0.1。
SETPercentage=Percentage-0.1;
7、删除表newlanguage中澳大利亚(CountrCode为“AUS”)的英语记录。
DELETEFROMnewlanguage
WHERECountryCode='
AUS'
ANDLanguage='
English'
;
8、清空表newlanguage中的所有数据。
TRUNCATETABLEnewlanguage;
三、练习题
以下题目在数据库world中完成。
1、通过Navicat,在country、countrylanguage、和city三个表中各输入10条记录。
2、将一条新的城市记录(Name:
Beijing,Country:
AFG,District:
Beijing,Population:
21148000)插入表city中。
INSERTINTOcity
Beijing'
AFG'
21148000);
3、插入一条语言记录(“CHN”,“Minnan”,“F”,0.5)到表countrylanguage。
INSERTINTOcountrylanguage
Minnan'
0.5);
4、删除CountryCode为“ABW”的语言记录。
学习到了更多的语法,发现语句都是灵活的,机动性很强。
使用了Transact-SQL语言和通过Navicat输入表数据、修改表数据和删除表数据的操作。
实验实习日志4
安装并熟悉navcatmysql
2020.11.30
熟练掌握使用Transact-SQL语言和通过Navicat输入表数据、修改表数据和删除表数据的操作
设备:
电脑
要求:
温馨的实验以及良好的软硬件设施
(一)、集合查询
用UNION并操作实现集合查询,查询计算机科学系的学生详细信息及年龄不大于19岁的学生详细信息。
FROMstudent
WHERESdept='
cs'
UNION
WHERESage<
=19;
(二)、嵌套查询
1.带有IN谓词的子查询
(1)用带有IN谓词的子查询,查询与“刘晨”在同一个系学习的学生信息,要求查出学号,姓名,所在系。
SELECTsno,sname,Sdept
WHERESdeptin
(
SELECTSdept
FROMstudent
WHERESname='
刘晨'
);
(2)用带有IN谓词的子查询,查询所有选修了1号课程的学生姓名。
SELECTsname
WHEREsnoin
(SELECTsno
FROMsc
WHEREcno='
1'
)
(3)用带有IN谓词的子查询,查询选修了课程名为“信息系统”的学生学号和姓名。
SELECTsno,sname
WHEREsnoin(SELECTSno
WHEREcno=3);
2.带有比较运算符的子查询
(1)用带有比较运算符的子查询,查询与“刘晨”同岁的学生,要求查出学号,姓名,年龄。
SELECTsno,sname,sage
FROMstudent
WHERESage=(
SELECTSage
WHERESname='
);
(2)用带有比较运算符的子查询,查询成绩高于200215122这个同学平均成绩的学生选课记录,要求查出学号,课程号,成绩。
SELECTsno,cno,grade
WHEREGrade>
(SELECTAVG(Grade)
WHERESno='
200215122'
);
(3)用带有比较运算符的子查询,找出每个学生超过他选修课程平均成绩的课程号,要求结果中显示学号和对应课程号。
SELECTsno,cno
FROMscy
WHEREGrade>
(SELECTAVG(Grade)
FROMscx
WHEREy.Sno=x.sno);
3.带有ANY或ALL谓词的子查询
(1)用带有ANY或ALL谓词的子查询,查询比CS系某一学生年龄小的学生姓名和年龄。
SELECTsname,Sage
ANY(SELECTSage
WHERESdept='
(2)用带有ANY或ALL谓词的子查询,查询其他系中比CS系所有学生年龄小的学生姓名和年龄。
SELECTsname,sage
WHERESage<
ALL(SELECTSage
WHERESdept='
ANDSdept<
>
'
4.带有EXISTS谓词的子查询
(1)用带有EXISTS谓词的子查询,查询没有选修1号课程的学生姓名。
WHERENOTEXISTS(SELECT*
WHEREcno=1ANDstudent.Sno=sc.Sno);
(2)用带有EXISTS谓词的子查询,查询与“刘晨”在同一个系学习的学生,要求查出学号,姓名,所在系。
SELECTsno,sname,sdept
FROMstudents1
WHEREEXISTS(SELECT*
FROMstudents2
WHEREs1.Sdept=s2.SdeptANDs2.sname='
实验实习日志
连接查询
2020.11.22
熟悉连接查询的使用,连接查询是关系数据库中最主要的查询,包括非等值连接查询、等值连接查询、自然连接查询、外连接查询、自身连接查询、复合条件连接查询等。
(一)、在连接“MySQL”中新建数据库“stuinfo”,并将数据库文件stuinfo.sql导入到该数据库之中。
(二)、完成如下查询
1.查询每个学生的学号,姓名,所在系,选修的课程号和成绩
SELECTsc.Sno,Sname,Sdept,Cno,Grade
FROMstudent,sc
WHEREstudent.Sno=sc.Sno;
2.查询数学系(MA)学生的学号,姓名,所在系,选修的课程号和成绩(在第一题的基础上增加限定条件)
WHEREstudent.Sno=sc.SnoANDSdept='
MA'
3.查询数学系(MA)学生的学号,姓名,所在系,选修的课程号,课程名和成绩(比第二题多查一个属性列‘课程名’,则多涉及一张表,应增加一个连接条件)
SELECTsc.Sno,Sname,Sdept,sc.Cno,Cname,Grade
FROMstudent,sc,course
WHEREstudent.Sno=sc.SnoANDsc.Cno=course.CnoANDSdept='
4.查询选修了2号课程的所有学生的姓名,性别,所在系
SELECTSname,Ssex,Sdept
WHEREstudent.Sno=sc.SnoANDCno=2;
5.查询选修了2号课程且成绩在80分以上的所有学生的姓名,性别,所在系及成绩
SELECTSname,Ssex,Sdept,Grade
WHEREstudent.Sno=sc.SnoANDCno=2ANDGrade>
80;
6.查询每一门课的间接先修课的课程号(即先修课的先修课)
SELECTFIRST.cno,SECOND.cpno
FROMcourseFIRST,courseSECOND
WHEREFIRST.cpno=SECOND.cno;
7.查询至少选修一门课程的女学生的姓名(使用groupby和having子句)
参考:
selectstudent.sname
fromstudent,sc
wherestudent.sno=sc.snoandstudent.ssex='
女'
groupbystudent.sno
havingcount(*)>
=1;
8.查询选修了信息系统课程的学生平均成绩
selectavg(grade)
fromsc,course
whereo=oandcname='
信息系统'
熟悉非等值连接查询、等值连接查询、自然连接查询、外连接查询、自身连接查询、复合条件连接查询等的使用。