2012级计算机专业 集美大学计算机工程学院 20012~2013学年第一学期
《数据库原理》实验报告
题目:实验二:建立数据库及表 姓名:陈为宋 一、 实验使用环境:
WindowXP SP2、SQL Server 2000、QDesigner 二、 实验内容与完成情况: 1) 实验内容
1. 在查询分析器中使用create database语句创建一个数据库。名字SalesDatabase,数据文件名为SalesDatabase_Data.Mdf ,存储在C:\\下,初始大小为4MB,最大为10MB,文件增量以1MB增长,事务文件为 SalesDatabase_Log.Ldf,存储在C:\\下,初始大小为2MB,最大为5MB,文件增量以1MB增长。
create database SalesDatabase on primary (
name='SalesDatabase_data',
filename ='E:\\SalesDatabase_Data.Mdf', size=4MB , maxsize=10MB, filegrowth=1MB )
log on (
name='SalesDatabase_log',
filename='E:\\SalesDatabase_log.Ldf', size=2MB,
maxsize=20MB, filegrowth=1MB
//返利网哪个好www.jimeigw.com )
2. 使用查询分析器将SalesDatabase数据库中的数据文件SalesDatabase_Data由原来的4MB扩
学号:2010810029 日期:2012-11-24 成 绩 充为8MB,事务日志文件SalesDatabase_Log由原来的2MB扩充为4MB
use SalesDatabase
alter database SalesDatabase modify file (
name=SalesDatabase_data, size=8MB )
alter database SalesDatabase modify file (
name=SalesDatabase_log,
size=8MB--修改的大小不能小于等于当前的大小 )
1
2012级计算机专业 集美大学计算机工程学院 20012~2013学年第一学期
3. 将数据库SalesDatabase中的数据文件SalesDatabase_Data的大小由原来的8MB压缩为4MB.
DBCC SHRINKFILE(SalesDatabase_data, 4)
4. 创建一个uname用户自定义数据类型,其基于的系统数据类型是变长为
8的字符,不允许
为空。
EXEC sp_addtype city,'varchar(8)','not null'
5. 使用查询分析器在SalesDatabase数据库中创建数据表Employees、Purchase、Sell。数
据表Employees、Purchase、Sell的数据结构分别如实验手册第9页的表2-1、2-2、2-3所示。
create table Employees (
编号char(4) not null,
姓名nvarchar(10) not null, 性别bit not null, 部门nvarchar(16), 电话varchar(20), 地址nvarchar(50) )
create table Purchase (
商品编号char(10) primary key, 商品名称varchar(20) not null, 生产厂商varchar(30) not null, 进货价 money not null, 零售价 money not null, 数量 int not null,
进货时间 Datetime default getdate(), //返利网怎么用www.jimeigw.com 进货员工编号char(4),
--foreign key (进货员工编号) references Employees(编号) --不是本表中色时候两个字段都要加括号 )
create table Sell (
销售编号int not null,
商品编号 char(10) not null, 数量 int not null,
售出时间 DateTime not null, 售货时间 Char(4) not null )
insert into Employees values('1001','赵燕飞' ,0,'采购部','01032198454','北京市南京东')
insert into Employees values('1002','刘德发' ,1,'采购部','01032298726','北京市建国路号')
2
2012级计算机专业 集美大学计算机工程学院 20012~2013学年第一学期
insert into Employees values('1003','李建国' ,1,'采购部','01032147588','北京市民主路')
insert into Employees values('1101','李圆圆' ,0,'财务部','01032358697','北京市仁爱路')
insert into Employees values('1103','万兴国' ,1,'财务部','01032658325','北京市南大街号')
insert into Employees values('1201','孟全' ,1,'库存部','01058546230','北京市南大街号')
insert into Employees values('1202','黎美丽' ,0,'库存部','01058964357','北京市教育路')
insert into Employees values('1301','冯晓丹' ,0,'销售部','01036571568','北京市育才路')
insert into Employees values('1302','王峰' ,1,'销售部','0771-3836386','北京市沿江路') insert into Employees values('1303','陈吉轩' ,1,'销售部','01032987','北京市德外大街') --insert into Employees values(NULL,NULL ,NULL,NULL,NULL,NULL)
insert into Purchase values ('AH000001','摄像机','佳能公司',3200.000,3800.0000,230,'2012-6-7 0:00:00','1002')
insert into Purchase values ('AH00002 ','数码相机','佳能公司',2300.000,2800.0000,60,'2012/3/5 0:00:00','1003')
insert into Purchase values ('AH00003','MP3播放器','三星公司',456.0000,510.0000,30,'2011/11/18 0:00:00','1002')
insert into Purchase values ('AH00004','移动硬盘','DELL公司',600.0000,650.0000,80,'2012/6/8 0:00:00','1003')
insert into Purchase values ('JB00001 ','打印机 ','惠普公司',4320.0000,4750.0000,80,'2012/11/20 19:01:33','1001') insert into Purchase values ('JB00002','扫描仪','惠普公司',2100.0000,2800.0000,100,'2012/11/20 19:02:14','1001') insert into Purchase values ('JP00001','笔记本电脑','DELL公司',7890.0000,8790.0000,50,'2012/11/20 19:02:59','1001') insert into Purchase values ('JP00002 ','台式电脑','联想公司',4520.0000,5410.0000,80,'2012/2/9 0:00:00','1003')
insert into Purchase values ('JY00001 ','CRT显示器','TCL公司',3500.0000,3800.0000,120,'2012/11/20 19:05:17','1001')
insert into Purchase values ('JY00002 ','液晶显示器','dell公司',2500.0000,2617.2500,200,'2012/6/18 0:00:00','1002')
-------------------------------------------------------------------------------------------------------------------
insert into Sell values(101,'jy000001',50,'2012-2-3 0:00:00','1301') insert into Sell values(102,'jy000001',20,'2012-2-5 0:00:00','1302') insert into Sell values(103,'jy000002',40,'2011-12-28 0:00:00','1301') insert into Sell values(104,'jp000002',160,'2012-2-12 0:00:00','1303') insert into Sell values(105,'AH000001',50,'2012-6-12 0:00:00','1301') insert into Sell values(106,'AH000002',60,'2012-3-8 0:00:00','1303') insert into Sell values(107,'JB000001',20,'2012-5-7 0:00:00','1302') insert into Sell values(108,'JB000002',15,'2012-3-8 0:00:00','1301')
7. 使用查询分析器在SalesDatabase数据库中为Employees数据表创建名为
ix_EmployeesNo的primary key约束,以保证不会出现编号相同的员工。
3
2012级计算机专业 集美大学计算机工程学院 20012~2013学年第一学期
alter table Employees add
constraint IX_EmployeesNo primary key clustered(编号)
8.分别使用企业管理器、查询分析器在SalesDatabase数据库中为Purchase数据表创建名为fk_Purchase_Employees的foreign key约束,改约束限制“进货员工编号”列的数据只能是Employees数据表“编号”列中存在的数据。
alter table Purchase add constraint FK_Purchase_Employees foreign key (进货员工编号)references Employees(编号)//最好的返利网www.jimeigw.com
9. 分别使用企业管理器、查询分析器在SalesDatabase数据库中删除题8建立的名为fk_Purchase_Employees的foreign key约束。
alter table Purchase drop constraint FK_Purchase_Employees
10.分别使用企业管理器、查询分析器在SalesDatabase数据库中为Employees数据表建立的名为IX_EmployeesTeNo的unique约束。 查询分析器:
alter table Employees add
unique(电话)
11. 分别使用企业管理器、查询分析器在SalesDatabase数据库中为Employees数据表建立的名为CK_EmployeesNo的check约束,该约束限制“编号”列只允许4位数字。
alter table Employees add constraint CK_EmployeesNo check(编号like '[0-9][0-9][0-9][0-9]')
12.分别使用企业管理器、查询分析器在SalesDatabase数据库中为Purchase数据表建立的名为
DF_Purchase Date的defult约束,该约束使“进货时间”列的默认值为当前的日 ALTER TABLE Purchase
ALTER COLUMN 进货时间SET DEFAULT getdate()
13.分别使用企业管理器、查询分析器在SalesDatabase数据库中为Employees数据表增加一列,列名为:邮箱,数据类型:VarChar(20),并将该列设置为唯一约束。
alter table Empolyees add( 邮箱varchar(20) )
--ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL ALTER TABLE Employees ADD 邮箱NVARCHAR (20 )
14.使用insert into语句向数据表Employees插入一条记录:编号=1017,姓名=李红,性别=男。 insert into Employees values('1017','李红' ,1,null,null,null,null)
15. 使用select into 语句生成一张新的数据表,名为Employees2,数据来自于Employees数据表中的
所有男职工信息。
select * into Employees2 from Employees where 性别=1
4
2012级计算机专业 集美大学计算机工程学院 20012~2013学年第一学期
16.使用update语句将数据表 Employees中编号为“1302”记录的电话更改为:0771-3836386 update Employees
set 电话='0771-3836386' where 编号='1302'
17. 使用update语句将数据表Purchase中的刘德发2012.6.18进货的商品零售价调整为9.5折 update Purchase
set 零售价=0.95*零售价 where 进货员工编号= (
select 编号
from Employees where 姓名='刘德发' )
18. 首先备份Purchase表为Purchase1,使用delete语句删除数据表Purchase1中李建国2012.3.5以前的进货记录
select * into Purchase1 from Purchase DELETE FROM Purchase1 WHERE 进货员工编号= (
select 编号
from Employees where 姓名='李建国' )
and 进货时间<'2012-3-5'
三、 出现的的问题和解决方案(列出遇到的问题和解决办法,列出没有解决的问题)
四、 1. 在插入记录时,如果数据类型是bit或者money的话是不用添加’’,如果是datetime类型的
话要添加‘‘。
五、 2. 文件的扩充和压缩是两种不同的操作。扩充的话比较简单,只要重新定义就可,而压缩需要用
到DBCC SHRINKFILE (N'SalesDatabase_Data' ,4)语句。
六、
3. 在创建用户自定义数据类型时用到的语句:EXEC sp_addtype city,'varchar(8)','not null'时,要注意not null要加’’.
5

