数据库实验报告全
- 格式:pdf
- 大小:427.99 KB
- 文档页数:12
数据库实验报告全
实验⼀
实验⽬的1.熟悉SQL Server Management Studio(SSMS)的⼯作环境
2.掌握使⽤和命令建⽴数据库的⽅法
3.熟练掌握使⽤SSMS和T-SQL语句创建、修改和删除表。
4.熟练掌握使⽤SSMS和T-SQL语句插⼊、修改和删除表数据。
实验内容1.采⽤SQL Server Management Studio 、T-SQL语句两种⽅式创建产品销售数据库,
要求:1)使⽤SSMS创建数据库CPXS_bak,数据⽂件初始⼤⼩为5MB,最⼤⼤⼩
50MB,按5MB增长;⽇志⽂件初始为2MB,最⼤可增长到10MB,按2MB
增长;其余参数取默认值。2)⽤T-SQL语句创建数据库CPXS,数据⽂件的增长⽅式改为增长⽅式按10%
⽐例增长,其余与CPXS_bak。3)⽤T-SQL语句删除数据库CPXS_bak。
2.CPXS数据库包含如下三个表:
1)产品(产品编号,产品名称,价格,库存量)
2)客户(客户编号,客户名称,地区,负责⼈,电话)
3)销售(产品编号,客户编号,销售⽇期,数量,销售额)
三个表结构如资料中图3.1~图3.3所⽰,请写出创建以上三个表的T-SQL语句并在查询分析器中运⾏。3.在SSMS中输⼊如资料中图3.4~图3.6的商品表、客户表和销售表的样本数据。
6.将CP表中每种商品的价格打8折。
7.将CP表中价格打9折后⼩于1500的商品删除。
⼆.实验步骤与结果
(说明:要写出相关步骤和SQL语句,实验结果可以是运⾏画⾯的抓屏,抓屏图⽚要尽可能
的⼩。)1.1)使⽤SSMS创建数据库CPXS_bak效果图为
2)⽤T-SQL语句创建数据库CPXS:
CREATE DATABASE CPXS
ON PRIMARY(NAME='CPXS_DATA',
FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\CPXS_DATA.MDF', SIZE=5MB,
MAXSIZE=50MB,
FILEGROWTH=10%)
LOG ON
(NAME='CPXS_LOG',
FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\CPXS_LOG.LDF', SIZE=2MB,
MAXSIZE=10MB,FILEGROWTH=2MB)
3) DROP DATABASE CPXS_bak
刷新数据库会看到CPXS_bak不存在2.1) USE CPXS
GO
CREATE TABLE产品
(产品编号char(6)PRIMARY KEY,
产品名称char(30)NOT NULL,
价格float(8),库存量int,)2) USE CPXS
GO
CREATE TABLE客户
(客户编号char(6)PRIMARY KEY,
客户名称char(30)NOT NULL,
地区char(10),负责⼈char(8),
电话char(12))3)USE CPXS
GO
CREATE TABLE销售
(产品编号char(6),客户编号char(6),
销售⽇期datetime,数量int NOT NULL,
销售额float(8)NOT NULL,CONSTRAINT pk_js PRIMARY KEY(产品编号,客户编号,销售⽇期))/*pk_js为约束名*/ 执⾏完上⾯的操作就能看见表已经添加进数据库中,如图所⽰:
3. 打开表:在其中添加数据:
4.1)USE CPXS
INSERT INTO产品(产品编号,产品名称,价格,库存量) VALUES('200001','柜式空调','3000','200')
2)USE CPXS
INSERT INTO产品(产品编号,产品名称,价格,库存量) VALUES('200002','微波炉','1000','100')
3)USE CPXS
INSERT INTO产品(产品编号,产品名称,价格,库存量) VALUES('200003','抽油烟机','1200','50')可以看见图中的产品表增加了如下内容:
5.USE CPXS
ALTER TABLE产品
Add产品简列varchar(50)
6. USE CPXS
UPDATE产品
set价格=价格*0.8
7. USE CPXS
DELETE产品
WHERE价格*0.9<1500
三.实验中的问题及⼼得
(说明:此处应写明此次实验遇到的问题有哪些,如何解决的,不能够空。)本次实验的问题都很简单,没有遇到什么困难,基本上书上都有例⼦,对着例⼦都能顺利完成,不过我需要做的是记者所写的sql语句还有就是要继续努⼒。
实验⼆
⼀实验⽬的1.牢记SELECT 语句的基本语法格式;
2.掌握利⽤SQL语句进⾏多表内/外连接查询和嵌套查询的⽅法;
3.掌握GROUP BY⼦句、HA VING⼦句、ORDER BY⼦句的⽤法;
4.掌握(NOT)IN、(NOT)EXISTS等谓词的⽤法;
5.掌握SUM、A VG、COUNT、MAX、MIN等集合函数的⽤法;
⼆实验内容及要求
对CPXS数据库,完成如下查询任务:
根据上述情况完成:1.查询地区在“郑州”的客户编号和客户名称,结果中各列的标题分别指定为:
CustomerID和CustomerName。2.查询价格在1000-2000之间的产品信息。
3.查询产品名称含有“变频”字样的产品情况。
4.按商品编号统计各种产品在国庆黄⾦周期间的销售单数(记录数)、总销量和销售
总额,并对统计结果按照销售总额降序排序。5.列出购买2种以上产品的客户编号。
6.(结合上题)列出购买2种以上产品的客户编号、客户名称、地区、负责⼈和电话。
7.统计每个客户在国庆黄⾦周期间的购物情况(客户编号、名称、消费总⾦额和最近
消费⽇期),即使某些客户没有消费记录,也要包括其信息。8.查询在国庆黄⾦周期间没有任何销售记录的产品编号、名称及库存量。
三实验过程及结果1.2.
3.
4.USE CPXS
SELECT a.产品编号,
count(a.销售⽇期)AS销售单数,sum(a.数量)AS总销量,sum(a.数量*b.价格)AS销售总额
FROM销售a INNER JOIN产品b
ON a.产品编号=b.产品编号
GROUP BY a.产品编号
ORDER BY销售总额desc
5.6.
http://www.doczj.com/doc/654276fbc8d376eeaeaa3178.html E CPXS
SELECTc.客户编号,客户名称,
sum(a.数量*b.价格)AS消费总额,max(a.销售⽇期)AS最近消费⽇期
FROM客户c LEFT JOIN销售a
ON c.客户编号= a.客户编号
JOIN产品b
ON a.产品编号=b.产品编号
GROUP BY客户名称,c.客户编号8.
四实验中的问题及⼼得
这次试验较上次的困难⾸先是我们上课的时候没有讲所做的内容,这就需要我们在下⾯好好地预习,时间仓促,在放假之前也做了⼀部分,其余的就放假后完成了,其中也出此不少问题⼤都是马虎的问题。
实验三
⼀实验⽬的6.熟练掌握变量的定义、赋值与使⽤。
7.熟练掌握常⽤基本运算符。
8.熟练掌握流程控制语句,尤其是条件语句和循环语句。
9.熟悉并掌握常⽤的系统函数。
10.理解什么是标量函数、内嵌表值函数及多语句表值函数。
11.熟练掌握⾃定义函数的定义和调⽤⽅法。
⼆实验内容及要求
对CPXS数据库,完成如下任务:9.创建⼀名为CustomerName的局部变量,并在SELECT语句中使⽤该变量查找“客
户D”购买产品的情况(包括产品名称、单价)。10.⽤T-SQL语⾔编程输出3~300之间能被7整除的数。
11.查询CP表中各种产品的产品编号、产品名称和价格,对其价格按以下规则进⾏转
换:若价格⼩于1000,替换为“廉价产品”;若价格在1000-2000之间,替换为“⼀般产品”;若价格⼤于2000⼩于5000,替换为“昂贵产品”;若价格⼤于5000,替换为“奢侈品”;列标题更改为“评价”。12.使⽤系统函数,计算今天距“2012-1-1”还剩多少天。
13.根据产品编号,查询该产品的名称;(函数名为udf_GetCPName)
14.根据客户编号,统计其在某个时期内所购买的商品名称、数量及⾦额(函数名为
udf_GetCPListByCID);对函数udf_GetCPListByCID,查询“客户A”在“2011-1-1”
到“2011-9-30”期间交易的销售⽇期、产品名称、销售数量和销售⾦额,并按销售⽇期升序排序。
三实验过程及结果1.
use CPXS
declare @CustomerName char(10)
set @CustomerName='客户D'
SELECT 产品.产品名称,产品.价格
FROM 产品,销售
WHERE 产品.产品编号=销售.产品编号 and 销售.客户编号=(
SELECT 客户编号
FROM 客户
WHERE 客户名称=@CustomerName)
2.
--⽤T-SQL语⾔编程输出3~300之间能被7整除的数。--DECLARE @i int,@a int
SET @i=3
WHILE @i<=300
BEGIN
SET @a=@i%7
IF @a=0
PRINT '3~300之间能被7整除的数为:'+cast(@i as varchar)
SET @i=@i+1
END
3.USE CPXS
SELECT 产品编号,产品名称,价格,
CASE
WHEN 价格<1000 then '廉价产品'
WHEN 价格>=1000 and 价格<=2000 then '⼀般产品'
WHEN 价格>2000 and 价格<5000 then '昂贵产品'
WHEN 价格>=5000 then '奢侈产品'
END AS 评价
FROM 产品
4.SELECT DATEDIFF(DAY,GETDATE(),'2012-01-01')
5. USE CPXS
GO
CREATE FUNCTION udf_GetCPName(@cpNo CHAR(7))RETURNS CHAR(20)
AS
BEGIN
DECLARE @cpName char(20)
SELECT @cpName=(SELECT产品名称FROM产品
WHERE产品编号=@cpNo )
RETURN @cpName
END
use cpxs
declare @cp char(7)
set @cp='S00001'
select dbo.udf_GetCPName(@cp)as'产品名称'
6. USE CPXS
GO
CREATE FUNCTION udf_GetCPListByCID(@no CHAR(7),@begintime
datetime,@endtime datetime)RETURNS @sales table
(xs_data char(10),
xs_name char(15),
xs_sum int,
xs_money int
)
AS
BEGIN
INSERT @sales SELECT a.销售⽇期,b.产品名称, a.数量 AS 销售数量,a.数量*b.价格 AS 销售⾦额
FROM 销售 a,产品 b,客户 c
WHERE a.产品编号= b.产品编号 AND a.客户编号=c.客户编号