我实在没办法了才到这里来请求帮助的..
我是学管理和编程的大学生,快毕业了.但是在实习期间电脑重装把SQL卸载了.但是昨天得到学校消息必须用SQL建立3个表.....可是.....我现在人在外地,身旁没有熟人,也没人懂...
所以..........
请各位达人帮帮忙...."短消息"联络我...
跪谢了...
现有一个商店的数据库,记录顾客及其购物情况,由下面三个表组成:
商品(商品号,商品名,单价,商品类别,供应商);
顾客(顾客号,姓名,住址);
购买(顾客号,商品号,购买数量);
试用SQL语言完成下列功能:
1建表,在定义中要求声明:
(1)每个表的主外码;
(2)顾客的姓名和商品名不能为空值;
(3)单价必须大于0,购买数量必须再0到20之间;
2往表中插入数据:
商品(
M01,佳洁士,8.00,牙膏,宝洁;
M02,高露洁,6.50,牙膏,高露洁;
M03,洁诺,5.00,牙膏,联合利华;
M04,舒肤佳,3.00,香皂,宝洁;
M05,夏士莲,5.00,香皂,联合利华;
M06,雕牌,2.50,洗衣粉,纳爱斯
M07,中华,3.50,牙膏,联合利华;
M08,汰渍,3.00,洗衣粉,宝洁;
M09,碧浪,4.00,洗衣粉,宝洁;)
顾客(
C01,Dennis,海淀;
C02,John,朝阳;
C03,Tom,东城;
C04,Jenny,东城;
C05,Rick,西城;)
购买(
C01,M01,3;
C01,M05,2;
C01,M08,2;
C02,M02,5;
C02,M06,4;
C03,M01,1;
C03,M05,1;
C03,M06,3;
C03,M08,1;
C04,M03,7;
C04,M04,3;
C05,M06,2;
C05,M07,8;)
3用SQL语句完成下列查询:
(1)求购买了供应商"宝洁"产品的所有顾客;
(2)求购买的商品包括了顾客"Dennis"所购买商品的顾客(姓名);
(3)求牙膏卖出数量最多的供应商。
4将所有的牙膏商品单价增加10%。
5删除从未被购买的商品记录。
CREATE TABLE 商品
(
商品号 VARCHAR(10) NOT NULL,
商品名 VARCHAR(100) NOT NULL,
单价 MONEY,
商品类别 VARCHAR(100),
供应商 VARCHAR(100),
CONSTRAINT PK_商品 PRIMARY KEY (商品号),
CONSTRAINT CK_商品_单价 CHECK (单价 >0)
)
GO
CREATE TABLE 顾客
(
顾客号 VARCHAR(10) NOT NULL,
姓名 VARCHAR(100) NOT NULL,
住址 VARCHAR(300) NOT NULL,
CONSTRAINT PK_顾客 PRIMARY KEY (顾客号)
)
GO
CREATE TABLE 购买
(
顾客号 VARCHAR(10) NOT NULL,
商品号 VARCHAR(10) NOT NULL,
购买数量 INT,
CONSTRAINT FK_购买_顾客号 FOREIGN KEY (顾客号) REFERENCES 顾客(顾客号),
CONSTRAINT FK_购买_商品号 FOREIGN KEY (商品号) REFERENCES 商品(商品号),
CONSTRAINT CK_购买_购买数量 CHECK (购买数量 BETWEEN 0 AND 20)
)
GO
INSERT INTO 商品
SELECT 'M01','佳洁士',8.00,'牙膏','宝洁'
UNION ALL
SELECT 'M02','高露洁',6.50,'牙膏','高露洁'
UNION ALL
SELECT 'M03','洁诺',5.00,'牙膏','联合利华'
UNION ALL
SELECT 'M04','舒肤佳',3.00,'香皂','宝洁'
UNION ALL
SELECT 'M05','夏士莲',5.00,'香皂','联合利华'
UNION ALL
SELECT 'M06','雕牌',2.50,'洗衣粉','纳爱斯'
UNION ALL
SELECT 'M07','中华',3.50,'牙膏','联合利华'
UNION ALL
SELECT 'M08','汰渍',3.00,'洗衣粉','宝洁'
UNION ALL
SELECT 'M09','碧浪',4.00,'洗衣粉','宝洁'
GO
INSERT INTO 顾客
SELECT 'C01','Dennis','海淀'
UNION ALL
SELECT 'C02','John','朝阳'
UNION ALL
SELECT 'C03','Tom','东城'
UNION ALL
SELECT 'C04','Jenny','东城'
UNION ALL
SELECT 'C05','Rick','西城'
GO
INSERT INTO 购买
SELECT 'C01','M01',3
UNION ALL
SELECT 'C01','M05',2
UNION ALL
SELECT 'C01','M08',2
UNION ALL
SELECT 'C02','M02',5
UNION ALL
SELECT 'C02','M06',4
UNION ALL
SELECT 'C03','M01',1
UNION ALL
SELECT 'C03','M05',3
UNION ALL
SELECT 'C03','M06',3
UNION ALL
SELECT 'C03','M08',1
UNION ALL
SELECT 'C04','M03',7
UNION ALL
SELECT 'C04','M04',3
UNION ALL
SELECT 'C05','M06',2
UNION ALL
SELECT 'C05','M07',8
GO
SELECT
姓名
FROM
顾客
WHERE
顾客号 IN
(
SELECT
顾客号
FROM
购买
WHERE
商品号 IN (SELECT 商品号 FROM 商品 WHERE 供应商='宝洁')
)
GO
SELECT
姓名
FROM
顾客
WHERE
顾客号 IN
(
SELECT
顾客号
FROM
购买
WHERE
商品号 IN
(
SELECT
商品号
FROM
购买
WHERE
顾客号=(SELECT 顾客号 FROM 顾客 WHERE 姓名='Dennis')
)
)
GO
SELECT
TOP 1 供应商,SUM(购买数量) AS 购买数量
FROM
商品
INNER JOIN
(
SELECT
商品号, SUM(购买数量) AS 购买数量
FROM
购买
WHERE
商品号 IN
(
SELECT 商品号
FROM 商品
WHERE 商品类别='牙膏'
)
GROUP BY
商品号
)T
ON
商品.商品号=T.商品号
GROUP BY
供应商
ORDER BY
购买数量 DESC
GO
UPDATE
商品
SET
单价=单价*1.1
WHERE
商品类别='牙膏'
GO
DELETE FROM 商品
WHERE 商品号 NOT IN
(
SELECT DISTINCT 商品号
FROM 购买
)
GO
DROP TABLE 顾客
DROP TABLE 商品
DROP TABLE 购买
GO