数据库sql实验报告

课程设计(大作业)报告

课程名称:数据库原理与技术  

设计题目:学生管理子系统    

院    系:计算机与网络技术系

班    级:  09级计科1     

设 计 者:              

学    号:  200911011       

指导教师:  王亚宁            

设计时间:2011610615

昆明学院

昆明学院课程设计(大作业)任务书

姓   名:                                                      院(系):计算机信息与网络技术学院

专   业:计算机科学与技术                          学   号:200911011

任务起止日期:20##年6月10日—6月15日

课程设计题目:  

       《学生管理子系统》

课程设计要求及任务描述:

1.         构建学生信息管理系统后台数据库;

2.         根据设计任务和基本信息,制定数据库设计实施的实际方案;

3.         进行数据库代码的编写、开发,处理中间各个环节过程中遇到的问题,即使修正设计实施方案,与项组员积极沟通解决问题;

4.         解决开发过程中遇到的技术性问题及关键性代码;

5.         运行结果,调试系统。

工作计划及安排:

6月10日:选择相应题目,进行课程设计课题的资料搜集,撰写项目计划和技术方案。

6月11日:分析与设计:根据搜集的资料,进行数据库功能与数据结构分析,并选择合适的数据字典,并在此基础上进行实现数据库功能的设计方案;

6月12日—13日:数据库设计:程序员运用掌握T-SQL语言编写数据库,实现所建立数据库的各个模块功能;

6月14日:调试与测试:测试主管调试数据库,成员交叉测试程序,并记录测试情况

6月15日:课程设计报告:编写课程设计报告

指导教师签字                   

20##年 12   月     日     


课程设计(大作业)成绩

学号:200911011                姓名:                  指导教师:王亚宁

课程设计题目:

《学生管理子系统》

完成情况总结:

在短短一个星期的课程设计中,我学习到了许多书本上所学习不到的知识,实际动手操作和发现问题解决问题的能力得到了很大的提高。

首先,书本里的基础知识相当重要,只有掌握了牢固的基础知识,才能在实际的动手运用中一帆风顺,让我知道了理论结合实际的重要性。

其次,本次课程设计,我们组遇到了各种各样的困难和技术上的难题,然而,团队合作让我们两星期来进展迅速,让我真正感受到团队力量的重要性,它保证了我们团队能提前按时按责按量完成设计任务;一个人也是不可能完成的,因此要具有团结同学的精神,相信团结就是力量;加强了团队合作精神和协调、沟通能力。

指导教师评语:

成绩:

填表时间:                                              指导教师签名:


课程设计(大作业)报告

前言

一、课程设计目的

1.掌握数据库基本原理,理解关系数据库的设计方法和设计思路。

2.设计一个数据库应用系统。

3.完成所设计系统数据库的概念设计、逻辑设计与物理设计。

4.SQL Server2005的操作与使用。

5.数据库的建立与管理、数据表的建立与操作等。

6.SQL查询语言的使用与编程。

7.培养对所学知识的综合运用的能力。

二、课程设计的基本要求

1、构建学生信息管理系统后台数据库;

2、根据设计任务和基本信息,制定数据库设计实施的实际方案;

3、进行数据库代码的编写、开发,处理中间各个环节过程中遇到的问题,即使修正设计实施方案,与项组员积极沟通解决问题;

4、解决开发过程中遇到的技术性问题及关键性代码;

5、运行结果,调试系统。

系统背景资料说明

本次数据库实训我们组要完成的是学生信息管理系统的后台数据库设计,这是一个典型的PPS进存销系统,该系统通用性极强,覆盖学生的课程、销售、库存、管理等各个环节。该系统的主要内容是以医药公司的库存管理、销售管理、进货管理、供应商管理、客户管理功能为核心。

系统需求分析

操作系统:操作系统:Microsoft Windows 20## Server/NT 及以上版本。

DBMS名称:SQL Sever 2005;

DBMS版本:

数据库概念结构设计

 


数据库逻辑结构设计

主数据库:

数据库名:student;包含一个主数据文件和一个事务日志文件。

主数据文件逻辑名为:student_data,操作系统文件名为:student_data.mdf

事务日志文件逻辑名为:student_log,操作系统文件名为:student_log.ldf

主数据文件初始容量大小为10MB,最大容量无限制,文件增长量为:10%。

事务日志文件初始容量大小为10MB,最大容量无限制,文件增长量为:10%。

学生表:

学生(学号、姓名、性别、出生日期、专业、班级、所属学院)

课程表:

课程(课程号、课程名、学时、学分)

学生选修课表:

学生选修课(学号、课程号、成绩)

学生德育考评表:

学生德育考评(学号、德育考评分、智育考评分、体育考评分)

学生综合评定情况表:

学生综合评定情况(学号、综合考评分、名次)

学生表

课程表

学生选修课表

学生德育考评表

学生综合评定情况表

数据库实现

一、        T-SQL代码

1、主数据的创建:

create database student

on primary

(name=student_data,

filename='E:\st\student_data.mdf',

size=10MB,

maxsize=unlimited,

filegrowth=10%)

log on

(name=student_log,

filename='E:\st\student_log.ldf',

size=10MB,

maxsize=unlimited,

filegrowth=10%)

go

2、表的创建:

(1)学生表:

use student

go

creat table 学生

(学号 char(12) constraint pk_xs primary key,

姓名 char(8),

性别 char(2),

出生日期 datetime,

专业 varchar(20) not null,

班级 varchar(20)

所属学院 varchar(30)

Go

(2)课程表:

use student

go

create table 课程

(课程号 char(4) constraint pk_kc primary key,

 课程名 char(20) not null,

 学时 tinyint,

 学分 smallint)

go

(3)学生选修课表:

use student

go

create table 学生选修课

(学号 char(12) constraint fk_xsxxkxh references 学生(学号),

 课程号 char(4) constraint fk_xsxxkkch references 课程(课程号),

 成绩 tinyint)

go

(4)学生德育考评表:

use student

Go

create table 德育考评

(学号 char(12) constraint fk_dykpxh  reference学生(学号),

德育考评分 tinyint,

体育考评分 tinyint,

智育考评分 tinyint)

go

(5)学生综合评定情况表:

use student

go

create table 学生综合评定情况

(学号 char(12) constraint fk_xszhpdqkxh references 学生(学号),

 综合考评分 tinyint,

 名次 char(2))

go

3、一班学生表视图创建:

use student

go

create view view1

as

select dbo.学生.学号, dbo.学生.姓名, dbo.学生.性别, dbo.学生.出生日期, dbo.学生.专业, dbo.学生.班级, dbo.学生.所属学院

from  dbo.学生

where (班级='20##级1班')

go

4、存储名次大于等于22名学生综合评定情况:

use student

go

create procedure cj_xm

as

select 学生.学号,姓名,综合考评分,名次

from 学生,学生综合评定情况

where 学生.学号=学生综合评定情况.学号 and 名次>='22'

go

5、建立一个名为del_xs的delete触发器

use student

go

create trigger del_xs

on 学生

for delete

as

delete 学生选修课 where 学号 in (select 学号 from deleted)

go

二、        运行结果

1、按个人或者班级查询学生的综合考评分及名次:

2、查询学生的各个部分分数构成情况

3、能够对基本数据进行修改

参考文献:《数据库原理与技术》清华大学出版社申时凯戴祖诚

致谢:感谢王亚宁老师的悉心指导、感谢小组成员的团结奋战.

 

第二篇:SQL SERVER数据库实验报告(详细)

数据库原理及应用实验报告

学号:   姓名:

实验1

一、实验目的:

熟悉SQL Server使用界面,掌握使用SSMS和SQL语句创建并设置数据库。

二、实验原理:

1.使用SSMS创建数据库

2.创建数据库语句:

CREATE   DATABASE 数据库名

    [ON  [PRIMARY]  //指定一个文件为主要文件

    [<文件格式>[,…n]]

    [,<文件组格式>[,…n]] ]

    [LOG  ON {<文件格式>[,…n]}]

    <文件格式>::=

    ([NAME=逻辑文件名,]

    FILENAME=‘操作系统下的文件名和路径’

    [,SIZE=文件初始容量]

    [,MAXSIZE={文件最大容量|UNLIMITED}]

    [,FILEGROWTH=递增值])[,…n]

<文件组格式>::=FILEGROUP 文件组名<文件格式>[,…n]

3.修改数据库语句:

ALTER  DATABASE  数据库名

    {ADD FILE <文件格式>[,…n] [TO FILEGROUP  文件组名]

    |ADD  LOG  FILE<文件格式>[,…n]

    |REMOVE  FILE 逻辑文件名

    |ADD  FILEGROUP 文件组名

    |REMOVE  FILEGROUP 文件组名

    |MODIFY  FILE<文件格式>

    |MODIFY  FILEGROUP 文件组名  文件组属性}

<filespec>::=

    (NAME=逻辑文件名

    [,FILENAME=‘实际文件名和路径’]

    [,SIZE=容量]

    [,MAXSIZE={最大容量|UNLIMITED}]

    [,FILEGROWTH=递增量])

三、实验内容:

1. 使用SQL语句完成下题

(1)   使用CREATE  DATABASE语句创建一个名为“st”数据库,要求①主要数据文件:逻辑文件名为“stdata1”,实际文件名为“stdata1.mdf”②事务日志文件:逻辑文件名为“stlog1”,实际文件名为“stlog1.ldf”③初始容量均为3MB,最大容量均为10MB,递增量均为1MB。

(2)   使用CREATE  DATABASE语句创建一个名为“student”数据库,要求①主要数据文件:逻辑文件名为“studentdata1”,实际文件名为“studentdata1.mdf”②非主要数据文件:逻辑文件名为“studentdata2”,实际文件名为“studentdata2.ndf”③事务日志文件:逻辑文件名为“studentlog1”,实际文件名为“studentlog1.ldf”④初始容量均为3MB,最大容量均为10MB,递增量均为1MB。

(3)   使用ALTER  DATABASE语句在“st” 数据库中添加一个数据文件和一个事务日志文件,其逻辑文件名分别为“studentdata3”和“studentlog2”,其实际文件名分别为“studentdata3.ndf”和“studentlog2.ldf”,初始容量均为1MB,最大容量均为10MB,递增量均为1MB;然后将数据文件studentdata3的初始容量增加到5MB,上限增加到20MB。

  解:(1)create  database  st  on  primary

           (name=stdata1,

           filename='d:\xs\stdata1.mdf',

           size=3mb, maxsize=10mb, filegrowth=1mb)

             log on

            (name='stlog1',

            filename='d:\xs\stlog1.ldf',

            size=1mb, maxsize=10mb, filegrowth=1mb)

            go                            

       (2)create  database  student  on  primary

            (name=studentdata1,

            filename='d:\xs\studentdata1.mdf',

            size=3mb, maxsize=10mb, filegrowth=1mb),

            (name=studentdata3,

            filename='d:\xs\studentdata2.ndf',

            size=1mb, maxsize=10mb, filegrowth=1mb)

             log on

            (name='studentlog1',

            filename='d:\xs\studentlog1.ldf',

            size=1mb, maxsize=10mb, filegrowth=1mb)

            go

      (3)alter  database  st

            add  file

            (name=studentdata3,

            filename='d:\xs\studentdata3.ndf',

            size=1mb, maxsize=10mb, filegrowth=1mb),

            (name='studentlog2',

            filename='d:\xs\studentlog2.ldf',

            size=1mb, maxsize=10mb, filegrowth=1mb)                  

         alter database st

            modify file

            (name=studentdata3,

            size=5mb,maxsize=20mb)                

   实验2    

一、实验目的:掌握使用SSMS和SQL语句创建并管理数据库表.

二、实验原理:

1.在SSMS上创建数据库表

2.创建数据库表语句:

CREATE TABLE[数据库名.拥有者]表名

            (<字段定义>)[,…n]

             <字段定义>::={字段名 数据类型}

             [[DEFAULT 常量表达式]|[IDENITY[(种子,增量)]]]

[<字段定义>][,…n]

3.创建约束

[CONSTRAINT  约束名]  NULL|NOT NULL

[CONSTRAINT  约束名] PRIMARY EY[CLUSTERED|NONCLUSTERED]

[(字段名[,…16])]]

[CONSTRAINT  约束名]DEFAULT 默认值[FOR字段名]

[CONSTRAINT  约束名] UNIQUE[CLUSTERED|NONCLUSTERED] [(字段名[,…16])]]

[CONSTRAINT  约束名] FOREIGN  KEY[(字段名[,…16])]  REFERENTCES  引用表名(引用字段名[,…16])

[CONSTRAINT  约束名]CHECK(条件表达式)

4.修改数据库表

ALTER  TABLE

ALTER  COLUMN 字段名 新数据类型[(精度[,小数位数])]     [NULL|NOT NULL]

ALTER  TABLE 表名

ADD{字段定义|字段名AS计算机字段表达式}[,…n]

ALTER  TABLE 表名

DROP  COLUMN 字段名[,…n]

ALTER  TABLE 表名

ADD  CONSTRAINT 约束定义[,…n]

ALTER  TABLE 表名

DROP  CONSTRAINT 约束名[,…n]

三、实验内容

1.使用SQL语句完成下题:

(1)   使用CREATE  TABLE语句创建一个学生表,其中包含以下字段:学号(int,自动编号,种子为200001,增量为1,定义为主键);姓名(varchar(8),not  null);专业(varchar(20),null,)。

(2)   使用CREATE  TABLE语句创建一个成绩表其中包含以下字段:学号(int,not null);课程号(int,not  null);成绩(real,null,)。

(3)   使用alter table语句新增学生表和成绩表之间的外键联系,并新增对成绩的检查性约束。

 解:(1) create table 学生表

        (学号 int  identity (200001,1)  primary key ,

        姓名 varchar(8)  not null,

        专业 varchar(20)  null )

    (2) create table 成绩表

        (学号 int  not null,

        课程号 int  not null,

        成绩 real  null)

    (3) alter table 成绩表

        add

        constraint gjmg foreign key(学号) references 学生表(学号),

        constraint fhjg check (成绩>=0 and 成绩<=100)

实验3

一、实验目的:熟练掌握SELECT语句对数据库表的各项操作.

二、实验原理:

1.选择查询语句:

SELECT 字段列表 (指定输出字段)

  [INTO  新表]      (将检索结果存储到一张新表)

  From   数据源   (指定检索的数据来源)

  [WHERE 搜索条件](指定对记录的过滤条件   

  [GROUP BY 分组表达式](对检索到的记录分组)

  [HAVING   搜索表达式](指定对记录的过滤条件)

  [ORDER BY 排序表达式](对检索到的记录进行排序处理)

三、实验内容:

1. 完成课后题3、5

7.3(1) SELECT 业务员姓名,年龄 from 业务员

         where 年龄=

         (select  max (年龄)  from 业务员)

   (2) select 业务员姓名,月薪from 业务员

         order  by  月薪 desc

   (3) select * from 业务员

         where 月薪 between 1000 and 2000

   (4) select 客户编号, count(订单号)as 订单数,sum(金额)as 总金额 from 订单

         group by 客户编号

   (5) select 业务员姓名,count(订单号)as 订单数from 业务员 full outer join 订单

         on 业务员.业务员编号=订单.业务员编号

         group  by 业务员姓名

         having  count(订单号) >= 2

         order  by 订单数

  

(6) update 业务员

         set 月薪= 1.1* 月薪

   (7) select 业务员姓名,年龄 from 业务员

         where 月薪> all (select  avg (月薪)  from 业务员)

   (8) update 业务员

         set 月薪=1.05*月薪

         where 业务员编号 in

         (select 业务员编号 from 订单

         group  by 业务员编号 having  sum(金额)>20000 )

   (9) select 业务员姓名,订单号,z.客户编号,金额 from 业务员x,订单y,客户z

        where x.业务员编号= y.业务员编号and  y.客户编号=z.客户编号and 金额>=2000

7.5(1)SELECT  ENO,ENAME  FROM  EMP

        WHERE  ENO IN (SELECT  ENO  FROM  WORKS  WHERE  CNO ='C4' OR  CNO='C8'

        GROUP   BY  ENO

        HAVING  COUNT(CNO)>1)

   (2)SELECT  ENO,ENAME  FROM  EMP

       WHERE  ECITY  IN(SELECT  CITY FROM COMP WHERE CNO IN (SELECT CNO  FROM  WORKS))  

   (3)SELECT  ENO ,COUNT (CNO) AS NUM,SUM(SALARY)AS SUM_SALARY  FROM WORKS

        WHERE  ENO IN (SELECT  ENO  FROM  EMP)

        GROUP  BY  ENO

   (4)SELECT  DISTINCT  ENO  FROM  WORKS

        WHERE  CNO  IN (SELECT  CNO  FROM  WORKS  WHERE  ENO='E6')

   (5)UPDATE  WORKS 

        SET  SALARY =100+SALARY

        WHERE  ENO  IN (SELECT  ENO  FROM  EMP  WHERE  AGE>50)

   (6)DELETE

        FROM  WORKS

        WHERE  ENO  IN ( SELECT  ENO  FROM  EMP  WHERE  AGE >60)

   (7)CREATE VIEW  EMP_WOMAN

       AS SELECT  EMP.ENO,ENAME,WORKS.CNO,CNAME,SALARY FROM (EMP JOIN  WORKS ON  EMP.ENO = WORKS.ENO) JOIN  COMP

ON   WORKS.CNO = COMP.CNO  WHERE  SEX='女'

   (8)SELECT  CNO,ENO  FROM  WORKS

        WHERE  CNO  IN(select  CNO  FROM  COMP  WHERE  CITY='上海')

   (9)select  ENAME  from  EMP

        WHERE  ENO  NOT IN (SELECT  ENO  FROM  WORKS  WHERE CNO  IN (SELECT CNO  FROM   COMP  WHERE  CITY='上海'))

   (10)SELECT ENO ,ENAME  FROM  EMP

         WHERE  ENO IN (SELECT ENO FROM WORKS WHERE SALARY >1000 AND CNO IN   (select  CNO  from  COMP  where  CNAME='IBM'))  AND  SEX='男'

                   

7.3                       订单

                     客户

                  业务员

7.5                COMP

                    EMP

         

                    WORKS

实验四、设计性实验:建立小型数据库管理系统

一、实验目的

熟悉数据库建立及应用的方法,系统的应用数据库。

二、实验原理

1.创建数据库语句:

CREATE   DATABASE 数据库名

    [ON  [PRIMARY]  //指定一个文件为主要文件

    [<文件格式>[,…n]]

    [,<文件组格式>[,…n]] ]

    [LOG  ON {<文件格式>[,…n]}]

    [FOR  LOAD//提供与SQL Server早期版本的兼容性 | FOR  ATTACH//将已经存在的数据库文件连接进来]

<文件格式>::=

    ([NAME=逻辑文件名,]

    FILENAME=‘操作系统下的文件名和路径’

    [,SIZE=文件初始容量]

    [,MAXSIZE={文件最大容量|UNLIMITED}]

    [,FILEGROWTH=递增值])[,…n]

<文件组格式>::=FILEGROUP 文件组名<文件格式>[,…n]

2.修改数据库语句:

ALTER  DATABASE  数据库名

    {ADD FILE <文件格式>[,…n] [TO FILEGROUP  文件组名]

    |ADD  LOG  FILE<文件格式>[,…n]

    |REMOVE  FILE 逻辑文件名

    |ADD  FILEGROUP 文件组名

    |REMOVE  FILEGROUP 文件组名

    |MODIFY  FILE<文件格式>

    |MODIFY  FILEGROUP 文件组名  文件组属性}

<filespec>::=

    (NAME=逻辑文件名

    [,FILENAME=‘实际文件名和路径’]

    [,SIZE=容量]

    [,MAXSIZE={最大容量|UNLIMITED}]

    [,FILEGROWTH=递增量])

3.备份,恢复数据库原理语句:

RESTORE  DATABASE  数据库 FROM  备份设备名

EXEC sp_attach_db ‘数据库名’,‘文件名’   [,…16]

4.创建数据库表语句:

CREATE TABLE[数据库名.拥有者]表名

            (<字段定义>)[,…n]

             <字段定义>::={字段名 数据类型}

             [[DEFAULT 常量表达式]|[IDENITY[(种子,增量)]]]

             [<字段定义>][,…n]

5.选择查询语句:

SELECT 字段列表 (指定输出字段)

  [INTO  新表]      (将检索结果存储到一张新表)

  From   数据源   (指定检索的数据来源)

  [WHERE 搜索条件](指定对记录的过滤条件   

  [GROUP BY 分组表达式](对检索到的记录分组)

  [HAVING   搜索表达式](指定对记录的过滤条件)

  [ORDER BY 排序表达式](对检索到的记录进行排序处理)

三、实验内容

1.数据库的设计

根据实际情况建立E-R数据模型,需要考虑的实体有学生、班级、课程。其中E-R简图如下:

 

其中班级实体的属性为班级名称、班长学号等;学生属性为学号、姓名等;课程属性为课程号、课程名称;学习联系的属性为学生号、课程号、成绩。其他属性自行设计。

2.数据库的建立

建立数据库及相应的数据库表。

3.数据库的使用

a.  在数据库表中插入数据

b.  设计SQL语言使其分别满足下列要求:

查找学号为20070101的学生姓名;

查找“计算机基础”课程的课程编号;

查找20070102号同学学习的课程名;

查找学习“C语言”课程的学生学号;

查找200701班班长的姓名;

查找成绩高于80分的学生学号;

查找“C语言课程”的平均成绩;

所有设计语句请在sql server中检验。

4.实验报告要求

画出你所设计的E-R数据模型,并给出你所建立的数据库表结构,写出你的数据库及数据库表的建立的语句,给出符合上述条件的select语句

E-R数据模型

椭圆: 课程名称流程图: 联系: 班级姓名

数据库表的结构:

  班级

学生

课程

学习联系

语句:

create database st

on primary

(name='st',

filename='c:\sql\st.mdf',

size=3mb,maxsize=10mb,filegrowth=10mb)

go

log on

(name='st',

filename='c:\sql\st.ldf',

size=3mb,maxsize=10mb,filegrowth=10mb)

go

use student

create table 班级 (

班级名称 nchar(10) primary key,

班长学号 nchar(10) not null)

go

create table 学生 (

学号 nchar(10) primary key,

姓名 nchar(10) not null)

go

create table 课程 (

课程号 nchar(10) primary key,

课程名称 nchar(10) not null)

go

create table 学习联系(

学号 nchar(10) primary key,

课程号 nchar(10) not null,

成绩  int null)

go

Select语句:

(1)select 姓名 from 学生

where  学号 =20070101

(2)select 课程号 from 课程

where 课程名称='计算机基础'

(3)select 课程名称 from 课程,学习联系

where 学习联系.学号='20070102' and  学习联系.课程号 = 课程.课程号

(4)select 学号 from  学习联系 ,课程

where 课程.课程名称='C语言' and 课程.课程号=学习联系.课程号

(5)select 姓名 from 班级,学生

where 班级名称=200701 and 学号=班长学号

(6)select 学号 from  学习联系

where 成绩>80

(7)select avg(成绩) as '平均成绩' from 课程,学习联系

where 课程名称='C语言' and 课程.课程号=学习联系.课程号

相关推荐