• 数据库 课程设计实验报告 数据库的建立 数据库 课程设计实验报告 数据库的建立
  • 实验名称 简单查询 – SELECT语句 实验目标 (1) 掌握order by,group by,having等子句的使用; (2) 掌握各种谓词的使用; (3) 掌握集合函数的使用; (4) 掌握在时间字段上的查询
  • 数据库 MySQL server,Navicat可视化工具 操作系统:win10 百度云链接:https://pan.baidu.com/s/1SIWR75NRIh8sSL0oV7uZgA 提取码:4y44 二、数据库规划 1.任务陈述: 图书馆信息管理系统数据库用以收集、...

    一、系统平台

    开发工具:Eclipse java Mars

    数据库 MySQL server,Navicat可视化工具

    操作系统:win10

    百度云链接:https://pan.baidu.com/s/1SIWR75NRIh8sSL0oV7uZgA

    提取码:4y44

    声明:由于该项目已是四年前大一时所做,时隔已久,且本人已不从事java相关工作,恕不能解答各位问题,此代码仅供初学java者参考使用

    二、数据库规划

    1.    任务陈述:

       图书馆信息管理系统数据库用以收集、存储书籍信息、人员(读者、图书管理员)信息、图书借阅信息以及意外处理信息,及时记录存储各个环节信息的变更,以便管理、查询、显示、输出,节约大量人力物力把人们从繁杂的手工记录方式中解脱出来的同时,有力保障图书馆日常事务的高效运作。

     

    2.    任务目标

    目标类别

    子目标

    人员信息管理

    读者信息管理,包括读者类别、性别、借书数量

    图书馆管理员信息管理,包括管理员权限、性别、电话号

    书籍信息管理

    书籍基本信息管理,包括书籍编号、书名、作者、出版社、出版时间、价格等

    借阅信息管理

    借书信息管理,包括书籍编号、读者编号、借书日期、还书日期

    还书信息管理,包括书籍编号、读者编号、还书日期

     

     

     

     

    三、需求分析

    功能需求

    1.图书基本信息管理

    图书基本信息管理功能主要由系统管理员来进行维护。

    主要过程是:以管理员身份登录到图书管理系统中,查询、修改、图书的书名、ISBN、库存量等信息和添加新书和删除旧书等。这些信息都会被记录到相应的数据库中。

    1. 图书基本信息包括书名,作者,出版日期, ISBN和库从数量;

    2. 添加新书:需要输入书名、作者、出版日期,ISBN和库从数量;

    3. 删除旧书:输入ISBN号或者输入书名,查询得到相应的旧书删除其信息;

    4. 查找图书:输入ISBN号或书名或作者或者出版日期查找相应的图书并显示其信息;

    5. 查找所有图书:查找数据库中存放的所有图书信息。

    2.用户管理

    用户管理功能主要由图书管理员来进行维护,该功能只有以图书管理员身份登录时才会出现。

    主要过程是:图书管理员身份登录到图书管理系统中的用户管理功能模块中,添加、删除、查询和修改数据库中的用户信息。

    1.用户基本信息包括姓名、性别、email、联系方式;

    2. 添加用户:需要对输入的姓名、性别、email、联系方式进行验证

    3. 删除用户:输入ID号,显示用户信息,然后确认删除;

    4. 查询用户信息:输入ID号,显示对应用户信息;

    5. 显示所有用户信息:调用功能,显示所有用户信息。

    3借书

    4.还书

    5.用户注册

    图书馆管理员注册:用户名,密码,性别,姓名,年龄

    读者注册:用户名,密码,性别,姓名,年龄

    5.用户登录

    图书管理员功能:

    1.      图书的录入、查询、修改和删除

    2.      读者信息的添加、查询、修改、删除等

    读者功能:

    1.查阅读书,

    2.借阅功能

    3.还书功能

    性能需求

     

    1.  数据精确度 

    保证查询的查全率和查准率为100%,所有在相应域中包含查询关键字的记录都能查到,所有在相应域中不包含查询关键字的记录都不能查到。 

    2. 系统响应时间

    n  单个记录查询时间少于3秒

    n  多个记录查询时间少于6秒

    n  更新/保存记录时间少于2秒

    3. 适应性

    满足运行环境在允许操作系统之间的安全转换和与其他应用软件的独立运行要求

    4.运行需求

    1用户界面

    n 使用浏览器界面结构,采用导航栏界面方式,尽力带给操作用户便利,对用户友好;对鼠标和键盘单独支持。

    2硬件接口

    n 本软件需要能够互联网的支撑,用户的硬件平台应该能够与互联网连接。

    3软件接口

    n 运行于Windows98及更高版本的Windows操作系统之上,或者其他系统。

    4故障处理

    n 正常使用时不应出错,若运行时遇到不可恢复的系统错误,也必须保证数据库完好无损。

    四、数据库逻辑设计

    1.E-R

     

    2.数据字典

     

    Book表:

    Reader表:

    Manager表:

    Borrow表:

     

     

    五、   应用程序运行结果

     

     

    1.    登录注册界面:

    入口:

    读者登陆:

    管理员登录:

    读者注册:

    管理员注册:

    管理员主界面:

     

     

    图书查询界面:

    图书添加界面:

     

    图书编辑界面:

     

    读者信息查询界面:

     

     

    读者信息添加界面:

     

     

    读者信息编辑界面:

     

    细节方面:

     

     

    读者主界面:

     

    借书界面:

     

     

    续借界面:

     

    续借后,借书时间,还书时间改变,默认借书期限为30天:

     

    还书界面:(还书成功后从列表中自动删除)

     

     

     

    六、应用程序设计

     

     

    源代码:https://download.csdn.net/download/xiedelong/10275538

    展开全文
  • 本试验报告包含有需求分析,E-R图,数据库代码,实验结果分析和实验心得
  • 这只是报告内容,报告内也只包含主要代码,供参考
  • 数据库数据库数据库实验实验SQLSERVER。
  • 数据库课程设计订单生成系统,包括代码+数据库+实验报告,一应俱全。
  • 数据库原理 实验

    2019-03-13 22:08:56
    实验数据库概念模型设计 一、实验目的 1.熟悉数据库基本的概念。 2.熟悉数据库模型的概念。 3.熟悉三种世界的转换。 4.熟悉概念模型的工具E-R图:将实体、属性和联系转化为E-R图。 5.根据数据库基本概念、...

    实验一 数据库概念模型设计

    一、实验目的

    1.熟悉数据库基本的概念。

    2.熟悉数据库模型的概念。

    3.熟悉三种世界的转换。

    4.熟悉概念模型的工具E-R图:将实体、属性和联系转化为E-R图。

    5.根据数据库基本概念、关系模型基本要领和数据库设计概念,再根据需求确定实体、属性和联系。

    二、实验内容

    E-R图画出概念模型,要求在图上注明属性及联系的类型。

    1.某学校有若干个系,系的属性有系编号和系名;每个系有若干班级和教研室,班级的属性有班级号和班级名,教研室的属性有教研室号和教研室名;每个教研室有若干教师,每个班级有若干学生,学生的属性有学号,姓名,性别,出生年月,学历;每个教师指导若干学生,每个学生只能被一个教师指导;教师的属性有:教师编号,教师姓名,教师职称。每个学生可以选修多门课程,每门课程可以被多个学生选修,学生选课会有成绩。课程的属性有课程编号,课程名,学分。

    E-R图截图:

    2.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可以在不同的产品上使用;产品的属性有产品号和产品名称,零件的属性有零件号和零件名称;这些零件由不同的原材料制成,不同的零件所使用的原材料可以相同,材料的属性有材料号、材料名和类别。这些零件按照所属的不同产品分别放在不同的仓库中,原材料按照类别放在若干仓库中,即一个编号的原材料只能放在一个仓库中,一个仓库可以放多种编号的原材料。仓库的属性有仓库号,仓库名,仓库容量。

    E-R图截图:

    3.某学校的田径运动会中设置了各类比赛,每一比赛类别有类别编号、类别名称和主管等属性,每一比赛类别包含很多比赛项目;每一比赛项目有项目编号、项目名称、比赛时间和级别等属性;各个院团队有团编号、团名称、领队等属性,每一代表团有多名运动员组成,运动员有编号,姓名,年龄,性别等属性;每一名运动员可以参加多个比赛项目,每一比赛项目也有多名运动员参加,运动员参加比赛会有成绩。

    E-R图截图:

    总结:
    对于绘制E-R图,要有层次地进行绘制, 先画实体之间的联系,再添加属性,并添加实体数量上的对应关系,是一对一,一对多还是多对多
    还有要注意的是,一开始说的实体要是没有属性,需要将其省略,就比如上面的三个:学校、工厂和运动会,他们都没有对应的属性,故不必将他们画出

    展开全文
  • 注:本文介绍 WHUT·计算机学院·数据库与系统综合实验 课程“教学管理信息系统” 源码(VS项目+SQL数据库)下载地址: 纸上得来终觉浅,绝知此事要躬行。 如果你对本实验有疑惑之处,欢迎参考此文章。 1、...

    注:本文介绍 WHUT·计算机学院·数据库与系统综合实验 课程“教学管理信息系统”

    源码(VS项目+SQL数据库)下载地址:https://gitee.com/cxh1231/WHUT_DBSystemComprehensiveExperiment

    纸上得来终觉浅,绝知此事要躬行。

    如果你对本实验有疑惑之处,欢迎参考此文章。

     

    1、实验内容:

      大学同时开设多门课程。每门课程有一个主讲教师,有多名学生选修;一个学生可选修多门课程并获得相应的学分和成绩;上课的基本单位是“次”(一次2学时),每一次课都规定了上课时间和教室(这一规定更灵活,并不像本校现在的情形!)。

     

    2、开发环境:

     

    3、设计思路:

     

     4、数据库表单:

    4.1 学院表(表名:Collage):

    4.2 专业表(表名:Major):

    4.3 班级表(表名:Class):

    4.4 教师基本信息表(表名:Teacher):

    4.5 学生基本信息表(表名:Student):

    4.6 课程基本信息表(表名:Course):

      如上图,对于CStatus列,课程的状态有:待审核、已通过、已排课、选课中、待开课、已开课、已结课。
      Cload列为本课程的容量,Cselected列为本课程已选人数。(上图数据仅供测试,详细数据请看后文测试过程)

    4.7 课程安排表(表名:CourseSchedule):


      由于本题要求一门课的每次课都有规定的时间和地点上课,所以,对于每一次课(课时),都有一个课程安排记录。上图中,Clesson列为本课程的第几次课时,Cweeks为本学期第几周上课,Cweek为周几上课,Csection为第几节上课。

    4.8 选课信息表(表名:Grade):

       如上图,Gtype为成绩类型,Gdata为成绩时间,Grade为成绩,GgradeNormal为平时成绩,GradeTest为考试成绩。

     

    5、软件开发界面:

     

    6、完整选课过程:

    注:本节部分摘自实验报告,其中学生姓名为真实信息,所以在本文中添加马赛克。 

    6.1 教师申请开通课程

      在本系统的设计中,课程要由老师来申请创建。教师端进入课程管理界面,可以点击“申请开通课程”按钮,添加一门新的课程。假如“王老师”申请开通一门课程“计算机网络”,则“王老师”需要填写课程的相关信息,其中课程号是不允许自己设置的,保证唯一性。填写完毕,点击“提交申请”按钮,即可向教务处提出申请。(默认开课年级为大三上,课时为5节,如有需要可自行修改)如下图所示:

    6.2 教务处管理员审核通过:

      老师申请开通一门课程后,教务处管理员有权审核通过或者拒绝通过。如下图所示,刚申请的“计算机网络”课程的状态是“待审核”,界面上也只有“通过”和“拒绝”按钮可访问。管理员点击“通过”按钮,该课程即审核通过。

    6.3 教务处管理员安排课程

      课程通过后,管理员需要根据教学楼等资源,对课程安排课表。本系统以课时为单位,更灵活,操作过程如下图所示:

    6.4 教务处管理员开启选课:

      该课程的课表安排完毕,则课程状态变为“已排课”状态,即可以开启选课了。管理员将该课程开启选课,如下图所示:

    6.5 学生选课:

      这时,学生端就可以进行选课操作了。如下图所示,当前学生端登录的学生角色是“大三”的学生,其可选课程也只有当前学期可选。在可选课程栏里选中一条课程,点击“添加至已选课程”,如果没有时间冲突,并且课堂容量充足的前提下,就完成了选课操作,在左侧“已选课程”栏就能够看到这门课程。当遇到时间冲突,或者容量不足的时候,自动提示相应的信息,如下图所示:

    6.6 学生选课结束:

      学生根据时间冲突做调成,最终完成了选课操作,如下图所示:

    6.7 教务处管理员关闭选课

      选课结束时间到,教务处关闭选课通道,如下图所示。

    6.8 课程开始上课

      然后就可以安排学生上课了,如下图所示:

    6.9  教师查询课表、课堂信息

      教师需要上课,也需要知道每节课的上课时间和地点,即课表,如下图“我的教学任务”栏表格所示:

      同时,教师上课也需要知道哪些学生选修了我的课程,如下图所示,教师可以查看自己的课程对应的学生信息。

    6.10  学生查询课表

      同时,学生也需要知道每门课的上课时间和地点。下图课表栏默认显示的是当前周的课程,下图显示的是自主查询“第七周”的上课信息。其中“课次”为本门课程的第几个课时,“星期”为本周的星期几上课,“节次”为第几节课上本门课。

    6.11  结课,教师录入成绩:

    6.12  教师提交成绩

      成绩录入完毕,点击提交按钮,即可提交本门课程的所有成绩。成绩只可以提交一次,提交后课程状态变成“已结课”状态,就不允许修改成绩了。如下图所示:

    6.13 学生查询成绩

     

    7、其他界面 

    补充第6节未提到的页面

    7.1 登录界面:

      如上图,共有三种角色,分别是:学生、教师和管理员。其中学生的登录账号和密码均为学号,教师的用户名和密码均为职工号,管理员的账号和密码均为“admin”。

    7.2 教师信息管理界面:

    7.3 学生信息管理界面:

    7.4 课程信息管理界面:

    7.5  选课操作:

     

    8、笔者按:

      个人觉得,本次数据库系统综合实验,最好能够自己独立完整个项目。笔者使用了.NET的第三方插件DevExpress,试用期30天,足够在这期间完成整个项目。其中学习摸索DevExpress的插件,大概花费了三四天时间吧。

      本文仅供对本项目有困难的同学参考。

    展开全文
  • 此为吉林大学数据库实验报告,实验内容为: 实验一 熟悉MySQL环境及SQL定义语言 一、实验目的: 1. 了解MySQL程序构成、安装、管理方法。 2. 了解MySQL数据库及表结构。 3. 熟练掌握SQL语言进行基本表结构的创建...
  • 数据库原理 实验报告 目录 实验一 SQL Server的安装和配置 4 一、实验目的 4 二、实验内容 4 三、实验步骤 4 四、实验代码和结果 4 实验总结与体会 4 实验二 创建数据库 5 一、实验目的 5 二、实验内容 5 三、...

    数据库原理 实验报告

    目录
    实验一 SQL Server的安装和配置 4
    一、实验目的 4
    二、实验内容 4
    三、实验步骤 4
    四、实验代码和结果 4
    五、实验总结与体会 4

    实验二 创建数据库 5
    一、实验目的 5
    二、实验内容 5
    三、实验步骤 5
    四、实验代码和结果 6
    五、实验总结与体会 6

    实验三 创建数据表 7
    一、实验目的 7
    二、实验内容 7
    三、实验步骤 7
    四、实验代码和结果 8
    五、实验总结与体会 9

    实验四 管理表数据 10
    一、实验目的 10
    二、实验内容 10
    三、实验步骤 10
    四、实验代码和结果 10
    五、实验总结与体会 13

    实验五 简单数据查询 14
    一、实验目的 14
    二、实验内容 14
    三、实验步骤 14
    四、实验代码和结果 14
    五、实验总结与体会 18

    实验六 高级数据查询 19
    一、实验目的 19
    二、实验内容 19
    三、实验步骤 19
    四、实验代码和结果 19
    五、实验总结与体会 20

    实验七 视图 21
    一、实验目的 21
    二、实验内容 21
    三、实验步骤 21
    四、实验代码和结果 21
    五、实验总结与体会 24

    实验八 索引 25
    一、实验目的 25
    二、实验内容 25
    三、实验步骤 25
    四、实验代码和结果 25
    五、实验总结与体会 26

    实验九 数据库维护 27
    一、实验目的 27
    二、实验内容 27
    三、实验步骤 27
    四、实验代码和结果 27
    五、实验总结与体会 27

    实验十 SQL程序设计 …28
    一,实验目的………………………………………………………………………………28
    二,实验内容………………………………………………………………………………28
    三,实验步骤………………………………………………………………………………28
    四,实验代码和结果………………………………………………………………………28
    五,实验总结和体会………………………………………………………………………29

    实验一 SQL Server的安装和配置

    一, 实验目的
    (1) 了解Microsoft SQL Server 2008系统。
    (2) 掌握SQL Server 2008的安装过程。
    (3)熟悉SQL Server Management Studio的工作环境。
    (4)掌握sQL Server 2008服务器注册与配置。

    二,实验内容
    (1) SQL Server 2008数据库管理系统安装。
    (2) SQL Server 2008 Management Studio 使用。
    (3) SQL Server 2008服务器配置。

    三,实验步骤
    (1)安装SQL Server 2008数据库管理系统。
    安装SQL Server 2008数据库管理系统,熟悉其安装过程。
    从微软官方下载SQL Server 2008 Enterprise Evaluation,将其安装到本地计算机,使本地计算机成为服务器和客户端工具,并采用Windows身份验证模式。
    SQL Server 2008的安装与其他Microsoft Windows系列产品类似。用户可根据向导提示,选择需要的选项一步一步地完成。安装过程中涉及的实例名、用户账户、身份验证模式、排序规则等关键内容需要我们根据安装界面的提示和实际的需要来进行设置。
    (2)启动SQL Server Management Studio.
    启动SQL Server Management Studio,熟悉其界面环境。
    在SQL Server以前的版本中主要有两个工具:图形化的管理工具(EnterpriseManager)和T-SQL编辑器(Query Analyzer)。 在SQL Server 2008 中,SQL ServerManagement Studio将Enterprise Manager和Query Analyzer两个工具结合在一一起,可以在对服务器进行图形化管理的同时编写T-SQL. SQL Server Management Sudio中的对象浏览器结合了Query Analyzer的对象浏览器和Enerpie Manager的服务器树形视图,可以浏览所有已注册的服务器。另外,对象浏览器还提供了类似与Query Analyzer的工作区,工作区中有类似语言解析器和显示统计图的功能。现在可以在编写查询和脚本的同时,在同一个工具下使用Wizards和属性页面处理对象。
    (3)注册服务器。
    服务器只有在注册后才能被纳人SQL Server Management Studio的管理范围。为了18 管理、配置和使用Microsoft SQL Server 2008 系统,必须使用Microsoft SQL Server
    Management Studio工具注册服务器。注册服务器就是为Microsoft SQL Server 客户机/服务器系统确定一台数据库所在的机器,该机器作为服务器,可以为客户端的各种请求提供服务。在SQL Server Management Studio中有一个单独可以同时处理多台服务器的注册服务器窗口,同时其不仅可以对服务器进行注册,还可以注册分析服务、报告服务、SQLServer综合服务以及移动SQL等。
    (4)配置SQL Server 2008。
    利用SQL Server 2008配置管理器,对数据库管理系统进行配置。
    启动SQL Server配置管理器,查看与SQL Server相关联的服务,并尝试启动和停止服务、配置SQL Server使用的网络协议以及从sQL Server客户端计算机管理网络连接配置。

    四,实验代码和结果

    五,实验总结和体会
    成功安装了SQL Server 2008,步骤不算复杂,但需要自己动手配置的地方很多,安装总体来说还算顺利。

    实验二 创建数据库

    一,实验目的
    (1)了解sQL Server 数据库的物理结构和逻辑结构。
    (2)掌握使用对象资源管理器创建和管理数据库。
    (3)掌握使用T-SQL语句创建和管理数据库。

    二,实验内容
    (1)利用对象资源管理器创建、修改和删除数据库。
    (2)利用T-SQL语句创建修改和删除数据库。

    三,实验步骤
    (1)启动sQL Server Management Studio,在对象资源管理器中,利用图形化的方法创
    建数据库student.
    (2)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法修改数据库student,增加数据文件。
    其中:数据文件逻辑名student_ data2,操作系统文件的名称为C:\Program Files\Microsoft SQL Server\MSSQL10. MSSQLSERVER\ MSSQL\DATA\student_ data2. ndt,
    初始大小为50MB,最大为100MB,以30%的速度增长。
    (3)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法删除数据库student。
    (4)启动SQL Server Management Studio,在SQL编辑器中,利用T-SQL语何
    CREATE DATABASE命令创建数据库student.
    (5) 启动SQL Server Management Studio,在 SQL编辑器中,利用T-SQL语句ALTER DATABASE命令修改数据库student,增加日志文件。
    其中:日志文件逻辑名student_ log2,操作系统文件的名称为 C:\Program Files\Microsoft SQL Server\MSSQL10. MSSQLSERVER\MSSQL\DATA\student_ data2. ldf,初始大小为3MB,最大为50MB,以1M的速度增长。
    (6)启动SQL Server Management Studio,在SQL编辑器中,利用T-SQL语句DROPDATABASE命令删除数据库student。

    四,实验代码和结果
    –创建数据库student
    CREATE DATABASE student
    ON PRIMARY
    (
    NAME=student_data,
    FILENAME=‘E:\数据库\student_data.mdf’,
    SIZE=3,
    MAXSIZE= UNLIMITED,
    FILEGROWTH=1
    )
    LOG ON
    (
    NAME=student_log,
    FILENAME=‘E:\数据库\student_log.ldf’,
    SIZE= 1,
    MAXSIZE= 20,
    FILEGROWTH=10%
    )
    –修改数据库student,增加日志文件
    alter database student
    add log file
    (
    NAME=student_log2,
    FILENAME=‘E:\数据库\student_log2.ldf’,
    SIZE= 3,
    MAXSIZE= 50,
    FILEGROWTH=1
    )
    –删除数据库student
    drop database student

    五,实验总结和体会
    除了可以通过对象资源管理器的图形化界面创建数据库外,还可以使用T-SQL语言所提供的CREATE DATABASE语句来创建数据库。通过实验个人认为,后一种方法更加简单有效。

    实验三 创建数据表

    一,实验目的
    (1)了解SQL Server表的结构特点。
    (2)了解SQL Server 2008的基本数据类型。
    (3)掌握对象资源管理器创建和管理数据表。
    (4)掌握T-SQL语句创建和管理数据表。
    (5)理解约束的概念。

    二,实验内容
    (1)在对象资源管理器创建修改和删除数据表。
    (2)利用T-SQL语句创建、修改和删除数据表。
    (3)创建主键约束、缺省约束、check约束、唯一约束和外键约束。

    三,实验步骤
    (1)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法创建学生信息表stu_info、课程信息表course_info和学生成绩表stu_grade,其结构参考附录A。
    (2)启动SQL Server ManagementStudio,在对象资源管理器中,利用图形化的方法对数据表进行修改:
    *在数据表stu_info中,增加备注字段,字段名memo,字段类型nvarchar,字段长度
    200,允许为空。
    *在数据表stu_info中,删除备注字段memo。
    *在数据表course_info中,对于字段course_name设置UNIQUE约束。
    *在数据表stu_grade中,对于字段grade设置CHECK约束,其取值在0~100之间。
    *在数据表stu_grade中,对于字段stu_id设置FOREIGN KEY约束,其取值参考数据 表stu_info中stu_id 字段取值。
    (3)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法删除数据表stu_grade.
    (4)启动SQL Server Management Studio,在 SQL编辑器中,利用T-SQL语句CREATE TABLE命令创建学生信息表stu_info、课程信息表course_info 和学生成绩表
    stu_grade,其结构参考附录A。
    (5)启动SQL Server Management Studio,在SQL编辑器中,利用T-SQL语句ALTER TABLE命令修改数据表:
    *在数据表stu_info中,增加身份证号码字段,字段名code,字段类型char,字段长度
    18,允许为空。
    *在数据表stu_info中,对于字段code设置UNIQUE约束。
    *在数据表stu_info中,删除身份证号码字段code.
    *在数据表stu_grade中,对于字段grade设置CHECK约束,其取值在0~100之间,
    *在数据表stu_grade中,对于字段course_id 设置FOREIGN KEY约束,其取值参 考数据表course_info中course_id字段取值。
    (6)启动SQL Server Management Studio,在SQL编辑器中,利用T-SQL语句DROP TABLE 命令删除数据表stu_info。

    四,实验代码和结果
    –创建数据表
    create table stu_info(
    stu_id char(10) not null constraint pk_stu_id primary key, --主键
    name nvarchar(20) not null,
    birthday date null,
    sex nchar(1) null default ‘男’,
    address nvarchar(20) null,
    mark int null,
    major nvarchar(20) null,
    sdept nvarchar(20) null,
    );
    GO
    CREATE TABLE course_info(
    course_id char(3) NOT NULL constraint pk_course_id primary key, --主键
    course_name nvarchar(20) NOT NULL,
    course_type nvarchar(20) NULL default ‘考试’,
    course_mark tinyint NULL,
    course_time tinyint NULL,
    pre_course_id char(3) NULL constraint fk_pre_course_id foreign key references course_info(course_id), --外键
    );
    GO
    CREATE TABLE stu_grade(
    stu_id char(10) not null CONSTRAINT fk_stu_id FOREIGN KEY REFERENCES stu_info(stu_id), --外键
    course_id char(3) not null CONSTRAINT fk_course_id FOREIGN KEY REFERENCES course_info(course_id), --外键
    grade tinyint null,
    );
    –stu_grade:stu_id与course_id合在一起作为主键
    GO
    ALTER TABLE stu_grade
    ADD CONSTRAINT pk_stu_course PRIMARY KEY(stu_id,course_id)
    –修改数据表
    GO
    ALTER TABLE stu_info
    ADD code char(18) NULL
    GO
    ALTER TABLE stu_info
    ADD CONSTRAINT un_code UNIQUE --UNIQUE约束:确保某个或某些列(非主键列)没有相同的列值
    GO
    ALTER TABLE stu_info
    DROP COLUMN code
    GO
    ALTER TABLE stu_grade
    ADD CONSTRAINT ck_grade CHECK(grade between 0 and 100) --CHECK约束:限制输入到一列或多 列的值的范围
    ----删除数据表
    –DROP TABLE stu_info

    五,实验总结和体会
    创建数据表的一般步骤为:首先定义表结构,即给表的每一列取列名,并确定每一列的数据类型、数据长度、列数据是否可以为空等;然后,为了限制某列数据的取值范围,以保证输入数据的正确性和一致性而设置约束;当表结构和约束建立完成之后,最后就可以向表中输入数据了。

    实验四 管理表数据

    一,实验目的
    (1)掌握在对象资源管理器中对数据表进行插人、修改和删除数据的操作。
    (2)掌握T-SQL语句对数据表进行插人、修改和删除数据的操作。

    二,实验内容
    (1)利用对象资源管理器向数据表中添加、修改和删除数据。
    (2)使用T-SQL语句向数据表中添加、修改和删除数据。

    三,实验步骤
    (1)启动SQL Sever Mangement Sudi,在对象资源管理器中,利用图形化的方法向学生信息表stu_info、课程信息表course. info和学生成绩表stu grade中添加数据,其数据
    内容参考附录B。
    (2)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法对
    表数据进行修改:
    *在数据表stu_info中,将学号(stu_ id)为2007070101同学的籍贯address)改为“河
    南洛阳”。
    *在数据表stu_ grade中,将成绩(grade)小于60分的所有同学成绩增加10%。
    (3)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法删除数据表stu_ grade中成绩(grade)小于60分的记录。
    (4) 启动SQL Server Management Studio,在SQL编辑器中,利用T-SQL语句INSERT INTO命令向学生信息表stu_ info、 课程信息表course_ info 和学生成绩表stu_grade中添加数据,其数据内容参考附录B。
    (5)启动SQL Server Management Studio,在SQL编辑器中,利用T-SQL语句UPDATE命令修改表数据:
    *在数据表stu info 中,将学号(stu_ id) 为2007070102同学的院系(sdept)改为“会计 学院”。
    *在数据表stu grade中,将成绩(grade)小于60分的所有同学成绩置空。
    (6)启动sQL Server Management Studio,在SQL 编辑器中,利用T-SQL语句DELETE命令删除数据表stu info中所有性别(sex)为空的记录。

    四,实验代码和结果
    –添加表数据
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept)
    VALUES(‘2007070101’,‘张元’,‘男’,‘1985-10-09’,‘河南许昌’,576,‘计算机科学与技术’,‘信息学院’)
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept)
    VALUES(‘2007070102’,‘张红’,‘女’,‘1985-01-14’,‘河南开封’,565,‘计算机科学与技术’,‘信息学院’)
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept )
    VALUES(‘2007070103’,‘王明’,‘男’,‘1986-07-08’,‘河南洛阳’,570,‘计算机科学与技术’,‘信息学院’)
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept )
    VALUES(‘2007070104’,‘李伟’,‘男’,‘1986-03-11’,‘河南郑州’,564,‘计算机科学与技术’,‘信息学院’)
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept )
    VALUES(‘2007070201’,‘郑澜’,‘女’,‘1985-12-01’,‘河南平顶山’,567,‘电子商务’,‘信息学院’)
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept )
    VALUES(‘2007070202’,‘赵恒’,‘男’,‘1986-03-11’,‘河南周口’,566,‘电子商务’,‘信息学院’)
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept )
    VALUES(‘2007070203’,‘张兰’,‘女’,‘1986-03-11’,‘河南许昌’,571,‘电子商务’,‘信息学院’)
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept )
    VALUES(‘2007080101’,‘李伟’,‘男’,‘1986-03-11’,‘河南郑州’,578,‘会计学’,‘会计学院’)
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept )
    VALUES(‘2007080102’,‘钱丽’,‘女’,‘1986-03-11’,‘河南安阳’,573,‘会计学’,‘会计学院’)
    INSERT INTO stu_info(Stu_id,name,sex,birthday,address,mark,major,sdept )
    VALUES(‘2007080201’,‘孙楠’,‘男’,‘1986-1-19’,‘河南南阳’,578,‘财务管理’,‘会计学院’)
    INSERT INTO course_info(course_id,course_name,course_type,course_mark,course_time,pre_course_id)
    VALUES(‘701’,‘计算机基础’,‘考试’,3,50,NULL)
    INSERT INTO course_info(course_id,course_name,course_type,course_mark,course_time,pre_course_id)
    VALUES(‘702’,‘操作系统’,‘考试’,4,50,701)
    INSERT INTO course_info(course_id,course_name,course_type,course_mark,course_time,pre_course_id)
    VALUES(‘703’,‘计算机网络’,‘考试’,4,50,701)
    INSERT INTO course_info(course_id,course_name,course_type,course_mark,course_time,pre_course_id)
    VALUES(‘704’,‘数据库原理’,‘考察’,3,50,701)
    INSERT INTO course_info(course_id,course_name,course_type,course_mark,course_time,pre_course_id)
    VALUES(‘706’,‘Java’,‘考察’,3,40,704)
    INSERT INTO course_info(course_id,course_name,course_type,course_mark,course_time,pre_course_id)
    VALUES(‘801’,‘宏观经济学’,‘考试’,4,50,NULL)
    INSERT INTO course_info(course_id,course_name,course_type,course_mark,course_time,pre_course_id)
    VALUES(‘802’,‘初级会计’,‘考试’,4,50,NULL)
    INSERT INTO course_info(course_id,course_name,course_type,course_mark,course_time,pre_course_id)
    VALUES(‘803’,‘财政学’,‘考试’,3,50,NULL)
    INSERT INTO course_info(course_id,course_name,course_type,course_mark,course_time,pre_course_id)
    VALUES(‘804’,‘会计电算化’,‘考查’,3,NULL,NULL)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007070101’,‘701’,89)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007070101’,‘702’,81)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007070101’,‘703’,96)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007070102’,‘701’,85)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007070102’,‘702’,74)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007070102’,‘703’,77)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007070104’,‘701’,91)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007070104’,‘702’,88)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007080101’,‘801’,79)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007080101’,‘802’,91)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007080102’,‘801’,87)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007080102’,‘802’,83)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007080201’,‘803’,75)
    INSERT INTO stu_grade(stu_id,course_id,grade)
    VALUES(‘2007080201’,‘804’,82)
    –修改表数据
    GO
    UPDATE stu_info
    SET sdept='会计学院’WHERE Stu_id =‘2007070102’
    GO
    DELETE FROM stu_grade WHERE grade<‘60’
    –删除stu_info中所有性别(sex)为空的记录
    GO
    DELETE FROM stu_info WHERE sex=‘男’ and sex=‘女’

    五,实验总结和体会
    如果向表中所有列都要插入数据时,字段名表可以省略,但必须保证VALUES后的各数据项位置和类型与表结构的定义完全一致,使得输入的数据真实有效。
    在插人数据时,对于允许空值的列,可以使用用NUL插入空值;对于具有默认值的列,
    可以使用 DEFAULT插人默认值。
    INSERT INTO除了能够实现一次插入一条记录以外,也可以通过子查询实现一次插入多条记录。

    实验五 简单数据查询

    一,实验目的
    (1) 掌握SELECT语句的基本语法。
    (2)掌握数据汇总的方法。
    (3) 掌握SELECT语句的GROUP BY子句的作用和使用方法。
    (4)掌握SELECT语句的ORDER BY子句的作用和使用方法。

    二,实验内容
    (1) SELECT语句的基本使用。
    (2)数据汇总。
    (3) GROUP BY子句和ORDER BY、COMPUTEBY子句的使用。

    三,实验步骤
    针对student数据库中,stu_info数据表,course_info数据表和stu_grade数据表,完成下列查询。
    (1) SELECT基本使用
    查询每个同学的所有数据。
    查询每个同学的学号、姓名和院系。
    查询学号为2070同学的姓名、性别、籍贯和院系。
    查询每个女同学的学号,姓名和院系,并将结果中各列的标题指定为学号、姓名和
    院系。
    查询计算每个同学的年龄。
    查询所有其籍贯含有“阳”的同学的姓名、性别、籍贯。
    查询课程编号702,且成绩 在70~80之间的同学的学号。
    (2)数据汇总
    查询信息学院同学入学平均分。
    查询全体同学的入学最高分和最低分。
    查询会计学院同学总人数。
    查询学号为207070101同学的各门课程总分。
    (3) GROUP BY
    查询每个院系的总人数。
    查询每位同学的平均分。
    (4) ORDER BY
    将各位同学的信息按入学成绩由高到低排列输出。
    查询每个同学的学号、姓名、课程名和成绩信息,并按成绩由低到高排列输出。

    四,实验代码和结果
    –select 基本使用
    GO
    SELECT*
    FROM stu_info
    GO
    SELECT*
    FROM stu_grade
    GO
    SELECT*
    FROM course_info
    GO
    SELECT stu_id,name,sdept
    FROM stu_info
    GO
    SELECT name,sex,address,sdept
    FROM stu_info
    WHERE stu_id=‘2007070103’
    GO
    SELECT stu_id AS’学号’,name AS’姓名’,sdept AS’院系’
    FROM stu_info
    WHERE sex=‘女’
    GO
    SELECT birthday
    FROM stu_info
    GO
    SELECT name,sex,address
    FROM stu_info
    WHERE address like ‘%阳%’
    GO
    SELECT grade
    FROM stu_grade
    WHERE course_id=702 and grade between 70 and 80
    –数据汇总
    GO
    SELECT AVG(mark)as’平均分’
    FROM stu_info
    WHERE sdept=‘信息学院’
    GO
    SELECT MAX(mark)as’最高分’,MIN(mark)as’最低分’
    FROM stu_info
    GO
    SELECT COUNT()as’会计学院总人数’
    FROM stu_info
    WHERE sdept=‘会计学院’
    GO
    SELECT sum(grade)
    FROM stu_grade
    WHERE Stu_id=2007070101
    –GROUP BY
    GO
    SELECT sdept,COUNT(
    )as’总人数’
    from stu_info
    group by sdept
    GO
    SELECT stu_id,AVG(grade)as’平均分’,COUNT()as’课程数’
    from stu_grade
    group by stu_id
    –ORDER BY
    GO
    SELECT

    FROM stu_info
    order by mark desc --desc:降序排列
    GO
    SELECT stu_info.stu_id,name,course_name,grade
    FROM stu_info,course_info,stu_grade
    WHERE stu_info.Stu_id=stu_grade.Stu_id and stu_grade.course_id =course_info.course_id
    order by grade asc --asc:升序(默认)

    五,实验总结和体会
    实验时要注意查询要求的详细描述,先确定要查询的表然后确定要输出的列和行,如果没有指定输出列,默认为输出所有列。
    在数据查询时,经常需要对表中的列进行计算,才能获得所需要的结果。在SELECT
    子句中可以使用各种运算符和函数对指定列进行运算
    在SQL语言中, ORDER BY子句用于排序。 ORDER BY子句总是在 WHERE子句(如果有的话)后面说明的,可以包含一个或多个列,每个列之间以逗号分隔,可以选择使用ASC/ DESC关键字指定按照升序降序排序。如果没有特别说明値長以升序序列进行排序的。如用于多列进行排序,各列在 ORDER BY子句中的顺序决定了排序过程中的优先级。
    使用 GROUP BY子包为每一个组产生一个汇总结果,每个组只返回一行,不返回详细信息。SELECT子句句中指定的列必须是 GROUP BY子句中指定的列,或是和聚合函数起使用。如果包含 WHERE子句,则只对满足 WHERE条件的行进行分组汇总。如果 GROUP BY子句使用关键字ALL,则 WHERE子句将不起作用。

    实验六 高级数据查询

    一,实验目的
    (1)掌握嵌套查询、连接查询的表示。

    二,实验内容
    (1) 嵌套查询的使用。
    (2) 连接查询的使用。

    三,实验步骤
    针对student数据库中,stu_info数据表,course_info数据表和stu_grade数据表,完成下列查询。
    (1)嵌套查询
    查询选修702课程的同学的学号、姓名和院系信息。
    查询没有选修702课程的同学的学号、姓名和院系信息。
    查询比会计学院的同学人学分数都高的同学的学号、姓名、专业和院系信息。
    (2)连接查询
    查询每个同学的学号、姓名、课程名和成绩信息。
    查询人学成绩大于575分的同学姓名和其选课情况(包括课程名称、课程学时和成绩)。

    四,实验代码和结果
    –嵌套查询
    GO
    SELECT stu_id,name,sdept
    FROM stu_info
    WHERE stu_id IN (
    SELECT stu_id
    FROM stu_grade
    WHERE course_id=702
    )
    GO
    SELECT stu_id,name,sdept
    FROM stu_info
    WHERE stu_id not IN (
    SELECT stu_id
    FROM stu_grade
    WHERE course_id=702
    )
    GO
    SELECT stu_id,name,major,sdept
    FROM stu_info
    WHERE mark>ALL
    (SELECT mark
    FROM stu_info
    WHERE sdept=‘会计学院’)
    AND sdept<>‘会计学院’
    –连接查询
    GO
    SELECT stu_info.Stu_id,name,course_name,grade
    FROM stu_info
    left outer join stu_grade on stu_info.Stu_id=stu_grade.Stu_id
    left outer join course_info on stu_grade.course_id=course_info.course_id
    GO
    SELECT name,course_name,course_time,grade
    FROM stu_info,course_info,stu_grade
    WHERE stu_info.Stu_id=stu_grade.Stu_id and stu_grade.course_id =course_info.course_id and mark>575

    五,实验总结和体会
    表的连接的实现可以通过两种方法:利用 SELECT语句的 WHERE子句。在FROM子句中使用JOIN关键字。由于连接是涉及多个表及其之间的引用,所以列的引用必须明确指出,对于重复的列名必须用表名限定,即 Table_name. Column_name的完整表达方式。
    所谓嵌套查询指的是在一个SELECT査询语句中包含另一个(或多个)SELECT查询语句。其中,外层的SELECT查询语句叫外部查询,内层的的SELECT査询语句叫子查询。使用子查询时需注意以下几个问题:子查询可以嵌套多层。子查询需用圆括号括起来。子查询中不能使用COMPUTE[BY]和INTO子句。子查询的SELECT语句中不能使用 Image、text或 ntext数据类型。

    实验七 视图

    一,实验目的
    (1)理解视图的重要性。
    (2)掌握在对象资源管理器中创建和管理视图。
    (3)掌握T-SQL语句创建和管理视图。

    二,实验内容
    (1)在对象资源管理器创建、修改和删除视图。
    (2)在对象资源管理器使用视图。
    (3)利用T-SQL语句创建、修改和删除视图。
    (4)利用T-SQL语句使用视图。

    三,实验步骤
    (1)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法创建下列视图:
    视图view_male,包含学生信息表中所有男生信息。
    视图view_ stu_grade,包含每个同学的学号、姓名、课程名和成绩信息。
    视图view_ avg, 包含每个同学的学号、姓名、平均成绩信息。
    (2)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法对视图v_ male进行修改,只显示信息学院所有男生的信息。
    (3)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法删除视图view_ male.
    (4)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法查询视图view_ male 中的记录信息。
    (5)启动SQL Server Management Studio,在 SQL编辑器中,利用T-SQL语句CREATE VIEW命令创建下列视图:
    视图view. female, 包含学生信息表中所有女生信息。
    视图view. count,包含每个院系的名称和学生人数信息。
    视图view sum,包含每个同学的学号、姓名、课程总成绩信息。
    (6)启动SQL Server Management Studio在SQL编辑器中,利用TSQL语句ALTER VIEW命令修改视图view _female,增加加密性。
    (7)启动SQL Server Management Studio,在SQL编辑器中,利用T-SQL语句DROP
    VIEW命令删除视图view_female.
    (8)启动SQL Server Management Studio,在SQL编辑器中通过视图,利用T-SQL语句查询下列信息:
    查询“信息学院”的学生人数。
    查询学号2007070101同学的所选课程和课程成绩信息。

    四,实验代码和结果
    –创建视图
    create view view_female
    with encryption --加密
    as
    select*
    from stu_info
    where sex=‘女’
    go
    create view view_count(sdept,count)
    as
    select sdept,count() as’学生人数’
    from stu_info
    group by sdept
    go
    create view view_sum(学号,姓名,总成绩)
    as
    select stu_info.stu_id,stu_info.name,sum(grade)
    from stu_info left outer join stu_grade
    on stu_info.stu_id=stu_grade.stu_id
    group by stu_info.stu_id,name
    go
    create view view_stu_grade
    as
    select stu_info.stu_id,name,course_name,grade
    from stu_info
    left outer join stu_grade on stu_info.Stu_id=stu_grade.Stu_id
    left outer join course_info on stu_grade.course_id=course_info.course_id
    ----删除视图
    –go
    –drop view view_female
    –查询信息
    go
    select count(
    ) as’学生人数’
    from view_female
    where sdept=‘信息学院’
    go
    select*
    from view_stu_grade
    where stu_id=‘2007070101’

    五,实验总结和体会
    视图的定义和属性信息都保存在系统数据库和系统数据表中,可以通过系统提供的存
    储过程来获取有关视图的定义信息。sp help用于返回视图的特征信息。sp_ helptext查看视图的定义文本。sp_ depends查看视图对表的依赖关系和引用的字段。
    通过本次实验,我练习了在对象资源管理器中创建、修改、删除和使用视图,以及利用T-SQL语句创建、修改、删除和使用视图,理解了视图的重要性,掌握了在对象资源管理器中和利用T-SQL语句创建和管理视图。

    实验八 索引

    一,实验目的
    (1)理解索引的概念和分类。
    (2)掌握在对象资源管理器中创建和管理索引。
    (3)掌握T-SQL语句创建和管理索引。

    二,实验内容
    (1)在对象资源管理器创建、修改和删除索引。
    (2)在对象资源管理器使用索引。
    (3)利用T-SQL语句创建、修改和删除索引。(4)利用T-SQL语句使用索引。

    三,实验步骤
    (1)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法创建下列索引:
    *对学生信息表stu_info的name列创建非聚集索引idx_name。
    *对学生成绩表stu_ info 的stu_ id .course_ id列创建复合索引idx stu course_ id
    (2)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法对索引idx_ name进行修改,使其成为唯一索引。
    (3)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法删除索引idx_ stu_ course_ id。
    (4)启动SQL Server Management Studio,在 SQL编辑器中,利用T-SQL语句CREATE INDEX命令创建下列索引:
    *对课程信息表course_info的course_name列创建非聚集索引idx_course _name。
    *对学生成绩表stu_grade的stu_id、course_id列创建复合索引idx_stu course id。
    (5)启动SQL Server Management Studio,在sQL编辑器中,利用T-SQL语句对索引
    idx
    course_name进行修改,使其成为唯索引。
    (6)启动SQL Server Management Studio,在SQL编辑器中,利用系统存储过程sp_helpindex查看索引idx course _name信息。
    (7)启动SQL Server Management Sudio,在sQL编辑器中,利用T-SQL语句DROPINDEX命令删除索引idx course _name.

    四,实验代码和结果
    –创建索引
    CREATE UNIQUE NONCLUSTERED INDEX idx_course_name --唯一非聚集
    ON course_info(course_name)
    GO
    CREATE INDEX idx_stu_course_id
    ON stu_grade(stu_id,course_id)
    –查看
    GO
    Exec sp_helpindex course_info
    –删除
    GO
    DROP INDEX course_info.idx_course_name

    五,实验总结和体会
    在 SQL Server2008中,提供了多种索引类型。如果以存储结构来区分,则有“聚集索
    引”( Clustered Index,也称聚类索引、簇集索引)和“非非聚集索引”( Nonclustered Index,也称非聚类索引、非簇集索引)的的区别;如果以数据的唯一性来区别,则有“唯一索引”( Unique Ihdex)和“非唯一索引”( Nonunique Index)的不同;若以键列的个数来区分,则有“单列索引”与“多列索引”的分别。
    利用系统提供的存储过程sp_ rename可以对索引进行重命名。
    利用系统提供的存储过程sp_ helpindex可以查看索引信息,其语法格式如下:
    sp_helpindex [@objname =]’object_name’,其中,[@objname =]’object_name’表示所要查看的当前数据库中表的名称。

    实验九 数据库维护

    一,实验目的
    (1)理解备份与恢复的意义。
    (2)掌握在对象资源管理器中备份和恢复数据库。
    (3)掌握T-SQL语句备份和恢复数据库。

    二,实验内容
    (1)在对象资源管理器中备份和恢复数据库。
    (2)利用T-SQL语句备份和恢复数据库。

    三,实验步骤
    (1)启动SQL Server Management Studio, 在对象资源管理器中,利用图形化的方法对数据库student进行完整备份。
    (2)启动SQL Server Management Studio,在对象资源管理器中,利用图形化的方法,针对(1)中的完整备份,对数据库student进行恢复。
    (3)启动SQL Server Management Studio,在SQL编辑器中,利用T-SQL语句BACKUP命令对数据库student进行完整备份。
    (4)启动SQL Server Management Studio,在 sQL编辑器中,利用T-SQL语句
    RESTORE命令,针对()中的完整备份对数据库sudent 进行恢复。

    四,实验代码和结果
    –完整备份
    Backup Database student
    To Disk=‘E:\数据库\备份\student.bak’

    –恢复
    Restore Database student
    From Disk=‘E:\数据库\备份\student.bak’

    五,实验总结和体会
    数据库的备份和恢复是数据库管理员维护数据库安全性和完整性必不可少的操作,合
    理地进行备份和恢复可以将可预见的和不可预见的问题对数据库造成的伤害降到最低。当
    运行 SQL Server的服务器出现故障,或数据库遭到某种程度的破坏时,可以利用以前对数
    据库所做的备份重建或恢复数据库。
    通过这次实验,掌握了数据库备份的概念和种类,各种数据库备份的实现方法,数据库恢复模型以及从各种数据库备份中恢复数据库的方法。

    实验十 SQL程序设计

    一、实验目的
    1.熟练掌握变量的定义和赋值。
    2.掌握各种运算符。
    3.掌握流程控制语句,尤其是条件语句和循环预语句。

    二、实验内容
    1.全局变量和局部变量的定义与使用。
    2.流程控制语句的使用。

    三、实验步骤
    1.创建一名为Student_name的局部变量,并在select语句中使用该变量查找“张元”同学所选课程的成绩情况,给出相应的语句段和运行结果。
    2.将选修课程号为701的同学的成绩增加3分,同时使用全局变量@@rowcount检查获得更新的数据行数目。
    3.利用学生数据库student中的stu_grade表查找学生的成绩信息并判断是否有某学生的某门课程的成绩在90分以上的信息,若有,则显示学号、姓名、课程名和成绩,否则输出信息,说明“不存在成绩大于90分的学生!”
    4.从学生数据库student中查询所有学生选课成绩情况:姓名、课程名、成绩。要求:将学生的百分制转换为5级评分制,成绩大于等于90显示为“优秀”,成绩在80-89分显示为“良好”,“70-79”分显示为“中等”,成绩在60-69显示为“及格”,60以下显示为“不及格”,没成绩的显示为“未考”。

    四,实验代码和结果
    Declare @Student_name varchar(20)
    Set @Student_name=‘张元’
    SELECT grade
    From stu_grade,stu_info
    WHERE stu_grade.stu_id=stu_info.stu_id AND name=‘张元’
    GO
    UPDATE stu_grade
    Set grade=grade+3
    WHERE course_id=‘701’
    if @@rowcount=0
    print’警告:没有发生更新数据行!’
    else
    print @@rowcount
    GO
    if Exists(SELECT * From stu_grade where grade>90)
    SELECT stu_info.stu_id,name,course_name,grade
    From stu_grade,stu_info,course_info
    WHERE stu_grade.stu_id=stu_info.stu_id AND stu_grade.course_id=course_info.course_id AND grade>90
    else
    print’不存在成绩大于90分的学生!’
    GO
    SELECT name,course_name,grade=
    case
    When grade>=90 then’优秀’
    When grade>=80 then’良好’
    When grade>=70 then’中等’
    When grade>=60 then’及格’
    When grade>0 then’不及格’
    else ‘未考’
    END
    FROM stu_info,stu_grade,course_info
    WHERE stu_info.stu_id=stu_grade.stu_id AND stu_grade.course_id=course_info.course_id

    五,实验总结和体会
    通过这次实验的学习,掌握以下内容:常量的使用,变量的定义和和赋值,各种运算符的使用与表达式的用法以及流程控制语句的使用。

    展开全文
  • package labor; import java.awt.BorderLayout; import java.awt.Choice; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.Panel;...import
    package labor;
    
    import java.awt.BorderLayout;
    import java.awt.Choice;
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.Panel;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
    import javax.swing.SwingConstants;
    
    public class Load_Labor extends JFrame implements SwingConstants{
    	private String select="管理员";
    	String nameresult[]=new String[10];
    	String passresult[]=new String[50];
    	boolean Flag=false;
    	private JLabel welcomela=null;
    	private	 JLabel userla=null;
    	private JLabel passwordla=null;
    	private JLabel power=null;
    	private JComboBox jcb=null;
    	private JTextField userjt=null;
    	private JPasswordField passwordjp=null;
    	private JButton loadbtn=null;
    	private JButton canclebtn=null;
    	
    	private JPanel inputJp=null;
    	private JPanel btnJp=null;
    	private JPanel panel=null;
    	
    	private JPanel imagePanel=null;
    	private ImageIcon background=null;
    	
    	public Load_Labor(){
    		super("用户登陆");
    		init();
    	}
    	
    	public void init(){
    		this.setLayout(new FlowLayout());
    		
    		inputJp=new JPanel();
    		btnJp=new JPanel();
    		inputJp.setLayout(new GridLayout(3,2));
    		welcomela=new JLabel("欢迎使用实验室管理系统");
    		welcomela.setFont(new Font("欢迎使用实验室管理系统",1, 16));	
    		welcomela.setHorizontalAlignment(JLabel.CENTER);
    		welcomela.setForeground(Color.RED);
    		userla=new JLabel("用户名:");
    		passwordla=new JLabel("密    码:");
    		power=new JLabel("权限:");
    		userjt=new JTextField(10);
    		passwordjp=new JPasswordField(10);
    		jcb=new JComboBox();
    		jcb.addItem("管理员");
    		jcb.addItem("访客");
    		loadbtn=new JButton("登陆");
    		canclebtn=new JButton("退出");
    		inputJp.add(userla,0);
    		inputJp.add(userjt,1);		
    		inputJp.add(passwordla,2);	
    		inputJp.add(passwordjp,3);
    		inputJp.add(power,4);
    		inputJp.add(jcb,5);
    		btnJp.add(loadbtn);
    		btnJp.add(canclebtn);
    		panel=new JPanel(new FlowLayout());
    		panel.add(inputJp);
    		panel.add(btnJp);
    		background = new ImageIcon("E:/workspace/database/src/ImageFolder/password.png");// 背景图片		
    		JLabel label = new JLabel(background);// 把背景图片显示在一个标签里面		
    		// 把标签的大小位置设置为图片刚好填充整个面板		
    		label.setBounds(0, 0, background.getIconWidth(),background.getIconHeight());		// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明		
    		imagePanel=(JPanel)this.getContentPane();		
    		imagePanel.setOpaque(false);		// 内容窗格默认的布局管理器为BorderLayout		
    		imagePanel.setLayout(new BorderLayout());
    		imagePanel.add(welcomela,BorderLayout.NORTH );
    		imagePanel.add(panel,BorderLayout.SOUTH);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
    		this.getLayeredPane().setLayout(null);		// 把背景图片添加到分层窗格的最底层作为背景		
    		this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));	
    		this.setSize(background.getIconWidth(),background.getIconHeight());
    		this.setVisible(true);
    		this.show();
    		jcb.addItemListener(new ItemListener(){					
    		public void itemStateChanged(ItemEvent ite) {
    			if(ite.getStateChange() == ItemEvent.SELECTED){
    				 try{
    					 select = ite.getItem().toString();//选中的值
    				 }catch (Exception e){
    				      
    				   }
    				 } 
    				}
    		});
    		loadbtn.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    				int i=0;
    				String userName=userjt.getText().trim();
    				String passwordStr=passwordjp.getText().trim();
    				DBConnection db=new DBConnection();
    					String sql="select * from loadInfo";
    					ResultSet rs;
    					try {
    						rs = db.executeQuery(sql);
    						while(rs.next()){			
    						nameresult[i]=rs.getString("laborname").trim();
    						passresult[i]=rs.getString("laborpass").trim();
    						i++;
    					}
    					} catch (SQLException e1) {
    						e1.printStackTrace();
    					}	
    				if(select.equals("访客")){
    					dispose();
    					EquSearch_Labor vl=new EquSearch_Labor("访客");
    				}
    				else{
    					for(int j=0;j<i;j++){
    						if(nameresult[j].equals(userName)){
    							if(passresult[j].equals(passwordStr)){
    								Flag=true;
    								break;
    							}
    						}
    					}
    					for(int j=0;j<i;j++){
    						if((!nameresult[j].equals(userName))||(!passresult[j].equals(passwordStr))){
    							JOptionPane.showMessageDialog(null, "用户或密码输入错误,请重新输入");
    							userjt.setText(null);
    							passwordjp.setText(null);
    						}
    					}
    					System.out.println(Flag);
    					if(Flag==true){	
    						dispose();
    						Mana_Labor ul=new Mana_Labor();
    					}
    				}
    				
    			}
    			
    		});
    		canclebtn.addActionListener(new ActionListener() {
    			
    			public void actionPerformed(ActionEvent e) {
    				System.exit(0);
    			}
    		});
    		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    	}
    	public static void main(String args[]){
    		Load_Labor ld=new Load_Labor();
    	}
    
    }
    

    展开全文
  • 实验1数据库定义实验

    2020-05-04 21:11:59
    一、实验 1.1 数据库定义实验 (一)实验目的 理解和掌握数据库 DDL 语言,能够熟练地使用 SQL DDL 语句创建、修改和 删除数据库、模式和基本表。 (二)实验内容和要求 理解和掌握 SQL DDL 语句的语法,特别是各种...
  • 华南理工大学 数据库实验实验截图 1 创建Student数据库 先清空原本的表的定义,再创建表和插入数据。 2 完成如下的查询要求及更新的要求。 (1) 查询身高大于1.80m的男生的学号和姓名; (2) 查询计算机系...
  • (1)理解和掌握数据库DDL语言,能熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。 (2)掌握SQL语句常见语法错误的调试方法。 二、 实验内容: 教材3.3数据定义中例3.1至例3.11的要求操作,并截取...
  • 创建函数的基本操作 创建函数 输入函数内容,这里是一个查询操作 创建触发器的基本操作 在需要创建触发器的表中新建触发器 添加触发器 这里添加了一个在更新basic_info 表时同步更新score表内容的一个触发器 ...
  • 数据库课程设计源代码 C语言实现 编译环境Dev C++ 数据库包含3个基本表,包括查询、插入、删除、修改等功能,支持连接查询,视图查询,包含触发器。
  • USTC计算机院高级数据库课程实验1记录 - 实现Storage and Buffer Manager,包括缓冲区LRU算法、基于目录的记录操作实现等
  • 大二数据库实验报告

    2018-05-23 20:27:10
    实验要求: ... 实验五 SQL常用数据更新操作 实验六 综合应用\ 实验一:熟悉数据库管理系统环境 实验过程及分析: 首先创建一个数据库和需要的表: create database XSGL GO use XSGL GO Cr...
  • 这个实验我做的比较简单,但是实际比这个复杂得多。 1.实验目的 掌握数据库设计基本方法及数据库设计工具。 2.实验内容和要求 掌握数据库设计基本步骤,包括数据库概念结构设计、逻辑结构设计,物理结构设计,数据库...
1 2 3 4 5 ... 20
收藏数 24,124
精华内容 9,649