数据库的简单查询和连接查询实验.docx

上传人:b****4 文档编号:4983850 上传时间:2023-05-07 格式:DOCX 页数:14 大小:633.50KB
下载 相关 举报
数据库的简单查询和连接查询实验.docx_第1页
第1页 / 共14页
数据库的简单查询和连接查询实验.docx_第2页
第2页 / 共14页
数据库的简单查询和连接查询实验.docx_第3页
第3页 / 共14页
数据库的简单查询和连接查询实验.docx_第4页
第4页 / 共14页
数据库的简单查询和连接查询实验.docx_第5页
第5页 / 共14页
数据库的简单查询和连接查询实验.docx_第6页
第6页 / 共14页
数据库的简单查询和连接查询实验.docx_第7页
第7页 / 共14页
数据库的简单查询和连接查询实验.docx_第8页
第8页 / 共14页
数据库的简单查询和连接查询实验.docx_第9页
第9页 / 共14页
数据库的简单查询和连接查询实验.docx_第10页
第10页 / 共14页
数据库的简单查询和连接查询实验.docx_第11页
第11页 / 共14页
数据库的简单查询和连接查询实验.docx_第12页
第12页 / 共14页
数据库的简单查询和连接查询实验.docx_第13页
第13页 / 共14页
数据库的简单查询和连接查询实验.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库的简单查询和连接查询实验.docx

《数据库的简单查询和连接查询实验.docx》由会员分享,可在线阅读,更多相关《数据库的简单查询和连接查询实验.docx(14页珍藏版)》请在冰点文库上搜索。

数据库的简单查询和连接查询实验.docx

数据库的简单查询和连接查询实验

1.1实验2数据库的简单查询和连接查询实验

1.实验目的

本实验的目的是使学生掌握SQLServer查询分析的使用方法,加深对SQL和SQL语言的查询语句的理解。

熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

2.实验内容

0.1新建数据库

图1:

创建数据库“Yangl_Test2”

USEmaster

GO

CREATEDATABASEYangl_Test2

ON

(NAME=Yangl_Test2_Data,

FILENAME='D:

\数据库\Yangl_Test2_Data.mdf',

SIZE=10,

MAXSIZE=50,

FILEGROWTH=5)

LOGON

(NAME='Yangl_Test2_Log',

FILENAME='D:

\数据库\Yangl_Test2_Log.ldf',

SIZE=5MB,

MAXSIZE=25MB,

FILEGROWTh=5MB)

GO

0.2创建数据表

图2:

创建数据表“Yangl_Students”

CREATETABLEYangl_Students

yl_SnoCHAR(5)PRIMARYKEY,

yl_SnameCHAR(15)NOTNULL,

yl_SsexCHAR

(2)DEFAULT'男',

yl_DnoCHAR(5),

yl_DnameCHAR(20)

 

图3:

创建数据库“Yangl_Courses”

CREATETABLEYangl_Courses

yl_CnoCHAR(6)PRIMARYKEY,

yl_CnameCHAR(20),

yl_Pre_CnoCHAR(6),

yl_Pre_CnameCHAR(20),

yl_GreditsINT

图4:

创建数据库“Yangl_Reports”

CREATETABLEYangl_Reports

yl_SnoCHAR(5),

yl_CnoCHAR(6),

yl_GradeDECIMAL(4,2)CHECK(yl_Grade>=0ANDyl_Grade<=100),

PRIMARYKEY(yl_Sno,yl_Cno),

CONSTRAINTyl_Student_ReportFOREIGNKEY(yl_Sno)REFERENCESYangl_Students,

CONSTRAINTyl_Report_CourseFOREIGNKEY(yl_Cno)REFERENCESYangl_Courses

0.3插入数据

图5:

插入数据至表“Yangl_Students”

INSERTINTOYangl_StudentsVALUES('95001','李勇','男','001','计算机系')

INSERTINTOYangl_StudentsVALUES('95002','刘晨','女','003','土木系')

INSERTINTOYangl_StudentsVALUES('95003','王名','女','002','数学系')

INSERTINTOYangl_StudentsVALUES('95004','张立','男','003','土木系')

INSERTINTOYangl_StudentsVALUES('95005','李明','男','001','计算机系')

INSERTINTOYangl_StudentsVALUES('95006','张小梅','女','003','土木系')

INSERTINTOYangl_StudentsVALUES('95007','封晓文','女','002','数学系')

 

图6:

插入数据至表“Yangl_Courses”

INSERTINTOYangl_CoursesVALUES('C01','数据库','C05','数据结构',4)

INSERTINTOYangl_CoursesVALUES('C02','数学',NULL,NULL,2)

INSERTINTOYangl_CoursesVALUES('C03','信息系统','C01','数据库',4)

INSERTINTOYangl_CoursesVALUES('C04','操作系统','C06','数据处理',3)

INSERTINTOYangl_CoursesVALUES('C05','数据结构','C07','PASCAL语言',4)

INSERTINTOYangl_CoursesVALUES('C06','数据处理',NULL,NULL,2)

INSERTINTOYangl_CoursesVALUES('C07','PASCAL语言','C06','数据处理',4)

 

图7:

插入数据至表“Yangl_Reports”

INSERTINTOYangl_ReportsVALUES('95001','C01',92)

INSERTINTOYangl_ReportsVALUES('95001','C02',85)

INSERTINTOYangl_ReportsVALUES('95001','C03',88)

INSERTINTOYangl_ReportsVALUES('95002','C02',90)

INSERTINTOYangl_ReportsVALUES('95002','C03',80)

INSERTINTOYangl_ReportsVALUES('95003','C01',78)

INSERTINTOYangl_ReportsVALUES('95003','C02',80)

INSERTINTOYangl_ReportsVALUES('95004','C01',90)

INSERTINTOYangl_ReportsVALUES('95004','C04',60)

INSERTINTOYangl_ReportsVALUES('95005','C01',80)

INSERTINTOYangl_ReportsVALUES('95005','C03',89)

INSERTINTOYangl_ReportsVALUES('95006','C03',80)

INSERTINTOYangl_ReportsVALUES('95007','C04',65)

1.简单查询操作。

该实验包括投影、选择条件表达,数据排序,使用临时表等。

具体完成以下题目,将它们转换为SQL语句表示,在学生选课数据库中实现其数据查询操作。

1.求数学系学生的学号和姓名

图8:

求数学系学生的学号和姓名

SELECTyl_Sno,yl_Sname

FROMYangl_Students

WHEREyl_Dname='数学系'

2.求选修了课程的学生学号

图9:

求选修了课程的学生学号

SELECTDISTINCTyl_Sno

FROMYangl_Reports

 

3.求选修课程号为‘C01’的学生号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。

图10:

求选修课程号为‘C01’的学生号和成绩

SELECTyl_Sno,yl_Grade

FROMYangl_Reports

WHEREyl_Cno='C01'

ORDERBYyl_GradeDESC,yl_Sno

 

4.求选修课程号为‘C01’且成绩在80~90之间的学生学号和成绩,并成绩乘以0.8输出。

图11:

求选修课程号为‘C01’且成绩在80~90之间的学生学号和成绩

SELECTyl_Sno,yl_Grade*0.8

FROMYangl_Reports

WHEREyl_Cno='C01'ANDyl_GradeBETWEEN80AND90

 

5.求数学系或计算机系姓张的学生的信息。

图12:

求数学系或计算机系姓张的学生的信息

SELECTYangl_Students.*

FROMYangl_Students

WHEREyl_DnameIN('数学系','计算机系')

ANDyl_SnameLIKE'张%'

6.求缺少了成绩的学生的学号和课程号

图13:

求缺少了成绩的学生的学号和课程号

SELECTyl_Sno,yl_Cno

FROMYangl_Reports

WHEREyl_GradeISNULL

 

2.连接查询操作。

该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。

 

7.查询每个学生的情况以及他所选修的课程

图14:

查询每个学生的情况以及他所选修的课程

SELECTYangl_Students.yl_Sno,yl_Sname,yl_Ssex,yl_Dname,yl_Cname,yl_Grade

FROMYangl_Students,Yangl_Reports,Yangl_Courses

WHEREYangl_Students.yl_Sno=Yangl_Reports.yl_SnoANDYangl_Reports.yl_Cno=Yangl_Courses.yl_Cno

8.求学生的学号、姓名、选修的课程及成绩

图15:

求学生的学号、姓名、选修的课程及成绩

SELECTYangl_Students.yl_Sno,yl_Sname,yl_Cname,yl_Grade

FROMYangl_Students,Yangl_Course,Yangl_Courses

WHEREYangl_Students.yl_Sno=Yangl_Reports.yl_Sno

ANDYangl_Reports.yl_Cno=Yangl_Courses.yl_Cno

9.求选修课程号为‘C01’且成绩在90以上的学生学号、姓名和成绩

SELECTYangl_Students.yl_Sno,yl_Sname,yl_Grade

FROMYangl_Students,Yangl_Reports

WHEREYangl_Students.yl_Sno=Yangl_Reports.yl_SnoANDyl_Grade>=90ANDyl_Cno='C01'

图16:

求选修课程号为‘C01’且成绩在90以上的学生学号、姓名和成绩

 

10.查询每一门课程的间接先行课(即先行课的先行课)

图17:

查询每一门课程的间接先行课

SELECTA.yl_Cno,A.yl_Cname,A.yl_Pre_Cno,A.yl_Pre_Cname

FROMYangl_CoursesA

3.实验方法

将查询需求用SQL语言表示;在SQLServer查询分析的输入区中输入SQL查询语句;设置查询分析的结果区为StandardExecute(标准执行)或ExecutetoGrid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。

4.实验体会

第一次使用SQLsever2014版本完成实验,除了掌握了各种简单查询操作之外还复习了一些连接查询。

实验并不是很难,只要仔细阅读书上例子就可以了。

除此之外最大的收获便是处理了一些个性化的问题,如下

图18:

要引用的列数必须与已引用列数匹配

出现这种情况,大多是因为出现了联合主键问题,即被引用的表中存在两个主键,但是要引用的表需要引用被引用表中的一个主键属性时,就会出现这样的报错。

解决这种问题的办法有修改被引用的表的主键为一个或者要引用的表将被引用的表的两个主键全部引用。

此次实验还有一个很大的不足,就是没有将题目仔细的阅读完便开始做题了。

导致插入的数据并不是很明显,反映不出查询的功能是不是正确实现了。

所以就需要修改数据,导致工作量加大。

图19:

修改数据,方便寻找计算机姓“张”同学

图20:

修改数据,方便寻找没有成绩的同学

图21:

修改数据,方便寻找数学系姓“张”同学

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2