数据库实验报告全

  • 格式: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.客户编号