Chapr 20: Daaa Prgrammig Pag 303 Chapr 20: Daaa Prgrammig Thi chapr wi hw hw BASIC-256 ca cc a imp raia aaa a u i r a rriv ufu ifrmai. Wha i a Daaa: A aaa i impy a rgaiz cci f umr, rig, a hr yp f ifrmai. Th m cmm yp f aaa i h "Raia Daaa". Raia Daaa ar ma up f fur majr par: a, rw, cum, a raihip ( Ta 9). Ta A a ci f a prfi umr r cum ay ay umr f rw wih ifrmai au a pcific jc r ujc. A kw a a rai. Rw A ca a up. Cum Thi ca a rfrr a a ariu. Raihip A rfrc f h ky f a a a cum f ahr a. Thi cra a cci w a. Ta 9: Majr Cmp f a Raia Daaa Th SQL Laguag: M raia aaa, ay, u a aguag ca SQL acuay xrac a maipua aa. SQL i acuay a acrym fr Srucur Qury Laguag. Th rigia SQL aguag wa vp y IBM i h 1970 a ha cm h primary aguag u y raia aaa. 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig Pag 304 SQL i a vry pwrfu aguag a ha impm y z f fwar cmpai, vr h yar. Bcau f hi cmpxiy hr ar may iffr iac f SQL i u. BASIC-256 u h SQLi aaa gi. Pa h SQLi w-pag a hp://www.qi.rg fr mr ifrmai au h iac f SQL hw i h xamp. Craig a Aig Daa a Daaa: Th SQLi irary rquir h iaai f a aaa vr r h ig up f a cmpx ym. Th aaa a a f i par ar r i a imp fi yur cmpur. Thi fi ca v cpi ahr cmpur a u, wihu prm. Th fir prgram (Prgram 125: Cra a Daaa) cra a w amp aaa fi a a. Th a ar rpr y h Eiy Raihip Diagram (ERD) a hw i Iurai 39. wr wr_i igr wram x phum r x p p_i w r_i pam yp igr igr x x Iurai 39: Eiy Raihip Diagram f Chapr Daaa 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Pag 305 # c20_crap.k # cra h "p.qi" aa a # aaa if i xi fi$ = "p.qi3" if xi(fi$) h ki(fi$) # p aaa fi p fi$ m$ = "CREATE TABLE wr (wr_i INTEGER, wram TEXT, phumr TEXT, PRIMARY KEY (wr_i));" pri m$ xcu m$ m$ = "CREATE TABLE p (p_i INTEGER, wr_i INTEGER, pam TEXT, yp TEXT, PRIMARY KEY (p_i), FOREIGN KEY (wr_i) REFERENCES wr (wr_i));" pri m$ xcu m$ c pri fi$ + " cra." Prgram 125: Cra a Daaa CREATE TABLE wr (wr_i INTEGER, wram TEXT, phumr TEXT, PRIMARY KEY (wr_i)); CREATE TABLE p (p_i INTEGER, wr_i INTEGER, pam TEXT, yp TEXT, PRIMARY KEY (p_i), FOREIGN KEY (wr_i) REFERENCES wr (wr_i)); 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig Pag 306 p.qi3 cra. Samp Oupu 125: Cra a Daaa S far yu hav hr w aaa am: p wi p a aaa fi a cra i if i xi, xcu wi xcu a SQL am h p aaa, a c c h p aaa fi. p fiam Op a SQLi aaa fi. If h aaa xi h cra a w mpy aaa fi. xcu qam Prfrm h SQL am h curry p SQLi aaa fi. N vau wi rur u a rappa ruim rrr wi ccur if hr wr ay prm xcuig h am h aaa. 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig Pag 307 c C h curry p SQLi aaa fi. Thi am iur ha a aa i wri u h aaa fi. Th am hr am ca a u xcu hr SQL am. Th INSERT INTO am (Prgram 126) a w rw f aa h a a h UPDATE am (Prgram 127) wi chag a xiig rw' ifrmai. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # c20_ap.k # a rw h aaa fi$ = "p.qi3" p fi$ ca ca ca ca awr(1, "Jim", "555-3434") ap(1, 1, "Sp", "Ca") ap(2, 1, "Fr", "Ca") ap(3, 1, "Evi", "Ca") ca awr(2, "Su", "555-8764") ca ap(4, 2, "Afr", "Dg") ca ap(5, 2, "Fi", "Ca") ca awr(3, "Amy", "555-4321") ca ap(6, 3, "B", "Dg") ca awr(4, "D", "555-9659") ca ap(7, 4, "Sam", "Ga") 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 Pag 308 # wrap vryhig up c urui awr(wr_i, wram$, phumr$) m$ = "INSERT INTO wr (wr_i, wram, phumr) VALUES (" + wr_i + "," + chr(34) + wram$ + chr(34) + "," + chr(34) + phumr$ + chr(34) + ");" pri m$ ry xcu m$ cach pri "Ua a wr " + wr_i + " " + arrrxra ry urui urui ap(p_i, wr_i, pam$, yp$) m$ = "INSERT INTO p (p_i, wr_i, pam, yp) VALUES (" + p_i + "," + wr_i + "," + chr(34) + pam$ + chr(34) + "," + chr(34) + yp$ + chr(34) + ");" pri m$ ry xcu m$ cach pri "Ua a p " + p_i + " " + arrrxra ry urui Prgram 126: Ir Rw i Daaa INSERT INTO wr (wr_i, wram, phumr) VALUES (1,"Jim","555-3434"); 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig Pag 309 INSERT INTO p (p_i, wr_i, pam, yp) VALUES (1,1,"Sp","Ca"); INSERT INTO p (p_i, wr_i, pam, yp) VALUES (2,1,"Fr","Ca"); INSERT INTO p (p_i, wr_i, pam, yp) VALUES (3,1,"Evi","Ca"); INSERT INTO wr (wr_i, wram, phumr) VALUES (2,"Su","555-8764"); INSERT INTO p (p_i, wr_i, pam, yp) VALUES (4,2,"Afr","Dg"); INSERT INTO p (p_i, wr_i, pam, yp) VALUES (5,2,"Fi","Ca"); INSERT INTO wr (wr_i, wram, phumr) VALUES (3,"Amy","555-4321"); INSERT INTO p (p_i, wr_i, pam, yp) VALUES (6,3,"B","Dg"); INSERT INTO wr (wr_i, wram, phumr) VALUES (4,"D","555-9659"); INSERT INTO p (p_i, wr_i, pam, yp) VALUES (7,4,"Sam","Ga"); Samp Oupu 126: Ir Rw i Daaa 1 2 3 4 5 6 7 8 9 10 # c20_upap.k # upa a aaa rw p "p.qi3" # cra a ppua $ = "UPDATE wr SET phumr = " + chr(34) + "555-5555" + chr(34) + " whr wr_i = 1;" pri $ xcu $ c Prgram 127: Upa Rw i a Daaa 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig Pag 310 UPDATE wr SET phumr = "555-5555" whr wr_i = 1; Samp Oupu 127: Upa Rw i a Daaa Rrivig Ifrmai frm a Daaa: S far w hav hw p, c, a xcu a SQL am ha rur ay vau. A aaa wu pry u if w cu g ifrmai u f i. Th SELECT am, i h SQL aguag, aw u rriv h ir aa. Afr a SELECT i xcu a "rcr " i cra ha cai h rw a cum f aa ha wa xrac frm h aaa. Prgram 128 hw hr iffr SELECT am a hw h aa i ra i yur BASIC-256 prgram. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # c20_hwp.k # ipay aa frm h p aaa p "p.qi3" # hw wr a hir ph umr pri "Owr a Ph Numr" p "SELECT wram, phumr FROM wr ORDER BY wram;" whi rw() pri rig(0) + " " + rig(1) whi c pri # hw wr a hir p pri "Owr wih P" 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Pag 311 p "SELECT wr.wram, p.p_i, p.pam, p.yp FROM wr JOIN p ON p.wr_i = wr.wr_i ORDER BY wram, pam;" whi rw() pri rig(0) + " " + i(1) + " " + rig(2) + " " + rig(3) whi c pri # hw avrag umr f p pri "Avrag Numr f P" p "SELECT AVG(c) FROM (SELECT COUNT(*) AS c FROM wr JOIN p ON p.wr_i = wr.wr_i GROUP BY wr.wr_i) AS ump;" whi rw() pri fa(0) whi c # wrap vryhig up c Prgram 128: Scig S f Daa frm a Daaa Owr a Ph Numr Amy 555-9932 D 555-4433 Jim 555-5555 Su 555-8764 Owr wih P Amy 6 B Dg D 7 Sam Ga Jim 3 Evi Ca Jim 2 Fr Ca 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig Pag 312 Jim 1 Sp Ca Su 4 Afr Ca Su 5 Fi Dg Avrag Numr f P 1.75 Samp Oupu 128: Scig S f Daa frm a Daaa p qam Excu a SELECT am h aaa a cra a "rcr " aw h prgram ra i h ru. Th "rcr " may cai 0 r mr rw a xrac y h SELECT. rw r rw () Fuci avac h ru f h a p h x rw. Rur fa if w ar a h f h c aa. Yu avac h fir rw, uig rw, afr a p am fr yu ca ra ay aa. 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig Pag 313 i ( cum ) fa ( cum ) rig ( cum ) Th fuci wi rur aa frm h curr rw f h rcr. Yu mu kw h zr a umric cum umr f h ir aa. i Rur h c aa a a igr. fa Rur h c aa a a faig pi umr. rig Rur h c aa a a rig. c C a icar h ru f h a p am. Th ig prgram hi chapr cra a ig prgram ha cra, maiai, a i ph umr r i a aaa fi. Pay pcia ai h qu$ fuci u i craig h SQL am. I wrap a rig i h am i ig qu afr chagig h ig qu i a rig a pair f hm. Thi uig f qu ii qu i hw ir a quai mark i a SQL am. 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Pag 314 # c20_rfi.k # a aaa xamp kp rack f ph umr p "rfi.qi3" ca craa() pri pri pri pri pri pri ipu pri "rfi - ph umr" "1-a pr" "2-i pp" "3-a ph" "4-i ph" "0-xi >", chic if chic=1 if chic=2 if chic=3 if chic=4 ui chic = c h h h h 0 ca ca ca ca apr() ipp() aph() iph() fuci qu$(a$) # wrap a rig i ig qu (fr a q am) # if i cai a ig qu u i rur "'" + rpac(a$,"'","''") + "'" fuci fuci ipuphyp$() ipu "Ph Typ (h-hm, c-c, f-fax, wwrk) > ", yp$ ui yp$ = "h" r yp$ = "c" r yp$ = "f" r yp$ = "w" rur yp$ 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 Pag 315 fuci urui craa() # icu h IF NOT EXISTS cau rrr if h # a aray xi xcu "CREATE TABLE IF NOT EXISTS pr (pr_i TEXT PRIMARY KEY, am TEXT);" xcu "CREATE TABLE IF NOT EXISTS ph (pr_i TEXT, ph TEXT, yp TEXT, PRIMARY KEY (pr_i, ph));" urui urui apr() pri "a pr" ipu "pr i > ", pr_i$ pr_i$ = uppr(pr_i$) if iprfi(pr_i$) r pr_i$ = "" h pri "pr aray fi r mpy" ipu "pr am > ", pr_am$ if pr_am$ = "" h pri "pa r am" xcu "INSERT INTO pr (pr_i, am) VALUES (" + qu$(pr_i$) + "," + qu$ (pr_am$) + ");" pri pr_i$ + " a." if if urui urui aph() pri "a ph umr" ipu "pr i > ", pr_i$ pr_i$ = uppr(pr_i$) if iprfi(pr_i$) h pri "pr fi" 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 Pag 316 ipu "ph umr > ", ph$ if ph$ = "" h pri "pa r a ph umr" yp$ = ipuphyp$() xcu "INSERT INTO ph (pr_i, ph, yp) vau (" + qu$(pr_i$) + "," + qu$(ph$) + "," + qu$(yp$) + ");" pri ph$ + " a." if if urui fuci iprfi(pr_i$) # rur ru/fa whhr h pr i h pr a fi = fa p "c pr_i frm pr whr pr_i = " + qu$(pr_i$) if rw() h fi = ru c rur fi fuci urui ipp() p "c pr_i, am frm pr rr y pr_i" whi rw() pri rig("pr_i") + " " + rig("am") whi c urui urui iph() ipu "pr i i (rur fr a) > ", pr_i$ pr_i$ = uppr(pr_i$) 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig 100 101 102 103 104 105 106 107 108 Pag 317 m$ = "SELECT pr.pr_i, pr.am, ph.ph, ph.yp FROM pr LEFT JOIN ph ON pr.pr_i = ph.pr_i" if pr_i$ <> "" h m$ += " WHERE pr.pr_i = " + qu$(pr_i$) m$ += " ORDER BY pr.pr_i" p m$ whi rw() pri rig("pr_i") + " " + rig("am") + " " + rig("ph") + " " + rig("yp") whi c urui 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)
Chapr 20: Daaa Prgrammig Pag 318 Exrci: y a r c i r w p q q u q m x c z i x a p u h g h p u p c h c a a c r m r y i p u x j f i m c a g p r x m c a z c x x a w x f m u y f y i r i m r m cum, cra, c, c, xcu, fa, i, p, p, rw, rig, ir, qury, raihip, rw, c, q, a, upa 20.1. Tak h Big Prgram frm hi chapr a mify i cra a appicai kp rack f a u' gra fr vra ca. Yu wi h fwig mu pi aw h ur : Er a ca c, aigm am, pi pi, cr a aigm a r hi ifrmai i a aaa a. Cra a way fr h u a f h gra fr a ig ca afr hy r h ca c. Cra a pi a i f a ca wih a pi pi, a pi cr, a prcag f cr v. pi. 2014 Jam M. Rau (CC BY-NC-SA 3.0 US)