数据库基础-基础、设计与实现 Marcia干洗店项目练习

2019-04-05 09:56:17

customer表

 

 

 invoice表

 

 

 

 invoice_item表

 

 

一、建表和插入数据

/********************************************************************************/
/*										                                      	*/
/*	Kroenke and Auer - Database Processing (14th Edition) ch 2					*/
/*										                                      	*/
/*	Marcia's Dry Cleaning [MDC] Project Create Tables	                    	 */
/*													                        	 */
/*	These are the MySQL 5.6 SQL code solutions		                          	*/
/*  Note: MySQL does not support auto_increment with a step besides 1. 			*/
/*  	Thus, customerIDs are inserted manually 100, 105, 110, etc. 			*/		
/********************************************************************************/

CREATE TABLE CUSTOMER(
		CustomerID		Int				    NOT NULL auto_increment,
		FirstName 		Char(25)	    NOT NULL,
		LastName		  Char(25)	    NOT NULL,
		Phone			    Char(12) 	    NOT NULL,
		Email			    varchar(100)	    NULL,
		CONSTRAINT		CustomerPK    PRIMARY KEY(CustomerID)
		);



CREATE TABLE INVOICE(
		InvoiceNumber       Int				   NOT NULL auto_increment,
		CustomerNumber      Int				   NOT NULL,
		DateIn			        Date	   	   NOT NULL,
		DateOut			        Date  	 	   NULL,
		TotalAmount		   Numeric(8,2)	NULL,
		CONSTRAINT		InvoicePK			PRIMARY KEY (InvoiceNumber),
		CONSTRAINT  	Invoice_Cust_FK 	FOREIGN KEY(CustomerNumber)
							REFERENCES CUSTOMER(CustomerID)
                 		);

ALTER TABLE invoice AUTO_INCREMENT = 20150001; 

CREATE TABLE INVOICE_ITEM(
		InvoiceNumber   Int				    NOT NULL,
		ItemNumber		Int				    NOT NULL,
		Item			Char(50)			NOT NULL,
		Quantity        Int				    NOT NULL DEFAULT 1,
		UnitPrice		Numeric(8,2)		NULL,
		CONSTRAINT		InvoiceItemPK	PRIMARY KEY(InvoiceNumber, ItemNumber),
		CONSTRAINT		Invoice_Item_FK	FOREIGN KEY(InvoiceNumber)
							REFERENCES INVOICE(InvoiceNumber)
								ON UPDATE CASCADE
								ON DELETE CASCADE
		    );

/********************************************************************************/

  

插入数据

/******************************************************************************/
/*					                                                        	*/
/*	Kroenke and Auer - Database Processing (14th Edition) Chapter 2  			*/
/*										                                        */
/*	Marcia's Dry Cleaing (MDC) Database - Insert Data                           */
/*	These are the MySQL 5.6 SQL code solutions				                    */
/******************************************************************************/

INSERT INTO CUSTOMER VALUES(
	1, 'Nikki', 'Kaccaton', '723-543-1233',
	'Nikki.Kaccaton@somewhere.com');
INSERT INTO CUSTOMER VALUES(
	2, 'Brenda', 'Catnazaro', '723-543-2344',
	'Brenda.Catnazaro@somewhere.com');
INSERT INTO CUSTOMER VALUES(
	3, 'Bruce', 'LeCat', '723-543-3455',
	'Bruce.LeCat@somewhere.com');
INSERT INTO CUSTOMER VALUES(
	4, 'Betsy', 'Miller', '725-654-3211',
	'Betsy.Miller@somewhere.com');
INSERT INTO CUSTOMER VALUES(
	5, 'George', 'Miller', '725-654-4322',
	'George.Miller@somewhere.com');
INSERT INTO CUSTOMER VALUES(
	6, 'Kathy', 'Miller', '723-514-9877',
	'Kathy.Miller@somewhere.com');
INSERT INTO CUSTOMER VALUES(
	7, 'Betsy', 'Miller', '723-514-8766',
	'Betsy.Miller@elsewhere.com');
/* */
  INSERT INTO INVOICE VALUES(
		2015001,1,'2015-10-04','2015-10-06',158.50);
INSERT INTO INVOICE VALUES(
		2015002,2,'2015-10-04','2015-10-06',25.00);
INSERT INTO INVOICE VALUES(
		2015003,1,'2015-10-06','2015-10-08',49.00);
INSERT INTO INVOICE VALUES(
		2015004,4,'2015-10-06','2015-10-08',17.50);
INSERT INTO INVOICE VALUES(
		2015005,6,'2015-10-07','2015-10-11',12.00);
INSERT INTO INVOICE VALUES(
		2015006,3,'2015-10-11','2015-10-13',152.50);
INSERT INTO INVOICE VALUES(
		2015007,3,'2015-10-11','2015-10-13',7.00);
INSERT INTO INVOICE VALUES(
		2015008,7,'2015-10-12','2015-10-14',140.50);
INSERT INTO INVOICE VALUES(
		2015009,5,'2015-10-12','2015-10-14',27.00); 
/* */
INSERT INTO INVOICE_ITEM VALUES(2015001, 1, 'Blouse', 2,  3.50);
INSERT INTO INVOICE_ITEM VALUES(2015001, 2, 'Dress Shirt', 5,  2.50);
INSERT INTO INVOICE_ITEM VALUES(2015001, 3, 'Formal Gown', 2, 10.00);
INSERT INTO INVOICE_ITEM VALUES(2015001, 4, 'Slacks-Mens', 10, 5.00);
INSERT INTO INVOICE_ITEM VALUES(2015001, 5, 'Slacks-Womens', 10, 6.00);
INSERT INTO INVOICE_ITEM VALUES(2015001, 6, 'Suit-Mens', 1,  9.00);
INSERT INTO INVOICE_ITEM VALUES(2015002, 1, 'Dress Shirt', 10, 2.50);
INSERT INTO INVOICE_ITEM VALUES(2015003, 1, 'Slacks-Mens', 5,  5.00);
INSERT INTO INVOICE_ITEM VALUES(2015003, 2, 'Slacks-Womens', 4,  6.00);
INSERT INTO INVOICE_ITEM VALUES(2015004, 1, 'Dress Shirt', 7,  2.50);
INSERT INTO INVOICE_ITEM VALUES(2015005, 1, 'Blouse', 2,  3.50);
INSERT INTO INVOICE_ITEM VALUES(2015005, 2, 'Dress Shirt', 2,  2.50);
INSERT INTO INVOICE_ITEM VALUES(2015006, 1, 'Blouse', 5,  3.50);
INSERT INTO INVOICE_ITEM VALUES(2015006, 2, 'Dress Shirt', 10, 2.50);
INSERT INTO INVOICE_ITEM VALUES(2015006, 3, 'Slacks-Mens', 10, 5.00);
INSERT INTO INVOICE_ITEM VALUES(2015006, 4, 'Slacks-Womens', 10, 6.00);
INSERT INTO INVOICE_ITEM VALUES(2015007, 1, 'Blouse', 2,  3.50);
INSERT INTO INVOICE_ITEM VALUES(2015008, 1, 'Blouse', 3,  3.50);
INSERT INTO INVOICE_ITEM VALUES(2015008, 2, 'Dress Shirt', 12, 2.50);
INSERT INTO INVOICE_ITEM VALUES(2015008, 3, 'Slacks-Mens', 8,  5.00);
INSERT INTO INVOICE_ITEM VALUES(2015008, 4, 'Slacks-Womens', 10, 6.00);
INSERT INTO INVOICE_ITEM VALUES(2015009, 1, 'Suit-Mens', 3,  9.00);
/* */

  

题目:

-- A.显示张表中的所有数据

select * from CUSTOMER;
select * from INVOICE;
select * from INVOICE_ITEM;

  

-- B.列出每个客户的LastName,FirstName和Phone

select LastName, FirstName, Phone from CUSTOMER;

  

-- C.列出所有名为'Nikki'客户的LastName, FirstName和Phone

select LastName, FirstName, Phone from CUSTOMER where FirstName = 'Nikki';

  

-- D.列出所有超出100元的订单LastName, FirstName, Phone, DataIn和DateOut

select CUSTOMER.LastName, CUSTOMER.FirstName, CUSTOMER.Phone, INVOICE.DateIn, INVOICE.DateOut
from CUSTOMER, INVOICE
where CUSTOMER.CustomerID = INVOICE.CustomerNumber 
and INVOICE.TotalAmount > 100;

  

-- E.列出所有名字以'B'开始的客户的LastName,FirstName和Phone

select LastName, FirstName, Phone from CUSTOMER where FirstName like 'B%';

  

-- F.列出所有姓氏包含字符'cat'的客户的LastName, FirstName和Phone

select LastName, FirstName, Phone from CUSTOMER where LastName like '%cat%';

  

-- G.列出所有电话号码第二位和第三位分别是2和3的客户的LastName, FirstName和Phone

select LastName, FirstName, Phone from CUSTOMER 
where Phone like '_23%';

  

-- H.确定最大和最小的TotalAmount

select max(TotalAmount) as maxamount, min(TotalAmount) as minamount
from INVOICE;

  

-- I确定平均的TotalAmount

select avg(TotalAmount) as avgTotalAmount from INVOICE;

  

-- J.计算客户数

select count(*) from CUSTOMER;

  

-- M.使用子查询, 给出拥有单一订单总价超过100元的客户LastName, FirstName, Phone。结果按照LastName升序排列, 再按照FirstName降序。

select CUSTOMER.LastName, CUSTOMER.FirstName, CUSTOMER.Phone from CUSTOMER
where CUSTOMER.CustomerID in (select CustomerNumber from INVOICE where TotalAmount > 100 group by 
CustomerNumber having count(*) = 1)
order by CUSTOMER.LastName, CUSTOMER.FirstName asc;

  

-- N.使用联接, 但不使用JOIN ON语法, 给出拥有单一订单总价超过100元的客户LastName, FirstName, Phone。结果按照LastName升序排列, 再按照FirstName降序。

select CUSTOMER.LastName, CUSTOMER.FirstName, CUSTOMER.Phone from CUSTOMER, INVOICE
where CUSTOMER.CustomerID = INVOICE.CustomerNumber and INVOICE.TotalAmount > 100
group by CUSTOMER.CustomerID
having count(*) = 1
order by CUSTOMER.LastName, CUSTOMER.FirstName asc;

  

 

-- O.使用JOIN ON语法, 给出拥有单一订单总价超过100元的客户LastName, FirstName, Phone。结果按照LastName升序排列, 再按照FirstName降序。

select CUSTOMER.LastName, CUSTOMER.FirstName, CUSTOMER.Phone from CUSTOMER inner join INVOICE
on ( CUSTOMER.CustomerID = INVOICE.CustomerNumber and INVOICE.TotalAmount > 100 )
group by CUSTOMER.CustomerID
having count(*) = 1
order by CUSTOMER.LastName asc, CUSTOMER.FirstName desc;

  

-- P.使用子查询, 给出拥有包含物品'Dress Shirt'的订单的客户LastName, FirstName, Phone。
-- 结果按照LastName升序排列, 再按照FirstName降序

select CUSTOMER.LastName, CUSTOMER.FirstName, CUSTOMER.Phone from CUSTOMER
where CUSTOMER.CustomerID in (
select INVOICE.CustomerNumber from INVOICE 
where INVOICE.InvoiceNumber 
in (select INVOICE_ITEM.InvoiceNumber from INVOICE_ITEM where Item in ('Dress Shirt'))
)
order by CUSTOMER.LastName asc, CUSTOMER.FirstName desc;

  

-- Q.使用联接,但不使用JOIN ON语法, 给出拥有包含物品'Dress Shirt'的订单的客户LastName, FirstName, Phone。
-- 结果按照LastName升序排列, 再按照FirstName降序

select CUSTOMER.LastName, CUSTOMER.FirstName, CUSTOMER.Phone from CUSTOMER, INVOICE, INVOICE_ITEM
where 
CUSTOMER.CustomerID = INVOICE.CustomerNumber
and
INVOICE.InvoiceNumber = INVOICE_ITEM.InvoiceNumber
and
INVOICE_ITEM.Item = 'Dress Shirt'

order by CUSTOMER.LastName asc, CUSTOMER.FirstName desc;

  

-- T.给出拥有包含物品'Dress Shirt'的订单的客户LastName, FirstName, Phone和TotalAmount。同时也列出其他客户的LastName, FirstName, Phone
-- 结果按照LastName升序排列, 再按照FirstName降序

select CUSTOMER.LastName, CUSTOMER.FirstName, CUSTOMER.Phone, a.TotalAmount
from CUSTOMER 
left join 
(select INVOICE.CustomerNumber, INVOICE.TotalAmount 
from INVOICE 
where INVOICE.InvoiceNumber 
in 
(select INVOICE_ITEM.InvoiceNumber from INVOICE_ITEM where Item in ('Dress Shirt'))
) as a
on CUSTOMER.CustomerID = a.CustomerNumber
order by CUSTOMER.LastName asc, CUSTOMER.FirstName desc;

  

问题:计算不同名同姓的客户数?

select count(*) from (
select count(*) as n from CUSTOMER
group by CUSTOMER.FirstName, CUSTOMER.LastName
having count(*) = 1
) t;

  

转载于:https://www.cnblogs.com/wylwyl/p/10657421.html

新源干洗店信息管理系统具有功能合理、操作简单、界面清新等特点,是大中型洗衣连锁店的正式解决方案。我们在洗衣行业已有四年的接触和认知,在洗衣流程和功能要求方面积累了丰富的经验,开发出的洗衣系统囊括了整个洗衣流程、环节和细节,整个洗衣业务流程都体现在系统中,充份为店内的各项要求进行周密的考虑与设计,人性化强。系统支持磁卡/IC卡,四种型号的POS打印机,满足各种不同用户的要求。 洗衣行业蛮近几年在我国普及开来,随着网络技术在内的信息技术在我国各行各业的应用和发展已非常普遍,市场迫切需要在开店伊始就要采用相应的系统管理店面,提升管理档次。另一方面,洗衣行业暴露出了诸多弊病,加盟店管理混乱,账目不清,衣物丢失等,随着规模的扩大,多家连锁洗衣使得经营者比较头疼,传统的单机版洗衣管理系统已满足不了现代洗衣行业的管理模式,市场非常需要高效率的应用解决方案。四年前,我们开发的一些单机版的洗衣系统产品,普及了一些洗衣店,但都针对的是一些小型洗衣店,甚至作坊式洗衣店,限于当时的计算机技术发展水平,产品的技术含量低,已不能适应洗衣行业的发展水平。现在,快速发展的计算机技术及相关的硬件已为洗衣行业的管理提供了便利的手段。为一个行业提供服务和开发产品,首先要了解这个行业的运作模式,错误的或肤浅的认知都会影响到产品的先进性、适应性和前瞻性。我们在洗衣行业已有四年的接触和认知,在洗衣流程等方面积累了丰富的经验,这是一套囊括整个洗衣流程、环节和细节的管理系统,整个洗衣业务流程都体现在系统中,非常适用于现在的洗衣公司(店)。洗衣信息管理系统应尽可能将成熟的计算机技术应用于洗衣服务的各个环节,来提高工作效率,减少各环节的差错,杜绝管理漏洞,实施一套符合自己店面的管理系统。用户的需求是多种多样的,洗衣行业也不例外,不同经营规模以及管理模式等特点都会带来不同需求,作为应用解决方案,应该是体系化、网络化并且易于扩展的。 对洗衣管理系统的开发进行了系统地规划: 1、 原则:满足当今洗衣业行需求的管理系统规划,应遵循以下原则: ⑴ 洗衣行业已经发展到规模经营、连锁经营、跨地区经营,适应这种趋势; ⑵ 硬件方面易采购、产品质量稳定耐用,操作傻瓜型; ⑶ 系统的规划上,操作简单明了,满足日常管理的各项需求。 2、 规划:一个完整的系统规划,由硬件设备和系统模块组成,硬件设备又分输入设备和输出终端。输入设备可选配条码扫描枪,输出终端为热敏或针式高速POS打印机。 ⑴ 硬件方面标配为磁卡阅读器(IC卡读写器)/POS打印机/电控钱箱,可选配件为条码扫描枪/客户显示屏等。 ⑵ 系统方面采用C/S架构,局域网内实时操作,远程分店每日可上报数据进行汇总。 ⑶ 灵活的会员卡管理模式,用户可持卡异店消费。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值