数据库高级应用

更新时间:2024-04-25 09:57:01 阅读量: 综合文库 文档下载

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

数据库高级应用结课论文

学院:计算机科学与技术学院 专业:信息管理与信息系统 姓名: 学号:

一、SQL server 2008 概述

SQL Server 2008出现在微软数据平台愿景上是因为它使得公司可以运行他们最关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本。这个平台有以下特点:可信任的——使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序。高效的——使得公司可以降低开发和管理他们的数据基础设施的时间和成本。智能的——提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。

二.课程主要内容和基本原理:

(一). 数据库系统: 数据库系统,是由数据库及其管理软件组成的系统。它是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。它是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。

数据库系统通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。数据库管理员一般是由业务水平较高、资历较深的人员担任。

数据的结构化,数据的共享性好,数据的独立性好,数据存储粒度小,数据管理系统,为用户提供了友好的接口。

数据库系统的核心和基础,是数据模型,现有的数据库系统均是基于某种数据模型的。 数据库系统的核心是数据库管理系统。

数据库系统一般由数据库、数据库管理系统(DBMS)、应用系统、数据库管理员和用户构成。DBMS是数据库系统的基础和核心。 (二). 数据库管理系统:

数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。DBMS提供数据定义语言DDL与数据操作语言,供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。 1.数据定义:DBMS提供数据定义语言DDL,供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。DDL主要用于建立、修改数据库的库结构。DDL所描述的库结构仅仅给出了数据库的框架,数据库的框架信息被存放在数据字典(Data Dictionary)中。

2.数据操作:DBMS提供数据操作语言DML,供用户实现对数据的追加、删除、更新、查询等操作。

3.数据库的运行管理:数据库的运行管理功能是DBMS的运行控制、管理功能,包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复,即保证事务的原子性。这些功能

保证了数据库系统的正常运行。

4.数据组织、存储与管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率,选择合适的存取方法提高存取效率。

5.数据库的保护:数据库中的数据是信息社会的战略资源,随数据的保护至关重要。DBMS对数据库的保护通过4个方面来实现:数据库的恢复、数据库的并发控制、数据库的完整性控制、数据库安全性控制。DBMS的其他保护功能还有系统缓冲区的管理以及数据存储的某些自适应调节机制等。

6.数据库的维护:这一部分包括数据库的数据载入、转换、转储、数据库的重组合重构以及性能监控等功能,这些功能分别由各个使用程序来完成。

7.通信:DBMS具有与操作系统的联机处理、分时系统及远程作业输入的相关接口,负责处理数据的传送。对网络环境下的数据库系统,还应该包括DBMS与网络中其他软件系统的通信功能以及数据库之间的互操作功能。 (三).SQL Server数据库:

Microsoft SQL Server是一个高性能的、多用户的关系型数据库管理系统;它是专为客户/服务器计算环境设计的,是当前最流行的数据库服务器系统之一;它提供的内置数据复制功能、强盗的管理工具和开放式的系统体系结构为基于事务的企业级信息管理方案提供了一个卓越平台。

在 SQL Server数据库中、数据被组织为用户可以看得见的逻辑部件,这些逻辑组件主要包括基本表、视图、存储过程、触发器和用户等。

SQL Server 将用户可以看得到的这些逻辑组件物理地存储在磁盘上的操作系统文件中。作为普通用户只需要关心逻辑组件的存在,二它们的物理实现在很大程度上是透明的,一般只有数据库管理员需要了解和处理数据库的物理实现。 每个SQL Server 实例包括四个系统数据库(master、model、tempdb和msdb)以及一个或多个用户数据库。根据定义的安全权限,每个SQL Server 实例都可以使所有连接到实例的用户使用该实例上的所有数据库。

数据库是建立在操作系统文件上的,SQL Server在发出CREATE DATABASE 命令建立数据库时,会同时发出建立操作系统文件、申请物理存储空间的请求;当CREATE DATABASE 命令成功以后,在物理上和逻辑上都建立了一个新的数据库;然后就可以在数据库中建立各种用户所需要的逻辑组件,如基本表、视图等。

本学期学习内容:1数据库的创建和管理 2 数据表的创建和管理 3 表中数据的操作 4

视图的创建和使用 5索引的创建和使用 6 存储过程的创建和使用 7 触发器的创建和使用 目的:掌握使用SQL Server 2008 开发数据库系统的方法

内容:创建表 1.在STUDENT数据库中创建一个名为t_course(课程信息)的表,要求如下:c_number char(10) primary key, c_name char(30), hours int ,credit real; 2.在STUDENT数据库中创建一个名为t_score (学生成绩)的表要求如下:s_number char(10) 取值范围:数据来自学生信息表 主键, C_number char(10)取值范围:数据来自课程信息 主键, Score real 取值范围:0~100. 创建约束

索引的创建 (1)-在Student学生表上按学号升序创建唯一索引 (2)验证索引已被创建: 简单查询 (3)创建所有女同学的视图 (4)--查询年龄不大于20岁的女生 (5)建计算机系学生视图 (6)--查询计算机系01号课程考取最高分的学生 (7)创建计算机系选修数据结构的学生成绩视图 (8)查询数据结构成绩高于90分的学生记录 (9)创建学生年龄的视图 (10)查询年龄在全体学生平均年龄以上的学生记录 (11)建立各系每个学生平均分的视图 (12)在在视图vwAVG_Grade上建立新的视图,显示学生详细的信息 (13)查询各系最高平均分 (14)--利用视图更新基本表 索引的总结 有关索引的使用规则: 1、表的主键、外键必须有索引; 2、经常与其他表进行连接的表,在连接字段上应该建立索引; 3、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 4、索引应该建在选择性高的字段上; 5、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 6、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: A、正确选择复合索引中的主列字段,一般是选择性较好的字段; B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否 极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引; C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引; D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段; E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引; 7、频繁进行数据操作的表,不要建立太多的索引; 8、删除无用的索引,避免对执行计划造成负面影响; 存储过程 1:.创建不带参数的存储过程 方法1:利用对象管理器创建不带参数的存储过程 (2):依次打开【数据库】—【SC学习】—【可编程性】—【存储过程】,如下图所示: (2):右键单击【存储过程】,如下图所示: (3):点击【新建存储过程】后即出现下面所示的窗口: (4):我们适当修改即可创建一个触发器,此处和下面用SQL代码创建的差不多,就不在赘述了。 方法2:使用SQL-Transact创建不带参数的存储过程 --打开数据库SC学习 USE SC学习 GO

IF EXISTS(SELECT name FROM sysobjects Where name='PR_查看女生的信息' AND TYPE='P') Drop PROC PR_查看女生的信息 GO --创建一个不带参数的存储过程 CREATE Proc PR_查看女生的信息 AS BEGIN SELECT * FROM Student Where Ssex='女' END --打开数据库SC学习 USE SC学习 GO --执行PR_查看女生的信息存储过程 EXEC PR_查看女生的信息 2:创建带参数的存储过程 方法1:利用对象资源管理器创建带参数的存储过程 方法和前面的一样,这里也不再说了…… 方法2:使用SQL-Transact创建带参数的存储过程 --打开数据库SC学习 USE SC学习 GO IF EXISTS(SELECT name FROM sysobjects Where name='PR_查看学生的信息' AND TYPE='P') Drop PROC PR_查看学生的信息 GO --创建一个带参数的存储过程 CREATE Proc PR_查看学生的信息 @xb char(2) AS BEGIN SELECT * FROM Student Where Ssex=@xb END --打开数据库SC学习 USE SC学习 GO --执行PR_查看学生的信息存储过程 EXEC PR_查看学生的信息 '女' 方法1:利用对象资源管理器创建存储过程 (1):依次打开【数据库】—【SC学习】—【可编程性】—【存储过程】,如下图所示: (2):右键单击【存储过程】,如下图所示: (3):点击【新建存储过程】后即出现下面所示的窗口: (4):我们适当修改即可创建一个触发器,此处和下面用SQL代码创建的差不多,就不在赘述了。 方法2:使用SQL-Transact创建参数的存储过程 --打开数据库SC学习 USE SC学习 GO IF EXISTS(SELECT name FROM sysobjects Where name='PR_查看学生的信息_学号' AND TYPE='P') Drop PROC PR_查看学生的信息_学号 GO --创建一个带参数的存储过程 CREATE Proc PR_查看学生的信息_学号 @xh varchar(10) AS BEGIN SELECT * FROM Student Where Sno=@xh END --打开数据库SC学习 USE SC学习 GO --执行PR_查看学生的信息存储过程 EXEC PR_查看学生的信息_学号 '200681015' 2、触发器 练习1:在数据库SC学习的表Student上建立一个名为TR_禁止更新Student表的UPDATE触发器,该触发器将被UPDATE操作激活,该触发器不允许用户修改Student表中的数据。 --打开数据库SC学习 USE SC学习 GO IF EXISTS(SELECT name FROM sysobjects Where name='TR_禁止更新Student表' AND TYPE='P') Drop PROC TR_禁止更新Student表 GO --创建一个带参数的存储过程 CREATE TRIGGER TR_禁止更新Student表 ON Student INSTEAD OF Update AS BEGIN PRINT '触发器开始执行……' PRINT '禁止修改Student表!' END --打开数据库SC学习 USE SC学习 GO --验证触发器TR_禁止更新Student表 Update Student SET Sname='张三' WHERE Sno='200681015'

练习2:修改stu_tril3中的语句,使该触发器不允许用户修改xm一列的值,但其他列的值可以允许被修改。 --打开数据库SC学习 USE SC学习 GO --修改student_tri3中的语句,使该触发器不允许用户修改xm一列的值,但其他列的值可以允许被修改。 IF EXISTS(Select name From sysobjects Where name='TR_不容许修改Sname' AND TYPE='TR') DROP Trigger TR_不容许修改Sname GO --创建[TR_不容许修改Sname]触发器 CREATE TRIGGER TR_不容许修改Sname ON Student FOR UPDATE AS GO if(Update(Sname)) Begin PRINT 'INSTEAD OF 触发器开始执行……' PRINT 'Student表中的Sname列不容许更新……' Rollback transaction END --打开数据库SC学习 USE SC学习 GO --更新Student表 UPDATE Student SET Sname='张三' where Sno='200681013' 三.心得体会:

在大三的下学期刚学了数据库这门课,对这门课的第一印象是书本蛮厚的,感觉学起来应该会很难很累。在学习这门课的过程中,在对数据库的了解过程中,慢慢对数据库有了感观。数据库这一词并不是很难想象,并不是像外人看来很神奇。作为计算机专业的学生,这样的专业术语或者专业知识是最基本的。 学习的时候没有想象中的那么难,只要上课能听懂就基本还可以。但是问题还是出在书本有点厚,有的时候上课的内容都要找很久才能找到,甚至有的时候老师讲的知识书本上是找不到的,是另外补充而且是相当重要的内容。有的时候开小差,没有听到老师讲的知识点,这就导致了以后的学习无法顺利进行,使得学习起来十分困难。所以在数据库这门课的学习中,上课一定要听牢,就像老师说的那样,这样的专业课如果想凭考试前几天突击是行不通的,必须是日积月累的知识才能取得好成绩。

通过对数据库的学习,我也明白了各行各业都离不开数据库,就算是一个小型的超市也离不开它。可见数据库这门课的广泛性,如果能够认真学好它将来必有成就。我就是抱着这种信念去学习数据库的。第一次接触数据库,第一次接触SQL语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习SQL语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。后来学了单表查询和连接查询后,就慢慢发现越学越困难了,每个题目都要思考很久,并且每个题目基本上不止一个答案,所以必须找出最优的答案。后面的删除、插入、修改这些题目都变化蛮大的,书本上的例题根本无法满足我们,好在老师给我们提供了大量的课件,通过这些PPT,我们可以巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。课业结束后,让我再次加深了对数据库的组成原理的理解,对数据库的构建也有更深层次的体会。数据库的每一次发展,都凝聚着人类的智慧和辛勤劳动,每一次创新都给人类带来了巨大的进步。数据库从早期的简单功能,到现在的复杂操作,都是一点一滴发展起来的。这种层次化的让我体会到了,凡事要从小做起,无数的‘小’便成就了‘大’。

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

Top