SQLSERVER数据库实验报告详细.docx
《SQLSERVER数据库实验报告详细.docx》由会员分享,可在线阅读,更多相关《SQLSERVER数据库实验报告详细.docx(16页珍藏版)》请在冰豆网上搜索。
SQLSERVER数据库实验报告详细
数据库原理及应用实验报告
学号:
姓名:
实验1
一、实验目的:
熟悉SQLServer使用界面,掌握使用SSMS和SQL语句创建并设置数据库。
二、实验原理:
1.使用SSMS创建数据库
2.创建数据库语句:
CREATEDATABASE数据库名
[ON[PRIMARY]//指定一个文件为主要文件
[<文件格式>[,…n]]
[,<文件组格式>[,…n]]]
[LOGON{<文件格式>[,…n]}]
<文件格式>:
:
=
([NAME=逻辑文件名,]
FILENAME=‘操作系统下的文件名和路径’
[,SIZE=文件初始容量]
[,MAXSIZE={文件最大容量|UNLIMITED}]
[,FILEGROWTH=递增值])[,…n]
<文件组格式>:
:
=FILEGROUP文件组名<文件格式>[,…n]
3.修改数据库语句:
ALTERDATABASE数据库名
{ADDFILE<文件格式>[,…n][TOFILEGROUP文件组名]
|ADDLOGFILE<文件格式>[,…n]
|REMOVEFILE逻辑文件名
|ADDFILEGROUP文件组名
|REMOVEFILEGROUP文件组名
|MODIFYFILE<文件格式>
|MODIFYFILEGROUP文件组名文件组属性}
:
:
=
(NAME=逻辑文件名
[,FILENAME=‘实际文件名和路径’]
[,SIZE=容量]
[,MAXSIZE={最大容量|UNLIMITED}]
[,FILEGROWTH=递增量])
三、实验内容:
1.使用SQL语句完成下题
(1)使用CREATEDATABASE语句创建一个名为“st”数据库,要求①主要数据文件:
逻辑文件名为“stdata1”,实际文件名为“stdata1.mdf”②事务日志文件:
逻辑文件名为“stlog1”,实际文件名为“stlog1.ldf”③初始容量均为3MB,最大容量均为10MB,递增量均为1MB。
(2)使用CREATEDATABASE语句创建一个名为“student”数据库,要求①主要数据文件:
逻辑文件名为“studentdata1”,实际文件名为“studentdata1.mdf”②非主要数据文件:
逻辑文件名为“studentdata2”,实际文件名为“studentdata2.ndf”③事务日志文件:
逻辑文件名为“studentlog1”,实际文件名为“studentlog1.ldf”④初始容量均为3MB,最大容量均为10MB,递增量均为1MB。
(3)使用ALTERDATABASE语句在“st”数据库中添加一个数据文件和一个事务日志文件,其逻辑文件名分别为“studentdata3”和“studentlog2”,其实际文件名分别为“studentdata3.ndf”和“studentlog2.ldf”,初始容量均为1MB,最大容量均为10MB,递增量均为1MB;然后将数据文件studentdata3的初始容量增加到5MB,上限增加到20MB。
解:
(1)createdatabasestonprimary
(name=stdata1,
filename='d:
\xs\stdata1.mdf',
size=3mb,maxsize=10mb,filegrowth=1mb)
logon
(name='stlog1',
filename='d:
\xs\stlog1.ldf',
size=1mb,maxsize=10mb,filegrowth=1mb)
go
(2)createdatabasestudentonprimary
(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)
logon
(name='studentlog1',
filename='d:
\xs\studentlog1.ldf',
size=1mb,maxsize=10mb,filegrowth=1mb)
go
(3)alterdatabasest
addfile
(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)
alterdatabasest
modifyfile
(name=studentdata3,
size=5mb,maxsize=20mb)
实验2
一、实验目的:
掌握使用SSMS和SQL语句创建并管理数据库表.
二、实验原理:
1.在SSMS上创建数据库表
2.创建数据库表语句:
CREATETABLE[数据库名.拥有者]表名
(<字段定义>)[,…n]
<字段定义>:
:
={字段名数据类型}
[[DEFAULT常量表达式]|[IDENITY[(种子,增量)]]]
[<字段定义>][,…n]
3.创建约束
[CONSTRAINT约束名]NULL|NOTNULL
[CONSTRAINT约束名]PRIMARYEY[CLUSTERED|NONCLUSTERED]
[(字段名[,…16])]]
[CONSTRAINT约束名]DEFAULT默认值[FOR字段名]
[CONSTRAINT约束名]UNIQUE[CLUSTERED|NONCLUSTERED][(字段名[,…16])]]
[CONSTRAINT约束名]FOREIGNKEY[(字段名[,…16])]REFERENTCES引用表名(引用字段名[,…16])
[CONSTRAINT约束名]CHECK(条件表达式)
4.修改数据库表
ALTERTABLE
ALTERCOLUMN字段名新数据类型[(精度[,小数位数])][NULL|NOTNULL]
ALTERTABLE表名
ADD{字段定义|字段名AS计算机字段表达式}[,…n]
ALTERTABLE表名
DROPCOLUMN字段名[,…n]
ALTERTABLE表名
ADDCONSTRAINT约束定义[,…n]
ALTERTABLE表名
DROPCONSTRAINT约束名[,…n]
三、实验内容
1.使用SQL语句完成下题:
(1)使用CREATETABLE语句创建一个学生表,其中包含以下字段:
学号(int,自动编号,种子为******,增量为1,定义为主键);姓名(varchar(8),notnull);专业(varchar(20),null,)。
(2)使用CREATETABLE语句创建一个成绩表其中包含以下字段:
学号(int,notnull);课程号(int,notnull);成绩(real,null,)。
(3)使用altertable语句新增学生表和成绩表之间的外键联系,并新增对成绩的检查性约束。
解:
(1)createtable学生表
(学号intidentity(200001,1)primarykey,
姓名varchar(8)notnull,
专业varchar(20)null)
(2)createtable成绩表
(学号intnotnull,
课程号intnotnull,
成绩realnull)
(3)altertable成绩表
add
constraintgjmgforeignkey(学号)references学生表(学号),
constraintfhjgcheck(成绩>=0and成绩<=100)
实验3
一、实验目的:
熟练掌握SELECT语句对数据库表的各项操作.
二、实验原理:
1.选择查询语句:
SELECT字段列表(指定输出字段)
[INTO新表](将检索结果存储到一张新表)
From数据源(指定检索的数据来源)
[WHERE搜索条件](指定对记录的过滤条件
[GROUPBY分组表达式](对检索到的记录分组)
[HAVING搜索表达式](指定对记录的过滤条件)
[ORDERBY排序表达式](对检索到的记录进行排序处理)
三、实验内容:
1.完成课后题3、5
7.3
(1)SELECT业务员姓名,年龄from业务员
where年龄=
(selectmax(年龄)from业务员)
(2)select业务员姓名,月薪from业务员
orderby月薪desc
(3)select*from业务员
where月薪between1000and2000
(4)select客户编号,count(订单号)as订单数,sum(金额)as总金额from订单
groupby客户编号
(5)select业务员姓名,count(订单号)as订单数from业务员fullouterjoin订单
on业务员.业务员编号=订单.业务员编号
groupby业务员姓名
havingcount(订单号)>=2
orderby订单数
(6)update业务员
set月薪=1.1*月薪
(7)select业务员姓名,年龄from业务员
where月薪>all(selectavg(月薪)from业务员)
(8)update业务员
set月薪=1.05*月薪
where业务员编号in
(select业务员编号from订单
groupby业务员编号havingsum(金额)>20000)
(9)select业务员姓名,订单号,z.客户编号,金额from业务员x,订单y,客户z
wherex.业务员编号=y.业务员编号andy.客户编号=z.客户编号and金额>=2000
7.5
(1)SELECTENO,ENAMEFROMEMP
WHEREENOIN(SELECTENOFROMWORKSWHERECNO='C4'ORCNO='C8'
GROUPBYENO
HAVINGCOUNT(CNO)>1)
(2)SELECTENO,ENAMEFROMEMP
WHEREECITYIN(SELECTCITYFROMCOMPWHERECNOIN(SELECTCNOFROMWORKS))
(3)SELECTENO,COUNT(CNO)AS