数据库报告.docx

上传人:b****5 文档编号:5598289 上传时间:2022-12-28 格式:DOCX 页数:23 大小:309.27KB
下载 相关 举报
数据库报告.docx_第1页
第1页 / 共23页
数据库报告.docx_第2页
第2页 / 共23页
数据库报告.docx_第3页
第3页 / 共23页
数据库报告.docx_第4页
第4页 / 共23页
数据库报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数据库报告.docx

《数据库报告.docx》由会员分享,可在线阅读,更多相关《数据库报告.docx(23页珍藏版)》请在冰豆网上搜索。

数据库报告.docx

数据库报告

 

实验报告

(2012/2013学年第一学期)

课程名称

数据库原理

实验名称

1、数据库表的建立与管理

2、查询技术的应用

3、数据库的表中数据的操作

4、视图练习

实验时间

12月5、11月28、11月21

指导单位

指导教师

 

学生姓名

班级学号

学院(系)

理学院

专业

数据库原理第一次实验

一、实验内容:

数据库表的建立与管理

二、实验目的:

学习数据库及表的建立、删除、更新等操作。

注:

本次实验题目,除了特殊要求,以T-SQL为主,并将所有语句标注好题号,留存在查询界面上,方便检查。

三、实验题目:

1、创建一名为‘test’的数据库;

2.在“test”数据库中新建一张部门表“部门”,输入列:

name(CHAR,10位),ID(CHAR,7位),manager(CHAR,10位)各列均不能为空值。

3、在“test”数据库中新建一张员工表,命名为“员工”。

在表中输入以下各列:

name(CHAR,10位),persONID(CHAR,7位),Sex(CHAR,7位),birthday(datetime),deptID(CHAR,7位),各列均不能为空值。

4、修改表的操作练习:

1)将‘部门’表中的列ID设为主键;

2)将‘员工’表中persONID设为主键,并将deptID设置为外键,关联到‘部门’表上的‘ID’列;

3)在‘部门’表中,添加列quantity(CHAR,5);

4)删除‘员工’表中的列‘sex’;

5)修改‘员工’表中列name为(varCHAR,8)

 

5、1)在数据库test中新建表scores,输入以下列:

ID(CHAR,8位)主键,

C语言numeric(3,1),IT英语numeric(3,1),数据库numeric(3,1),

软件基础numeric(3,1),平均成绩。

四门学科都不能为空,并且平均成绩为四门学科的平均分;

2)为表scores中的四项成绩添加default约束:

使其默认值为0;

3)为表scores中的四项成绩添加check约束:

是每项成绩在0到100之间。

6、删除department表,并删除数据库test。

4、实验过程

(1)、

CREATEDATABASEtest

USEtest

(2)、

CREATETABLEdepartment

(IDCHAR(7)NOTNULL,

nameCHAR(10)NOTNULL,

managerCHAR(10)NOTNULL)

(3)、CREATETABLEworker

(persONIDCHAR(7)NOTNULL,

nameCHAR(10)NOTNULL,

sexCHAR(7)NOTNULL,

birthdaydatetimeNOTNULL,

deptIDCHAR(7)NOTNULL)

(4)、ALTERTABLEdepartmentADDPRIMARYKEY(ID)

ALTERTABLEworkerADDPRIMARYKEY(persONID)

ALTERTABLEworkerADDconstraint外键约束FOREIGNKEY(deptID)REFERENCESdepartment(ID)

ALTERTABLEdepartmentADDquantityCHAR(5)

ALTERTABLEworkerDROPCOLUMNsex

ALTERTABLEworkerALTERCOLUMNnamevarCHAR(8)

(5)、CREATETABLEscores

(IDCHAR(8)PRIMARYKEYNOTNULL,

C语言numeric(3,1)NOTNULL,

IT英语numeric(3,1)NOTNULL,

数据库numeric(3,1)NOTNULL,

软件基础numeric(3,1)NOTNULL,

平均成绩AS(C语言+IT英语+数据库+软件基础)/4)

ALTERTABLEscoresADDCONSTRAINTC语言_defaultDEFAULT'0'FORC语言

ALTERTABLEscoresADDCONSTRAINTIT英语_defaultDEFAULT'0'FORIT英语

ALTERTABLEscoresADDCONSTRAINT数据库_defaultDEFAULT'0'FOR数据库

ALTERTABLEscoresADDCONSTRAINT软件基础_defaultDEFAULT'0'FOR软件基础

ALTERTABLEscoresADDCONSTRAINTC语言CHECK(C语言BETWEEN0AND100)

ALTERTABLEscoresADDCONSTRAINTIT英语CHECK(IT英语BETWEEN0AND100)

ALTERTABLEscoresADDCONSTRAINT数据库CHECK(数据库BETWEEN0AND100)

ALTERTABLEscoresADDCONSTRAINT软件基础CHECK(软件基础BETWEEN0AND100)

(6)、DROPtabledepartmentcasecadeconstraint外键约束;

USEMASTER;

DROPDATABASEtest;

5、

由以下可见,数据库test及表已建立完成

六心得体会

删除department表的过程未能实现,命令不能删除外键,和伙伴讨论没有结果,不过打开建立的表就可以右键轻松删除了,其他的比较顺利。

数据库原理第二次实验

一、实验内容:

查询技术的应用

二、实验目的:

1、掌握SELECT语句的基本语法

2、掌握连接查询的表示

3、掌握数据汇总的方法

4、掌握SELECT语句的GROUPBY子句的作用和使用方法

5、掌握SELECT语句的ORDERBY子句的作用和使用方法

三、实验内容

1、创建员工管理数据库(compy)及相应的四张表:

Employees:

员工信息表

Departments:

部门信息表

Salary:

员工薪水信息表

PurchASe:

员工购物信息表

各表中属性的定义可根据表中的记录加以设定,均以编号为主键,例如可定义Departments表结构如下:

列名

数据类型

长度

是否允许空值

说明

部门编号

char

3

部门编号主键

部门名称

char

20

部门名称

备注

text

16

备注

向表中填入数据

A、向Departments表中加入表2所示的记录

编号

部门名称

备注

1

财务部

NULL

2

人力资源部

NULL

3

生产部

NULL

4

采购部

NULL

5

销售部

NULL

B、向Employees表中加入表1所示的记录

编号

姓名

地址

邮编

电话

部门号

出生日期

性别

000001

张晓强

上海

230027

3333556

2

1956-1-1

1

010008

柳树

合肥

230027

3131359

1

1966-1-1

1

002001

许静

北京

230026

3132359

1

1972-1-1

1

020018

李可

武汉

230026

3693564

1

1950-1-1

0

102201

张三丰

西安

123456

3635346

5

1962-1-1

0

102208

白眉

南京

123456

3458965

5

1955-1-1

1

108991

胡适

昆明

123456

4568921

3

1969-1-1

1

111006

成吉思汗

海口

123456

3458145

5

1964-1-1

1

210678

萧然

成都

123456

3454565

3

1967-1-1

1

C、向Salary表中加入表3所示的记录

编号

收入

支出

000001

2100

123

010008

1582

88

002001

2569

185

020018

1987

79

102201

2066

108

102208

2980

210

108991

3259

281

111006

2860

198

210678

2347

180

D、向Purchase表中加入表4所示的记录

员工编号

商品

购买数量

000001

01

3

000001

03

1

002001

01

5

020018

03

6

108991

11

1

000001

11

3

020018

01

5

201678

02

1

020018

11

2

2、简单查询

(1)查询1956,1962,1964年出生的员工记录;

(2)查询性别为1的员工记录;

(3)查询名字中包含‘白’字的所有雇员信息;

(4)查询不姓‘李’或者‘胡’,并且名字为三个字的雇员的记录(注:

“姓名”列的数据类型必须定义为varCHAR,想想为什么?

)。

3、连接查询的使用

(1)查询每个雇员的情况以及其薪水情况

(2)查询收入高于编号为102201的员工收入的职工信息

4.数据汇总

(1)求财务部员工的平均净收入

(2)求财务部雇员的总人数

5.GROUPBY,ORDERBY子句的使用

(1)求各部门的雇员数

(2)将各雇员的情况按薪水由低到高排列

6、(选做题)查找比所有财务部的员工的收入都高的员工的姓名;

 

4、实验过程

Sql语言如下:

1、CREATEDATABASEcompy

usecompy

CREATETABLEDepartments(

部门编号CHAR(10)PRIMARYKEYNOTNULL,

部门名称CHAR(20)NOTNULL,

备注text

);

CREATETABLEEmployees(

编号CHAR(10)PRIMARYKEYNOTNULL,

姓名VARCHAR(20)NOTNULL,

地址CHAR(30)NOTNULL,

邮编CHAR(10)NOTNULL,

电话CHAR(11)NOTNULL,

部门号CHAR(3)NOTNULL,

出生日期DATENOTNULL,

性别CHAR

(2)NOTNULL);

CREATETABLESalary(

编号CHAR(10)PRIMARYKEYNOTNULL,

收入INTdefault0,

支出INTdefault0,

);

CREATETABLEPurchase(

员工编号CHAR(10)NOTNULL,

商品CHAR(3)NOTNULL,

PRIMARYKEY(员工编号,商品)

);

INSERTINTODepartmentsVALUES('1','财务部',NULL);

INSERTINTODepartmentsVALUES('2','人力资源部',NULL);

INSERTINTODepartmentsVALUES('3','生产部',NULL);

INSERTINTODepartmentsVALUES('4','采购部',NULL);

INSERTINTODepartmentsVALUES('5','销售部',NULL);

INSERTINTOEmployeesVALUES('000001','张晓强','上海','230027','3333556','2','1956-1-1','1')

INSERTINTOEmployeesVALUES('010008','柳树','合肥','230027','3131359','1','1966-1-1','1')

INSERTINTOEmployeesVALUES('002001','许静','北京','230026','3132359','1','1972-1-1','1')

INSERTINTOEmployeesVALUES('020018','李可','武汉','230026','3693564','1','1950-1-1','0')

INSERTINTOEmployeesVALUES('102201','张三丰','西安','123456','3635364','5','1962-1-1','0')

INSERTINTOEmployeesVALUES('102208','白眉','南京','123456','3458965','5','1955-1-1','1')

INSERTINTOEmployeesVALUES('108991','胡适','昆明','123456','4568921','3','1969-1-1','1')

INSERTINTOEmployeesVALUES('111006','成吉思汗','海口','123456','3458145','5','1964-1-1','1')

INSERTINTOEmployeesVALUES('210678','萧然','成都','123456','3454565','3','1967-1-1','1');

INSERTINTOSalaryVALUES('000001','2100','123')

INSERTINTOSalaryVALUES('010008','1582','88')

INSERTINTOSalaryVALUES('002001','2569','185')

INSERTINTOSalaryVALUES('020018','1987','79')

INSERTINTOSalaryVALUES('102201','2066','108')

INSERTINTOSalaryVALUES('102208','2980','210')

INSERTINTOSalaryVALUES('108991','3259','281')

INSERTINTOSalaryVALUES('111006','2860','198')

INSERTINTOSalaryVALUES('210678','2347','180');

INSERTINTOPurchaseVALUES('000001','01','3');

INSERTINTOPurchaseVALUES('000001','03','1');

INSERTINTOPurchaseVALUES('002001','01','5');

INSERTINTOPurchaseVALUES('020018','03','6');

INSERTINTOPurchaseVALUES('108991','11','1');

INSERTINTOPurchaseVALUES('000001','11','3');

INSERTINTOPurchaseVALUES('020018','01','5');

INSERTINTOPurchaseVALUES('201678','02','1');

INSERTINTOPurchaseVALUES('020018','11','2');

2、简单查询

SELECT*FROMPurchase

SELECT*

FROMEmployees

WHERE出生日期LIKE'%1956%'or出生日期LIKE'%1962%'or出生日期LIKE'%1964%';

SELECT*FROMEmployeesWHERE性别='1';

SELECT*FROMEmployeesWHERE姓名LIKE'%白%';

SELECT*

FROMEmployees

WHERE姓名notLIKE'李%'

AND姓名notLIKE'胡%'

ANDlen(姓名)=3;

3、连接查询的使用

SELECTEmployees.*,Salary.收入

FROMEmployeesinnerjoinSalaryonEmployees.编号=Salary.编号;

SELECTEmployees.*,Salary.收入

FROMEmployeesinnerjoinSalaryonEmployees.编号=Salary.编号

WHERE收入>(SELECT收入FROMSalaryWHERE编号='102201');

4.数据汇总

SELECTAVG(b.收入-b.支出)AS财务部员工的平均净收入

FROMEmployeesASaINNERJOINSalaryASbONa.编号=b.编号

WHERE部门号='1';

SELECTCOUNT(部门号)AS财务部门总人数

FROMEmployees

WHERE部门号='1';

5.GROUPBY,ORDERBY子句的使用

SELECTCOUNT(a.部门号)AS部门人数,b.部门名称

FROMEmployeesASaJOINDepartmentsASbONa.部门号=b.部门编号

groupby(部门名称);

SELECTa.*,b.收入

FROMEmployeesASaINNERJOINSalaryASbONa.编号=b.编号

orderby收入;

5、运行结果及选做题

(1)查询1956,1962,1964年出生的员工记录;

(2)查询性别为1的员工记录;

(3)查询名字中包含‘白’字的所有雇员信息;

(4)查询不姓‘李’或者‘胡’,并且名字为三个字的雇员的记录

(1)查询每个雇员的情况以及其薪水情况

(2)查询收入高于编号为102201的员工收入的职工信息

(1)求财务部员工的平均净收入

(2)求财务部雇员的总人数

(1)求各部门的雇员数

(2)将各雇员的情况按薪水由低到高排列

(选做题)查找比所有财务部的员工的收入都高的员工的姓名;

SELECT姓名

FROMEmployees

WHERE编号IN

(SELECT编号

FROMSalary

WHERE收入>All(SELECT收入FROMSalary

WHERE编号IN(SELECT编号FROMEmployeesWHERE部门号='1')))

运行结果:

数据库原理第三次实验

一、实验内容:

数据库的表中数据的操作。

二、实验目的:

1、学习SQL语句进行表中的数据的插入、更新和删除;

2、学会含有子查询语句的数据更新操作;

2、理解表中列的属性对表中数据的影响。

三、实验准备

试用上次实验创建的员工管理数据库(compy)及相应的四张表(具体见实验2):

Employees:

员工信息表

Departments:

部门信息表

Salary:

员工薪水信息表

PurchASe:

员工购物信息表

四、实验题目:

1、向Employees表中加入一列:

年龄,其值为“当前时间”与“出生日期”差值(提示:

年龄的计算可以使用getdate及year两个日期函数,具体使用参考联机丛书TransactSQL参考)。

2、数据更新:

1)将编号为102201的雇员地址改为“苏州”;

2)将编号为102208的雇员收入降低10%;

3)更改salary表,如果收入和支出的差值小于2000,则将收入提高1000;

3、使用SELECT…INTO进行多行插入:

将每个部门的编号,名称,雇员数,插入到新表DepartmentStatic中。

4、含子查询的数据更新

(1)将地址为合肥的雇员收入增加5%

(2)将收入小于平均收入的雇员的收入增加500元

(3)将财务部的雇员收入减少100

5、删除

删除DepartmentStatic中所有数据

6、(选做)

(1)将总收入大于6000的部门中的雇员收入减少5%

(2)删除收入大于平均收入的雇员的信息,包括Employees,Salary中相关的数据

5、实验过程

1、UPDATEEmployeesSET地址='苏州'WHERE编号='102201'

SELECT*FROMEmployees

2、UPDATESalarySET收入=收入*0.9WHERE编号='102208'

UPDATESalarySET收入=收入+1000

  WHEREabs(收入-支出)<2000

3、SELECT*FROMSalary

SELECT部门编号,部门名称,备注

INtoDepartmentStatic

FROMDepartments

SELECT*FROMDepartmentStatic

4、UPDATESalarySET收入=收入*1.05

WHERE编号IN(SELECT编号FROMEmployeesWHERE地址='合肥');

UPDATESalarySET收入=收入+500

WHERE收入<(SELECTAVG(收入)FROMSalary);

UPDATESalarySET收入=收入-100

WHERE编号IN(SELECT编号

FROMEmployees,Departments

WHEREEmployees.部门号=Departments.部门编号andDepartments.部门名称='财务部')

5、TRUNCATETABLEDepartmentStatic/*删除*/

SELECT*FROMDepartmentStatic

六运行结果及选做题

1、向Employees表中加入一列:

年龄

 

2、数据更新

3、使用SELECT…INTO进行多行插入:

5、删除

选做6、

(1)将总收入大于6000的部门中的雇员收入减少5%

(2)删除收入大于平均收入的雇员的信息,包括Employees,Salary中相关的数据

程序

(1)

UPDATESalarySET收入=收入*0.95

WHERE编号I

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1