《数据库原理与应用》实验报告.docx
《《数据库原理与应用》实验报告.docx》由会员分享,可在线阅读,更多相关《《数据库原理与应用》实验报告.docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、实验目的1、使用企业管理器和T-SQL语句创建和管理数据库。2、熟练掌握使用企业管理器和T-SQL语句创建、修改和删除表。3、熟练掌握使用企业管理器和T-SQL语句插入、修改和删除表数据。4、牢记SELECT语句的基本语法格式;5、熟练掌握使用SQL语句进行单表查询,尤其要熟练掌握GROUP BY子句、 HAVING子句和集聚函数;6、牢记SELECT语句的基本语法格式;7、熟练掌握使用SQL标准语句和T-SQL扩展语句进行连接查询。8、熟练掌握IN子查询9、熟练掌握比较子查询和EXISTS子查询二、实验内容实验一1、利用企业管理器创建产品销售数据库CPXS。Create datebase
2、 CPXS;2、CPXS数据库包含如下三个表:1、CP (产品编号,产品名称,价格,库存量)产品CREATE TABLE CP(产品编号 CHAR(6) NOT NULL,产品价格 CHAR (30) NOT NULL,价格 FLOAT (8),库存 INT)2、XSS (客户编号,客户名称,地区,负责人,电话)销售商CREATE TABLE XSS(客户编号 CHAR(6) NOT NULL,客户名 CHAR(30) NOT NULL,地区 CHAR(10),负责人 CHAR(8),电话 CHAR(12)3、CPXSB (产品编号,客户编号,销售日期,数量,销售额)产品销 售表CREATE
3、TABLE CPXSB(产品编号CHAR(6),客户编号CHAR(6),销售日期DATETIME,数量INT,销售额FLOAT(8)4、用T-SQ L语句向CP表插入如下记录:200001柜式空调,3000-200lj200002微波炉,1000.100/20000抽油烟机_。1200-53 INSERT INTO cp VALUES(柜式空调INSERT INTO cp VALUES(微波炉INSERT INTO cp VALUES(抽油烟机5、用T-SQL语句向CP表中增加“产品简介”列,varchar(50),允许为NULLALTER TABLE cp ADD COLUMN 产品简介 V
4、ARCHAR(50);6、将CP表中每种商品的价格打8折。UPDATE CP SET 价格=价格 *0.8;7、将CP表中价格打9折后小于1500的商品删除。DELETE FROM CP WHERE (价格 *0.9)1500;实验二1、简单查询a. 查询各种产品的产品编号、产品名称和价格。SELECT产品编号,产品名称,价格FROM cp;信息结果1 1K况状志产品弟产品名称价悟100001饨电视机2400100002120010000318001000041亶调2000100005太阳弟热水器1760100007L5四调19201000032匹空渊3040wooii2400b. 查询地区在
5、“南京”的客户编号和客户名称,结果中各列的标题分别 指定为:Customer id 和 Customer name。select客户编号as Customer_id,客户名称 as Customer_namefrom xsswhere地区=南京;信息结果1临兄CustomerjdCu stomer_name*000004nr电ms000005广电公司c. 在CP表中增加1列,标题为“评价”,按以下规则确定:若价格小于1000,内容为“廉价产品”,若价格在1000-2000之间,内容 为“一般产品”,若价格在在2000-3000之间,内容为“昂贵产品”,若价格大 于3000,内容为“很昂贵产品”
6、。SELECT产品编号,产品名称,CASEWHEN价格=1000 THEN 廉价产品WHEN 价格=2000 THEN 一般产品WHEN价格=3000 THEN 昂贵产品ELSE 很昂贵产品END平价FROM cp;信息培果1概况 状态产品精产品名税100001匏电视机晶麦产品100002K产品100003冰精产品1000041匹空调f产品100005太阳能水器产品d. 求各产品编号、名称和产品总值。SELECT产品编号,产品名称,(价格*库存量)AS产品总值FROM CP;信息缚果11S况状志产品编号产漏名停产品总值,100001衫色电视机48000010000224000100003冰箱2
7、1500100004匹至调40000100005术日能烘水H14080e. 查询至少购买了至少一种产品的客户编号。SELECT 客户编号 FROM cpxsb GROUP BY 客户编号 HAVING COUNT( 数量)=1;给果1状悉吾户*,000002000003000004000005000005f. 查询价格在1000-2000的产品信息。SELECT * FROM CP WHERE 1000 价格 AND 价格 1114320b. 求各种产品20XX年3月18日销售额。DATETIME类型后面会有具体的时间,所以后面也得加SELECT 销售额 FROM cpxsb WHERE 销售
8、日期 LIKE信息 给杲1 整兄 状态整查额800020001200c. 求购买二种以上产品的客户编号。-按照客户编号进行分组,统计出现的行数SELECT 客户编号 FROM cpxsb GROUP BY 客户编号 HAVING COUNT(客户编号)=2;客户娜号,000002000006实验三1、查询在20XX年3月18日有销售的产品名称(不允许重复)SELECT DISTINCT 产品名称 FROM cpxsb, cp WHERE cp. 产品编号=cpxsb. 产品编号 AND CONVERT(销售日期,CHAR(30) LIKE信息 结果1 IK兄状志产晶8称,彩色电视机2、查询名称
9、为“家电市场”的客户在20XX年3月18日购买的产品名称和数量SELECT 产品名称,数量 FROM xss, cpxsb, cpWHERE xss. 客户编号=cpxsb. 客户编号 AND xss. 客户名称 家电市场AND cp. 产品编号=cpxsb. 产品编号 AND cpxsb. 销售日期LIKE因为没有购买所以没有记录I信息 靖果邮兄 状态产品名称S3(Null3、查找所有产品的销售日期、客户名称和数量SELECT产品名称,IFNULL(销售日期,0)AS销售日期,IFNULL(客户名称,0)AS客户名称,IFNULL(数量,0)AS数量FROM CP LEFT OUTER JO
10、IN cpxsb ON cp.产品编号=cpxsb. 产品编号 LEFT OUTER JOIN xss ON cpxsb.客户编号 =xss. 客户编号信息结果1 蚌兄 状态产品名称购曾日期客户名称曜 1.5匹空调0001匹空调2006-05-09 0 家电伽32匹空消2020-06-06 C 电器1冰精2004-05-20 0广电公司7太阳能热水器0004、查询所有产品的名称,销售总量和销售总额SELECT 产品名称,IFNULL(SUM(数量),0) AS销售总量,IFNULL(SUM(数量*价格),0) AS销售总额FROM CP LEFT OUTER JOIN CPXSBON cp.产
11、品编号=cpxsb.产品编号 GROUP BY产品名称信息结果1械兄 状恣产品名稼傩总星销售总额饨电视机61440033600W71260036000太阳蜘水81005、查询所有客户的名称,购买总量和购买总额SELECT客户名称,SUM(数量)AS购买总量,SUM(数量*价格)AS购买总额 FROM XSS,cpxsb,cpWHERE xss.客户编号=cpxsb.客户编号 AND cp.产品编号=cpxsb. 产品编号 GROUP BY xss. 客户编号11宅is果i况状芸喜户名称购买总量购买总麒,家电响58400电器彻13040电圈场512000rm公司712600E公司236006、查
12、询在20XX年3月18日没有销售的产品名称(不允许重复)SELECT产品名称FROM cpWHERE cp. 产品编号 NOT IN(SELECT DISTINCT 产品编号 FROM cpxsb WHERE 销售日期 LIKE信息给栗1产品名称1.5匹空谢匹由 2匹空调水用蹒水器7、查询销售量大于所有20XX年3月18日销售的各产品销售数量的产品、 编号SELECT 产品名称,cpxsb .产品编号 FROM CP,cpxsbWHERE cpxsb. 产品编号 =cp. 产品编号 AND cpxsb.数量 ALL(SELECT 数量 FROM cpxsb WHERE 销售日期信息结果1产品名
13、称产品 冰4S1000038、查询购买了所有产品的客户的名称。SELECT 客户名称 FROM xssWHERE NOT EXISTS(SELECT * FROM CPWHERE NOT EXISTS (SELECT * FROM CPXSBWHERE cpxsb.产品编号=cp.产品编号AND xss.客户编号=cpxsb.客户编号)group by客户名称信息 结果1概况 状态客户名称9、查询购买了客户编号为“000001 ”的客户购买的所有产品的客户 的名称。SELECT 客户名称 FROM xssWHERE 客户编号000001 AND NOT EXISTS(SELECT * FROM
14、 cpxsbWHERE cpxsb.客户编号=000001 AND NOT EXISTS(SELECT * FROM CPXSB CCWHERE CC.产品编号=cpxsb.产品编号 AND XSS.客户编号 =CC.客户编号);信息 结果欢 状态客户名称嘉电市场电矗市场小家电1街场广电公司广电公司10、查询购买总额最多的客户的名称;SELECT 客户名称 FROM XSS,CPXSB,CPWHERE xss.客户编号=cpxsb.客户编号AND cp.产品编号 =cpxsb.产品编号GROUP BY xss.客户名称 ORDER BY SUM(数量*价格)DESC LIMIT 1IM 唤 .
15、害户名称,广电公司11、查询销售总额前三名的产品名称SELECT产品名称AS销售总额前三的产品FROM CP,CPXSBWHERE cp.产品编号=cpxsb.产品编号GROUP BY cpxsb.产品编号ORDER BY SUM(销售额)DESC LIMIT 3I销售总S?前产品彩色电视机1匹空调实验四1、实体完整性的实现(1)对CP表、CPXSB表、XSS表,定义主键约束;ALTER TABLE CP ADD CONSTRAINT PK_CP PRIMARY KEY产品编号);ALTER TABLE XSS ADD CONSTRAINT PK_XSS PRIMARY KEY 客户编号 );
16、ALTER TABLE CPXSB ADD CONSTRAINT PK_CPXSB PRIMARY KEY产品 编号,客户编号)(2)在CP表的产品名称列定义一个唯一约束;ALTER TABLE cp ADD UNIQUE 产品名称)(3)在XSS表的客户名称列定义一个非空约束;ALTER TABLE XSSCHANGE 客户名称客户名称 CHAR(30) NOT NULL2、参照完整性的实现(1)建立CP表与CPXSB之间的参照关系,当对主表CP表进行更新和删除操作时,从表CPXSB采用NO ACTION方式。(2)建立CPXSB与XSS表之间的参照关系,当对主表XSS表进行更新和删除 操作
17、时,从表CPXSB采用CASCADE (级联)方式。(3)增加外键之后,分别在三个表中增加和删除数据,触发外键,证明其 有效性。3、自定义完整性的实现(1)在CP表的价格列上定义大于等于0的检查约束。ALTER TABLE CPXSB ADD CONSTRAINT FK_CPXSB FOREIGN KEY(产品编号)REFERENCES CP(产品编号)ON DELETE NO ACTION ON UPDATE NO ACTION(2)在CP表的库存量列上定义大于等于0,小于等于1000的检查约束。ALTER TABLE CP ADD CONSTRAINT CHK_KUCUN CHECK(库存
18、量=0 AND 库存量=1000);(3)在CPXSB表的数量列上定义大于等于0,小于等于500的检查约束。ALTER TABLE CPXSB ADD CONSTRAINT CHK_CPXSB_COUNT CHECK(0= 数量 AND 数量=500);(4)在CPXSB表的销售额列上定义大于等于0的检查约束。ALTER TABLE CPXSB ADD CONSTRAINT CHK_CPXSB_SALES CHECK(销售额 =0);(5)在以上两个表中增加数据,触发约束,证明其有效性。insert into cp VALUES(100010,哈雷摩托车,200,T00,null)信息所状态S
19、QLJinsert into cp VALUES(1OOO1O.哈雷摩JR,200,-100,cull)(Err 3819 - Check constraint CHK_KUCUN is violated.实验五1、在产品销售数据库CPXS中创建价格小于2000的产品视图VIEW_CP_PRICE2000,要求加密并保证对该视图的更新都要符合价格小于2000这个条件;CREATE VIEW VIEW_CP_PRICE2000 AS (SELECT * FROM CP WHERE 价格2000)WITH CHECK OPTION;WITH CHECK OPTION2、创建各客户购买产品的情况VI
20、EW_GMQK视图,包括客户编号、客户名称 、产品编号、产品名称、价格,购买日期、购买数量。CREATE VIEW VIEW_GMQK(客户编号,客户名称,产品编号,产品名称,价格,购买日期,购买数量)AS(SELECT CPXSB.客户编号,客户名称,cpxsb.产品编号,产品名称,价格,销售日期,数量FROM XSS,cpxsb,CPWHERE xss.客户编号=cpxsb.客户编号 AND cpxsb.产品编号 =cp. 产品编号)WITH CHECK OPTION;3、创建分区视图:在CPXS数据库中创建CP1和CP2两个表,CP1表中为编号 小于等于 100010产品数据,CP1表中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理与应用 数据库 原理 应用 实验 报告
限制150内