第三章数据库查询
- 格式:ppt
- 大小:338.00 KB
- 文档页数:66
医学信息检索练习题主编:华北煤炭医学院医学信息检索教研室第三章常用中文数据库一、名词解释1. 二次检索2. 加权检索二、填空题1.中国生物医学文献数据库的主题标引依据、________________。
2.中文科技期刊数据库的回溯期是年。
3.中国学术期刊网络出版总库中的检索项“主题”包括、、。
4.万方数字化期刊的回溯是年。
三、判断题:( ) 1. CNKI是中国期刊全文数据库的缩写名称。
( ) 2. 在CBM数据库中,若要了解某一期刊的相关信息,可以在基本检索界面选择“刊名”字段,进行检索。
( ) 3. 我们可以利用CBM的“E-mail”功能将检索结果发送至自己的邮箱,但是发送的结果最多不能超过500条。
( ) 4. 中国学术文献网络出版总库的检索首页默认为跨库检索,即在系统默认的多个数据库中同时检索。
( ) 5. 万方数字化期刊中的全文有PDF和CAJ两种格式。
( ) 6. 中国学术期刊网络出版总库和中文科技期刊数据库(全文版)的全文都不能批量下载。
四、选择题( ) 1.下列关于中国学术文献网络出版总库检索结果下载的说法正确的是a. 题录可以批量下载,但每次不能超过50条。
b. 题录可以批量下载,但每次不能超过200条。
c. 全文可以批量下载,但每次不能超过50篇。
d. 全文每次只能下载1篇。
( ) 2. 从中国学术期刊网络出版总库中检索得到的全文可以用下列哪种(些)阅读器阅读?a. CAJViewerb. Adobe Readerc. SSReaderd. Apabi Reader( ) 3.下列数据库中,回溯期最早的是a. 中国生物医学文献数据库b. 中文科技期刊数据库c. 中国博士学位论文全文数据库d. 中国重要会议论文全文数据库( ) 4. 在我们所学数据库中的“二次检索”和“在结果中检索”是指:a. 在已检出文献的基础上,再加入新的词进行进一步的检索,相当于逻辑组配符ANDb. 在已检出文献的基础上,再加入新的词进行进一步的检索,相当于逻辑组配符ORc. 在已检出文献的基础上,再加入新的词进行进一步的检索,相当于逻辑组配符NOTd. 在已检出文献的基础上,再加入新的词进行进一步的检索,逻辑组配符可任意选择AND、OR、NOT( ) 5. 以下中文数据库中,哪个具有主题词检索功能a. 中国生物医学文献数据库b. 中国学术期刊网络出版总库c. 中文科技期刊数据库d. 万方数字化期刊五、简答题1.简述中国生物医学文献数据库的检索途径。
3-2对于教务管理数据库的三个基本表S(SNO,SNAME, SEX, AGE,SDEPT)SC(SNO,CNO,GRADE)C(CNO,CNAME,CDEPT,TNAME)试用SQL的查询语句表达下列查询:⑴ 检索LIU老师所授课程的课程号和课程名。
⑵ 检索年龄大于23岁的男学生的学号和姓名。
⑶ 检索学号为200915146勺学生所学课程的课程名和任课教师名。
⑷ 检索至少选修LIU老师所授课程中一门课程的女学生姓名。
⑸ 检索WANG同学不学的课程的课程号。
⑹检索至少选修两门课程的学生学号。
⑺检索全部学生都选修的课程的课程号与课程名。
⑻ 检索选修课程包含LIU老师所授课程的学生学号。
解:(1)SELECT C#,CNAMEFROM CWHERETEACHER=U';(2)SELECT S#,SNAMEFROM SWHERE AGE>23 AND SEXM ;(3)SELECT CNAME, TEACHERFROM SC,CWHERE SC.C#=C.C# AND S#=200915146⑷SELECT SNAME (连接查询方式)FROM S,SC,CWHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX= F' AND TEACHER=LIU';或:SELECT SNAME (嵌套查询方式)FROM SWHERE SEX=F' AND S# IN(SELECT S#FROM SCWHERE C# IN (SELECT C#FROM CWHERE TEACHER=U'))或:SELECT SNAME (存在量词方式)FROM SWHERE SEX=F' AND EXISTS(SELECT*FROM SCWHERE SC.S#=S.S#AND EXISTS(SELECT *FROM CWHERE C.C#=SC.C# AND TEACHER=I'))(5) SELECT C#FROM CWHERE NOT EXISTS(SELECT *FROM S,SCWHERE S.S#=SC.S# AND SC.C#=C.C# AND SNA MWANG));(6) SELECT DISTINCT X.S#FROM SC AS X , SC AS YWHERE X.S#=Y.S# AND X.C#!=Y.C#;⑺ SELECT C#.CNAMEFROM CWHERE NOT EXISTS (SELECT *FROM SWHERE NOT EXISTS(SELECT *FROM SCWHERE S#=S.S# AND C#=C.C#));(8) SELECT DISTINCT S#FROM SC AS XWHERE NOT EXISTIS(SELECT *FROM CWHERE TEACHE R=U' AND NOT EXISTS(SELECT *FROM SC AS YWHERE Y.S#=X.S# AND Y.C#=C.C#));3-3试用SQL查询语句表达下列对3.2题中教务管理数据库的三个基本表S、SC、C查询:⑴ 统计有学生选修的课程门数。
3.2 对于教学数据库的三个基本表S(S#,SNAME,AGE,SEX)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)试用SQL的查询语句表达下列查询:3.2.1检索年龄小于17岁的女学生的学号和姓名select s#,sname from Swhere age<17 and sex=F;3.2.2检索男生所学课程的课程号和课程名select c#,cname from Cwhere c# in (select distinct c#from SCwhere s# in (select s# from S where sex=M)) 3.2.3检索男生所学课程的任课老师的工号和姓名实用文档select t#,tname from Twhere t# in(select distinct t#from C实用文档where c# in(select distinct c#from SCwhere s# in(select s#from Swhere sex=1)));3.2.4检索至少选修两门课程的学生的学号select s#from SCgroup by s#having count(c#)>=2;3.2.5检索至少有学号为S2和S4所学的课程和课程名select c#,cnamefrom C实用文档where c# in((select c#from sc where s#='S2')intersect实用文档(select c# from sc where s#='S4') );3.2.6检索‘WANG’同学不学的课程号select c# from cexcept(select distinct c#from scwhere s# =(select s# from s where sname='WANG'));3.2.7检索全部学生都选修的课程号和课程名select c#,cnamefrom cwhere not exists(select s#from swhere c.c# not in (select c# from sc where sc.s#=s.s# ));实用文档3.2.8检索选修课程包含'LIU'老师所授课程的全部课程的学生的学号和姓名select s#,snamefrom s实用文档where not exists((select c#from cwhere t#=(select t#from twhere tname='LIU')) except(select c# from sc wheresc.s#=s.s#) );3.4 设有两个基本表R(A,B,C)和S(A,B,C),试用SQL查询语句表达下列关系代数表达式:① R∪S ② R∩S ③ R-S ④R×S ⑤πA,BπB,C(S)⑥π1,6(σ3=4(R×S)⑦π1,2,3(R S)⑧R÷πC(S)解:①(SELECT * FROM R)UNION(SELECT * FROM S);②(SELECT * FROM R)3=3实用文档INTERSECT(SELECT * FROM S);③(SELECT * FROM R)MINUS(SELECT * FROM S);④SELECT *实用文档FROM R, S;⑤SELECT R.A, R.B, S.CFROM R, SWHERE R.B=S.B;⑥SELECT R.A, S.CFROM R, SWHERE R.C=S.A;⑦SELECT R.* (R.*表示R中全部属性)FROM R, SWHERE R.C=S.C;⑧R÷πC(S)的元组表达式如下:{ t |(∃u)(∀v)(∃w)(R(u)∧S(v)∧R(w)∧w[1]=u[1] ∧w[2]=u[2] ∧w[3]=v[3] ∧t[1]=u[1] ∧t[2]=u[2])}据此,可写出SELECT语句:SELECT A, BFROM R RXWHERE NOT EXISTS实用文档( SELECT *FROM SWHERE NOT EXISTS( SELECT *FROM R RY实用文档WHERE RY.A=RX.A AND RY.B=RX.B ANDRY.C=S.C));3.6 试叙述SQL语言的关系代数特点和元组演算特点。
第三章关系数据库标准查询语言SQL●3.1 SQL概述●3.2数据定义语言(DDL)●3.3 SQL的数据查询(DML)●3.4 SQL的数据更新(DML)●3.5视图●3.6数据控制语言(DCL)●3.7嵌入式SQL语言●3.8 存储过程*(T-SQL)3.1 SQL概述●SQL(Standard/Structured Query Language)是关系数据库标准●1986年10月,美国国家标准局(American National Standard Institute ANSI)公布第一个标准ANSI X3.135-1986,国际标准化组织(International Organization for Standardization ISO)也通过这一标准称SQL-86●1989年ANSI再次公布标准ANSI X3.135-1989 ,ISO 相应SQL-89●1999年,ISO公布SQL-1999(SQL99,SQL3)●2003年,ISO公布SQL-20033.1.1 SQL语言的组成●数据定义(DDL Data Definition/Description Language )–定义数据库的逻辑结构,包括基本表、视图、索引等●数据操纵(DML Data Manipulation Language)–包括查询和更新,更新又包含插入、删除和修改●数据控制(DCL Data Control Language )–授权、完整性规则描述、事务控制等●嵌入式SQL(ESQL)–在宿主语言中使用SQL的规则3.1.2 SQL语言的特点●综合统一:集DDL、DML、DCL于一体,语言风格统一●面向集合的操作方式:操作对象、查询结果都可以是元组的集合●高度非过程化:存取路进透明。
●以统一的语法结构提供两种使用方式:自含式、嵌入式●语言简洁,易学易用,主要共使用11个关键词–DDL:create drop alter–DML:select insert delete update–DCL:grant revoke commit rollback3.2数据定义语言(DDL)3.2.1定义、删除与修改基本表定义基本表语法CREATE TABLE <表名> (<列名><数据类型>[列级约束条件][,<列名><数据类型>[列级约束条件]... ...][,<表级完整性约束条件>])例:CREATE TABLE S(S#CHAR(5)NOT NULL UNIQUE,SN CHAR(20),SA INT,SD CHAR(3),PRIMARY KEY (S#));修改表语法ALTER TABLE <表名>[ADD <新列名><数据类型>[列级约束条件]] [DROP <完整性约束条件>][MODIFY <列名><数据类型>];例:ALTER TABLE S ADD SCome DATE;ALTER TABLE S MODIFY SA SMALLINT; ALTER TABLE S DROP UNIQUE(S#);删除表语法DROP TABLE <表名>例:DROP TABLE S3.2.2建立和删除索引索引的建立语法CREATE [UNIQUE][CLUSTER] INDEX <索引名>ON <表名>(<列名1>[<次序>][,<列名2><次序>... ...])<次序>可以是ACS和DESC例:CREATE UNIQUE INDEX S_S# ON S(S#)CREATE UNIQUE INDEX C_C# ON C(C#)CREATE UNIQUE INDEX SC_S#_C# ON SC(S#ASC,C# DESC)索引的删除语法DROP INDEX [<表名>.]<索引名>DROP INDEX [S.]S_S#3.3 SQL的数据查询(DML)●关系代数表达式∏A1,A2,.....An(δF(R1×R2×... ...×R n)) ●SQL 语句SELECT A1,A2,......A nFROM R1,R2,... ...R mWHERE F详细语法SELECT [ALL|DISTINCT] {*|<目标表达式1> [,<目标表达式2> ... ...]}FROM <表名或视图名1> [,<表名或视图名2>]... ...[WHERE <条件表达式>][GROUP BY <列名表达式1>[,<列名表达式2>]][HAVING <条件表达式> ][ORDER BY <列名表达式1> [ASC|DESC]], <列名表达式2> [ASC|DESC]]执行过程1)先按WHERE子句条件从FROM子句指定的表/视图中找出满足条件的元组(选择);2)再按SELECT子句中的目标表达式选择出元组中的属性,形成结果表(投影);3)如有GROUP子句,则将结果按<列名表达式>的值分组,该<列名表达式>值相等的元组为一个组,通常会在每组中使用聚合函数。