上机试题3及答案.docx

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库上机练习3

一、 建立数据库TGDB ;

二、 为描述作者向期刊的投稿情况,建立了三张表:作者表、期刊表和投稿表。期刊表 用于描述期刊的基木信息,作者表用于描述作者的基木信息,投稿表用于描述作者向期刊的 投稿情况。在查询分析器中写出创建这三张表的语句。三张表的结构如下:

作者表(ZZB )

作者号(zzh ) 普通字符编码定长字符型,长度为4,主码;

作者名(zzm ) 普通字符编码可变长字符型,最多5个汉字,取值不重复。

2. 期刊表(QKB )

期刊号(qkh ) 普通字符编码定长字符型,长度为4,主码; 期刊名(qkm ) 普通字符编码可变长字符型,最大长度为20,非空; 类别(lb )

(说明:“是”表示此期

刊为核心期刊,“否”表示此期刊为非核心期刊)。 版面费(bmf ) 整型。

普通字符编码定长字符型,长度为4,非空; 普通字符编码定长字

符型,长度为4,非空; 小日期时间型,非空,默认值为系统当前时间; 普通字符编码定长字符型,长度为50; 普通字符编码定长字符型,长度为6,取值范围为{通过,未通过},

其屮,主码为(作者号,期刊号,投稿日期),

“作者号”为引用作者表的“作者号”的外

码; “期刊号”为引用期刊表的''期刊号”的

外码。

三、运行C:\exam.exe 程序解压缩数据文件(可解压到任何地方),解压缩的密码为 “dbok”。稠 SQL Server 的DTS 工具,将“期刊表.txt”文件中的数据导入到“期刊表” 中,将解压后的“作者与投稿表.xls”文件中的数据分别导入到“作者表”和“投稿表” 中。

四、利用第二题的三张表,在杳询分析器屮写出实现如下要求的SQL 语句(注:要求 下述语句均使用一条SQL 语句完成)

1. 杳询2006年以后(包括2006年)的投稿情况,列出作者名、期刊名、文章名称和投 稿口期。

2. 杳询姓哪个姓的作考最多,列出这个姓氏和姓这个姓氏的作者人数,包含并列的情况。

3. 查询作者“杨伍华”没有投过稿的核心期刊的名称。

4. 杏询投稿次数超过2次(包括2次)且版面费总金额大于100()的期刊的投稿情况,显 示作者号,期刊号,审稿通过总次数,版面费总金额(说明:只有审稿结果为“通普通字符编码定长字符型,长度为2,取值为“是”或“否”

3.投稿表(TGB )

作者号(zzh ) 期

刊号(qkh ) 投稿日期(tgrq ) 文章名称

(wzmc ) 审稿结果

(sgjg ) 默认值为“未

通过”。

过”时, 作者才需向期刊缴纳相应版面费)。

5.杳询全体作者(包括还没有投过稿的作者)的总投稿次数、总人数。

6.向投稿表屮插入一条记录,作者号为“zzOl”,期刊号为“qk02”,文章名称为“地铁限界系统的研究”,投稿口期和审稿结果为默认值。

7.删除投稿表中2000年以前(包括2000年),期刊名为“哲学研究”屮审稿未通过的的投稿记录。

CREATE TABLE ZZB (

zzh char(4) PRIMARY KEY,

zzm char(10) UNIQUE

)

CREATE TABLE QKB (

qkh char(4) PRIMARY KEY,

qkm varchar(20) NOT NULL,

lb char(2) CHECK(lb in('是J否')),

bmf int

)

CREATE TABLE TGB (

zzh char(4),

qkh char(4),

tgrq smalldatetime,

wzmc char (50),

sgjg char (6) CHECK(lb ir)C通过;味通过')),

PRIMARY KEY(zzh, qkh, tgrq),

FOREIGN KEY (zzh) REFERENCES ZZB(zzh),

FOREIGN KEY (qkh) REFERENCES QKB(qkh),

)

四、1

SELECT zzm,qkm,wzmc,tgrq

FROM ZZB,QKB,TGB

WHERE ZZB.zzh=TGB.zzh AND QKB.qkh=TGB.qkh AND YEAR(tgrq)>=2006

2

SELECT SUBSTRING(zzm,0,2)姓氐COUNT(SUBSTRING(zzm,0,2))人数

FROM ZZB

WHERE zzh IN (SELECT zzh FROM TGB)

GROUP BY SUBSTRING(zzm,0,2)

ORDER BY 人数DESC

3

SELECTqkm

FROM QKB

WHERE qkh NOT IN (SELECT qkh

FROM TGB,ZZB

WHERE TGB.zzh=ZZB.zzh AND zzm-杨伍华')

AND LB='是'

4

SELECTTGB.ZZH,TGB.QKH,COUNT(TGB.qkh)通过次数,SUM(bmf)版面费

FROM TGB,ZZB,QKB

WHERE TGB.zzh=ZZB.zzh AND TGB.qkh二QKB.qkh AND TGB.zzh IN (SELECT zzh FROM TGB GROUP BY zzh HAVING COUNT(zzh)>=3)

GROUP BY TGB.zzh,TGB.qkh,bmf HAVING COUNT(TGB.qkh)>=2 AND SUM(bmf)> 1000

5

SELECT COUNT(wzmc)总投稿次数,COUNT(DISTINCT ZZB.zzh)总人数

FROM ZZB LEFT JOIN TGB ON (TGB.zzh=ZZB.zzh)

相关文档
最新文档