当前位置:文档之家› 数据库系统应用与开发--实验七

数据库系统应用与开发--实验七

数据库系统应用与开发--实验七
数据库系统应用与开发--实验七

实验JDBC进阶(3)

一、相关知识点

1、JDBC基本概念

2、主从关系,分页查询

二、实验目的:

理解分页查询的概念和处理方法

三、实验内容:

数据准备:用上次实验中的方法,生成1000个读者和图书;

1、改造读者模块,在提取读者的同时,提取其未归还的图书信息

第一步:通过程序增加一些借阅纪录

第二步:改造读者javabean,使之包括借阅的图书信息

第三步:改造读者提取方法,同时提取未归还图书;

第四步:修改图书借阅ui类并进行测试

【实验结果与分析】

A、javabean类代码。

private List beanBook;

public List getBeanBook() {

return beanBook;

}

public void setBeanBook(List beanBook) { this.beanBook = beanBook;

}

B、给出改造后ReaderManager类的方法代码。

List result1=new ArrayList();

String sql1="select

a.barcode,a.bookname,a.pubid,a.price,a.state from beanbook

a ,beanbooklendrecord

b where b.readerid='"+rs.getString(1)+"' and

b.bookBarcode=a.barcode and b.returnDate is null";

java.sql.PreparedStatement

pst1=conn.prepareStatement(sql1);

java.sql.ResultSet rs1=pst1.executeQuery();

while(rs1.next())

{

BeanBook b=new BeanBook();

b.setBarcode(rs1.getString(1));

b.setBookname(rs1.getString(2));

b.setPubid(rs1.getString(3));

b.setPrice(rs1.getFloat(4));

b.setState(rs1.getString(5));

result1.add(b);

}

r.setBeanBook(result1);

result.add(r);

在图书管理系统借几本书

修改ui类的地方:

1.private Object tblTitle[]={"读者证号","姓名","类别","借阅限额","

状态","未归还图书信息"};

2.tblData =new Object[readers.size()][6];

3.List t2 = readers.get(i).getBeanBook();

String imf="";

if(t2!=null)

{

for(int j=0;j

{

imf=imf+"条形码:"+t2.get(j).getBarcode()+" 书名:"+t2.get(j).getBookname()+

" 产商id:"+t2.get(j).getPubid()+" 价格

"+t2.get(j).getPrice()+" 状况:"+t2.get(j).getState();

}

}

tblData[i][5]=imf;

测试:

2、改造读者管理模块,将读者列表页面改造成分页查询方式。

第一步:

第二步:自行设计PageData类,用于存放分页数据

第三步:改造ReaderManager类,将其中的查询读者方法改造成分页查询。

第四步:修改ui类,增加上一页、下一页按钮,实现读者的分页查询,要求每页

20人

【实验结果与分析】

A.PageData类代码。

public class PageData {

private int totalRecordCount;

private int pageCount;

private int pagesize;

private int pageRecordCount;

private List beanReader;

用set与get创建方法

B. 给出改造后ReaderManager类的方法代码。

public PageData searchReaderPage(String keyword,int readerTypeId,PageData page)throws BaseException{

//加一个page类

Connection conn=null;

try {

conn=DBUtil.getConnection();

String sql="select count(*) from BeanReader r,BeanReaderType rt where r.readerTypeId=rt.readerTypeId" +

" and removeDate is null "; // 这个sql是为了记录总记录数

java.sql.PreparedStatement pst=conn.prepareStatement(sql);

java.sql.ResultSet rs=pst.executeQuery();

if(rs.next())

page.setTotalRecordCount(rs.getInt(1)); //赋值总记录数

page.setPageCount(page.getTotalRecordCount()/page.getPagesize());

//赋值总页面数

List result1=new ArrayList();

String sql1="select top "+page.getPagesize()+"

readerid,readerName,r.readerTypeId,r.lendBookLimitted,createDate,creatorUserId ,stopDate,stopUserId,rt.readerTypeName" +

" from BeanReader r,BeanReaderType rt where

r.readerTypeId=rt.readerTypeId" +

" and removeDate is null ";

if(page.getPageRecordCount()!=1)

sql1+=" and readerid not in (select top

"+(page.getPageRecordCount()-1)*(page.getPagesize())+" readerid from BeanReader where removeDate is null)";

if(readerTypeId>0) sql1+=" and r.readerTypeId="+readerTypeId;

if(keyword!=null && !"".equals(keyword))

sql1+=" and (readerid like ? or readerName like ?)";

sql1+=" order by readerid";

java.sql.PreparedStatement pst1=conn.prepareStatement(sql1);

if(keyword!=null && !"".equals(keyword)){

pst1.setString(1, "%"+keyword+"%");

pst1.setString(2, "%"+keyword+"%");

}

java.sql.ResultSet rs1=pst1.executeQuery();

while(rs1.next()){

BeanReader r=new BeanReader();

r.setReaderid(rs1.getString(1));

r.setReaderName(rs1.getString(2));

r.setReaderTypeId(rs1.getInt(3));

r.setLendBookLimitted(rs1.getInt(4));

r.setCreateDate(rs1.getDate(5));

r.setCreatorUserId(rs1.getString(6));

r.setStopDate(rs1.getDate(7));

r.setStopUserId(rs1.getString(8));

r.setReaderTypeName(rs1.getString(9));

List result2=new ArrayList();

String sql2="select a.barcode,a.bookname,a.pubid,a.price,a.state from beanbook a ,beanbooklendrecord b where b.readerid='"+rs1.getString(1)+"' and b.bookBarcode=a.barcode and b.returnDate is null";

java.sql.PreparedStatement pst2=conn.prepareStatement(sql2);

java.sql.ResultSet rs2=pst2.executeQuery();

while(rs2.next())

{

BeanBook b=new BeanBook();

b.setBarcode(rs2.getString(1));

b.setBookname(rs2.getString(2));

b.setPubid(rs2.getString(3));

b.setPrice(rs2.getFloat(4));

b.setState(rs2.getString(5));

result2.add(b);

}

r.setBeanBook(result2);

result1.add(r);

}

page.setBeanReader(result1);

} catch (SQLException e) {

e.printStackTrace();

throw new DbException(e);

}

finally{

if(conn!=null)

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return page;

}

给出ui类中的修改部分(注:生成表格的方法需做微调)

1 . 首先增加2个按钮即上一页,和下一页

需要修改3个地方

第一个是:

private Button previous = new Button("上一页");

private Button next = new Button("下一页");

如图:

第二个是:

toolBar.add(previous);

toolBar.add(next);

如图:

第三个是:增加监听器

this.previous.addActionListener(this);

this.next.addActionListener(this);

2.对page类的一些值进行复制

{

page.setPageRecordCount(1);//初始化当前的数是第一页page.setPagesize(20);//以20个记录为一页

}

注意一定要加中括号不然会冒错我也不知道为什么

如图:

有些值在ReaderManager类的searchReaderPage方法中已经赋值了如图:

3.对刷新table的方法进行修改

readers=(new ReaderManager()).searchReaderPage(this.edtKeyword.getText(), rtId,page).getBeanReader();

注意需要在:BeanReaderType类中加private PageData page;变量顺便加下set与get的方法。不然BeanReaderType rt=this.readerTypeMap_name.get(rtname);这句话会冒错说searchReaderPage方法有3个形参而readerType什么只有2个形参不行我也不是很懂

4.最后在actionPerformed方法中加2个if 当按下上一页或下一页按钮时对当

前页值进行修改再刷新table

else if(e.getSource()==this.previous){

if(page.getPageRecordCount()>1){

page.setPageRecordCount(page.getPageRecordCount()-1);

this.reloadTable();

}

}

else if(e.getSource()==this.next){

if(page.getPageRecordCount()

page.setPageRecordCount(page.getPageRecordCount()+1);

this.reloadTable();

}

如图:

测试:

第一页:

当按下下一页后:

当按下上一页后:

《数据库系统设计与开发》模拟实习教学大纲

《数据库系统设计与开发》 模拟实习教学大纲 (Database System Design and Development) 制定单位:工学院计算机科学与技术系 制定人:课程组 编写时间:2016年01月06日

第一部分课程概述 一、基本信息 (一)课程代码 课程代码:07110640 (二)课程属性、学分、学时 计算机专业的专业模拟实习、独立实验、2学分、40学时 (三)适用对象 本课程适用的对象为计算机科学与技术专业的本科生 (四)先修课程与知识准备 《C/C++程序设计》,《数据库原理》,《.Net编程》,《软件工程》 二、实验简介 《数据库系统设计与开发》模拟实习以数据库应用系统的设计与开发为主要目标,结合本专业的多门专业课程:《程序设计》、《数据结构》、《数据库原理》、《面向对象程序设计》、《.Net编程》、《软件工程》等开展专业模拟实习。《数据库系统设计与开发》模拟实习将针对一个现有的数据库应用领域,遵照《软件工程》课程中的生命周期法和软件开发规范进行系统分析与设计,按照《数据库原理》中的关系规范化理论进行数据库的模式设计,并结合《.Net编程》所学基于C#语言及.Net集成开发环境进行系统编码与调试,完成一个小型数据库应用系统的开发任务。最后,通过提交实习报告,提高学生科技论文的撰写能力。通过这一完整的实践教学过程,将进一步加强学生实践和动手能力的培养,真正理解和掌握数据库系统设计和开发的方法,提高学习效果,使学生可以学以致用,成为具有专业技能并有一定实际经验的人才。

三、实验项目 实验一:系统需求分析(4学时) (一)实习(实验)类型 综合性实验。 (二)实习(实验)目的和要求 1.理解需求分析在软件工程应用中的重要性 2.熟悉数据库建模的方法 3.掌握如何将客户的实际需求转化为描述性设计语言 (三)实习(实验)内容 为将要开发的系统作出一份明确、详细的需求分析报告。需求分析报告至少应该包含以下几部分: 1.系统的名称; 2.系统概述; 3.系统要实现哪些功能,每个功能的具体描述。 (四)实习(实验)地点 竞秀楼或竞慧楼机房 实验二:系统设计(4学时) (一)实习(实验)类型 综合性实验。 (二)实习(实验)目的和要求 1.掌握SQL Server数据库管理软件的使用,学习CASE工具(Visio或SA2001)的使用,用信息系统开发工具(例如VS2008)设计一个实用的中小型管理信息系统2.掌握系统设计的基本方法,提高解决实际问题、开发信息系统的实践能力 (三)实习(实验)内容 用信息系统开发工具(例如VS2008)设计一个实用的中小型管理信息系统。 1.根据实验时间选择适当规模大小的设计课题 2.根据合理的进度安排,按照软件工程系统开发的流程及方法,进行实验 3.实验过程中,根据选题的具体需求,在开发各环节中撰写相关的技术文档,最后要

《数据库技术与应用 》实验报告

《数据库技术与应用》上机实验报告 目录: 一、概述 二、主要上机实验内容 1.数据库的创建 2.表的创建 3.查询的创建 4.窗体的创建 5.报表的创建 6.宏的创建 三、总结 一、概述 (一)上机内容: 第七周:熟悉Access界面,数据库和表的创建,维护与操作 1. 熟悉Access的启动,推出,界面,菜单,工具栏等; 2. 练习使用向导创建数据库、创建空数据库; 3. 练习创建表结构的三种方法(向导、表设计器、数据表)、表中字段属性设置; 4. 练习向表中输入不同类型的数据; 5. 练习创建和编辑表之间的关系; 6. 练习表的维护(表结构、表内容、表外观) 7. 练习表的操作(查找、替换、排序、筛选等) 第八周:练习创建各种查询 1.选择查询(单表、多表、各种查询表达式) 2.参数查询 3.交叉表查询 4.操作查询(生成查询、删除查询、更新查询、追加查询) 第十周:练习创建各种类型的窗体 1.自动创建纵栏式窗体和表格式窗体; 2.向导创建主|子窗体

3.图表窗体的创建 4.练习通过设计器创建窗体 5.练习美化窗体 第十三周:练习创建各种类型的报表 1.自动创建纵栏式报表和表格式报表; 2.向导创建报表(多表报表、图表报表、标签报表) 3.练习通过设计视图创建报表(主|子报表、自定义报表) 4.练习在报表中添加计算字段和分组汇总数据 第十五周:综合应用 1.了解Access数据库系统开发的一般方法; 2.课程内容的综合练习; 3.编写上机实验报告、答疑 (二)上机完成情况 第七周:熟悉Access界面,数据库和表的创建,维护与操作 完成了创建表,向表中输入不同类型的数据,创建和编辑表之间的关系,进行了表的维护,修改了表的结构、内容、外观,最后进行了表的操作,查找、替换、排序、筛选等。 已完成 第八周:练习创建各种查询 练习选择查询、参数查询、交叉表查询,然后练习并操作查询,生成查询、删除查询、更新查询、追加查询等。 已完成 第十周:练习创建各种类型的窗体 自动创建纵栏式窗体和表格式窗体,向导创建主|子窗体和图表窗体,练习通过设计器创建窗体,美化窗体。 基本完成 第十三周:练习创建各种类型的报表 自动创建纵栏式报表和表格式报表,向导创建报表,练习通过设计视图创建报表,在报表中添加计算字段和分组汇总数据。 已完成 第十五周:综合应用

实验五 数据库系统设计

实验五数据库系统设计(上机时间6课时) 班级:通信1411 学号:141003410114姓名:李楠 合作成员刘蕾 1.实验目的:理要求学生掌握数据库设计的基本技术。熟悉数据库设计的每个步骤中的任务和实施方法, 并加深对数据库系统概念和特点的理解。 2.实验内容: 学生可根据自己熟悉的信息自选一个小型的数据库应用项目,进行系统分析和数据库设计。例如选择选修课管理系统、学生住宿管理系统、图书管理系统、材料管理系统或仓库管理系统等。 3.实验要求: ●要求起草数据库设计的关键步骤内容,至少包括: ?需求分析:分析用户种类及各自的功能要求;涉及主要数据实体及内容。系统设计的任务及主 要目标等。 ?完成实体建模并画出E-R图 ?起草数据字典 ?描述将关系表规范化至第三范式3NF的过程 ?构建并描述实体与实体关系 ●查阅有关书籍,熟悉MS SQL Server 2005,运用Microsoft SQL Server Management Studio Express在 MS SQL Server 2005上创建数据库。 ●运用Microsoft SQL Server Management Studio Express在MS SQL Server 2005上创建数据库基本表, 得到SQL脚本源码。(可以编写SQL DDL语句脚本源码,然后执行脚本创建基本表;也可以在Studio 中可视化创建基本表然后导出SQL脚本)。SQL脚本源码以文件名EXP5-1.sql存储上传。 ●运用Microsoft SQL Server Management Studio Express在编写SQL脚本,实现需求分析中各种用户需 要的数据库记录添加、记录修改、记录查询功能并将SQL脚本源码以文件名EXP5-2.sql存储上传。 将相应操作结果以文件名EXP5-3.txt存储上传。 ●允许有2人以内的小组合作,组与组之间数据字典、表名、属性名完全雷同视同抄袭;同学之间实 验运行结果完全雷同视同抄袭。 4.实验报告内容: 1.需求分析过程 流程:学生到学生选课系统进行选修课程,查看选修课程的课程信息,选课的老师信息,以及所选的课程号。如果学生要选某个课程,则要查询这门课程的教学老师以及它是否已经被选满;如果学生要查询所选课程的选课成绩,则要查询这门的教学老师;如果学生需要重新选课,则要求先退选所选的课程。 功能:实现学生的选课,重新退订选课,查询课程成绩。 2.E-R图

数据库系统应用与开发--实验三

实验三JDBC基础(2) 一、相关知识点 1、JDBC基本概念 2、JDBC简单查询、preparedstatement、连接查询、集函数查询等 Odbc: Jdbc:

二、实验目的: 理解Java连接数据库的基本概念。理解Statement对象、PreparedStatement对象和ResultSet对象。 三、实验内容: 1、游标滚动模式试验。 第一步:将RsTest类放入对应的工程包中https://www.doczj.com/doc/967985108.html,.zucc.booklib.rstest; 第二步:在BeanSystemUser表中增加一些测试数据; 第三步:运行程序,并查看执行结果。 第四步:将游标滚动模式改成TYPE_SCROLL_SENSITIVE,运行程序,并查看结果 【实验结果与分析】 A、第三步、第四步运行结果截图?并说明区别。 第三步: 第四步:修改前

第四步:修改后 B、

2、利用ResultSet对象进行数据修改 第一步:将RsTest2类放入对应的工程包中https://www.doczj.com/doc/967985108.html,.zucc.booklib.rstest;

第二步:运行程序,并查看执行结果。 第三步:删除rs.updateRow(); 允许程序,并查看执行结果 【实验结果与分析】 A、请给出第二步、第三步的执行截图。说明区别,并分析原因。 第二步: 第三步: 3、利用PreparedStatement对象修改实验二的两个对出版社的查询。 第一步:在实验二的基础上,把传入的查询条件(出版社名称)改成带单引号的字符串,并运行程序。查看执行结果。 第二步:将原来的查询函数,改成用PreparedStatement。运行程序,查看执行结果。通用把传入的查询条件(出版社名称)改成带单引号的字符串,并运行程序。查看执行结果。 【实验结果与分析】 A、第一步执行结果截图。

数据库原理与应用实

数据库原理与应用实验2-3

实验2.3 视图的定义和操作 一、实验目的: 理解视图的概念,掌握视图的使用方法。 二、实验过程 1.对应HRM 数据库,参照前面实验中完成的查询,按如下要求自行设计视图: 1)基于单个表按投影操作定义视图。举例:定义一个视图用以查看所有员工的编号、姓名和出生日期。 CREATE VIEW Departments_View AS SELECT* FROM Departments 2)基于单个表按选择操作定义视图。举例:定义一个满足sex=’true’的员工的所有信息的视图。 CREATE VIEW Employee_view AS SELECT * FROM Employee WHERE Sex = 'TRUE'

3)基于单个表按选择和投影操作定义视图。举例:定义一个视图用以查看部门号码为‘2’的所有员工的姓名、电话和邮件地址。 CREATE VIEW Employee_view1 AS SELECT Name, PhoneNumber, EmailAddress FROM Employee WHERE DepartmentID = '2' 4)基于多个表根据连接操作定义视图。举例:定义一个视图用以查看所有员工的姓名、部门名及工资。 CREATE VIEW Employee_Departments_Salary_View(Name, Department, Salary) AS SELECT https://www.doczj.com/doc/967985108.html,,b.DepartmentName,c.Income-c.OutCome FROM Employee a, Departments b, Salary c WHERE a.EmployeeID = c.EmployeeID AND a.DepartmentID = b.DepartmentID;

《数据库技术与应用》

《数据库技术与应用》 课程教学大纲(及实验教学大纲) 第一部分课程教学大纲 课程名称:数据库技术与应用(Application of Database Technology) 授课教师: 答疑时间: 办公室:信息管理与工程学院 课程类别:限定选修课(模块V、挂牌、财经类专业学生计算机应用基础选修课) 课程时间安排:2012年2月—2012年6月 授课时间: 授课地点:教育技术中心 授课安排调整:节日放假,课程内容顺延 期末考试时间:第17周(随堂闭卷笔试) 教学课时数: 2 × 17 = 34课时(课后课程实验8课时) 课程网址:上财教学网 指定教材: 崔敬东于长锐崔丽丽编著。数据库技术与应用——面向业务分析的Access 2003。清华大学出版社,2011 参考书目: 亚历山大著梁普选刘玉芬等译。Access数据分析宝典。电子工业出版社,2006 布鲁特曼等著,付宇光等译。Access Cookbook中文版:数据分析详解。清华大学出版社,2008 预备知识: 本课程为财经类专业学生的计算机应用基础选修课,假设学生已经掌握计算机应用的基本技能和关于计算机的基础知识,主要着重于计算机基本概念、基本原理、基础知识和基本操作。 教学目的: 本课程教学目的在于向学生较全面地介绍关系数据库技术的基本知识和一般原理,使学生在理解数据在关系数据库中的组织形式、数据彼此的逻辑联系及联系方式等基本范畴的基础上,掌握基于关系数据库技术的数据分析方法,并能够熟练地应用Microsoft Access关系数据库管理系统软件提取数据、加工数据和对数据进行组织输出。同时,通过上机操作、练习和实验,使学生加深对关系数据库理论的理解和认识,提高综合分析问题和解决问题的能力,并掌握利用Microsoft Access工具从数据库中查询数据和设计业务报表的方法。 课堂练习: 由于本课程的重点是数据库理论和技术的实际应用,因此具有很强的操作实验性质,所以要求学生一

数据库系统设计实验报告

数据库系统设计实验报告 ――教务管理系统 学院:计算机科学与技术 专业:软件工程 班级: 学号: 姓名: 指导老师:

一、概述 项目背景:数据库课程设计 系统名称:教务管理系统 开发环境:SQL Server 2008 二、需求分析 1、系统的概述 ?一个学校由很多个学院组成,每个学院有多个专业,每个专业有1个或 者多个班级。一个学生只属于1个班级,学生有姓名、学号、性别、身 份证号、入学时间等属性。 ?每个专业的每个年级都有对应的教学计划。教学计划指定了这个专业这 个年级的某门课程在那个学期上,学分、学时是多少。每个学院都设置 有1个教务秘书,这些信息都由教务秘书进行输入。每个院系的课程都 有自己的唯一编码,比如计算机系上的C语言,和电子系上的C语言, 虽然都是同一门课,但是编码是不同的。但是同一个院系中的相同的课 程,课程代码是唯一的。比如计算机学院的07计算机软件专业和计算机 学院的07计算机科学专业都有C语言课程,这两门课程的课程代码是相 同的。 ?教务秘书在每个学期的中间时刻,为下一个学期进行排课,排课的内容 根据教学计划,比如08计算机软件专业的学生,在2009-2010年第2 学期上的课程,可以通过教学计划得知要上什么课程,然后对这些课程 安排上课教师(比如陈越)、上课时间(比如星期2,第1-2节)和地点 (理工楼234),有的课程是单周上,有的双周,也有是每周都上的。 ?在每个学期期末,学生登录到网站上选择下一个学期需要上的课,选择 的时刻,可以选择是否需要教材,如果某门课程的人数选满了,则不能 给任何学生选择了。 ?学生根据选择的课程进行上课,参加考试。每个老师可以用自己的用户 名和密码登陆网站,选择这个学期自己所教的课程(一个老师可以上多 个班级的课程),输入这个班级的成绩,成绩分为期末考试成绩、期中考 试成绩、平时成绩、实验成绩以及总评成绩。这些成绩都需要进行存储。 ?为了保证安全性,老师输入的成绩并不是直接放到最终的成绩表中,而 是放在一个临时的表中,只有当教务秘书审核过后,才导入到最终的成 绩表中。

数据库应用系统开发案例-程序代码

数据库应用系统开发 数据库系统开发案例—图书现场采购系统系统主窗体的实现 1.数据表结构的实现 经过前面的需求分析和概念结构设计以后,得到了数据库的逻辑结构。现在就可以在SQL Server 2000数据库系统中实现该逻辑结构。可以直接在SQL Server 2000企业管理器中创建表,也可以在SQL查询分析器中创建。下面给出在查询分析器中创建这些表的SQL语句,读者可以将这些表创建在系统的pubs数据库中。 (1)创建书商图书基本信息表bookseller_bookinfo CREATE TABLE bookseller_bookinfo( rec_id Bigint identity(1,1) PRIMARY KEY, isbn varchar(20) null, bookname varchar(200) null, author varchar(50) null, publisher_date varchar(50) null, publisher varchar(50) null, class_name varchar(50) null, book_price numeric DEFAULT 0, book_num int DEFAULT 0, provider varchar(50) null ) (2)创建图书馆图书馆藏基本信息表library_bookinfo CREATE TABLE library_bookinfo ( rec_id Bigint identity(1,1) PRIMARY KEY, isbn varchar(20) null, bookname varchar(200) null, author varchar(50) null, publisher_date varchar(50) null, publisher varchar(50) null, class_name varchar(50) null, book_price numeric DEFAULT 0, book_num int DEFAULT 0, provider varchar(50) null ) (3)创建用户注册表user_info CREATE TABLE user_info ( user_ID varchar(10) PRIMARY KEY , user_PWD varchar(10) null )

数据库技术与应用实验五

实验5 索引和视图 1.实验目的 (1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建 索引的方法。 (2)掌握使用SQL Server管理平台查看索引的方法。 (3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索 引的方法。 (4)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建 视图的用法。 (5)了解索引和视图更名的系统存储过程sp_rename的用法。 (6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。 (7)了解删除视图的Transact-SQL语句DROP VIEW的用法。 2.实验内容及步骤 (1)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。 (2)使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。(3)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。 CREATE INDEX grade_index ON grade(分数) (4)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。 CREATE UNIQUE INDEX grade_id_c_ind ON grade(学号,课程编号) (5)分别使用SQL Server管理平台和系统存储过程sp_helpindex查看grade 表和student_info表上的索引信息。 sp_helpindex grade (6)使用SQL Server管理平台对grade表创建一个聚集索引和唯一索引。(7)使用系统存储过程sp_rename将索引grade_index更名为grade_ind。 sp_rename 'grade.grade_index','grade_ind','INDEX' (8)分别使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引grade_ind。再次使用系统存储过程sp_helpindex查看grade表上的索引信 息。 DROP INDEX grade.grade_ind (9)在studentsdb数据库中,以student_info表为基础,使用SQL Server 管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。(10)在studentsdb数据库中,使用Transact-SQL语句CREATE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用 视图查询学号为0003的学生情况。 (11)基于student_info表、curriculum表和grade表,建立一个名为v_stu_g 的视图,视图中具有所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g 查询学号为0001的学生的所有课程与成绩,如图1-9所示。 图1-9 学号为0001的学生的视图信息 (12)分别使用SQL Server管理平台和Transact-SQL语句修改视图v_stu_c,

数据库技术与应用(第二版)课后答案

第1章习题参考答案 1.思考题 (1)什么是数据库、数据库管理系统、数据库系统?它们之间有什么联系? 答:数据库是存贮在计算机的有结构的数据集合;数据库管理系统是一个软件,用以维护数据库、接受并完成用户对数据库的一切操作;数据库系统指由硬件设备、软件系统、专业领域的数据体和管理人员构成的一个运行系统。 (2)当前,主要有哪几种新型数据库系统?它们各有什么特点?用于什么领域,试举例说明?答:主要有:分布式数据库、面向对象数据库、多媒体数据库、数据仓库技术、空间数据库。 (3)什么是数据模型?目前数据库主要有哪几种数据模型?它们各有什么特点? 答:数据模型是一组描述数据库的概念。这些概念精确地描述数据、数据之间的关系、数据的语义和完整性约束。很多数据模型还包括一个操作集合。这些操作用来说明对数据库的存取和更新。数据模型应满足3方面要求:一是能真实地模拟现实世界;二是容易为人们理解;三是便于在计算机上实现。目前在数据库领域,常用的数据模型有:层次模型、网络模型、关系模型以及最近兴起的面向对象的模型。 (4)关系数据库中选择、投影、连接运算的含义是什么? 答: 1)选择运算:从关系中筛选出满足给定条件的元组(记录)。选择是从行的角度进行运算,选择出的记录是原关系的子集。 2)投影运算:从关系中指定若干个属性(字段)组成新的关系。投影是从列的角度进行运算,得到的新关系中的字段个数往往比原关系少。 3)连接运算:将两个关系按照给定的条件横向拼接成新的关系。连接过程是通过两个关系中公有的字段名进行的。 (5)关键字段的含义是什么?它的作用是什么? 答:一个关系中可以确定一个字段为关键字段,该字段的值在各条记录中不能有相同的值。(如:门牌);关键字段的作用主要是为建立多个表的关联和进行快速查询。 (6)什么是E-R图?E-R 图是由哪几种基本要素组成?这些要素如何表示? 答:E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素有3种,即实体、属性和联系。其表示方法为:用矩形框表示现实世界中的实体,用菱形框表示实体间的联系,用椭圆形框表示实体和联系的属性,实体名、属性名和联系名分别写在相应框。 ABAAC ABCAA 第2章习题解答 1. 思考题 (1)在SQL Server 2008中的数据库中包含哪些对象?其中什么对象是必不可少的?其作用又是什么? 答:SQL Server 2008中的数据库对象主要包括数据库关系图、表、视图、同义词、可编程性、Service Broker、存储和安全性等。其中表对象是必不可少的。表是由行和列构成的集合,用来存储数据。 (2)SQL Server提供的系统数据库master它的作用是什么?用户可以删除和修改吗?为什么?答:master 数据库记录SQL Server 系统的所有系统级信息。主要包括实例围的元数据、端点、服务器和系统配置设置以及记录了所有其他数据库的存在、数据库文件的

数据库系统原理与设计(第二版)实验一至实验三

实验一 1-1.查询员工的姓名、职务和薪水 select employeeName,headShip,salary from employee 图1-1 2.查询名字中含有“有限”的客户姓名和所在地 select CustomerName,address from Customer where CustomerName like '%有限%'

3. 查询出姓“张”并且姓名的最后一个字为“梅”的员工。 select * from employee where employeeName like '张%梅' 图1-3 4. 查询住址中含有上海或南昌的女员工,并显示其姓名、所属部门、职称、住址,其中性别用“男”和“女”显示 SELECT employeeName,department,address, isnull (convert(char(10),birthday,120),'不详')出生日期, case sex when 'M'then '男' when 'F'then'女' end as 性别 from employee where (address like '%上海%'or address like '%南昌%')and sex='F'

5. 查询出职务为“职员”或职务为“科长”的女员工的信息 select * from employee where (headship='职员' or headship='科长') and sex='F' 图1-5 6. 选取编号不在“C20050001”和“C20050004”的客户编号、客户名称、客户地址。 Select * from Customer where CustomerNo not in ( 'C20050001' ,'C20050004')

简单数据库设计实例

数据库设计实例 数据库设计是数据库应用系统设计的一个组成部分,其核心是针对于特定的应用环境,设计合理的数据模型,创建数据库及其应用系统,使之能够有效地存储和处理数据,以满足用户的应用需求。从实用角度出发,数据库设计可分为如下几个步骤: 第一步:创建概念数据模型 ◆确定实体和关系 ◆确定属性 ◆规化数据 第二步:生成物理数据模型 第三步:验证设计 为便于学习者理解和掌握,下面结合具体的实例来讲解和展示数据库设计的详细过程。假定我们要开发一个小型的ERP系统,以管理公司部资源,其应用业务场景描述如下: v512工作室由IT业界专业人士组成,在提供高端IT培训业务的同时,还自主制作并免费发布大量公益性学习资源,工作室以公司形式运营,目前共拥有18名员工,这些员工分属于4个部门,且员工之间存在上下级管理关系。计划将来根据业务的发展设立更多的部门,聘用更多的员工。为保证质量,工作室对其成员的各项专业技能进行了级别评定。 8.5.1 确定实体和关系 1. 确定高级别的活动 要确定本ERP系统数据库设计中的实体和实体间关系,首先应明确要基于该数据库执行的高级别活动,这里所谓的高级别活动是指从用户的视角出发,确定本数据库设计中系统所涉及到的业务活动。比如,存储和维护员工的个人信息等。 在前述的应用业务场景中,v512工作室需要考虑的高级别活动包括: -聘用新员工 -解雇现有员工 -维护员工的个人信息 -增设新部门 -裁撤现有部门 -维护部门信息 -维护工作室业务相关的技能信息 -维护各员工的业务技能掌握情况 2. 确定实体 接下来要确定的是,针对上述的高级别活动需要记录和维护有关哪些事物的信息,这些事物将被转换为实体。其中,员工相关信息可抽象为“Employee”实体、部门相关信息可抽象为“Department”实体、技能相关信息抽象为“Skill”实体,为规和方便起见,这些实体均采用英文命名,并尽量在名称中体现其含义。 3. 确定关系 进一步对上述高级活动进行分析,以确定实体间存在何种关系。具体包括: -Employee-Department实体之间存在隶属关系 员工必须且只能隶属于某一个特定的部门,一个部门可以包含0~多名员工,此为一对多关系。 这种从两个方向上对同一个关系的细化描述被称为关系的角色,每个关系都对应两种角色。

《数据库原理与应用》实验报告一

课程名称:数据库原理与应用 实验编号 实验一SQL Server基本操作系别计科系 及实验名称 姓名学号班级 实验地点实验日期2011年4月5日实验时数8 指导教师同组其他成员无成绩 一、实验目的及要求 1、掌握SQL Server2000系统的数据库创建方式。 2、掌握SQL Server2000系统的数据表的创建方式。 3、掌握SQL Server2000系统的数据编辑的基本方式。 二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等) 1、计算机操作系统要求在windows XP以上。 2、并要求SQL Server软件2000以后版本。 三、实验内容及要求 1、数据库创建 使用对象管理器创建一个数据库Student,具体要求如下: (1)数据库文件: a)逻辑名:学生信息;b)操作系统名称:d:\学生数据\Student_data.mdf; c)起始大小:10MB;d)最大文件大小:50MB;e)每次递增大小:5MB (2)日志文件: a)逻辑名:学生信息日志;b)操作系统名称:d:\学生数据\Student_log.ldf;c)起始大小:5MB; d)最大文件大小:20MB;)每次递增大小:2MB 2、表的创建 假设有如下一个教学信息关系模型 stu(SNo,SName,Sex,Age,Nation,Native) course(CNo,CName,Pubcompany,TName,Period) grade(SNo,CNo,Grade) 请根据下面的表中字段类型(即域)的定义,在student数据库中使用对象管理器来创建各个表。 stu表

四、实验步骤及结果(包含简要的实验步骤流程(分步书写各步的SQL语句)、结论陈述) 1、关系图 2、分步书写各步的SQL语句 数据库的创建: create database student on ( name=student_data, filename='d:\学生数据\Student_data.mdf', size=10mb, maxsize=50mb, filegrowth=5mb) log on ( name=student_log, filename='d:\学生数据\Student_log.ldf', size=5mb, maxsize=20mb, filegrowth=2mb) 表的创建: create table stu ( SNo char(8)not null constraint SNo_key primary key(SNo), SName char(24)not null, Sex char(1)not null, Age int, Nation char(20), Native char(20), ) create table course ( CNo char(3)not null constraint CNo_key primary key(CNo), CName char(20)not null, Pubcompany char(20), TName char(24)not null,

数据库系统应用与开发--实验六

实验JDBC进阶(2) 一、相关知识点 1、JDBC基本概念 2、视图、索引 二、实验目的: 理解视图和索引的概念,并通过视图设计简化程序设计,通过索引设计优化查询性能 三、实验容: 1、设计读者视图view_reader,并修改readerManager类中相关代码。 第一步:通过查询分析器建立读者视图,要求视图中包含读者类别名称; 第二步:改造ReaderManager类,将其中的连接查询用视图代替。 第三步:运行图书管理系统,进行各个功能的测试(读者类别管理、读者管理)【实验结果与分析】 A、写出视图创建代码。 create view view_reader as select readerid,readerName,r.readerTypeId,r.lendBookLimitted,createDate,creatorUserId,stopDate,s topUserId,rt.readerTypeName,r.removeDate from BeanReader r,BeanReaderType rt where r.readerTypeId=rt.readerTypeId B、给出改造后ReaderManager类的各个方法的代码。 String sql="select *" + " from view_reader where removeDate is null " + " and removeDate is null "; String sql="select *" + " from view_reader where readerid=?";

2、设计图书视图view_book,并修改BookManager类中相关代码。 第一步:通过查询分析器建立图书视图,要求视图中包含名称; 第二步:改造BookManager类,将其中的连接查询用视图代替。 第三步:运行图书管理系统,进行各个功能的测试 【实验结果与分析】 A、写出视图创建代码。 create view view_book as select b.barcode,b.bookname,b.pubid,b.price,b.state,p.publishername from beanbook b,beanpublisher p where b.pubid=p.pubid B、给出改造后ReaderManager类的各个方法的代码。 public class BookManager { public List searchBook(String keyword,String bookState)throws BaseException{ List result=new ArrayList(); Connection conn=null; try { conn=DBUtil.getConnection(); //改动处 String sql="select *" +

数据库设计实例—教学管理系统

数据库课程设计报告 教学管理系统 数据库设计 课程设计题目教学管理系统学院软件学院 班级软件技术四班年级2013级 姓名彭超李新徐彤(2014 年11月)

用5行左右的文字对系统进行简要介绍 对教学管理信息统一规范整理,实现各种信息的自动管理。为便于信息的查询,找出各种信息的关联性,根据各种需求设计出合理的报表。 减轻教学日常信息管理的负担,方便学生、教师查询信息和学校对所有信息的管理。以简单便捷的操作获取详尽的信息。 一、数据需求分析 某学校设计学生教学管理系统。学生实体包括学号、姓名、性别、生日、民族、籍贯、简历、登记照,每名学生选择一个主修专业,专业包括专业编号、名称和类别,一个专业属于一个学院,一个学院可以有若干个专业。学院信息要存储学院号、学院名、院长。教学管理还要管理课程表和学生成绩。课程表包括课程号、课程名、学分,每门课程由一个学院开设。学生选修的每门课程获得一个成绩。另外,为了管理教师教学安排,教师包括编号、姓名、年龄、职称,一个教师只能属于一个学院,一名教师可以上若干门课程,一门课程可以有多名老师来上,每个教师所上的每门课都有一个课堂号和课时数。 本系统数据字典如下: 数据项表

数据流 数据流表 二、概念结构设计 1.首先确定系统中的实体 从以上数据需求可以看出,系统共包括5个实体:学生、专业、学院、教师、课程。

2.再确定系统中实体间的关系 根据数据需求描述推出:专业与学生是1对多关系;学生与课程是多对多关系;课程与老师是多对多关系;课程与学院是多对1关系;学院与专业是1对多关系;学院与教师是1对多关系。 3.转化成E-R图 图1 实体-属性图 图2 教学管理ER图 三、逻辑结构设计

数据库原理实验报告(2)

南京晓庄学院 《数据库原理与应用》 课程实验报告 实验二数据库的创建、管理、备份及还原实验 所在院(系):数学与信息技术学院 班级:11软工转本2 学号: 1130708 11130710 姓名:马琦乔凌杰

1.实验目的 (1)掌握分别使用SQL Server Management Studio图形界面和Transact-SQL语句创建和修改 数据库的基本方法; (2)学习使用SQL Server查询分析窗口接收Transact-SQL语句和进行结果分析。 (3)了解SQL Server的数据库备份和恢复机制,掌握SQL Server中数据库备份与还原的方 法。 2.实验要求 (1)使用SQL Server Management Studio创建“教学管理”数据库。 (2)使用SQL Server Management Studio修改和删除“教学管理”数据库。 (3)使用Transact-SQL语句创建“教学管理”数据库。 (4)使用Transact-SQL语句修改和删除“教学管理”数据库。 (5)使用SQL Server Management Studio创建“备份设备”;使用SQL Server Management Studio对数据库“教学管理”进行备份和还原。 (6)SQL Server 2005数据库文件的分离与附加。 (7)按要求完成实验报告 3.实验步骤、结果和总结实验步骤/结果 (1) 总结使用SQL Server Management Studio创建、修改和册除“TM”(教学管理)数据库的过程。 新建数据库如下图所示: 进入sql server management studio 主界面,选择数据库右击新建数据库。 如何修改数据库 进入sql server management studio 主界面,选择数据库右击属性即可看到数据库信息,可更改数据库基本信息。

数据库实验6数据库系统设计

实验报告 学院:计信学院专业:网络工程班级:091 姓名学号实验组实验时间2012-6-1 指导教师成绩实验项目名称实验六:数据库系统设计实 验目的 要求掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方法,并加深对数据库系统概念和特点的理解。 实 验 要 求 本实验属于设计型实验,通过实验,加强对课堂讲授知识的理解。 实验原理 必须按照数据库设计的四个阶段进行:需求分析(分析用户要求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。概念模型设计时采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上地设计概念结构,和自底向上的设计方法;概念模型必须用E-R图进行表示。在逻辑设计阶段,将E-R图转换成关系模式,然后进行关系模式的规范化。在物理设计阶段,将关系模式转化成SQL Server中的具体的数据库表,并建立表间的关系,表的索引,及相关的约束。 实 验仪器(1)硬件条件:个人计算机。 (2)软件条件:Windows 2000NT Server; MS SQL Server 2000。 实验步骤1、完成系统需求分析报告 在系统需求分析报告中包括采用的设计方法、数据流图和数据字典。 2、完成数据库信息要求和关系数据模型设计 使用E-R图表示对数据库中要存储的信息及语义进行详细描述,对数据约束和数据之间的关联进行

详细描述。详细描述系统需要的基本表及属性、视图和索引,对基本表的主码、候选码、外码及被参照表进行说明,对基本表中数据的约束条件进行说明。 3、完成数据库的操作和应用要求报告 在数据库的操作和应用要求报告中,详细描述数据库的数据操作要求、处理方法和处理流程,画出系统功能模块图。 4、在机器上完成整个数据库的设计。 实 验内容 要求根据周围的实际情况,自选一个自己熟悉的小型数据库应用项目,并深入到应用项目的现实世界中,进行系统分析和数据库设计。例如选择学籍管理系统、图书管理系统、材料管理系统或仓库管理系统等。 实验数据我设计的是车站售票管理系统,主要用于车站日常的票务处理。 一、需求分析 车站售票管理系统 员工 管理 模块 汽车 管理 模块 线路 管理 模块 车票 管理 模块 票务 信息 管理 模块 员 工 信 息 添 加 员 工 信 息 删 除 员 工 信 息 修 改 汽 车 信 息 添 加 汽 车 信 息 修 改 汽 车 信 息 删 除 线 路 信 息 添 加 线 路 信 息 修 改 线 路 信 息 删 除 添 加 车 票 删 除 车 票 查 询 车 票 信 息 购 买 / 预 订 车 票员 工 信 息 查 询 汽 车 信 息 查 询 线 路 信 息 查 询 车 票 信 息 查 询 功能模块图 1.员工管理模块: 员工有两种身份,售票员和系统管理员。系统管理员可以进行系统用户的添加,密码的修改操作,汽车,线路,车票信息的更新等,售票员可以查询以上信息和购买车票等。 2.线路信息管理模块:

数据库系统应用与开发实验四

数据库系统应用与开发实 验四 Revised by BLUE on the afternoon of December 12,2020.

实验 JDBC基础(3) 一、相关知识点 1、JDBC基本概念 2、JDBC数据增、删、改,事务控制等 二、实验目的: 理解Java连接数据库的基本概念。理解利用Statement对象、PreparedStatement对象进行增、删、改操作,理解事务的概念和JDBC编程方式。 三、实验内容: 1、利用Statement对象进行数据添加。 第一步:修改PublisherManager类的createPublisher方法,将其中的insert语言改成用Statement对象执行; 第二步:运行图书管理系统,进行添加出版社测试。 【实验结果与分析】 A、写出替换的代码部分。 Connection conn=null; try { conn=(); String sql="select * from BeanPublisher where pubid='"+()+"'"; (); quals()) || ().length()>20){ throw new BusinessException("读者类别名称必须是1-20个字"); } if()<0 || ()>100){ throw new BusinessException("借阅图书数量必须在0-100之间"); } Connection conn=null; try { conn=(); String sql="select * from BeanReaderType where readerTypeName="; (1, ()); if()) throw new BusinessException("读者类别名称已经被占用"); (); (); sql="select max(readerTypeId)from BeanReadertype"; int i=1; pst=(sql); rs = (); odifyUserName("超级管理员"); } catch (BaseException e) { odifyUserName("超级管理员1"); } catch (BaseException e) { quals()) || ().length()>20){

相关主题
文本预览
相关文档 最新文档