数据库SQL查询例题及解答.docx

上传人:b****3 文档编号:1508014 上传时间:2022-10-22 格式:DOCX 页数:17 大小:792.56KB
下载 相关 举报
数据库SQL查询例题及解答.docx_第1页
第1页 / 共17页
数据库SQL查询例题及解答.docx_第2页
第2页 / 共17页
数据库SQL查询例题及解答.docx_第3页
第3页 / 共17页
数据库SQL查询例题及解答.docx_第4页
第4页 / 共17页
数据库SQL查询例题及解答.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据库SQL查询例题及解答.docx

《数据库SQL查询例题及解答.docx》由会员分享,可在线阅读,更多相关《数据库SQL查询例题及解答.docx(17页珍藏版)》请在冰豆网上搜索。

数据库SQL查询例题及解答.docx

数据库SQL查询例题及解答

数据库SQL查询例题及解答

1 实验目的

   1.熟悉数据库的交互式SQL工具。

   2. 熟悉通过SQL对数据库进行操作。

   3. 完成作业的上机练习。

2 实验工具sqlserver

    利用Sqlserver及其交互式查询工具-查询分析器来熟悉SQL。

3 实验内容和要求

1)实验内容:

创建数据库boat,包括Sailors,Boats,Reserves三个表,表结构如下:

Sailors(sid:

integer,sname:

string,rating:

integer,age:

real)

船员(船员编号,姓名,级别,年龄)

Boats(bid:

integer,bname:

string,color:

string)

船(船编号,名称,颜色)

Reserves(sid:

integer,bid:

integer,day:

date)

租赁(船员编号,船编号,日期)

(注:

下划线表示主键),并插入一定数据。

2)完成下列要求:

(1)查询所有船员的信息

(2)查询所有姓王的船员的信息

(3)查询租用过103号船的船员姓名

(4)查找租用过船只的船员编号

(5)查找rating>7且年龄>25的水手编号

(6)查找租用过红船和绿船的水手名字

(7)查找租用过红船或绿船的水手编号

(8)查找最年长的水手的年龄和名字

(9)在18岁以上水手中,对于每个rating级别中最少有两个水手以上的组中最年轻水手的年龄

(10)查找每条红色船只被租用的次数

(11)把30岁以上船员的级别调高一级

(12)删除所有年龄超过40岁的船员信息

(13)建立年龄超过25岁的船员的视图

(14)对(13)建立的视图,举一操作的例子(查询、删除、修改均可)

2)要求:

a.建立boat数据库的SQL脚本,插入所有数据项的SQL脚本(包括所有的测试数据)。

b.记录完成查询要求的SQL语句脚本。

c.记录完成查询的查询结果。

《数据库系统概论》实验报告

题目:

交互式SQL

学号:

日期:

2012年4月29日

实验内容与完成情况:

(一)实验所用数据(截图):

Sailors表

Boats表

Reserves表

(二)实验内容和要求

1)实验内容:

创建数据库boat,包括Sailors,Boats,Reserves三个表,表结构如下:

Sailors(sid:

integer,sname:

string,rating:

integer,age:

real)

船员(船员编号,姓名,级别,年龄)

Boats(bid:

integer,bname:

string,color:

string)

船(船编号,名称,颜色)

Reserves(sid:

integer,bid:

integer,day:

date)

租赁(船员编号,船编号,日期)

(注:

下划线表示主键),并插入一定数据。

2)完成下列要求:

(1)查询所有船员的信息。

1.正确结果:

2.实现语句:

select*fromSailors

3.执行结果:

4.正确,无问题

(2)查询所有姓李的船员的信息

1.正确结果:

sid

sname

rating

age

2

李世民

2

20

4

李刚

4

25

13

李刚

5

27

2.实现语句:

select*

fromSailors

wheresnamelike'李%'

3执行结果:

4.正确,无问题

(3)查询租用过6号船的船员姓名

1.正确结果:

sname

曹操

勾践

2.实现语句:

selectdistinctsname

fromSailors,Reserves

whereSailors.sid=Reserves.sid

andbid=6

3执行结果

4.正确,无问题

(4)查找租用过船只的船员编号

1.正确结果:

sid

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

2.实现语句:

selectdistinctsid

fromReserves

3.执行结果

4.正确,无问题

(5)查找rating>7且年龄>25的水手编号

1.正确结果:

sid

7

2.实现语句:

selectsid

fromSailors

whererating>7andage>25

3执行结果:

4.正确,无问题

(6)查找租用过红船和白船的水手名字

1.正确结果:

sname

张飞

2.实现语句:

selectsid

fromSailors

whereSailors.sid=Reserves.sidand

Boats.bid=Reserves.bidandcolor='红'

intersect

selectsid

fromSailors

whereSailors.sid=Reserves.sidand

Boats.bid=Reserves.bidandcolor='白'

3执行结果

4.无法执行,改变实现语句

【2.实现语句:

selectsname

fromSailors,Reserves,Boats

whereSailors.sid=Reserves.sidand

Boats.bid=Reserves.bidandcolor='红'

Andsnamein

(selectsname

fromSailors,Reserves,Boats

whereSailors.sid=Reserves.sidand

Boats.bid=Reserves.bidandcolor='白')

3.执行结果:

4.正确。

(7)查找租用过红船或绿船的水手编号

1.正确结果:

sid

1

3

6

8

10

17

16

14

2.实现语句:

selectdistinctsid

fromboats,Reserves

whereboats.bid=Reserves.bidand

color='绿'orcolor='红'

3,执行结果

4.执行错误,改变实现语句:

【2.实现语句:

selectdistinctsid

fromboats,Reserves

whereboats.bid=Reserves.bidand

(color='绿'orcolor='红');

3.执行结果:

4.正确。

(8)查找最年长的水手的年龄和名字

1.正确结果:

Sname

Age

马克思

41

2.实现语句:

selectsname,age

fromsailors

whereage>=all(selectagefromsailors)

3执行结果

4.正确,无问题

(9)在18岁以上水手中,对于每个rating级别中最少有两个水手以上的组中最年轻水手的年龄

1.正确结果:

Rating

Age

2

20

3

23

4

25

5

27

6

31

7

37

2.实现语句:

selectrating,age

fromsailorsx

whereage=(selectmin(age)

fromsailorsy

whereage>20and

y.rating=x.rating

groupbyrating

havingcount(sid)>1)

3执行结果

4.正确,无问题。

(10)查找每条红色船只被租用的次数

1.正确结果:

bid

count

1

2

8

1

2.实现语句:

selectboats.bid,count(sid)

fromReserves,boats

whereboats.bid=Reserves.bid

andcolor='红'

groupbyboats.bid

3执行结果

4.注意bid前面需要加boats以加以明确。

(11)把30岁以上船员的级别调高一级

1.正确结果:

2.实现语句:

updatesailors

setrating=rating+1

whereage>30select*fromsailors

3执行结果:

(12)删除所有年龄超过40岁的船员信息

1.正确结果:

2.实现语句:

delete

fromsailors

whereage>40

delete

fromReserves

wheresidin(selectsidfromsailorswhereage>40)

select*fromsailorsselect*fromReserves

3执行结果:

4.正确,无问题。

(13)建立年龄超过25岁的船员的视图

1.实现语句:

createviewis_sailors

as

selectsid,sname,rating,age

fromsailors

whereage>25

2.执行结果

(14)对(13)建立的视图,举一操作的例子(查询、删除、修改均可)

1.实现语句:

select*

fromis_sailors

whererating>5

2.执行结果:

(三)出现的问题

1.数据写入的时候没有注意导致某些问题无法解决。

2.交运算无法执行。

3.and与or的运算顺序搞错。

4.出现指代不明的情况。

(四)解决的问题

1.修改数据

2.查阅电脑,问题为:

3.如果想先算or带括号,如题(7)。

4.带上其所属的表,如有连接的话,select后面应该加sailors.bid而不是只有bid。

(五)未解决的问题

1.修改一旦执行就不能返回了么?

2.

 

另:

由于数据输入的原因,为使结果更据代表性,某些题目可能做了修改,但不改变题目考察意图。

 

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

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1