group by 产品名称
create function FU2_CPXS(@year int,@quarter int,@产品名称 char(30)) returns @f2 table (
产品名称 char(30), 销售数量 int, 金额 real ) as begin
insert into @f2
select 产品名称,sum(数量) as 销售数量,sum(销售额) as 金额 from CP,CPXSB
where CP.产品编号=CPXSB.产品编号 and datepart(yy,销售日期)=@year and datepart(qq,销售日期)=@quarter and 产品名称=@产品名称 group by 产品名称 return end
(3)根据销售商名称,统计其在某年某季度内销售商品名称、数量及金额。(函数名为FU3_CPXS)
create function FU3_CPXS(@客户名称 char(30),@year int,@quarter int) returns table as return
select 客户名称,产品名称 as 销售商品名称,数量,销售额 as 金额 from CP,XSS,CPXSB
where CPXSB.产品编号=CP.产品编号 and CPXSB.客户编号=XSS.客户编号
and 客户名称=@客户名称 and datepart(yy,销售日期)=@year and datepart(qq,销售日期)=@quarter
2、函数的调用
(1)对函数FU_CP,查询产品名称为“mp3”的产品情况; select * from FU_CP('MP3')
(2)对函数FU1_CPXS,查询20XX年第3季度彩色电视机的销售数量和销售金额; select * from FU1_CPXS(2004,3,'彩色电视机')
(3)对函数FU2_CPXS,查询20XX年第1季度洗衣机的销售数量和销售金额;
select * from FU2_CPXS(2004,1,'洗衣机')
(4)对函数FU3_CPXS,查询广电公司20XX年第1季度销售的产品名称、销售数量和销售金额。
select * from FU3_CPXS('广电公司',2004,1)
实验十一 对于CPXS数据库,完成如下操作: 1、索引的创建和删除
(1)对CP表,在产品名称上定义一个唯一非聚簇的索引ind_cp。 create unique nonclustered index on CP(产品名称)
(2)先创建各客户购买产品的情况VIEW1视图,包括客户编号、客户名称、产品编号、产品名称、
价格,购买日期、购买数量,然后在客户编号+产品编号+购买日期定义一个唯一聚簇索引ind_view1。(请注意7个SET选项设置)。 create view view1 with schemabinding as
select XSS.客户编号,客户名称,CP.产品编号,产品名称,价格,销售日期 as 购买日期,数量 as 购买数量
from dbo.CP,dbo.XSS,dbo.CPXSB
where XSS.客户编号=CPXSB.客户编号 and CP.产品编号=CPXSB.产品编号
SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON SET QUOTED_IDENTIFIER ON
SET NUMERIC_ROUNDABORT OFF
create unique clustered index ind_view1 on dbo.view1(客户编号,产品编号,购买日期)
2、索引的删除
删除ind_view1索引。; drop index view1.ind_view1
3、默认值约束的定义
对库存量字段添加默认值为0的约束def_kcl。 alter table CP
add constraint def_kcl default 0 for 库存量
4、默认值约束的删除 删除def_kcl默认值约束。 alter table CP
drop constraint def_kcl
5、默认值对象的定义、使用和删除
(1)定义一值为0的默认值对象kcl_def,并将其绑定到CP表的库存量字段;然后再删除此默认值对象,
请叙述该过程,并写出相关SQL语句。 create default kcl_def as 0
exec sp_bindefault 'kcl_def','CP.库存量'
(2) 用SQL命令定义一名为city的用户自定义数据类型,要求char(6),NULL,再定义一值为“北京”的默认值对象city_def,
然后将city_def默认值对象绑定到city自定义数据类型,最后删除city_def默认值对象,请叙述该过程,并写出相关SQL语句。 sp_addtype 'city','char(6)','null'
create default city_def as '北京' exec sp_bindefault 'city_def','city' exec sp_unbindefault 'city' drop default city_def
实验十二 对于CPXS数据库,删除CP表、CPXSB表、XSS表上已有所有约束:
1、实体完整性的实现
(1)对CP表、CPXSB表、XSS表,定义主键约束(用企业管理器和SQL语句分别实现,写出相应过程和语句)。 alter table CP
add constraint cp_pk primary key (产品编号)
alter table CPXSB
add constraint cpxsb_pk primary key (产品编号,客户编号,销售日期)
alter table XSS
add constraint xss_pk primary key (客户编号)
(2)在CP表的产品名称列定义一个唯一约束(用企业管理器和SQL语句分别实现,写出相应过程和语句)。 alter table CP
add constraint 产品名称_uk unique (产品名称)
2、参照完整性的实现
(1)利用企业管理器建立CP表与CPXSB之间的参照关系,当对主表CP表进行更新和删除操作时,
从表CPXSB采用NO ACTION方式,写出其过程。
alter table CPXSB
add constraint CP_CPXSB_FK foreign key(产品编号) references CP(产品编号)