湖濱散記部落格的樹心幽徑[login][主頁]
603:20200706數位科技概論II期末上機實作:建立一個收銀機系統資料庫並用SQL指令記錄3筆交易到資料庫中

(0-0) 請下載並開啟LibreOffice 的writer空白範本檔:20200706SQLEmpty.odt 下載 (15 KB),準備用來將如下(1)~(11-5)個步驟的SQL指令操作結果文字貼入writer中(不要貼截圖);

 「win+右鍵」可將工作中 視窗置於桌面左半邊螢幕

「win+左鍵」可將工作中視窗置於桌面左半邊螢幕。

(0-1)請參考如下文章的(1-1)~(1-3)在你的電腦裝妥Appserv伺服器(20200406數位科技上機實作:安裝並使用Appserv伺服器的MYSQL資料庫系統)

MYSQL root密碼給abc123abc123


(0-2) 用firefox連http://192.168.176.9:801 或 http://localhost:801

 來登入你的本機伺服器(假設你的本機IP192.168.176.9, 你的網頁伺服器提供服務的窗口是801) 

 

(0-3)在北電腦教室,可略過(0-1),直接連教師電腦 192.168.16.36來進行後續操作。

(0-4)點選本機首頁上方的phpMyAdmin並用root帳號登入。


 

(1)點選phpMyAdmin左上角的「新增」/再點選上方的「SQL」/參考如下SQL指令/在本機伺服器以你的「英文名號+DB」建立一個收銀機系統資料庫(如 catDB,字元集採UTF8)

參考SQL指令:

CREATE DATABASE catDB default character set utf8;


(2)先點選左方「你剛建的收銀機系統資料庫」/再按SQL/ 用如下SQL指令建立一個有 (id ,name ,amount ,tel)4個欄位的顧客資料表custs並為之新增一筆顧客資料(如cat),並列出新建的custs資料表欄位結構,並列出custs資料表的內容

參考SQL指令:

CREATE TABLE custs (id char(10),name char(20),amount float,tel char(20));

insert into custs(id,name,amount,tel) values ('101','cat',0,'0919-111222');

desc custs;

select * from custs;


(3)  用如下SQL指令建立一個貨品資料表goods並新增3筆貨品資料錄到goods中…

參考SQL指令:


CREATE TABLE goods (
gdsno char(20) primary key,
gdsname char(30) default 'x',
cost float default 0 ,
price float default 0,
unit char(10) default '個' ,
stock_qty int default 0,
fac_no char(20) default '0' );

INSERT INTO goods  (gdsno ,gdsname ,cost,price, unit,stock_qty,fac_no)
VALUES  ('a001','蕃茄', 10,10,'個',200,'077');

INSERT INTO goods  (gdsno ,gdsname ,cost,price, unit,stock_qty,fac_no)
VALUES  ('a002','木瓜', 20,40,'個',500,'077');

INSERT INTO goods  (gdsno ,gdsname ,cost,price, unit,stock_qty,fac_no)
VALUES  ('a003','香蕉', 30,50,'斤',2000,'077');

 

(4)用如下SQL指令建立一個供應商資料表factory並新增1筆供應商資料錄:

create table factory(facno char(20) primary key, facname char(30) , master char(30) ,tel char(20)  , addr char(40), lastdeal char(10), accountd char(20) );

insert into factory (facno,facname,master, tel,addr,lastdeal,accountd) values('077','真果行','吳老板','0919-111222','田裡100號','2020-07-06','郵局123456-7');


(5) 用如下SQL指令建立一個顧客入帳資料表new_id_reg並

為你唯一的顧客(如cat) 新增1筆5000元的入帳資料記錄到new_id_reg

create table new_id_reg (inday char(20),custno char(10),money_store int ,remain int , serial char(20) primary key,oldremain int) ;

insert into new_id_reg
(inday,custno,money_store,remain,serial,oldremain)
values('2020-07-06 11:22:33','101',5000,5000,'A2020070600001',0);


(6)用如下SQL指令修改(5)儲值顧客(如cat)的儲值金額:

 update custs set amount=amount+5000 where id='101';

 

(7-1)用如下SQL指令建立一個outcome交易記錄資料表並加入一筆2000元交易資料錄(交昜序號為20200706A00001):

create table outcome(sheet char(20) primary key ,custno char(10) , amount int,opday char(20));

insert into outcome (sheet,custno,amount,opday) values ('20200706A00001','101',2000,'2020-07-06 11:22:33');


(7-2)用如下SQL指令修改(7-1)交昜顧客(如cat)的儲值金額:

 update custs set amount=amount-2000 where id='101';

 

(7-3)用如下SQL指令建立一個outcome_detail交易細目記錄資料表並加入(7-1)中的2000元交易的所有交易細目資料錄 

(交昜序號同為20200706A00001)
(100個*a001蕃茄:10元/個:計1000元
, 15個*a002木瓜:40元/個:計600元
,  8斤*a003香蕉:50元/斤:計400元
,  三項總計2000元)

create table outcome_detail(sheet char(20),custno char(10) , gdsno char(20),price float,qty int,itemno int,gdsname char(30),opday char(20));

insert into outcome_detail (sheet,custno,gdsno,price,qty,itemno,gdsname, opday) values ('20200706A00001','101','a001',10,100,1,'蕃茄', '2020-07-06 11:22:33');

insert into outcome_detail (sheet,custno,gdsno,price,qty,itemno,gdsname, opday) values ('20200706A00001','101','a002',40,15,2,'木瓜', '2020-07-06 11:22:33');

insert into outcome_detail (sheet,custno,gdsno,price,qty,itemno,gdsname, opday) values ('20200706A00001','101','a003',50,8,3,'香蕉', '2020-07-06 11:22:33');

 

(7-4)用如下SQL指令更新(7-3)中三項售出貨品的庫存量:

update goods set stock_qty=stock_qty-(100) where gdsno='a001';
update goods set stock_qty=stock_qty-(15) where gdsno='a002';
update goods set stock_qty=stock_qty-(8) where gdsno='a003';

 

(8) 同(7)用如下SQL指令為顧客101在outcome交易記錄資料表加入一筆1500元交易資料錄,並對應在outcome_detail交易細目記錄資料表加入如下的交易細目紀錄(交昜序號皆為20200706A00002):

交易細目:(50個*a001蕃茄:10元/個:計500元
, 10個*a002木瓜:40元/個:計400元
,  12斤*a003香蕉:50元/斤:計600元
,  三項總計1500元)

insert into outcome (sheet,custno,amount,opday) values ('20200706A00002','101',1500,'2020-07-06 11:22:44');

update custs set amount=amount-1500 where id='101';

insert into outcome_detail (sheet,custno,gdsno,price,qty,itemno,gdsname, opday) values ('20200706A00002','101','a001',10,50,1,'蕃茄', '2020-07-06 11:22:44');

insert into outcome_detail (sheet,custno,gdsno,price,qty,itemno,gdsname, opday) values ('20200706A00002','101','a002',40,10,2,'木瓜', '2020-07-06 11:22:44');

insert into outcome_detail (sheet,custno,gdsno,price,qty,itemno,gdsname, opday) values ('20200706A00002','101','a003',50,12,3,'香蕉', '2020-07-06 11:22:44');

update goods set stock_qty=stock_qty-(50) where gdsno='a001';
update goods set stock_qty=stock_qty-(10) where gdsno='a002';
update goods set stock_qty=stock_qty-(12) where gdsno='a003';

 

(9)用如下SQL指令查詢(7)的交易記錄:

select * from outcome where sheet='20200706A00001';

select * from outcome_detail where sheet='20200706A00001';



(10)用如下SQL指令查詢(8)的交易記錄:

select * from outcome where sheet='20200706A00002';

select * from outcome_detail where sheet='20200706A00002';


(11-1)請參考(2)新增一筆顧客資料(...不要重複執行(2)中的建立custs資料表的指令...),

其(id,name,amount,tel)等欄位的內容分別為('你的座號','你的名字',0,'你的手機號碼');

 

(11-2)請參考(5)為你(11-1)剛新增的顧客

新增1筆(5000+你的座號*100)元的入帳資料記錄(本記錄序號serial不可重複)到new_id_reg資料表;

(...不要重複執行建立資料表的指令...)

並參考(6)修改custs資料表中的新增顧客資料錄的帳戶金額(amount)

 調增儲值金額((5000+你的座號*100))後的結果。

 

(11-3)請參考(3)新增一筆貨品資料(5萬斤地瓜,每斤1元)到goods資料表

 其(gdsno ,gdsname ,cost,price, unit,stock_qty,fac_no)等欄位的內容分別為
  ('a004','地瓜', 1,1,'斤',50000,'077');

 

(11-4)  同(8)為(11-1)新建的顧客在outcome交易記錄資料表並加入一筆交易資料錄(4種貨品皆要購買),交昜序號為20200706A00003:

交易總金額為新建顧客的全部餘額(剛好花光),4種貨品的庫存量要更新(請驗算更新後的所有貨品庫存量是否正確)

 

(11-5)請參考(9)查詢(11-4)剛新建的交易記錄(含新建顧客在outcome資料表及outcome_detail 資料表的紀錄)


(12-1)將以上每一步SQL指令的執行結果文字貼入LibreOffice 的writer中,每頁的頁首要有你的班級姓名座號,每頁的頁尾要有該頁的頁碼。       

 

(12-2)在writer選「檔案/ 匯出為PDF檔」,檔名為「20200706商一你號你名.pdf」,自動取用odt檔的主檔名。

      參考範例pdf檔如下:20200706SQLC.pdf下載 (216 KB) | created 01 七月, 2020

 

(12-3)請把以上(12-2)所產生的pdf檔上傳至「金門農工學生學習歷程系統」成為你的數位科技學習檔案。


select id,article_id,topic,text from lt_articles_text where article_id =603; ok. update lt_articles set num_reads=num_reads +1 where id=603; ok.