数据库原理实验3指导书
《数据库原理与应用》实验报告三及答案

结果:
警告:聚合或其他SET操作消除了Null值。
学生号选课门数平均分所选学分
--------- ----------- ---------------------- -----------
081220101 669 22
(1行受影响)
4、思考题
1)存储过程和触发器的异同点?
二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)
1、计算机操作系统要求在windows XP以上。
2、并要求SQL Server软件2000以后版本。
三、实验内容及要求
利用实验指导书中的关系数据库完成下面题目:
1、说明下面代码段的功能
LE (SELECT____avg________(NormalMark) FROMstudent_course)<80
BEGIN
if (SELECT MAX(NormalMark) FROMstudent_course)>____95_____
BREAK
ELSE
___UPDATE student_course
case trank
when‘教授’then‘高级职称’
when‘讲师’then‘中级职称’
else
‘初级职称’
end
from teacher
答:在教师表中选取姓名和性别两列,并给每个教师分等级;
2、完成下面代码的书写
计算student_course表的平时分数列的平均值。如果小于80,则分数增加其值的5%;如果分数的最高值超过95,则终止该操作。在以下代码划线处填入适当的内容以完成上述功能。
SET NormalMark = NormalMark *1.05
数据库实验指导(071125)

《数据库系统原理》实验指导书索剑2007-11实验1:数据库模式设计及建立(2学时)实验目的:1.掌握数据库模式设计及建立的方法,建立数据库及关系2.比较SQL命令方式和可视化环境管理器方式设计的异同点3.熟悉 SQL SERVER 的企业管理器和查询分析器实验类型:验证实验内容:1.在SQL Server环境中建立“学生-课程”数据库2.使用SQL语言及可视化环境建立“学生-课程”数据库中的表3.观察“学生-课程”数据库的E-R图、逻辑模式以及文件存储之间的联系操作步骤:1.描述教材P59中所叙述的“学生-课程”数据库概念模式2.仔细分析“学生-课程”数据库关系逻辑模式(尤其是实体完整性、参照完整性规则)Student(学生表):Sno Sname Ssex Sage Sdept95001 李勇男20 CS95002 刘晨女19 IS95003 王敏女18 MA95004 张立男18 IS95005 王强男17 IS95015 张三男20 CS95019 李四男20 CS95020 陈冬男18 ISCourse(课程表):Cno Cname Cpno Ccredit1 数据库 5 42 数学 23 信息系统 1 44 操作系统 6 35 数据结构7 46 数据处理 27 Pascal语言6 4SC(选修表):Sno Cno Grade95001 1 6595001 2 8895001 3 5795001 4 7995001 5 4595001 6 9095001 7 8195002 2 9095002 3 8095002 4 5595003 2 095019 2 6695020 13.熟悉SQL SERVER的企业管理器和查询分析器4.在企业管理器可视化环境下创建“学生-课程”数据库,仔细观察物理模式的形成过程5.在可视化环境下建立如上所述关系模式,建立相应的实体、参照完整性,添加关系数据,仔细观察逻辑模式的形成过程6.启动“查询分析器”,编制SQL语言再次实现上述过程。
《数据库系统原理》实验指导书

《数据库系统原理》实验指导书《数据库系统原理》实验指导书实验1 熟悉SQL Server 2000环境及数据库⽂件管理⼀、实验⽬的1、掌握登录SQL Server 2000的⽅法,熟悉SQL Server实⽤⼯具的使⽤;2、了解SQL Serve数据库的存储结构,掌握估算数据库⼤⼩技术;3、掌握创建数据库技术,掌握扩⼤和压缩数据库技术;4、掌握使⽤企业管理器⼯具和T-SQL语句及系统存储过程对数据库进⾏管理。
⼆、实验要求1、熟悉SQL Server 2000的⼯作环境,了解SQL Server主要管理⼯具的⽤途和使⽤⽅法。
2、掌握在SQL Server 2000环境下,利⽤企业管理器和T-SQL语⾔创建和管理数据库的⽅法。
三、实验设备、环境设备:奔腾II或奔腾II以上计算机环境:WINDOWS 98或WINDOWS NT、SQL SERVER 2000中⽂版四、实验原理、⽅法上机操作五、实验步骤及内容(⼀)实验步骤1、教师讲授2、教师演⽰3、学⽣实际操作(⼆)实验内容1、熟悉SQL Server 2000管理⼯具(1)企业管理器(Enterprise Manager)(2)查询分析器(Query Analyzer)(3)服务管理器(Service Manager)(4)事件探查器(Profiler)(5)导⼊和导出数据(Import and Export Data)(6)SQL Server其他管理⼯具2、数据库⽂件管理(1)数据库的创建和删除。
①在企业管理器中建⽴⼀个图书读者库。
图书读者数据库中将包括⼀个数据⽂件和⼀个⽇志⽂件,各⽂件的属性见表1-1。
②删除上题所建的数据库然后⽤T-SQL语句重新创建。
(2)修改数据库①查看图书读者数据库的属性及数据⽂件和⽇志⽂件的空间使⽤情况。
②在企业管理器中,⾸先扩⼤图书读者数据库的主数据⽂件的⼤⼩,然后查看扩⼤后的数据库属性,接着收缩主数据⽂件到定义时的⼤⼩。
数据库原理课程设计实验指导书(通用)

数据库原理课程设计实验指导书(通⽤)《数据库原理课程设计》实验指导书实验名称:数据库原理课程设计实验类型: 综合性实验学时:⼀周适⽤对象: 计算机科学与技术⼀、实验⽬的这门课是为计算机科学与技术专业的学⽣在学习数据库原理B后,为培养更好的解决问题和实际动⼿能⼒⽽设置的实践环节。
通过这个环节,使学⽣拥有能够应⽤数据库原理对数据库系统进⾏设计的能⼒。
为后继课程和毕业设计打下良好基础。
⼆、实验要求设计⼀个基于数据库的综合数据库管理系统,包括后台数据库的设计和前台⽤户终端的设计,具体题⽬四年不重复,要求:1.准备⼯作:在课外安装相关的数据库管理系统软件和开发⼯具软件,并根据参考书熟悉DBMS 的功能、结构,为后期综合实验打好基础。
2.概念模型的设计:根据题⽬要求,列出实体集,并应⽤E-R图描述实体的属性和实体之间的联系。
3.逻辑模型的设计:根据已建⽴好的E-R图选⽤关系模型设计关系表,包括设计关系表的属性、主码等,要求关系表中的属性名必须使⽤英⽂,呈现给⽤户的视图时显⽰中⽂。
4.完整性设计:包括实体完整性、参照完整性和⽤户⾃定义完整性的设计;⽐如年龄的范围、考试成绩的范围、职务的范围等。
并设计多表间的联系,⽐如学⽣表和成绩表,要求根据E-R图的设计设计关系表的外码,并举例说明。
5.规范化设计:使⽤范式理论证明你所设计的关系⾄少属于3NF,写出证明过程;否则进⾏模式分解,直到该关系满⾜三范式,并写出分解过程;6.SQL语⾔的考察:使⽤DBMS所⽀持的SQL语⾔完成关系表的建⽴,数据的插⼊、修改和更新等功能,着种考查关系表的查询(单表查询、多表查询和组合查询等,跟关系代数⼀起考查);7.图形化⽤户界⾯的设计:完成题⽬所要求的各种功能,并⽤菜单或者⼯具栏的形式组织各种功能(如数据的录⼊、查询、更新维护等);8.权限管理的设计:所设计的系统应该有⼀定的权限管理,不同的⽤户登陆完成功能是不⼀样的,对数据表的权限也不同。
数据库原理及应用实验指导书答案

数据库原理及应用实验指导书 - 答案实验一:数据库管理系统的安装与配置问题一数据库管理系统(DBMS)是一种软件,用于管理和组织数据库。
它允许用户创建,读取,更新和删除数据库中的数据。
常见的数据库管理系统有MySQL,Oracle,SQL Server等。
问题二在实验室环境中,我们将使用MySQL作为我们的数据库管理系统。
以下是MySQL的一些常见特点: - 开源免费 - 跨平台支持 - 可扩展性强 - 有大型的用户社区和丰富的资源支持问题三MySQL的安装步骤如下: 1. 下载MySQL安装文件,可以从MySQL官方网站或者其他可信的下载源获取。
2. 运行安装程序,按照向导的指示进行安装。
3. 选择是否要安装MySQL 服务器和MySQL工具。
4. 设置密码以保护数据库的安全。
5. 完成安装程序并启动MySQL服务。
数据库是一个组织和存储数据的容器。
在关系型数据库中,数据以表的形式存储,每个表包含多个行和列。
每行代表一个记录,每列代表一个字段。
问题五关系型数据库管理系统(RDBMS)是一种DBMS,它使用结构化查询语言(SQL)来操作和处理数据。
常见的关系型数据库管理系统有MySQL,Oracle,SQL Server等。
问题六开放数据库连接(ODBC)是一种标准的数据库访问方法,它允许不同的应用程序通过统一的接口访问不同的数据库管理系统。
ODBC驱动程序充当应用程序和数据库之间的翻译器。
问题七在Windows系统中,ODBC数据源可以通过控制面板的“管理工具”来配置。
在数据源配置对话框中,可以添加,编辑和删除ODBC数据源。
在Windows系统中,可以使用ODBC接口库和ODBC驱动程序来连接和操作数据库。
具体步骤如下: 1. 加载ODBC接口库。
2. 初始化ODBC环境。
3. 建立数据库连接。
4. 执行SQL语句。
5. 关闭数据库连接。
6. 释放ODBC环境。
问题九ODBC接口库是一组API函数,用于连接和操作数据库。
《数据库原理及应用》实验指导

理学院信科08—2班陈先国实验1 创建数据库与数据表下面写出实现如下操作的SQL语句:(1)创建供应系统“GYXT”数据库。
CREATE DATABASE GYXTON(NAME=GYXT_data,FILENAME=’D:\GYXT.mdf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOG ON(NAME=GYXT_Log,FILENAME=’D:\GXTYData.ldf’,SIZE=5,MAXSIZE=25,FILEGROWTH=5);(2) 建立供应商表S。
CREATE TABLE S( SNO char(5)not null unique,SNAME char(20)not null unique,CITY char(20));INSERT INTO S VALUES('S1','精益','天津');INSERT INTO S VALUES('S2','万胜','北京');INSERT INTO S VALUES('S3','东方','北京');INSERT INTO S VALUES('S4','丰泰隆','上海');INSERT INTO S VALUES('S5','康健','南京');(3) 建立零件表P。
CREATE TABLE P(PNO char(2)not null PRIMARY KEY(PNO),PNAME char(20),COLOR char(20),WEIGHT smallint);INSERT INTO P V ALUES('P1','螺母','红',12);INSERT INTO P V ALUES('P2','螺栓','绿',17);INSERT INTO P V ALUES('P3','螺丝刀','蓝',14); INSERT INTO P V ALUES('P4','螺丝刀','红',14); INSERT INTO P V ALUES('P5','凸轮','蓝',40); INSERT INTO P V ALUES('P6','齿轮','红',30);(4) 建立工程项目表J。
数据库原理(工商、物流)实验指导书
数据库原理(工商、物流)实验指导书刘琼慧交通经济管理实验教学中心目录实验一 Visual Foxpro 6.0基本操作实验二 概念模型的建立实验三 数据库表的管理实验四 SQL语言的应用实验五 数据库设计方法实验实验六 数据库应用设计实验实验一 Visual Foxpro 6.0基本操作(必做实验)一、实验目的VFP作为成功的PC平台RDBMS,其性能优越、界面友好、工具丰富、兼容性良好,并且容易上手、使用广泛,可满足中等规模数据库管理要求。
了解VFP的基本知识,首先了解数据库的基本操作:交互命令方式和菜单操作方式,熟悉VFP用户界面。
通过使用具体的DBMS,了解一种实际的数据库管理系统并掌握其操作技术二、实验原理数据库的操作:交互命令方式和菜单操作方式1.建立数据库结构2.输入数据库记录3.输入相关命令对数据库进行操作:如库结构的修改,记录的插入、删除、添加、库文件的复制、排序与索引、查询与统计等。
三、实验要求1.制作学生基本情况数据表(JBB):包含{学号(C4)、姓名(C8)、性别(C2),生日(D),系别(C6),奖励(N8.2),打工收入(N7.2)、爱好(M),照片(G)};2.制作课程数据表(KCB),包含{课程号(C3),课程名(C10)、任课教师(C8),上课教室(C10)}等信息;3.制作选课数据表(XKB),包含(学号(C4),课程号(C3),考试成绩(N5.1),考试日期(D));4.制作家庭情况表(JTB),包含(学号(C4),父姓名(C8),母姓名(C8),父工作单位(C20),家庭住址(C24),家庭电话(C16));5.向学生基本表(JBB)中输入至少20名学生的信息。
5人为工商管理系,4人为信息管理系,4人为工程管理系,其他人随便选择系别;6.向课程数据表(KCB)中输入至少10门课程;7.向家庭情况表(JTB)中至少输入20条与基本情况表相应的数据信息;8.向选课数据表(XKB)中输入学生选课情况。
数据库原理与应用实验指导书完整
数据库原理与应⽤实验指导书完整(快速切换页码⽅法:按住ctrl键再单击相关项⽬)实验⼀创建数据库与表1. 新建数据库(1) 利⽤向导创建数据库(新建⽂件/本机上的模板)(2) 创建空数据库2. 表的基本操作(1) 使⽤向导创建表(2) 复制表(3) 利⽤设计视图建⽴表(参考教材P25-P29)①设置查阅向导②设置标题属性(P42)③设置默认值(P44)④设置字段的“有效性规则”与“有效性⽂本”(P42)⑤设置掩码(P43)⑥设置⽇期格式:(P40)⑦设置主键(P49)⑧增加字段,在“姓名”字段后增加⼀个“年龄”字段(P48)⑨删除字段,将刚增加的字段删除。
(P49)(4) 表操作①在数据表视图和设计视图之间进⾏切换,熟悉切换的⽅法。
②在数据表视图中输⼊记录。
③隐藏/取消隐藏列(P53)——格式菜单④冻结(P64)——格式菜单⑤排序(P58)——记录菜单⑥筛选(P60)——记录菜单⑦调整表外观——格式菜单3. 表间关系(P64)4. 导⼊、链接、导出(P34)实验⼆查询⑴使⽤设计视图建⽴查询⑵使⽤设计视图建⽴查询⑶设置查询排序及准则⑷汇总查询⑸交叉表查询⑹参数查询⑺动作查询①删除查询②更新查询③追加查询④⽣成表查询:⑻利⽤SQL语句建⽴查询实验三窗体1. 掌握⾃动创建窗体、使⽤向导创建窗体的⽅法(1) 建⽴基于单表的窗体①纵栏式窗体②“表格式”窗体(2) 建⽴基于多表的“学⽣信息和成绩”窗体2. 在设计视图创建窗体⑴建⽴“学⽣信息简表”窗体⑵使⽤设计视图1⑶使⽤设计视图2实验四报表1. 建⽴“学⽣成绩单”报表2. 建⽴“学⽣档案”报表3. 建⽴“分数段统计”报表4. 建⽴“排名次”统计报表实验五宏实验六数据库设计理论实践《数据库原理与应⽤》实验指导书⼀、实验的性质与学习⽬的《数据库原理与应⽤》为⾮计算机专业的公共课程。
通过实验教学,使学⽣验证并掌握数据库管理系统的基本原理,具备数据库的基本设计能⼒、掌握利⽤数据库进⾏信息管理的基本技能,初步掌握数据库应⽤系统的开发⽅法,为以后更好地使⽤数据库应⽤系统打下坚实的基础。
数据库原理实验指导书
数据库原理实验指导书实验名称:试验一:SQL语言嵌套查询和数据更新操作所属课程:数据库原理实验类型:设计型实验实验类别:基础□专业基础√专业□实验学时:4学时一、实验目的1.熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;2.加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算);3.熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用;4.加深理解表的定义对数据更新的作用二、预习与参考1.熟悉SQL SERVER 工作环境;2.连接到学生-课程数据库3.复习对表中数据查询的SQL语言命令;4.复习对表中数据的插入、修改和删除的SQL语言命令。
三、实验要求(设计要求)针对教材例子,通过SQL SERVER企业管理器和查询分析器两种模式,熟悉数据嵌套查询、更新操作。
四、实验方法及步骤1.在表S、C、SC上进行简单查询;2.在表S、C、SC上进行连接查询;3.在表S、C、SC上进行嵌套查询;4.使用聚合函数的查询;5.对数据的分组查询;6.对数据的排序查询。
7.将数据插入当前数据库的表S、C、SC中;A:用SQL命令形式B:用SQL SERVER提供的企业管理器以交互方式进行8.将以上插入的数据分别以.SQL文件和.txt文件的形式保存在磁盘上;9.修改表S、C、SC中的数据;A:用SQL命令形式B:用SQL SERVER提供的企业管理器以交互方式进行10.删除表S、C、SC中的数据。
A:用SQL命令形式B:用SQL SERVER提供的企业管理器以交互方式进行五、实验内容在表S,C,SC上完成以下操作:1.查询学生的基本信息;2.查询“CS”系学生的基本信息;3.查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;4.找出最大年龄;5.找出“CS”系年龄最大的学生,显示其学号、姓名;6.找出各系年龄最大的学生,显示其学号、姓名;7.统计“CS”系学生的人数;8.统计各系学生的人数,结果按升序排列;9.按系统计各系学生的平均年龄,结果按降序排列;10.查询每门课程的课程名;11.查询无先修课的课程的课程名和学时数;12.统计无先修课的课程的学时总数;13.统计每位学生选修课程的门数、学分及其平均成绩;14.统计选修每门课程的学生人数及各门课程的平均成绩;15.找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列;16.查询选修了“1”或“2”号课程的学生学号和姓名;17.查询选修了“1”和“2”号课程的学生学号和姓名;18.查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;19.查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);20.查询没有选修课程的学生的基本信息;21.查询选修了3门以上课程的学生学号;22.查询选修课程成绩至少有一门在80分以上的学生学号;23.查询选修课程成绩均在80分以上的学生学号;24.查询选修课程平均成绩在80分以上的学生学号;25.选做:针对SPJ数据库中的四个表S,P,J,SPJ,完成教材P74-75--习题5中的查询及教材P127--习题5中的查询。
数据库原理与应用课程实验(3-4)
(6)查询教育类和清华北京出版社出版的图书。
五、注意事项
(1)注意多表查询时连接方式。
(2)注意GROUP BY中字段用法
六、思考题
嵌套查询中“=”和“In”用法区别。
学生姓名
邱艳
实验日期
2015-5-27
实验名称
视图、索引
实验成绩
一、实验目的
SELECT [ALL|DISTINCT] <目标列组>
[INTO <新表名>]
FROM <表名或视图名>
[WHERE <查询条件>]
[GROUP BY <分列组> [HAVING <组选择条件>]]
[ BY <排序列> [ASC|DESC]]
功能:从指定的基本表或视图中,找出满足条件的记录数据,并对它们进行分组、统计、排序和投
(1)创建一个读者_View.
(2)创建一个借阅_计算机图书视图。
(3)创建一个图书_index,按图书名称升序排列。
(4)删除所有索引和视图。
四、实验步骤及运行结果
(1)创建一个读者_View.
(2)创建一个借阅_计算机图书视图。
(3)创建一个图书_index,按图书名称升序排列。
(4)删除所有索引和视图。
(6)查询计算机类和机械工业出版社出版的图书。
四、实验步骤及运行结果
(1)查询江苏理工学院学生生的借书证号和姓名。
(2)查询江苏理工学院学生的姓名、所借图书的名称以及出版社。
(3)查询图书类别,要求类别中最高图书的定价不低于全部按类别分组的平均定价的2倍。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一实验题目:嵌套查询和连接查询二实验目的:加深对嵌套查询和连接查询的理解,比较两种方法的不同。
三实验内容及要求:从下面10个题目中选一个,每个题目中第一个查询用连接查询和嵌套查询两种方法完成,其它查询要求用一种方法是先即可,注意选择那种方法。
题目一:学生(学号,年龄,性别,系名)课程(课号,课名,学分,学时)选课(学号,课号,成绩)根据上面基本表的信息完成下列查询。
1 查询选修了数据库原理的学生姓名。
2 查询比计算机系所有学生年龄都大的学生信息。
3列出“张力”选修的所有课程的课名和成绩。
题目二:图书(书号,书名,价格,出版社)读者(卡号,姓名,年龄,所属单位)借阅(书号,卡号,借阅日期)根据上面基本表的信息完成下列查询。
1 查询高教出版社的《数据库原理》的读者姓名。
2 查询价格比高教出版社图书都贵的图书信息。
3 查询年龄20岁以下的读者姓名和所借阅图书的书名。
题目三:商品(编号,品名,进价,库存,售价,厂商编号)顾客(卡号,姓名,电话,积分)厂商(编号,厂址,名称、电话)销售(顾客卡号,商品编号,数量,日期)根据上面基本表的信息完成下列查询。
1 查询积分100以上的顾客买的商品名称和价格2 查询比“伊利乳品”所有产品都贵的商品价格3 查询库存不足100的商品名称和厂商名称及电话题目四:图书(书号,书名,作者编号,价格,出版社编号)作者(编号,姓名,电话)出版社(编号,出版社名称,地址)根据上面基本表的信息完成下列查询。
1 查询价格10元以下的图书作者信息2 查询比“张力”写的书都便宜的图书信息3 查询高教出版社出版的图书书名和作者姓名题目五:零件(编号,名称,颜色)车间(编号,名称,人数,主任)产品(编号,名称,车间编号)使用(产品编号,使用零件编号,个数)根据上面基本表的信息完成下列查询。
1 查询所有使用红色零件的产品名称。
2 查询比3号、4号、5号车间人数都少的车间生产的产品名称3 查“张力”当主任的车间的各个产品名称及其所需零件名称、数量题目六:药品(编号,名称,价格,厂商)处方(药品编号,数量,医生编号)医生(编号,姓名,科室,职称)根据上面基本表的信息完成下列查询。
1 列出医生“张力”开的所有药品名称。
2 列出比“北方制药”所有药品都贵的药品信息。
3 列出内科所有处方的医生姓名、药品名称、金额题目七:学生(学号,年龄,性别,系名)教材(编号,书名,出版社编号,价格)订购(学号,书号,数量)出版社(编号,名称,地址)根据上面基本表的信息完成下列查询。
1 查询订购高教出版社教材的学生姓名2 查询比所有高教出版的图书都贵的图书信息3 列出每位学生姓名、订购教材书名、价格。
题目八:员工(编号,姓名,性别,年龄,部门编号,年薪)部门(编号,名称,人数,负责人)项目(编号,名称,负责部门编号)根据上面基本表的信息完成下列查询。
1 查询员工张力所在部门的名称。
2 查询比人事处所有员工年薪都高的员工姓名。
3 列出每个部门名称和负责的项目名称。
题目九:帐户(编号,姓名,余额,建立日期,储蓄所编号)储蓄所(编号,名称,地址,人数,所属城市)借贷(帐户,借贷类型,金额,日期)根据上面基本表的信息完成下列查询。
1 查询在“长春南湖路”储蓄所开户的帐户姓名和余额。
2 查询一次借贷超过10万元的帐户名称和金额。
3 查询比“长春南湖路”储蓄所开户的所有帐户余额都高的帐户名称。
题目十:仓库(编号,保管员编号,面积)保管员(编号,姓名,年龄,电话、月薪)商品(编号,品名,仓库编号、数量,单价)1 查询“张力”保管的仓库编号、面积。
2 查询“波顿牛仔裤”所在仓库的保管员电话和仓库面积。
3 查询比保管员张力保管的商品价格都高的商品名称。
四实验指导(一)连接查询语法一:SELECT 列FROM 表1 INNER JION 表2 ON 表1.列=表2.列语法二:SELECT 列FROM 表1, 表2WHERE表1.列=表2.列【例1】从titles和titleauthor表中查询书的书号、书名、作者号、类型和价格。
use pubsgoselect titles.title_id,title,au_id,type,pricefrom titles join titleauthoron titles.title_id=titleauthor.title_id在上述查询中titles表与titleauthor表通过title_id列进行连接,这样可以在一次查询中从两个表获得数据。
两个以上的表也可以进行连接。
【例2】从titles、authors和titleauthor表中查询书的书号、书名、作者号和作者名。
use pubsgoselect titles.title_id,title,authors.au_id,au_lnamefrom titles join titleauthoron titles.title_id=titleauthor.title_idjoin authorson authors.au_id=titleauthor.au_id通过上述查询可以将titles、authors和titleauthor 组合起来,把每一本书和它的作者对应。
在从两个或两个以上的表中进行查询时,如果两个表中的列名相同,需要在列名前面加上表名(或表的别名)作为前缀,如上述例子中的titles.title_id与titleauthor.title_id。
在列名不同时,列名前可以不加表名,但有时也会加上表名,以增强可读性。
连接操作不仅可以在不同的表上进行,而且在同一张表内可以进行自身连接,即将同一个表的不同行连接起来。
自连接可以看作一张表的两个副本之间的连接。
在自连接中,必须为表指定两个别名,使之在逻辑上成为两张表。
例如:在titles表中查询同名的作者。
use pubsgoselect a1.au_fname,a2.au_fname,a1.au_lnamefrom authors a1 join authors a2on a1.au_lname=a2.au_lnamewhere a1.au_id<> a2.au_id(二)嵌套查询嵌套子查询的执行不依赖于外部嵌套。
嵌套子查询的执行过程为:首先执行子查询,子查询得到的结果集不被显示出来,而是传给外部查询,作为外部查询的条件使用,然后执行外部查询,并显示查询结果。
子查询可以多层嵌套。
嵌套子查询一般也分为两种:子查询返回单个值和子查询返回一个值列表。
(1)返回单个值,该值被外部查询的比较操作(如,= 、!=、<、<=、>、>=)使用,该值可以使子查询中使用集合函数得到的值。
【例1】查询书号为pc1035的作者的作者号、作者姓名。
use pubsgoselect au_id,au_lname,au_fnamefrom authorswhere au_id=(select au_idfrom titleauthorwhere title_id='pc1035' )得到的结果为:au_id au_lname au_fname----------- ---------------------------------------- --------------------238-95-7766 Carson Cheryl(所影响的行数为 1 行)例1的查询也可以用前面讲过的表连接来实现,代码如下:use pubsgoselect authors.au_id,au_lname,au_fnamefrom authors,titleauthorwhere authors.au_id=titleauthor.au_id and title_id='pc1035'(2)返回一个值列表,该列表被外部查询的IN、NOT IN、ANY或ALL比较操作使用。
IN表示属于,即外部查询中用于判断的表达式的值与子查询返回的值列表中的一个值相等;NOT IN 表示不属于。
【例2】查询所有出版了书的作者的信息。
use pubsgoselect au_id,au_lname,au_fnamefrom authorswhere au_id in(select au_idfrom titleauthor)得到的结果为:au_id au_lname au_fname----------- ---------------------------------------- --------------------172-32-1176 White Johnson213-46-8915 Green Marjorie238-95-7766 Carson Cheryl267-41-2394 O'Leary Michael……(所影响的行数为 19 行)ANY、SOME和ALL用于一个值与一组值的比较,以“>”为例,ANY 表示大于一组值中的任意一个,ALL表示大于一组值中的每一个。
比如,>ANY(1,2,3)表示大于1;而>ALL(1,2,3)表示大于3。
五实验报告要求:1 第一个查询要求分别用连接查询和嵌套查询完成,给出查询命令、初始数据、执行果,比较不同方法的效率。
2 其它查询要求给出查询命令、初始数据、执行结果,说明你选择连接查询或嵌套查询的原因。