zoukankan      html  css  js  c++  java
  • 数据库处理-基础、设计与实现-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;
    

      

  • 相关阅读:
    AtomQQ 随笔
    android下服务器推送实现 androidpn分析
    Pyqt Model/view框架 5.排序与过滤
    微软官方windows phone开发视频教程第二天视频(附下载地址)
    微软官方windows phone开发视频教程第一天视频(附下载地址)
    微软官方windows phone开发视频教程第三/四天视频(附下载地址)
    初见Ajax——javascript访问DOM的三种访问方式
    一个经历,实习?兼职?
    SQL分割字符串详解
    asp.net服务器控件button先执行js再执行后台的方法
  • 原文地址:https://www.cnblogs.com/wylwyl/p/10660859.html
Copyright © 2011-2022 走看看