广工数据库实验报告

更新时间:2024-05-22 19:31:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数据库原理实验报告

学 院 计算机学院 专 业 软件工程 班 级 2012 级 4 班 学 号 3112006291 姓 名 林炳城 指导教师 周俭铁

( 2014 年 12 月)

2

计算机学院 学院 软件工程 专业 4 班学号: 3112006291

姓名: 林炳城 协作者:________ 教师评定:

实验 一 题目 数据库及基本表的建立 实验__二__题目__ 设计数据完整性 __ 实验__三__题目 查询数据库

实验平台:MYSQL 5.5.21

3

4

计算机学院 学院 软件工程 专业 4 班学号: 3112006291

姓名: 林炳城 协作者:________ 教师评定: 实验题目 一、 数据库及基本表的建立

一、实验目的

1、掌握SQL SERVER的查询分析器和企业管理器的使用; 2、掌握创建数据库和表的操作; 二、实验内容和要求

1、分别使用SQL语句、企业管理器(Enterprise Manager)创建数据库; 2、使用SQL语句、企业管理器(Enterprise Manager)创建数据库表; 三、实验主要仪器设备和材料

1.计算机及操作系统:PC机,Windows 2000/xp; 2.数据库管理系统:SQL sever 2000/2003/2005; 四、实验方法、步骤及结果测试

创建一个教学管理数据库SC_xxxx(XXXX为学号后四位),其描述的信息有:学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。

创建:student表(学生信息表,表名为student_xxxx)、course表(课程信息表,表名为course_xxxx)、teacher表(教师信息表,表名为teacher_xxxx)、student _course表(学生选课成绩表,表名为student _course_xxxx)、teacher_course表(教师上课课表,表名为teacher_course_xxxx)等。(xxxx均指代实验者本人学号的后四位) 1、创建数据库:

确定数据库名称;数据库用于学生管理,命名为SC_XXXX(在每个截图中,应当都有此名称)

确定数据库的位置;要求:数据文件和日志文件分别存储在E盘自己的目录下。

确定数据库的大小;根据实际的数据量确定数据文件的初始大小为30MB,日志文件的初始大小为3MB。

确定数据库的增长;根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。 (1)、利用查询分析器(Query Analyzer),使用SQL语句指定参数创建数据库; 实现代码及截图:

1

SQL语句 Create database sc_6291; 查询分析器执行情况: SQL语句及执行结果截图显示 2、创建基本表

利用查询分析器,使用SQL语句方式创建方式将下面各表建立到教学管理数据库中。

(1) 创建student表 字段名 学号 姓名 性别 出生日期 学生所在院系编号 专业代码 班级编码 代码 s_no sname sex sbirthday dno spno class_no 代码 cno cname spno ctno lecture experiment semester credit 代码 s_no tcid 类型 char(8) smallint 类型 char(8) char(8) char(2) Smalldatetime char(6) char(8) char(4) 类型 char(10) char(20) char(8) tinyint tinyint tinyint tinyint tinyint 约束 主键,与student表中s_no 外键关联,级联删除 主键 约束 主键 非空 外键 外键 约束 主键 非空 外键 (2)创建Course表 字段名 课程编号 课程名称 专业代码 课程类型编号 理论学时 实验学时 开课学期 课程学分 字段名 学号 上课编号 (3)创建student _course表 2

学生成绩 字段名 教师编号 教师姓名 性别 出生日期 score tinyint 代码 t_no t_name t_sex 类型 char(8) char(8) char(2) smalldatetime char(6) char(10) 类型 char(6) char(20) char(8) 类型 char(8) char(6) char(20) 约束 主键 非空 外键 约束 主键 非空 约束 主键 外键,非空 非空 约束 主键 外键 外键 非空,外键 约束 主键,与 speciality 表中spno 外键关联, 主键, (4)创建teacher表 t_birthday dno tech_title 代码 dno dept_name header 代码 spno dno spname 代码 tcid t_no spno class_no cno semester schoolyear 代码 spno class_no header 类型 教师所在院系编号 职称 字段名 院系编号 院系名称 院系负责人 字段名 专业代码 院系编号 专业名称 (7)创建teacher_course表 字段名 上课编号 教师编号 专业代码 班级编码 课程编号 学期 学年 字段名 专业代码 班级编码 班负责人 (5)创建系部表(department) (6)创建专业信息表(speciality) smallint char(8) char(8) char(4) char(10) Char(6) Char(10) 类型 char(8) char(4) char(8) (8)创建班级表(class) 3、 对SC_XXXX进行备份与还原操作。 (1)建立一个备份设备BK_XXXX,对应的物理文件名为..\\BK_XXXX.bak,路径自己设定。

3

备份设备建立截图

(2)为数据库SC_XXXX做完整备份至设备BK_XXXX. SC_XXXX数据库完整备份截图

4

(3)删除SC_XXXX,从备份设备BK_XXXX中还原数据库SC_XXXX. 从备份设备BK_XXXX还原SC_XXXX数据库截图 5

4、 查看各数据表之间的关系,生成数据库关系图。 生成数据库关系图截图显示 6

5、创建各表的实现代码及截图: SQL语句 create table student( s_no char(8), sname char(8) not null, sex char(2), sbirthday date, dno char(8), spno char(8), class_no char(4), primary key(s_no) ); create table course( cno char(10), cname char(20) not null, spno char(8), ctno tinyint, lecture tinyint, experiment tinyint, semester tinyint, credit tinyint, primary key(cno) ); create table student_course( s_no char(8), tcid smallint, score tinyint, primary key(s_no,tcid) ); create table teacher( t_no char(8), t_name char(8) not null, t_sex char(2), t_birthday date, dno char(8), tech_title char(10), primary key(t_no) ); create table department( dno char(8), dept_name char(20) not null, header char(8), primary key(dno)

查询分析器执行情况: SQL语句及执行结果截图显示 7

); create table speciality( spno char(8), dno char(8) not null, spname char(20) not null, primary key(spno) ); create table teacher_course( tcid smallint, t_no char(8), spno char(8), class_no char(4), cno char(10) not null, semester char(6), schoolyear char(10), primary key(tcid) ); create table class( spno char(8), class_no char(8), header char(8), primary key(spno,class_no) ); alter table student add constraint student_department foreign key(dno) references department(dno); alter table student add constraint student_speciality foreign key(spno) references speciality(spno); alter table course add constraint course_speciality foreign key(spno) references speciality(spno); alter table student_course add constraint student_course_student foreign key(s_no) references student(s_no) on delete cascade; alter table teacher add constraint teacher_department foreign key(dno) references department(dno); 8

alter table speciality add constraint speciality_department foreign key(dno) references department(dno); alter table teacher_course add constraint teacher_course_teacher foreign key(t_no) references teacher(t_no); alter table teacher_course add constraint teacher_course_speciality foreign key(spno) references speciality(spno); alter table class add constraint class_speciality foreign key(spno) references speciality(spno);

6、利用查询分析器修改上述各表。

(1)、用INSERT语句向各个表中插入数据录入5 条记录。录入时注意体会外键约束。 实现代码及截图:

查询分析器执行情况: SQL语句及执行结果显示 insert into department values('000001','计算机学院','王二'); insert into department values('000002','外国语学院','张三'); insert into department values('000003','自动化学院','李四'); insert into department values('000004','机电学院','王五'); insert into department values('000005','信息工程学院','赵六');

实验结果截图显示(插入数据的表格) 9

insert into speciality values('00000001','000001','计算机科学与技术'); insert into speciality values('00000002','000002','商务英语'); insert into speciality values('00000003','000003','电力自动化'); insert into speciality values('00000004','000004','机械自动化'); insert into speciality values('00000005','000005','信息工程'); insert into class values('00000001','0001','冯一'); insert into class values('00000002','0002','吴二'); insert into class values('00000003','0003','郑三'); insert into class values('00000004','0004','王四'); insert into class values('00000005','0005','陈五'); insert into student values('00000001','赵一','男','1993-10-17','000001','00000001','0001'); insert into student values('00000002','钱二','女','1993-10-17','000002','00000002','0002'); insert into student values('00000003','孙三','男','1993-10-17','000003','00000003','0003'); insert into student values('00000004','李四','女','1993-10-17','000004','00000004','0004'); insert into student values('00000005','周五','男','1993-10-17','000005','00000005','0005'); insert into teacher values('00000001','黄一','女','1983-12-1','000001','教授'); insert into teacher values('00000002','林二','男','1983-12-1','000002','副教授'); insert into teacher values('00000003','梁三','女','1983-12-1','000003','教授'); insert into teacher values('00000004','赵四','男','1983-12-1','000004','教授'); insert into teacher values('00000005','李五','女10

','1983-12-1','000005','副教授'); insert into course values('0000000001','C 语言','00000001','1','10','10','1','2'); insert into course values('0000000002','同声翻译','00000002','2','10','10','1','2'); insert into course values('0000000003','电工学','00000003','3','10','10','1','2'); insert into course values('0000000004','力学','00000004','4','10','10','1','2'); insert into course values('0000000005','数值分析','00000005','5','10','10','1','2'); insert into student_course values('00000001','1','90'); insert into student_course values('00000002','2','80'); insert into student_course values('00000003','3','70'); insert into student_course values('00000004','4','60'); insert into student_course values('00000005','5','50'); insert into teacher_course values('1','00000001','00000001','0001','0000000001','1','2014-2015'); insert into teacher_course values('2','00000002','00000002','0002','0000000002','1','2014-2015'); insert into teacher_course values('3','00000003','00000003','0003','0000000003','1','2014-2015'); insert into teacher_course values('4','00000004','00000004','0004','0000000004','1','2014-2015'); insert into teacher_course values('5','00000005','00000005','0005','0000000005','1','2014-2015'); select * from student;

11

共8组(共8个表)

(2)、用UPDATE语句更改student表中数据; 实现代码:

update student set class_no = '0001' where s_no = '00000005'; select * from student; student表更改前的内容截图显示查询分析 student表更改后的内容截图显示

(3)、用DELETE语句删除student表中数据; 实现代码:

delete from student where sname = '孙三'; select * from student;

12

student表更改前的内容截图显示查询分析 student表更改后的内容截图显示

五、实验中出现的问题及解决方案

我的电脑上没法装SQL server这个数据库管理系统。所以换成了MYSQL做为实验环境。Mysql的数据类型没有smalldatetime,所以直接用date类型 六、思考题

1、 说明数据库中的表和数据文件的关系。

数据库中的表在数据文件中

2、 数据库中的日志文件能否单独修改?

日志文件的路径可以单独修改,但里面的内容不能单独修改

13

计算机学院 学院 软件工程 专业 4 班学号: 3112006291

姓名: 林炳城 协作者:________ 教师评定: 实验题目 二、 设计数据完整性

一、实验目的

1、掌握使用约束实现数据完整性的方法; 2、掌握使用触发器实现数据完整性的方法; 二、实验内容和要求

1、设置主键约束、设置唯一约束、设置外键约束、设置检查约束、设置默认值约束; 2、使用企业管理器创建触发器、使用SQL语音创建触发器; 三、实验主要仪器设备和材料

1.计算机及操作系统:PC机,Windows 2000/xp; 2.数据库管理系统:SQL sever 2000/2003/2005; 四、实验方法、步骤及结果测试 (一)、使用约束实现数据的完整性(针对实验一中的所建的基本表) 要求:

1、 定义:student表、course表、student_course表、teacher表、department表、speciality

表、teacher_course表、class表的主键。写出相应的SQL语句。 student表 primary key(s_no) teacher表 primary key(t_no) Student_course表 primary key(s_no,tcid) Speciality表 primary key(spno) course表 primary key(cno) teacher_course表 primary key(tcid) Department表 primary key(dno) Class表 primary key(spno,class_no) 2、 定义以上各表的外键约束,并通过插入新的数据记录来检查外键约束。写出相应的SQL语句,并将检查执行的结果截图显示。

14

外键定义的SQL语句: 检查外键违约处理的结果截图: student表 student表 alter table student add constraint student_department foreign key(dno) references department(dno); alter table student add constraint student_speciality foreign key(spno) references speciality(spno); course表 course表 alter table course add constraint course_speciality foreign key(spno) references speciality(spno); teacher表 teacher表 alter table teacher add constraint teacher_department foreign key(dno) references department(dno); Speciality表 Speciality表 alter table speciality add constraint speciality_department foreign key(dno) references department(dno); 15

Student_course表 Student_course表 alter table student_course add constraint student_course_student foreign key(s_no) references student(s_no) 3、定义唯一约束

为专业表Speciality的spname列建立唯一约束,并通过插入新的数据记录对新建的唯一约束进行检查,写出相应的SQL语句,并将检查的执行结果截图显示。 定义的SQL语句: 检查违约处理的结果截图: alter table speciality add unique(spname); insert into speciality values('00000006','000005','信息工程');

4、定义检查约束 为student_course表的Score列设置检查约束条件,并通过插入新的数据记录来检查约束。写出相应的SQL语句,并将检查执行结果截图显示。 定义的SQL语句: 检查违约处理的结果截图: alter table student_course add check(score >= 0 and score <= 100); insert into student_course values('00000006','5','-1'); insert into student_course values('00000007','5','101'); 16

5、查看各表之间的关系,生成数据库关系图。

(二)、利用企业管理器,使用约束实现数据的完整性方法 1、启动企业管理器,利用表设计器分别定义:student表、course表、student_course表、teacher表、department表、speciality表、teacher_course表、class表的主键。

17

2、表设计器中,单击工具栏中的“表和索引属性”按钮,打开“属性”对话框,在“关系”选项卡中定义外键约束。(实验截图)

18

19

3、在表设计器中,单击工具栏中的“表和索引属性”按钮,打开“属性”对话框,在“索引/键”选项中定义专业信息表speciality的spname字段唯一约束。(实验截图)

4、在表设计器中,单击工具栏中的“表和索引属性”按钮,打开“属性”对话框,在“CHECK约束”选项中,为student_course表中的score列设置检查约束。 例如:输入表达式:score>=0 and score<=100。 (实验截图) 目前好像未支持

20

(三)、使用触发器实现数据的完整性 1、使用企业管理器创建触发器

在student表中创建触发器,实现student和student_course表的级联删除。 步骤:

1) 打开企业管理器,展开SC数据库; 2) 在SC数据库的列表中选择“表”并展开;

3) 右击想要创建触发器的表,执行“所有任务”/“管理触发器”命令;

4) 在打开的“触发器属性”对话框中,在“名称”下拉列表框中选择“新建”; 5) 在“文本”编辑框中,输入创建触发器的代码; 6) 单击“检查语法”按钮,检查代码的语法是否正确; 7) 单击“确定”按钮,则完成触发器创建。

8) 检查触发器;在查询分析器中,输入相应的语句,并执行,查看定义的触发器是否起作

用。 定义触发器的SQL语句: 执行结果截图: alter table student_course add constraint student_course_student foreign key(s_no) references student(s_no) on delete cascade;

21

五、实验中出现的问题及解决方案

Navicat好像不支持在表设计器中进行检查约束的设置

六、思考题

1、 利用INSERT语句向表中插入数据应该注意什么?

需要确认表字段和主键,非空约束和唯一约束以及检查约束等

22

计算机学院 学院 软件工程 专业 4 班学号: 3112006291

姓名: 林炳城 协作者:________ 教师评定: 实验题目 三、 查询数据库

一、实验目的

熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询 1、掌握基本的SELECT查询及其相关子句的使用;

2、掌握复杂的SELECT查询,如多表查询、子查询、连接查询和嵌套查询。 二、实验内容和要求

使用SQL查询分析器查询数据,练习查询语句的使用,掌握SELECT 语句的完整结构,包括简单查询、嵌套查询、连接查询等基本实现方法,掌握存储查询结果的方法,体会各种查询的异同及相互之间的转换,体会各种查询的执行过程,为简单综合应用打下良好的基础。 三、实验主要仪器设备和材料

1.计算机及操作系统:PC机,Windows 2000/xp; 2.数据库管理系统:SQL sever 2000/2003/2005; 四、实验方法、步骤及结果测试

要求用SELECT完成以下查询, 1、对实验一建立的数据库表进行查询

简单查询:

(1)、查询全部学生的学号、姓名、性别和出身年月日。 实现代码及查询结果截图:格式如下

查询分析器执行情况: 查询结果截图显示 SQL语句及执行结果显示 select s.s_no,s.sname,s.sex,s.sbirthday from student as s;

23

(2)、查询全体学生的学号、姓名和年龄 实现代码及查询结果截图: 查询分析器执行情况: SQL语句及执行结果显示 select s.s_no,s.sname,s.sex,year(now())-year(s.sbirthday)+1 as age from student as s; 查询结果截图显示

(3)、查询院系编号为?510000?(计算机学院)的全部学生的学号、姓名、性别和出身年月日。

实现代码及查询结果截图:

查询分析器执行情况: 查询结果截图显示 SQL语句及执行结果显示 select s.s_no,s.sname,s.sex,s.sbirthday from student as s where s.dno = '51000?'; select s.s_no,s.sname,s.sex,s.sbirthday from student as s where s.dno = '000001'; 24

(4)、查询“计算机科学与技术”专业(专业代码为?080605?)并且班级代码为?0201?的学生的学号、姓名和出生日期。 实现代码及查询结果截图:

查询分析器执行情况: 查询结果截图显示 SQL语句及执行结果显示 select s.s_no,s.sname,s.sex,s.sbirthday from student as s where s.spno = '080605' and s.class_no='0201'; select s.s_no,s.sname,s.sex,s.sbirthday from student as s where s.spno = '00000001' and s.class_no='0001';

(5)、查询在?1983/01/10?以后出生的计算机学院(院系编号为?510000?)学生的学号、姓名、性别和出身年月日。

实现代码及查询结果截图: 查询分析器执行情况: 查询结果截图显示 SQL语句及执行结果显示 select select s.s_no,s.sname,s.sex,s.sbirthday from student as s where s.dno = '510000' and datediff(s.sbirthday,'1983-01-10')>0;

25

select s.s_no,s.sname,s.sex,s.sbirthday from student as s where s.dno = '000001' and datediff(s.sbirthday,'1983-01-10')>0;

(6)、查询全部学生的学号、姓名、性别和出身日期结果按照出生日期的升序排列。 实现代码及查询结果截图: 查询分析器执行情况: 查询结果截图显示 SQL语句及执行结果显示 select s.s_no,s.sname,s.sex,s.sbirthday from student as s order by s.sbirthday desc;

连接查询:

(1)、查询全部学生的学号、姓名、性别、所在院系名称和专业名称 实现代码及查询结果截图:

查询分析器执行情况: 查询结果截图显示 SQL语句及执行结果显示 select s.s_no,s.sname,s.sex,d.dept_name,sp.spname from student as s inner join department as d inner join speciality as sp where s.dno=d.dno and s.spno =sp.spno;

26

(2)、查询选修了课程1(上课编号)的学生的学号、姓名、专业名称和这门课的成绩 实现代码及查询结果截图: 查询分析器执行情况: 查询结果截图显示 SQL语句及执行结果显示 select s.s_no,s.sname,s.sex,sp.spname,sc.score from student as s inner join course as c inner join student_course as sc inner join speciality as sp where s.spno =sp.spno and sp.spno = c.spno and sc.s_no = s.s_no and c.cno = '1'; select s.s_no,s.sname,s.sex,sp.spname,sc.score from student as s inner join course as c inner join student_course as sc inner join speciality as sp where s.spno =sp.spno and sp.spno = c.spno and sc.s_no = s.s_no and ;

(3)、查询学生不及格的情况列出不及格学生的学号、姓名和不及格的课程名称。 实现代码及查询结果截图:

27

查询分析器执行情况: SQL语句及执行结果显示 select s.s_no,s.sname,c.cname,sc.score from student as s inner join course as c inner join student_course as sc inner join speciality as sp where s.spno =sp.spno and sp.spno = c.spno and sc.s_no = s.s_no and sc.score < 60; 查询结果截图显示

嵌套查询:

(1)、查询没有选修了课程1的学生,列出学生的学号和姓名。 实现代码及查询结果截图: 查询分析器执行情况: SQL语句及执行结果显示 select s.s_no,s.sname from student as s inner join course as c inner join student_course as sc inner join speciality as sp where s.spno =sp.spno and sp.spno = c.spno and sc.s_no = s.s_no and c.cno != '1'; 查询结果截图显示

(2)、查询每门课都是80分以上的学生的学号与姓名。 实现代码及查询结果截图:

28

查询分析器执行情况: SQL语句及执行结果显示 select s.s_no,s.sname from student as s inner join course as c inner join student_course as sc inner join speciality as sp where s.spno =sp.spno and sp.spno = c.spno and sc.s_no = s.s_no and sc.score > 80; 查询结果截图显示

2、选用Northwind数据库进行查询 (1)、对NothWind. Products表进行简单查询;在查询分析器在窗口下用SELECT语句完成单表查询:

查询所有Products的详细记录;

实现代码及查询结果截图: 查询分析器执行情况: SQL语句及执行结果显示 select * from Products; 查询结果截图显示 查询单价(UnitPrice)小于20的Products;

实现代码及查询结果截图:

29

查询分析器执行情况: SQL语句及执行结果显示 select * from Products where UnitPrice < 20; 查询结果截图显示

查询Products中最高单价(UnitPrice)是多少;

实现代码及查询结果截图:

查询分析器执行情况: SQL语句及执行结果显示 select MAX(p.UnitPrice) from Products as p ; 查询结果截图显示

(2)、在查询分析器在窗口下用SELECT语句完成连接(嵌套)查询:

查询所有被订购过得Products的ProductsID和ProductName; 实现代码及查询结果截图: 查询分析器执行情况: SQL语句及执行结果显示 select p.ProductID,p.ProductName Products as p inner join order_details as od where p.ProductID = od.ProductID; 查询结果截图显示 from 30

查询所有被CustomerID为AROUT客和订购过的ProductsID和ProductName;

实现代码及查询结果截图: 查询分析器执行情况: SQL语句及执行结果显示 select p.ProductID,p.ProductName Products as p inner join order_details as od inner join orders as o where p.ProductID = od.ProductID and od.OrderID = o.OrderID; and o.CustomerID = \查询结果截图显示 from

查询所有被CustomerID为AROUT客和订购过,且单价在20 以上的ProductsID 和ProductName;

实现代码及查询结果截图: 查询分析器执行情况: SQL语句及执行结果显示 select p.ProductID,p.ProductName Products as p inner join order_details as od inner join orders as o where p.UnitPrice > 20 and p.ProductID = od.ProductID and od.OrderID = o.OrderID; and o.CustomerID = \查询结果截图显示 from

31

查询Products中单价(UnitPrice)最高的Products的资料;

实现代码及查询结果截图: 查询分析器执行情况: SQL语句及执行结果显示 select *from Products as p where p.UnitPrice = (select MAX(UnitPrice) from Products) ; 查询结果截图显示

五、实验中出现的问题及解决方案

MySQL 的自带数据库没有Northwind 这个实例数据库,上网找到的别人把SQL SERVER转成MYSQL的sql文件,导入时有点小问题,分步一点一点导进去了

六、思考题

1、 连接查询分哪几类?各有什么特点?

答:四类。 (1)、等值与非等值连接查询;特点:只可以连接两个表,通过连接谓词来连接比较。(2)、自身连接;特点:不仅可以在两个表之间连接,也可以是一个表与其自身进行连接。 (3)、外连接;特点:可以把要舍弃的元组保存在结果关系中,而在其他属性上填空值。 (4)、复合条件连接。特点:WHERE子句中可以有多个连接条件。 2、 进行连接查询时应注意哪些问题?

答:进行连接查询时应注意哪些问题? 答:连接多个表时,可以认为它们被连成了一个表。尽管没有创建一个物理表,SQL引擎创建了很多虚拟表,当连接表时,可以在每个表中选择任何一列。 关于连接表的数量问题。连接表的数量取决于具体的数据库管理系统,有的规定为最多25个,有的则没有限制。使用时,需要查看具体的数据库运行环境。但要注意,连接的表越多,响应的时间就越长。 进行多表连接时,特别注意不要忘记查询条件,特别是连接多个表且记录数目较多时。因为如果不指明连接条件,系统将对多表进行笛卡尔连接,会产生巨大的记录。 根据不同的应用需求,要注意连接方式的选择

32

查询Products中单价(UnitPrice)最高的Products的资料;

实现代码及查询结果截图: 查询分析器执行情况: SQL语句及执行结果显示 select *from Products as p where p.UnitPrice = (select MAX(UnitPrice) from Products) ; 查询结果截图显示

五、实验中出现的问题及解决方案

MySQL 的自带数据库没有Northwind 这个实例数据库,上网找到的别人把SQL SERVER转成MYSQL的sql文件,导入时有点小问题,分步一点一点导进去了

六、思考题

1、 连接查询分哪几类?各有什么特点?

答:四类。 (1)、等值与非等值连接查询;特点:只可以连接两个表,通过连接谓词来连接比较。(2)、自身连接;特点:不仅可以在两个表之间连接,也可以是一个表与其自身进行连接。 (3)、外连接;特点:可以把要舍弃的元组保存在结果关系中,而在其他属性上填空值。 (4)、复合条件连接。特点:WHERE子句中可以有多个连接条件。 2、 进行连接查询时应注意哪些问题?

答:进行连接查询时应注意哪些问题? 答:连接多个表时,可以认为它们被连成了一个表。尽管没有创建一个物理表,SQL引擎创建了很多虚拟表,当连接表时,可以在每个表中选择任何一列。 关于连接表的数量问题。连接表的数量取决于具体的数据库管理系统,有的规定为最多25个,有的则没有限制。使用时,需要查看具体的数据库运行环境。但要注意,连接的表越多,响应的时间就越长。 进行多表连接时,特别注意不要忘记查询条件,特别是连接多个表且记录数目较多时。因为如果不指明连接条件,系统将对多表进行笛卡尔连接,会产生巨大的记录。 根据不同的应用需求,要注意连接方式的选择

32

本文来源:https://www.bwwdw.com/article/zet7.html

Top