大数据库系统开发实验三
- 格式:doc
- 大小:1.08 MB
- 文档页数:19
数据库实验报告(通用3篇)数据库试验报告篇1一、实训时间:20_年5月13日至5月24日二、实训地点:三、实训目的与意义:1,这次实习可以使我们在课本上学到的学问用于实践增加了我对电脑技巧的一些认知。
2,通过这次实习也可以让我体验到上班族的生活为我将来毕业后找工作打下了基础。
3,并且这次实习可以非常好的关心我完成将来的毕业论文。
四、实训感悟:还依旧记得来的第一天对这里很茫然,不知道实习要做些什么。
然后经过老师的急躁讲解,熟悉了自己实习要做些什么,得到了许多心理熟悉,对许多问题都有了一些更深的了解。
同时,我熟识了河北玛世电子商务有限公司,总部位于国家命名的“中国丝网之乡”、“中国丝网产业基地”、中国丝网产销基地“、”中国丝网出口基地“—河北省安平县。
使我们队公司有了更进一步的了解实习,就是在实践中学习。
经过这半个月的实习训练,我了解到自己所学的如何在实践中运用。
当然学的更多的是如何在更新网站内容和添加商品,每天不厌其烦的更新添加,观察自己的胜利更多的是兴奋。
还有发布了一些关于公司产品的博客,比如新浪,网易。
而后又尝试在百度知道上提问与回答,在回答问题的过程中,通过网站搜寻相关内容来回答各种丝网问题,通过百度知道这个平台,我对公司又了更一步的了解。
经过半个月的实训我学到了许多之前没有学过没有接触到的东西,熟悉到自己的不足,需要更加努力,才能尽快的学会在社会上生活,敢于面对社会的压力,使自己可以在社会上成长进展。
数据库试验报告篇2由于平常接触的都是一些私人项目,这些项目大都是一些类库,其他人的沟通相对可以忽视不计,因此也就不考虑规范化的文档。
实际上从学习的经受来看,我们接触的学问体系都是属于比较老或比较传统的,与现在进展快速的IT行业相比许多状况已不再适用,尤其是当开源模式渐渐走近开发者后更是如此。
虽然这次是一个数据库课程设计,由于本人在选择项目的时候是本着对自己有实际应用价值的角度考虑的,所以其中也涉及到一些数据库以外的设计。
数据库原理实验报告实验三数据查询班级:×××姓名:×××学号:×××数据查询一、[实验目的]1.掌握SQL的单表查询操作2.掌握SQL的连接查询操作3.掌握SQL的嵌套查询操作4.掌握SQL的集合查询操作二、[实验内容]本实验的主要内容是:1.简单查询操作。
包括投影、选择条件表达,数据排序,使用临时表等。
2.连接查询操作。
包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
3.在SQL Server查询分析器中,使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。
4.组合查询与统计查询。
(1)分组查询实验。
该实验包括分组条件表达、选择组条件的表达方法。
(2)使用函数查询的实验。
该实验包括统计函数和分组统计函数的使用方法。
(3)组合查询实验。
(4)计算和分组计算查询的实验。
三、[实验方法]1.将查询需求用Transact-SQL语言表示。
2.在SQL Server查询分析器的输入区中输入Transact-SQL查询语句。
3.设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。
4.发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。
5查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。
查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。
图5- 错误!未定义书签。
SQL Server 2000查询分析器查询分析器的界面如图5- 错误!未定义书签。
所示。
在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查询语句;右下方为结果区,用于显示查询结果和分析结果。
数据库原理及应用实验指导书 - 答案实验一:数据库管理系统的安装与配置问题一数据库管理系统(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函数,用于连接和操作数据库。
数据库实验报告《数据库系统概论》实验指导书2012-8-30⽬录实验⼀数据库服务器的连接及数据库的建⽴ (1)实验⼆简单SQL查询及数据库多表查询 (12)实验三视图、索引、存储过程和触发器的使⽤ .. 22实验四 E-R模型与关系模型的转换 (30)实验五维护数据的完整性(选做)错误!未定义书签。
实验六事务管理(课后选做)错误!未定义书签。
实验七数据库的备份与恢复(课后选做)错误!未定义书签。
实验⼀数据库服务器的连接及数据库的建⽴⼀、实验⽬的:了解连接数据库服务器的⾝份验证模式,熟悉样例数据库。
掌握DBMS中利⽤界⾯进⾏建库建表操作。
⼆、实验准备:数据模型由三个要素组成:数据结构、数据操作和完整性约束。
1、数据结构数据结构⽤于描述系统的静态特性,是所研究的对象类型的集合。
数据模型按其数据结构分为层次模型、⽹状模型和关系模型。
2、数据操作数据操作⽤于描述系统的动态特性,是指对数据库中各种对象的实例允许执⾏的操作的集合,包括操作及有关的操作集合。
3、数据的约束条件数据的约束条件是⼀组完整性规则的集合。
完整性规则是给定的数据及其联系所具有的制约和存储规则,⽤以限定符合数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据库系统的三级模式结构数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级组成。
1、外模式。
外模式也称⼦模式或⽤户模式,它是数据库⽤户(包括应⽤程序员和最终⽤户)看见和使⽤的局部数据的逻辑结构和特征的描述,是数据库⽤户的数据视图,是与某⼀应⽤有关的数据的逻辑表⽰。
⼀个数据库可以有多个外模式。
2、模式。
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有⽤户的公⽤数据视图。
⼀个数据库只有⼀个模式。
3、内模式。
内模式也称存储模式,它是数据物理和存储结构的描述,是数据在数据库内部的表⽰⽅式。
⼀个数据库只有⼀个内模式。
DBMS的功能1、数据定义数据定义包括定义构成数据库结构的外模式、模式和内模式,定义各个外模式与模式之间的映射,定义模式与内模式之间的映射,定义有关的约束条件(例如,为保证数据库中数据具有正确语义⽽定义的完整性规则,为保证数据库安全⽽定义的⽤户⼝令和存取权限等)。
梁文娟目录实验1 用E-R图设计数据库 (3)实验2 熟悉SQL Server 2000环境 (4)实验3 创建数据库及表 (19)实验4 数据查询 (34)实验5 视图的定义和操作 (36)实验6 实现数据完整性 (38)实验7 实现数据库安全管理 (41)实验8 实现触发器 (45)实验9 数据库备份与恢复 (47)实验10 数据库设计综合应用 (48)实验1 用E-R图设计数据库实验目的与要求:1.掌握E-R模型的基本概念和图形的表示方法。
2.掌握将现实世界的事物转化成E-R图的基本技巧3.熟悉关系数据模型的基本概念。
4.掌握E-R图转化成关系表的基本方法实验环境:1.Windows 2000/XP2.SQL Server 2000实验内容:1.根据需求确定实体、属性和联系。
2.将实体、属性和联系转化为E-R图。
3.将E-R图转化为表。
实验步骤:1.设计能够表示学生、课程关系的数据库。
1)确定学生、课程实体的属性。
2)确定学生、课程实体的联系以及联系类型。
3)画出学生、课程关系的E-R图。
2.设计能够表示商品、顾客和商品生产厂家关系的数据库。
1)确定商品、顾客和商品生产厂家实体的属性。
2)确定商品、顾客和商品生产厂家的联系以及联系类型。
3)画出商品、顾客和商品生产厂家关系的E-R图。
讨论:E-R图和关系表之间的关系。
实验2 熟悉SQL Server 2000环境一、实验目的●掌握SQL Server 2000的安装●了解SQL Server 2000的组织结构和操作环境●熟悉SQL Server 2000的基本使用方法二、背景知识SQL Server 2000是Microsoft公司推出的高性能的客户端/服务器结构的关系数据库管理系统,它继承了SQL Server 7.0版本的高性能、可靠性、易用性和可扩充性的优点,同时又增加了一些新的特性,使其成为一种领先的数据库管理系统,可用于联机事务处理(OLTP)、数据仓库及电子商务等。
实验三对数据库表插入数据一、实验目的及要求1.学会在企业管理器中对表进行插入、修改和删除数据操作。
2.学会使用T-SQL语句对表进行插入、修改和删除数据操作。
3.了解T-SQL语句对表数据库操作的灵活控制功能。
二、实验内容:1.SQL数据定义语句:1-1:(修改数据库表) 在student表中增加SSEX(C,2) 字段。
1-2:(建立索引) 为score表按学号升序和课程号降序分别建立索引,索引名分别为SC_NDXSNO和SC_NDXCNO。
为Score表按分数降序建立索引,索引名为GRADE_NDX。
1-3:(删除索引) 删除索引SC_NDX_SNO。
2.SQL数据操纵语句:2-1:(插入数据) 按实验二各表中的数据(见实验数据)分别插入到教学数据库的四个数据库表中。
2-2:(修改数据) 将S1表中所有学生的年龄加2。
2-3:(修改数据) 将course表中‘程序设计’课时数修改成与‘数据结构’的课时数相同。
2-4:(插入数据) 向score表中插入数据(‘05001’, ‘001’, 95),根据返回信息解释其原因。
2-5:(删除数据) 删除Score表中学号为‘04001’的成绩信息,根据返回信息解释其原因。
三、实验编程结果或过程(本次实验未采用截图的方式显示操作过程,而是直接将涉及的数据显示在以下蓝色字体中)1.SQL数据定义语句:1-1:(修改数据库表) 在student表中增加SSEX(C,2) 字段。
ALTER TABLE student ADD ssex char(2);1-2:(建立索引) 为score表按学号升序和课程号降序分别建立索引,索引名分别为SC_NDXSNO和SC_NDXCNO。
为Score表按分数降序建立索引,索引名为GRADE_NDX。
CREATE UNIQUE INDEX SC_NDXSNO on score (sno asc);CREATE UNIQUE INDEX SC_NDXCNO on score (cno desc);CREATE UNIQUE INDEX RADE_NDX on score (score desc);1-3:(删除索引) 删除索引SC_NDXSNO。
附录:数据库原理及应用实验大纲及指导册数据库原理与应用实验大纲一、上机性质、目的及任务:通过上机实践,配合课堂教学内容加深对数据库的基本概念和基本技术的理解,掌握数据库系统设计的基本思想和基本步骤,熟悉关系数据库的标准语言SQL,并对关系数据库系统的一些典型技术有较深入的了解,使学生的动手能力有较大的提高。
另外,通过上机实践善于发现数据库应用程序中的错误,并且快速排除这些错误,使其正确运行,为今后使用大型数据库进行数据库应用系统的开发积累经验。
二、实验内容:实验一熟悉MysQL环境及SQL定义语言实验二SQL语言进行简单查询实验三SQL进行复杂查询实验四SQL常用数据更新操作(以上实验为基础实验内容,在保证基础实验完成的前提下,感兴趣的同学可尝试通过编写Web界面和后台程序的形式操作数据库,构建一个简易的Web数据库管理系统)实验一熟悉MySQL环境及SQL定义语言一、实验目的:1.了解MySQL程序构成、安装、管理方法。
2.了解MySQL数据库及表结构。
3.熟练掌握SQL语言进行基本表结构的创建。
4.熟练应用SQL语言进行表结构的修改。
5.掌握SQL语言进行基本表的删除。
6.掌握SQL语言进行索引的建立和删除。
二、实验内容和主要步骤:1.参考“MYSQL简体中文参考文档.chm”,熟悉MySQL构成和功能特性。
2.打开Windows服务管理器,实验启动、停止MySQL服务,了解MySQL的服务管理方法;3.打开“MySQL管理控制台.bat”,熟悉控制台中操作数据库;4.利用控制台创建“Student数据库”。
5.打开“Student”数据库,创建如下三个表,按下面的列表中的字段名(英文)、类型和宽度建立:表1 student (学生)字段名字段说明类型字段大小小数位数sno 学号Char 8sname 姓名Varchar 8ssex 性别Char 2sdept 系别Varchar 20sage 年龄Int 整型表2 course (课程)字段名字段说明类型字段大小小数位数cno 课程号Char 3cname 课程名称Varchar 20Credit 学分Numeric 1Cpno 系别char 3表3 sc (选修)字段名字段说明类型字段大小小数位数sno 学号Char 8cno 课程号Char 3Grade 成绩numeric 16.按图1-3所示向表中插入数据;图1 student表数据图2 course表数据图3 SC表数据7.用SQL语言CREATE TABLE语句创建学生表student、课程表course和选课表SC;(字段类型及长度参照实验一)8.用SQL语言ALTER语句修改表结构;a)STUDENT表中SNO设为非空和唯一;b)STUDENT表中增加一个字段SBIRTH,类型设置为日期时间类型,增加一个ADDRESS字段,类型为文本(字符);c)删除STUDENT表中ADDRESS字段;d)COURSE表中CNO字段设为非空和唯一;9.重新定义一个简单表,然后用SQL语言DROP语句删除该表结构;10.用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序索引;11.用SQL语言CREATE INDEX语句定义表SC的GRADE字段的升序索引;12.用SQL语言DROP语句删除索引;13.输入部分数据,并试着修改其中的错误;注:注意数据的完整性。
数据库原理实验指导书实验名称:试验一: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中的查询。
南京晓庄学院《数据库原理与应用》课程实验报告实验三数据表的创建与管理实验所在院(系):数学与信息技术学院班级:学号:姓名:1.实验目的(1)理解SQL Server 2005常用数据类型和表结构的设计方法。
理解主键、外键含义,掌握建立各表相关属性间参照关系的方法。
(2)熟练掌握使用SQL Server Management Studio图形工具创建表,删除表,修改表结构,插入及更新数据的方法。
(3)熟练掌握使用Transact-SQL语句创建表,删除表,修改表结构,插入及更新数据的方法。
2.实验要求基本实验:(1)在实验二所创建的“TM”数据库中合理设计以下各表逻辑结构:学生信息(学号,姓名,性别,籍贯,出生日期,民族,学院/系别号,班级号)课程信息(课程号,课程名称,课程所属模块,课程类别,学分,学时)学习信息(学号,课程号,考试成绩,平时成绩)院系信息(院系号,院系名称)要求确定各个字段的名称、类型、是否有默认值,是否主键等信息。
(2)依据你所设计的表结构,使用SQL Server Management Studio图形工具在“TM”数据库中创建学生信息表和课程信息表,并试验在图形界面中修改表结构,删除数据表,输入并更新数据的方法。
(3)依据你所设计表结构,使用Transact-SQL语句创建学习信息表和院系信息表,并试验使用T-SQL语句修改表结构,删除数据表,插入和更新数据的方法。
(4)找出已创建各表之间相关属性的参照关系,并在相关表中增加引用完整性约束。
(5)按要求完成实验报告。
扩展实验:(1)在“TM”数据库中补充设计以下各表结构:教师信息(教师号,姓名,性别,出生日期,学历,学位,入职时间,职称,院系号)授课信息(教师号,课程号,学期)班级信息(班级号,班级名称,专业号)专业信息(专业号,专业名称,学制,学位)图书信息(图书号,书名,作者,出版社,出版日期,册数,价格,分类)借书偏息(学号,图书号,借出时间,归还时间)奖励信息(学号,奖励类型,奖励金额)(2)设计并实现各表之间相关属性的参照关系。
实验报告课程名称_软件工程导论__________学院____计算机工程学院_________班级14软件1班学号2014144141姓名秦川2017年1月11日批阅教师时间实验成绩课程名称软件工程学号2014144141姓名秦川实验日期实验名称实验3总体设计和数据库设计实验目的:1、掌握总体设计和数据库设计2、掌握总体设计方法和数据库设计方法,掌握界面设计的绘制。
实验内容:任务一绘制工资支付系统的功能结构图和数据库任务二绘制功能结构图和数据库案例一:总务办公管理系统案例二:火车票预订系统实验原理:在系统设计阶段,要设计软件体系结构,即是确定软件系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
同时把模块组织成良好的层次系统:顶层模块通过调用它的下层模块来实现程序的完整功能,顶层模块下面的每个模块再调用更下层的模块从而完成程序的一个子功能,最下层的模块完成最具体的功能。
通过对数据流图边界的划分,变换成系统结构图,得到功能结构图。
实验过程与结果:任务一绘制工资支付系统的功能结构图和数据库 绘制工资支付系统的功能结构图1.运行Microsoft Office Visio2.选择“流程图”中的“基本流程图”模板如上图所示,此工资支付系统功能在于计算教职工工资,并输出相应的表单,在教职工输入课时表、任务表等数据时,系统可以计算出其应得的工资,甚至有具体的工资明细表。
绘制工资支付系统的数据库模型图3.用鼠标选拉图标进行绘图(1)绘制实体(表)外键设置:(1)左侧的“实体关系”中选择“关系”手动到图片。
(2)将“关系”箭头头部拖动到主表的中心直到主表边框呈现红色表示成功设置主表。
(3)将“关系”箭头尾部拖动到子表的中心直到子表边框呈现红色表示成功设置子表。
(4)点击“关系”箭头,在下面的“定义”--》父、子中选择要关联的列。
实验小结本次试验与上俩次实验同属于第1章:传统的结构化分析与设计,但我个人感觉,难度不及第二次实验,第一次是流程图,这是以往学过的内容,所以简单,而这次,应该是个人经验的丰富吧,首先对实验三个系统熟悉了,不用再对系统进行详细的分析了,另外,这次实验涉及数据库,在大二时,我们就系统的学习这门课程,故外键、主键、数据表的操作还是较为熟悉的。
大学《数据库原理》课程教学大纲及课程重点、难点一、基本信息课程代码:学分:3总学时:48(其中实验9学时)适用对象:本科计算机、网络、软件工程、通讯等相关专业先修课程:数据结构二、课程性质、教学目的和要求(一)课程性质和目的数据库原理是计算机专业的一门专业必修课,面向高年级学生开设,本大纲以一学期51课时讲授。
本课程的目的是向学生介绍数据库的基本概念和原理,掌握常用数据库系统的使用,使学生能够使用数据库技术进行数据库设计和系统开发。
(二)教学方法与手段以课堂理论教学为主,上机实践为辅,配合多媒体教学。
在教学过程中注重能力的培养,以实际应用为例,提高理论教学的生动性,提高学生的动手能力。
(三)教学安排学时安排:16周X3学时二48学时,其中课堂教学13周X3学时=39学时,上机实验3周X3学时=9学时。
课堂讲授数据库的基本概念、基本理论和工作原理,上机实验练习理论的实现和一个典型的关系数据库系统。
课堂教学:第一章绪论(3学时)第二章关系数据库(6学时)第三章关系数据库标准语言SQL(6学时)第四章(数据库安全性)和第五章(数据库完整性)(3学时)第六章关系数据理论(6学时)第七章数据库设计(6学时)第八章数据库编程和第九章关系查询与优化(3学时)第十章数据库恢复技术(3学时)第十一章并发控制(3学时)上机实验:实验1(3课时):E-R模式设计和数据库设计与实现。
掌握数据库系统和DBMS的组成,练习SQLServer的配置和使用,E-R模式设计,设计并实现一个具体的数据库。
实验2(3课时):数据库的范式设计和数据库的数据操纵的设计与实现。
利用E-R模式设计,进行关系模式设计和模式规范化过程的练习,设计并实现数据库的查询、添加、修改、删除、更新以及视图的设计与实现。
实验3(3课时):数据库系统的安全性和、完整性和整体设计。
数据库系统的安全性和完整性的设计与实现;数据库系统的整体设计。
实验4(3课时):简单关系数据库系统的设计与实现。
实验三多表查询【实验目的】掌握多张表进行连接查询,主要包括连接查询、子查询和相关子查询等内容。
【实验内容】在实验一的基础上完成下列查询。
(1)(连接查询) 求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。
select sname,cname,score from student,score,coursewhere student.sno=score.sno and o=o and o='001' and scorebetween 70 and 90;(2)(连接查询与表的别名) 求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。
select sname,cname,score from student s1,score s2,course c1where s1.sno=s2.sno and o=o and o='001' and s2.SCOREbetween 70 and 90;(3)(自然连接查询) 求学生学号、姓名以及其选修课程的课程号和成绩。
select s1.sname,s1.sno,o,s2.score from student s1,score s2where s1.sno=s2.sno;(4)(自身连接查询) 求年龄大于'李丽' 的所有学生的姓名、系和年龄。
select s2.sname,s2.sdept,s2.sage from student s1,student s2 where s1.sname=' 李丽' and s2.sage>s1.sage;(4)(外部连接查询) 求未选修任何课程的学生的姓名。
select * from student a left join score b on a.sno=b.snowhere b.sno is null;(6)(子查询) 求与‘李丽’年龄相同的学生的姓名和系。
实验三:创建视图、存储过程和实现数据安全_mysql实验三:完整性约束、视图、存储过程和数据安全[⽬的和意义]掌握创建各种完整性约束的⽅法;掌握创建和使⽤视图、存储过程和索引的⽅法;掌握实现数据安全的基本⽅法;掌握数据库的基本备份和恢复技术。
[实验内容]本实验在mysql数据库平台上进⾏操作,实验中的各种数据都来⾃于实验⼆中的各个表。
实验主要内容如下:1.学习创建完整性约束的⽅法。
2.学习创建视图、存储过程和索引的⽅法。
3.学习利⽤⽤户管理和视图实现数据安全。
4.学习mysql数据库的基本备份和恢复技术。
[实验步骤]1 完整性约束1.1 实体完整性约束主键⼀定是⾮空的,⽽且具有唯⼀性,即不能重复。
能够唯⼀标识实体,保证实体完整性。
虽然,上⾯已经成功创建了主键,但是,我们还是要学习⼀下主键的写法。
第⼀种:在建表的时候就加上主键:还是以上⾯course表的创建为例:CREATE TABLE course (cno V ARCHAR(10) NOT NULL,dno CHAR(8) NOT NULL,cname V ARCHAR(20) NOT NULL,hours INTEGER NOT NULL,term INTEGER NOT NULL,credit INTEGER NOT NULL,CONSTRAINT pk_course PRIMARY KEY (cno));其中最后⼀句话就是将cno设为主键。
如果主键包含多个字段,可以在括号内添加所包含字段名,如取cno和dno为主键,则语句为:CONSTRAINTpk_course PRIMARY KEY(cno,dno)。
第⼆种:若建表的时候没有将cno设为主键,表建⽴成功以后,可以加上主键约束:ALTER TABLE course ADD CONSTRAINT pk_course PRIMARY KEY(cno) ;1.2 参照完整性约束建⽴外键:例如,在course表中建⽴和department表之间的外键,语句如下:ALTER TABLE courseADD CONSTRAINT fk_course_departmen_departme FOREIGN KEY (dno) REFERENCES department (dno);在student表中建⽴和department表之间的外键,语句如下:ALTER TABLE studentADD CONSTRAINT fk_student_departmen_departme FOREIGN KEY (dno) REFERENCES department (dno);1.3 业务规则约束有时候,不同系统会有⼀些特定的业务规则;例如这⾥,要求在删除teacher表之前⼀定要先删除teacher_course与student_course_teacher中的相关信息,这⾥,我们⽤触发器实现⼀下:DELIMITER //#修改分隔符CREATE TRIGGER tri_del_teacherAFTER DELETE ON teacherFOR EACH ROWBEGINDELETE FROM teacher_courseWHERE tno=old.tno;DELETE FROM student_course_teacherWHERE tno=old.tno;END //DELIMITER ; #修改回原分隔符建⽴成功以后,如果我们在teacher表中删除⽼师编号为'2004-213'的⽼师的信息,那么teacher_course和student_course_teacher两表中包含此⽼师信息的相关数据都会删除掉(慎⽤!)。
南昌大学实验报告---实验三查询学生姓名:丁金芝学号:6100511080 专业班级:管理科学与工程类112班实验类型:■验证□综合□设计□创新实验日期:实验成绩:一、实验目的1.掌握select语句的基本语法2.了解select语句中各子句的作用和特点3.掌握select语句的统计函数的作用和用法4.掌握子查询的用法5.掌握连接查询的用法二、实验内容与结果(一).简单查询1.select 选择列--1、选择所有列(*),查询学生表中的所有纪录。
--2、选择特定列,查询学生表中全体学生的学号,姓名,性别。
--3、计算列,查询选课表中给每个学生加了20分后的所有课号和成绩末分数显示出来。
重复。
--6、限制返回行数--top n 关键字;只显示表中前面n条记录。
--top n percent 关键字;只显示前n%条记录。
--显示学生表中的前3条记录。
--显示学生表中的前3%条记录2 .where 子句--1、比较运算符:(1)查询分数<80分学生的学号、成绩、课号。
(2)查询学号001学生的情况。
--2、范围运算符:查询学生分数在70-80之间的学生的学号、课号。
(包括70分、80分)--3、列表运算符: (1)查询学号为'001' 、'005'、'007' 、'008'的学生学号。
(2)查询学生成绩不在60-70之间的学生的学号、课号、成绩。
--4、匹配运算符: (1)查询姓刘学生的信息。
(2)查询姓刘单名的学生信息。
(3)查询01-03年级学生的信息。
--5、空值运算符,查询变动情况为空的学生--查询学生课程编号为'05'的课程的成绩,并按成绩的降序进行排列。
4.使用函数:--1、计算学号为001的学生总分数、平均分。
--2、集合函数 avg()、count()、count(*)、max()、min()、sum()(1)查询学期成绩表中的平均分,最大分数,最小分数,总和(前面四项为查询出的相应字段)(2)统计课程表中所有记录数和各个列中值的个数,要求不能重复。
《数据库系统原理》实验报告班级 ________姓名 ________________学号 ___________信息与电子工程学院实验 1 sql server熟习和数据库创立一、实验目的熟习 sql server 2005供给的服务管理器、公司管理器、查问剖析器、客户端和服务器端网络适用工具等常用管理工具的使用。
理解客户/ 服务器模式,理解面向连结与非面向连结的差异。
理解交互式sql 的工作体制。
可以理解命名管道协议与tcp/ip协议的差异。
可以登岸上sql server数据库服务器。
二、实验内容1、启动 sql server服务。
2、翻开 sql server的公司管理器,连结上sql server服务器。
睁开左侧树状窗口的各级结点,观察右侧内容窗口的变化。
3、翻开 sql server的查问剖析器,用use 命令翻开样例数据库pubs。
4、在查问窗口输入exec sp_help,运转后观察结果。
5、在查问窗口输入select * from authors,运转后观察结果。
三、实验结果3、当不确立目前所操作的是哪个数据库,可使用use 来定位到某数据库。
4、5、查问某张表的全部列。
实验 2简单查问一、实验目的:熟习 sql server的公司管理器和查问剖析器的用户界面,掌握用公司管理器和查问剖析器创立数据库,改正数据库和删除数据库的方法。
二、实验内容分别使用sql server 2005公司管理器和t — sql 语句,按以下要求创立、改正和删除用户数据库。
1 、创立名称为company 的数据库,数据库中包含一个数据文件,逻辑文件名为company_data ,磁盘文件名为,文件初始容量为5mb,最大容量为15mb,文件容量递增值为 1mb;事务日记文件的逻辑文件名为company_log ,磁盘文件名为,文件初始容量为 5mb,最大容量为 10mb,文件容量递加值为 1mb。
2 、对该数据库进行改正:增添一个数据文件,逻辑文件名为company2_data ,磁盘文件名为,文件初始容量为1mb,最大容量为5mb,文件容量递加值为1mb;将日记文件company_log 的最大容量增添为 15mb,文件容量递加值为2mb。
实验报告:学号:班级:实验:订单管理时间: 2017年9月28日目录一、实验目的(通过实验要达到什么样的效果,学到什么东西)二、实验条件(实验使用软件)三、实验容(实验需要做的具体详细的实验项目)四、实验要求(实验中,我们要注意的实验事项和写实验报告的详细要求)五、实验步骤(实验步骤包括具体的每个实验的实验方法、实验结果和实验结果分析,按照每步遇到的问题,进行分析解决)六、实验感悟(总结实验中遇到的问题,以后该怎么解决)学习数据库应用程序的开发和实现部分功能(查询、插入、删除、更新和保存等)二、实验条件Microsoft SQL Server Management StudioMicrosoft Visual StudioWindows 8C#编程语言三、实验容编程实现示例数据库中订单明细SalesOrderDetail的查询、插入、更新与删除功能如下:(1)查询功能。
程序运行后,订单表中显示所有订单,第一个订单为当前订单,订单明细表中显示当前订单的所有订单明细。
当前订单发生改变时(即点击订单表中的某个订单埋),订单明细表中的容发生相应的变化。
(2)删除功能:选取订单明细中的一行,点击删除,选择的订单明细从表中删除,但并不真正从数据库中删除。
(3)插入功能:可以在订单明细表的最后输入新的订单明细。
(4)更新功能:可以修改订单明细表中的某一行的容。
如果输入的单价(UnitPrice)大于产品的公开报价,则提示相应的信息(利用4.6.2的触发器完成此功能)。
(5)保存功能:点击保存按钮时,将订单明细保存到数据库。
(6)关闭功能:点击关闭按钮时,如果订单明细有修改但没有保存,则提示是否关闭,如果不关闭则返回,否则关闭程序,如果没有修改,则直接关闭。
四、实验要求1.订单查询实验要求使用并任选一种程序设计语言进行编程。
实验报告需要说明所采用的方法、结果和总结(结果分析)。
实验方法部分说明采用的开发环境,包括操作系统、数据库管理系统及其版本、编程工具及其版本、和编程语言。
如果使用则在实验方法部分回答下面的问题:(1)使用哪种数据提供程序?(2)使用的数据连接对象是哪一个?连接对象是如何建立的?最后生成的连接对象中的连接字符串是什么?代表什么含义?(3)使用的数据适配器对象是什么?其中的查询或更新语句是什么?如果有参数则参数是如何处理的?(4)使用的数据集对象是什么?数据集中有哪些数据表?数据表是由哪些适配器对象生成的?(或采用其它方法)。
实验方法中还需要给出手工添加的代码及对代码的说明。
实验结果部分给出程序运行的界面和操作的简单说明。
总结部分对实验过程中出现的总是进行分析,同时提出所开发的程序还有哪些可以改进的地方。
实验方法:回答实验要求中的实验问题(1)使用哪种数据提供程序?答:OLEDB类数据。
(2)使用的数据连接对象是哪一个?连接对象是如何建立的?最后生成的连接对象中的连接字符串是什么?代表什么含义?答:连接对象oleDbConnection1数据适配器:oleDbDataAdapter1和oleDbDataAdapter2oleDbDataAdapter1Provider=SQLNCLI11(客户端组件,代表一个驱动)Data Source=LENOVO-PC(代表数据源是LENOVO-PC)Security=SSPI(代表以window用户登录服务器)Initial Catlog=AdventureWorks(代表连接数据库为AdventureWorks) oleDbDataAdapter2Provider=SQLNCLI11(客户端组件,代表一个驱动)Data Source=LENOVO-PC(代表数据源是LENOVO-PC)Security=SSPI(代表以window用户登录服务器)Initial Catlog=AdventureWorks(代表连接数据库为AdventureWorks)(3)使用的数据适配器对象是什么?其中的查询或更新语句是什么?如果有参数则参数是如何处理的?答:oleDbDataAdapter1:1)查询语句:SELECT SalesOrderID, OrderDate, DueDate, ShipDate, Status, SalesOrderNumberFROM Sales.SalesOrderHeader2)没有参数OleDbDataAdapter2:1)查询语句:SELECT SalesOrderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty, ProductID, SpecialOfferID, UnitPrice,UnitPriceDiscount, LineTotal, rowguid, ModifiedDate FROM Sales.SalesOrderDetail2)没有参数(4)使用的数据集对象是什么?数据集中有哪些数据表?数据表是由哪些适配器对象生成的?(或采用其它方法)。
答:dataSet11->SalesOrderHeader表->oleDbDataAdapter1dataSet21->SalesOrderDetail表->oleDbDataAdapter21.基本框架设计介绍1.1新建一个项目客户管理4.0,选择的参数如下1.2打开新建的项目客户管理4.01.3窗口进行如下图所示的设计订单:使用dataGridView创建,名字设置为dataGridView1Datasource:dataSet11Datamember:SalesOrderHeader订单明细:使用datagridview创建,名字设置为dataGridView2 Datasource:dataSet21Datamember:SalesOrderDetailoleDbConnection1:连接数据库AdventureWorksoleDbDataAdapter1->dataSet11oleDbDataAdapter2->dataSet21填充dataGrid控件:dataGridView1和dataGridView2private void Form1_Load(object sender, EventArgs e){oleDbDataAdapter1.Fill(dataSet11);oleDbDataAdapter2.Fill(dataSet21);}1.4数据库环境设置连接SQL Server中的默认数据库AdventureWorks2.查询功能的实现2.1实现功能代码private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) {string msg = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();String strCustomerDelete = "Select * FROM Sales.SalesOrderDetail WHERESalesOrderID =" + msg;Console.Write(strCustomerDelete);mandText = strCustomerDelete;t his.dataSet21.Clear(); //刷新this.oleDbDataAdapter2.Fill(this.dataSet21); //填充}2.2查询SalesOrderID=43661的所有订单明细3.删除功能的实现3.1实现功能代码3.2如图删除SalesOrderID=43661,SalesOrderDetailID=15的订单,结果如下点击43661后查询结果如下选择43661中SalesOrderDetailID=15的一行并点击删除按钮,则删除这行数据,如下图所示:4.插入功能的实现4.1实验指导书中已经给出介绍,SalesOrderDetail的rowguid列是一个uniqueidentifier 类型,不允许空值。
手工输入该值比较困难,可以使用程序进行处理。
即手工输入时不输入该值,保存到数据库之前由程序生成该列的值。
4.2如下图在SalesOrderID=43661的订单明细的最下方添加一行新的订单没有插入新的订单之前的位置插入如图所示的新订单信息5.更新功能的实现5.1在AdventureWorks数据库中创建表Production.ProductUpdateLog,用来记录订单编号、订单明细编号、产品编号、产品的公开报价、修改前产品的单价、修改后产品的单价、修改者的登录名SQL语句如下:CREATE TABLE Production.ProductUpdateLog(记录编号int IDENTITY PRIMARY key, ---保证编号唯一,且随插入数据的数据逐一递增订单编号int not null,订单明细编号int not null,产品编号int not null,产品的公开报价money,修改前产品的单价money,修改后产品的单价money,修改者的登录名varchar(30)not null)GO创建的表如下图所示:5.2 创建名为Product.ProductUpdateCheck的存储过程,来向表Production.productUpdateLog中插入数据,实现代码如下USE AdventureWorksGOIF OBJECT_ID('Production.Record_Update_Price','P')IS NOT NULLDROP PROCEDURE Production.Record_Update_PriceGO--如果数据库中存在名称为Production.Record_Update_Price的存储过程--则删除该存储过程--创建存储过程Production.Record_Update_Price,它有个参数,--其中SalesorderID 表示订单编号,SalesorderdetailID 表示订单明细编号--ProductID 表示产品编号,PublicPrice 表示公开报价--PrePrice 表示修改前价格,PostPrice 表示修改后报价--Operator 表示修改者登录名CREATE PROCEDURE Production.Record_Update_Price--RecordID int,--因为表格ProductUpdateLog的主键设为IDENTITY性质,不用传参SalesorderID int,SalesorderdetailID int, ProductID int,PublicPrice money, PrePrice money,PostPrice money, Operator nvarchar(50)AS--向表ProductUpdateLog插入一条记录,参数纷纷对应INSERT INTO Production.ProductUpdateLog(--记录编号,订单编号,订单明细编号, 产品编号,产品公开报价, 修改前产品单价,修改后产品单价, 修改者登录名)VALUES(--RecordID,SalesorderID,SalesorderdetailID, ProductID,PublicPrice, PrePrice,PostPrice, Operator)GOUSE AdventureWorksGOIF OBJECT_ID('Production.Record_Update_Price','P')IS NOT NULL DROP PROCEDURE Production.Record_Update_PriceGO--如果数据库中存在名称为Production.Record_Update_Price的存储过程--则删除该存储过程--创建存储过程Production.Record_Update_Price,它有个参数,--其中SalesorderID 表示订单编号,SalesorderdetailID 表示订单明细编号--ProductID 表示产品编号,PublicPrice 表示公开报价--PrePrice 表示修改前价格,PostPrice 表示修改后报价--Operator 表示修改者登录名CREATE PROCEDURE Production.Record_Update_Price--RecordID int,--因为表格ProductUpdateLog的主键设为IDENTITY性质,不用传参SalesorderID int,SalesorderdetailID int, ProductID int,PublicPrice money, PrePrice money,PostPrice money, Operator nvarchar(50)AS--向表ProductUpdateLog插入一条记录,参数纷纷对应INSERT INTO Production.ProductUpdateLog(--记录编号,订单编号,订单明细编号, 产品编号,产品公开报价, 修改前产品单价,修改后产品单价, 修改者登录名)VALUES(--RecordID,SalesorderID,SalesorderdetailID, ProductID,PublicPrice, PrePrice,PostPrice, Operator)GO5.3建立名为Sales.Price_Update的触发器实现代码如下:USE AdventureWorksGO--如果已经存在名为Sales.Price_Update的触发器,则删除它IF OBJECT_ID('Sales.Price_Update','TR')IS NOT NULLDROP TRIGGER Sales.Price_UpdateGO--在表Sales.SalesOrderDetail的Update操作上创建--Instead of触发器Sales.Price_UpdateCREATE TRIGGER Sales.Price_UpdateON Sales.SalesOrderDetailINSTEAD OF UpdateAS--当更新插入记录的更新价格UnitPrice大于--产品的公开报价Production.Product.ListPrice时--调用RAISERROR报错,进行操作回滚IF(EXISTS( SELECT I.UnitPriceFROM Production.Product P, inserted IWHERE I.UnitPrice > P.ListPrice AND P.ProductID = I.ProductID))BEGINRAISERROR('修改的产品单价不能大于产品的公开报价!', 10, 1) ROLLBACK TRANSACTIONEND--如果符合更新价格不大于公开报价的条件--则调用存储过程Production.Record_Update_PriceELSEBEGIN--声明相对应的个参数,数据类型一致对应DECLARE SalesorderID int,SalesorderdetailID int,ProductID int,ListPrice money,PreUnitPrice money,PostUnitPrice money,Operator nvarchar(50)--订单编号、订单明细编号、产品编号及产品修改后价格--皆取自表inserted相对应值SELECT SalesorderID = SalesOrderID,SalesorderdetailID = SalesOrderDetailID,ProductID = ProductID,PostUnitPrice = UnitPriceFROM inserted--产品公开报价取自表Production.Product的ListPriceSELECT ListPrice = ListPriceFROM Production.Product PWHERE P.ProductID = (SELECT ProductIDFROM inserted)--执行更新操作,将表Sales.SalesOrderDetail所对应的记录的--UnitPrice值更新UPDATE Sales.SalesOrderDetailSET UnitPrice = PostUnitPriceWHERE Sales.SalesOrderDetail.SalesOrderID = SalesorderIDAND Sales.SalesOrderDetail.SalesOrderDetailID = SalesorderdetailID--修改前的产品价格取自表中deleted--表Sales.SalesOrderDetail对应被删除的记录UnitPriceSELECT PreUnitPrice = UnitPriceFROM deleted DWHERE D.ProductID =(SELECT ProductIDFROM inserted)--获取当前修改者登录名--在网上搜到了这个系统置函数SELECT Operator = SYSTEM_USER--将个参数对应位置传入存储过程Production.Record_Update_PriceEXECUTE Production.Record_Update_Price SalesorderID,SalesorderdetailID,ProductID, ListPrice,PreUnitPrice, PostUnitPrice,Operator--提示已经进入存储过程PRINT 'HERE COMES A PROCEDURE...'ENDGO创建的触发器如下图所示:5.4在订单明细中修改一行中的一个数据,如输入的单价(UnitPrice)不符合产品的公开报价围时,窗口会出现提示,并组织修改的保存6.保存功能的实现6.1保存功能实现代码private void button2_Click(object sender, EventArgs e){try{// 检查数据表各行,设置新行的rowguid列foreach (DataRow dataRow in this.dataSet21.SalesOrderDetail.Rows){// 如果是新行if (dataRow.RowState == DataRowState.Added){// 如果rowguid列的值是空值if (dataRow["rowguid"].Equals(System.DBNull.Value)){dataRow["rowguid"] = Guid.NewGuid();}}}this.oleDbDataAdapter2.Update(this.dataSet21.SalesOrderDetail);MessageBox.Show("保存成功!");}catch (Exception ex){MessageBox.Show("保存失败!\n" + ex.Message);}}6.2功能实现结果如下图,把SalesOrderID=43863&SalesOrderDetailID=671的D0C0-435D-A2修改成D0C0-435D-B2修改后点击保存按钮,结果如图所示再次查询这个SalesOrderID=43863&SalesOrderDetailID=671的订单明细,可以看到已经保存到数据库了7.关闭功能的实现7.1关闭功能实现代码private void button3_Click(object sender, EventArgs e){bool Save_Flag = true;//定义一个波尔变量save_flagfor (int i = 0; i < this.dataSet21.SalesOrderDetail.Rows.Count; i++)//全局扫描,判断是否有修改if (this.dataSet21.SalesOrderDetail.Rows[i].RowState !=DataRowState.Unchanged){Save_Flag = false;break;}if (Save_Flag == false){if(DialogResult.Yes == MessageBox.Show(" 是否要保存对订单明细的更改?", "提示", MessageBoxButtons.YesNo))//若确定则关闭窗口不保存更改数据,否则回到原来窗口this.Close();}else //若没有更改则直接关闭this.Close();}7.2关闭功能实现结果若不更改任何数据或者已经点击保存按钮,则窗口直接关闭若更改数据而没有点击保存按钮,则会弹出提示窗口,提示你订单明细已经更改,是否确认退出若点否,则回到原来的订单表窗口中若点击是,则不保存到数据库并且关闭窗口再次运行程序,查看SalesOrderID=43659&SalesOrderDetailID=4的订单是否已经保存,结果如下:很明显没有保存实验结果:实验中六个基本功能如查询、插入、删除、保存、更新和关闭已经实现了,可以通过对订单中的某个订单进行所有历史订单的查询,并通过订单明细窗口把所以信息显示出来;可以对订单明细最后一行进行插入一行新的订单数据;可以在订单明细表中选择一行数据点击删除按钮,把那行订单数据一整行删除;可以对更改的数据进行处理并保存到数据库;可以更新功能,如若是输入单价超出规定的报价,则会报错,无法进行保存;可以关闭窗口,若是订单明细的数据已经更改而没有保存,则会弹出窗口提示“订单明细更改,是否确认退出”,若是已经保存或者是没有更改订单明细的数据,而可以直接关闭窗口不会出现提示窗口。