数据库处理-基础、设计与实现-Morgan进口公司项目练习

一、建表和插入数据

/******************************************************************************/
/*				                                                        	*/
/*	Kroenke and Auer - Database Processing (14th Edition) Chapter 02 		*/
/*										                                    */
/*	The Morgan Importing (MI-CH02) Database - Create Tables                  */
/*							                                                 */
/*	These are the MySQL 5.6 code solutions  						          */
/*								                                             */
/******************************************************************************/

CREATE TABLE ITEM (
		ItemID	            Int				    NOT NULL auto_increment,
		Description		      VarChar(255)	NOT NULL,
		PurchaseDate		    Date			    NOT NULL,
		Store			          Char(50)			NOT NULL,
		City				        Char(35)		  NOT NULL,
		Quantity			      Int		        NOT NULL,
		LocalCurrencyAmount	Numeric(18,2)	NOT NULL,
		ExchangeRate			  Numeric(12,6)	NOT NULL,
		CONSTRAINT	Item_PK	   	 PRIMARY KEY (ItemID)
		);

CREATE TABLE SHIPMENT (
		ShipmentID				    Int				    NOT NULL auto_increment,
		ShipperName		        Char(35)	    NOT NULL,
		ShipperInvoiceNumber	Int				    NOT NULL,
		DepartureDate				  Date			    NULL,
		ArrivalDate				    Date			    NULL,
		InsuredValue			    Numeric(12,2)	NOT NULL,
		CONSTRAINT	Shipment_PK	  PRIMARY KEY (ShipmentID)
		);

CREATE TABLE SHIPMENT_ITEM (
		ShipmentID		    Int				    NOT NULL,
		ShipmentItemID		Int				    NOT NULL,
		ItemID		    	  Int				    NOT NULL,
		Value		  	      Numeric(12,2)	NOT NULL,
		CONSTRAINT	ShipmentItem_PK	    PRIMARY KEY(ShipmentID, ShipmentItemID),
		CONSTRAINT	Ship_Item_Ship_FK		    FOREIGN KEY(ShipmentID)
                      REFERENCES SHIPMENT(ShipmentID)
                        ON DELETE CASCADE,
		CONSTRAINT	Ship_Item_Item_FK	FOREIGN KEY(ItemID)
                      REFERENCES ITEM(ItemID)
     		);

  插入数据

/******************************************************************************/
/*									                                       	*/
/*	Kroenke and Auer - Database Processing (14th Edition) Chapter 02		  */
/*										                                      */
/*	The Morgan Importing (MI-CH02) Database - Insert Data                     */
/*							                                                 */
/*	These are the MySQL 5.6 code solutions							          */
/*								                                               */
/******************************************************************************/

/*****   ITEM Data   *************************************************/

INSERT INTO ITEM VALUES(
		null, ‘QE Dining set‘,‘2015-04-07‘,
		 ‘Eastern Treasures‘, ‘Manila‘, 2, 403405, 0.01774);
INSERT INTO ITEM VALUES(
		null, ‘Willow Serving Dishes‘,‘2015-07-15‘,
		 ‘Jade Antiques‘, ‘Singapore‘, 75, 102, 0.5903);
INSERT INTO ITEM VALUES(
		null, ‘Large Bureau‘,‘2015-07-17‘,
		 ‘Eastern Sales‘, ‘Singapore‘, 8, 2000, 0.5903);
INSERT INTO ITEM VALUES(
		null, ‘Brass Lamps‘,‘2015-07-20‘,
		 ‘Jade Antiques‘, ‘Singapore‘, 40, 50, 0.5903);

COMMIT;

/*****   SHIPMENT Data   ***************************************************/

INSERT INTO SHIPMENT VALUES(
		null, ‘ABC Trans-Oceanic‘, 2008651,‘2014-12-10‘,‘2015-03-15‘, 15000.00);
INSERT INTO SHIPMENT VALUES(
		null, ‘ABC Trans-Oceanic‘, 2009012,‘2015-01-10‘,‘2015-03-20‘, 12000.00);
INSERT INTO SHIPMENT VALUES(
		null, ‘Worldwide‘, 49100300,‘2015-05-05‘,‘2015-06-17‘, 20000.00);
INSERT INTO SHIPMENT VALUES(
		null, ‘International‘, 399400,‘2015-06-02‘,‘2015-07-17‘, 17500.00 );
INSERT INTO SHIPMENT VALUES(
		null, ‘Worldwide‘, 84899440,‘2015-07-10‘,‘2015-07-28‘, 25000.00);
INSERT INTO SHIPMENT VALUES(
		null, ‘International‘, 488955,‘2015-08-05‘,‘2015-09-11‘, 18000.00);

COMMIT;

/*****   SHIPMENT_ITEM Data   **********************************************/

INSERT INTO SHIPMENT_ITEM VALUES(3, 1, 1, 15000);
INSERT INTO SHIPMENT_ITEM VALUES(4, 1, 4, 1200);
INSERT INTO SHIPMENT_ITEM VALUES(4, 2, 3, 9500);
INSERT INTO SHIPMENT_ITEM VALUES(4, 3, 2, 4500);

COMMIT;

  

二、问答题

-- ITEM
-- SHIPMENT
-- SHIPMENT_ITEM

-- A.列出所有表的数据
select * from ITEM;
select * from SHIPMENT;
select * from SHIPMENT_ITEM;

-- B.列出所有船运的ShipmentID, ShipperName和ShipperInvoiceNumber
select ShipmentID, ShipperName, ShipperInvoiceNumber from SHIPMENT;

-- C.列出所有保险额超过10000元的船运的ShipmentID, ShipperName和ShipperInvoiceNumber
select ShipmentID, ShipperName, ShipperInvoiceNumber
from SHIPMENT
where InsuredValue > 10000;

-- D.列出所有名字以‘AB‘开头的船运的ShipmentID, ShipperName和ShipperInvoiceNumber
select ShipmentID, ShipperName, ShipperInvoiceNumber
from SHIPMENT
where ShipperName like ‘AB%‘;

-- E.假设Departure和ArrivalDate的格式为月/日/年.列出所有于12月出发的船运ShipmentID,
-- ShipperName, ShipperInvoiceNumber和ArrivalDate
select ShipmentID, ShipperName, ShipperInvoiceNumber, ArrivalDate
from SHIPMENT
where month(DepartureDate) = 12;

-- F.假设Departure和ArrivalDate的格式为月/日/年.列出所有于某月10日出发的船运ShipmentID,
-- ShipperName, ShipperInvoiceNumber和ArrivalDate
select ShipmentID, ShipperName, ShipperInvoiceNumber, ArrivalDate
from SHIPMENT
where day(DepartureDate) = 10;

-- G.确定最大值和最小值的InsuredValue
select max(InsuredValue) as maxInsuredValue,
min(InsuredValue) as minInsuredValue
from SHIPMENT;

-- H.确定平均的InsuredValue
select avg(InsuredValue) from SHIPMENT;

-- I.计算船运的总数
select count(*) from SHIPMENT;

-- J.对于表ITEM_PURCHASE中的每一行, 显示Item, Store和一个计算得到的名为
-- StdCurrencyAmount的列。该列的值为LocalCurrencyAmt乘以ExchangeRate
select ItemID, Store, LocalCurrencyAmount * ExchangeRate as StdCurrencyAmount
from ITEM;

-- K.按照City和Store对购买的物品进行分组
select ITEM.City, ITEM.Store from ITEM
group by ITEM.City, ITEM.Store;

-- L.按照City和Store对购买的物品进行分组, 计算每组的数目
select ITEM.City, ITEM.Store, count(*) as n from ITEM
group by ITEM.City, ITEM.Store;

-- M.使用子查询, 显示所有包含单价超过1000的物品船运的ShipperName
-- ShipmentID和DepartureDate. 结果先按照ShipperName升序排序, 再按照DepartureDate降序排序
select  SHIPMENT.ShipperName, SHIPMENT.ShipmentId, SHIPMENT.DepartureDate
from SHIPMENT
where
SHIPMENT.ShipmentId
in
(select distinct SHIPMENT_ITEM.ShipmentID from SHIPMENT_ITEM where Value > 1000)
order by SHIPMENT.ShipperName asc, SHIPMENT.DepartureDate desc;

-- O.使用子查询, 显示所有包含在新加坡购买的物品船运的ShipperName
-- ShipmentID和DepartureDate. 结果先按照ShipperName升序排序, 再按照DepartureDate降序排序s
select  SHIPMENT.ShipperName, SHIPMENT.ShipmentId, SHIPMENT.DepartureDate
from SHIPMENT
where
SHIPMENT.ShipmentId  in
(select ShipmentID from SHIPMENT_ITEM where SHIPMENT_ITEM.ItemID in (select ItemId from ITEM where ITEM.City = ‘Singapore‘)
)
order by SHIPMENT.ShipperName asc, SHIPMENT.DepartureDate desc;

  

原文地址:https://www.cnblogs.com/wylwyl/p/10660859.html

时间: 2024-10-14 19:39:16

数据库处理-基础、设计与实现-Morgan进口公司项目练习的相关文章

数据库范式的设计

数据库范式的设计     关系数据库就是通过二维表(行和列)来保存数据. 实体:现实世界中客观存在并可以被区别的事物.比如"一个学生"."一本书"."一门课"等等.值得强调的是这里所说的"事物"不仅仅是看得见摸得着的"东西",它也可以是虚拟的,不如说"老师与学校的关系". 属性:教科书上解释为:"实体所具有的某一特性",由此可见,属性一开始是个逻辑概念,比如说,&qu

《C#语言和数据库技术基础》单词必备

<C#语言和数据库技术基础> 第一章1..NET Framework   框架2.sharp            尖锐3.application      应用程序4.developer        开发者5.network          网络6.build            建造,建筑7.console          控制台8.debug            调试9.namespace        命名空间10.project         项目11.solution 

.NET基础拾遗(6)ADO.NET与数据库开发基础

一.ADO.NET和数据库程序基础 1.1 安身立命之基本:SQL SQL语句时操作关系型数据库的基础,在开发数据访问层.调试系统等工作中十分常用,掌握SQL对于每一个程序员(无论是.NET.Java还是C++等)都非常重要.这里挑选了一个常见的面试题目,来热热身. 常见场景:通过SQL实现单表行列转换 行列转换时数据库系统中经常遇到的一个需求,在数据库设计时,为了适合数据的累积存储,往往采用直接记录的方式,而在展示数据时,则希望整理所有记录并且转置显示.下图是一个行列转换的示意图: ①好了,废

数据库分析与设计总结

下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的.对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握.并逐步做到:在应用中发展,在发展中应用. 1. 原始单据与实体之间的关系       可 以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的 关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,

[转]数据库范式的设计

数据库范式的设计     关系数据库就是通过二维表(行和列)来保存数据. 实体:现实世界中客观存在并可以被区别的事物.比如“一个学生”.“一本书”.“一门课”等等.值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”. 属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性.在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”. 元组:表中的一行就是一个元组. 分量:元组

基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用

在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各个方面来总结并记录一下这个新型.看似神秘的数据库使用过程.本文是这个系列的开篇,主要介绍一些MongoDB数据库的基础知识.安装过程.基础使用等方面. MongoDB是一款由C++编写的高性能.开源.无模式的常用非关系型数据库产品,是非关系数据库当中功能最丰富.最像关系数据库的数据库.它扩展了关系型

Java应用程序连接数据库--JDBC基础

Java应用程序连接数据库--JDBC基础 Java应用程序连接数据库–JDBC基础 <!-- MySQL驱动,连接数据库用,由数据库厂商提供 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> &

C#语言和数据库技术基础复习

整理了下C#语言和数据库技术基础,作为复习资料 第一章 一.c#和JAVA对比:1.c#用命名空间(namespace)java用包(package) 2.引入命名空间或包的关键字C#用using,JAVA用import 3.程序入口:C#的Main()有四种形式static void Main(string[] args) static int Main(string[] args) static void Main() static int Main() JAVA的MAIN()有一种形式 4

数据库的表设计

创建数据库里最基本的应该就是建表,建索引.存储过程等一系列操作了.谈到表就不得不谈到实体. 一.数据实体 什么是实体,客观存在并且可以相互区别的事物称为实体.这里我们就简单的把它理解为一个表吧,描述实体的特性,我们就把他们称为了属性.也可以说当我们把一个数据库表当作一个实体,那么它里面的所有字段是不是就是一个属性了呢?结果是肯定的. 二.实体间的联系 我想说的是,很简单,数据库里表跟表间的关系莫过于三种:一对一:多对多:一对多. 一对一其实就是说我们建的主表跟相关联的表之间是一一对应的,比如说,