[Powered by Google Translate] [SQL] [BARTHOLOMEW CHRISTOPHER] [HARVARD UNIVERSITY] [HWN YW CS50] [CS50 TV] Felly, rhaglenwyr defnyddio cronfeydd data fel offeryn i storio a threfnu ein data parhaus mewn tablau. Mae hyn yn golygu bod eich data yn cael ei storio ar dir nad yw'n anweddol canolrifau fel 'n anawdd cathrena, a hyd yn oed pan fydd y cyfrifiadur wedi'i ddiffodd, mae'r data yn dal yn gyfan. Ac, fel rhaglenwyr, mae ein rhaglenni yn defnyddio cronfeydd data ar gyfer sefyllfaoedd o'r fath fel storio gwybodaeth defnyddwyr o ffurflenni ar y we, edrych i fyny rhestr, neu ddiweddaru gwybodaeth am yr hyn y safleoedd arddangos. Ond sut yn union ydym ni'n rhyngweithio â'n cronfa ddata, neu beth ydyn ni'n eu defnyddio i ddarllen, storio, dileu, ac yn diweddaru ein data o fewn y tablau cronfa ddata? Wel, yr ateb yw ein bod yn defnyddio math arbennig o iaith cronfa ddata sy'n rhyngweithio yn uniongyrchol gyda'n tablau cronfa ddata. Mae ei enw yn cael ei strwythuro o Iaith Ymholiad, [Iaith Ymholiad Strwythuredig] neu beth y cyfeiriaf ato fel SQL. Yn awr, [Se-QueL], neu beidio SQL, yn iaith raglennu, ond yn hytrach, mae'n iaith sy'n darparu set safonol o orchmynion i adfer a thrin data o amrywiaeth o systemau rheoli cronfa ddata. At ddibenion CS50, byddwn yn mynd dros bedair gorchmynion sylfaenol: dewis, mewnosod, diweddaru a dileu. Ar ben hynny, byddwn yn defnyddio cronfa ddata rhyngwyneb ar y we o'r enw phpMyAdmin, oedd yn ei osod ar y peiriant i ysgrifennu ein datganiadau SQL. Felly, i'ch helpu i gofio gorchmynion hyn, Rydw i wedi dod â rhai cacennau bach mewn cwpwrdd i gynorthwyo gyda'n senarios. Dywedwch eich bod chi wedi cronfa ddata cupcake, yn lle byddwch yn cadw holl wybodaeth am eich cacennau bach. Yn awr, gall cronfeydd data yn cynnwys llawer o dablau a gall y tablau eu hunain yn cynnwys colofnau lawer. Y tu mewn cronfa ddata ein cupcake yn, mae gennym tabl o'r enw cupcake_cupboard. Bydd y tabl yn cael ei ddefnyddio i storio holl wybodaeth am cacennau bach sydd, yn dda, yn eich cwpwrdd. Mae'r colofnau sydd y tu mewn i'ch bwrdd yn cynrychioli nodweddion o cupcake. Er enghraifft, colofnau y cupcake_cupboard yw Cacen ID, CakeType, CakeColor, a CakeIsNice. Mae'r golofn hon yn boolean-deipio yn cael ei ddefnyddio i benderfynu os yw'r gacen yn neis neu beidio 'n glws. Rydym yn mynd i ddechrau gydag ysgrifennu datganiad dethol. Datganiadau Dethol yn cael eu defnyddio i adalw data o dabl cronfa ddata penodol. Yn y sefyllfa hon, rydym eisiau gwybod popeth am yr holl cacennau bach sy'n bodoli yn ein cwpwrdd. Mae'r chystrawen i wneud hyn yw seren ofod "Dewis", neu *, gofod o'r gofod ein bwrdd, sydd yn cupcake_cupboard. Gadewch i ni fynd yn ei flaen ac yn gweithredu hynny. Fel y gallwn weld, mae'r rhain i gyd yn y cupcakes yn ein cwpwrdd. Mae'n bwysig nodi bod *, neu seren, yn gymeriad cerdyn gwyllt sy'n dynodi'r casglu holl golofnau rhai tabl. Fel arfer, gallwn gael gafael ar golofn penodol neu golofnau drwy ddisodli'r * gydag enw'r golofn ei hun. Os ydym am golofnau lluosog, ond nid pob un, gallwn gyflawni hyn drwy ysgrifennu enwau'r golofn delimiting pob colofn gan atalnod. Er enghraifft, gadewch i ni dim ond adfer y CakeId a CakeType yn y tabl cupcake_cupboard. Mae'r gystrawen i wneud hyn yw: coma CakeID gofod SELECT Gofod CakeType gan ein, cupcake_cupboard tabl. Gadewch i ni fynd yn ei flaen a gweithredu hyn. Ac yma, mae gennym bellach dim ond y ddwy golofn i ni bennu ar gyfer pob cupcake yn ein cwpwrdd. Gallwn hefyd fireinio ein canlyniadau ymholiad drwy bennu y "Where" cymal yn union ar ôl yr enw tabl. Er enghraifft, mae'n ymddangos i fod yn cupcake yn ein cwpwrdd hynny yw, ddim yn dda, felly 'n glws edrych. Gadewch i chyfrif i maes yr holl cacennau bach yn ein cwpwrdd sy'n cael eu, nid yn dda, felly 'n glws edrych defnyddio'r "Where" cymal. Mae'r gystrawen i wneud hyn yw: gofod SELECT * O le cupcake_cupboard gofod gofod BLE gofod ein colofn amodol, yn yr achos hwn CakeIsNice =, a gwerth boolaidd o Anghywir. Mae'n bwysig nodi os ydych yn defnyddio llinynnau, rhaid i chi amgáu mewn dyfynodau sengl. Mae hyn yn wir ar gyfer yr holl dannau yn SQL, neu, o ran gronfa ddata SQL cymeriadau amrywiol, a elwir yn Varchar datatype. Yn yr achos hwn, rydym yn defnyddio Gwir neu Gau, sydd yn werth boolaidd ac nid yn llinyn. Gadewch i ni fynd yn ei flaen a gweithredu gorchymyn hwn. Lo ac wele, mae'n wir ein bod wedi 1 siocled Nid yw mor braf cupcake yn ein cwpwrdd. Nesaf, rydym yn mynd i ysgrifennu datganiad rhowch. Datganiadau Mewnosod cael eu defnyddio i mewnosod neu ychwanegu rhesi ychwanegol o ddata i mewn i'ch bwrdd cronfa ddata. Ailedrych ar ein senario, gadewch i ni gymryd yn ganiataol ein bod wedi gwneud dim ond cupcake newydd sbon. Gan ein bod yn drefnus iawn bwyta cupcake, rydym yn mynd i gael i fewnosod y cupcake newydd yn ein tabl cupcake_cupboard. Mae'r gystrawen i wneud hyn yw hyn: Mewnosod gofod i'r gofod ein bwrdd, cupcake_cupboard, gofod (, ac yma yr ydym yn nodi enwau'r colofnau, amffinio gan goma, CakeType coma CakeColor coma CakeIsNice) gofod. Yn dilyn hyn, byddwn yn ysgrifennu y gair GWERTHOEDD gofod (, a dyma rydym yn mynd i mewn i'r gwerth ar gyfer pob colofn yn y drefn honno, hefyd amffinio gan goma. Un dyfynbris, oherwydd eu bod i gyd yn werthoedd Varchar byddwn yn eu hamgylchynu mewn dyfynodau sengl, 'Coma' menyn pysgnau GOLAU BROWN 'coma Gwir. Nawr, mae'n bwysig bod gan bob rhes rhif unigryw i adnabod ei hun. Autoincrementing colofn yn darparu hyn fel  "Gall Nid oes unrhyw ddau yr un IDs erioed yn bodoli yn y tabl hwn." Gadewch i ni fynd yn ei flaen ac yn gweithredu. Dyna ni fynd, i gyd drefnus. Mae'r datganiad SQL nesaf y byddwn yn ysgrifennu yn ddatganiad diweddaru. Gellir gweld y datganiad diweddaru yn cael ei ddefnyddio i addasu data o fewn colofn gyfer unrhyw res bresennol yn eich tabl cronfa ddata. Yn gynharach yn ein senario, gan ddefnyddio datganiad dethol, nodwyd cupcake o fewn y tabl ein cupcake_cupboard y mae ei gwerth yn CakeIsNice False. Gadewch i ni dybio, er bod ein pysgnau cupcake menyn yn y ffwrn, rydym yn gwneud ein cupcake nid-er-neis iawn 'n glws. Mae bod yn trefnu hynny fel eithriad, rydym am i'n cupcake i adlewyrchu gwerth hwn yn ein tabl cupcake_cupboard. Felly, gadewch i ni ddiweddaru ein cupcake siocled yn y gronfa ddata i adlewyrchu hyn. Y cystrawen yw: DIWEDDARIAD ofod ein bwrdd, cupcake_cupboard, gofod SET gofod y golofn ein bod yn dymuno newid, CakeIsNice =. Yna dyma rydym yn rhoi ein gofod gwerth Gwir newydd. Nawr, oherwydd nid ydym am i ddiweddaru pob rhes gyda gwerth hwn, rydym eisiau darparu "Where" cymal a fydd yn binbwyntio ni i'r rhes union yr ydym am ei addasu. Yn yr achos hwn, rydym yn gwybod nad oes dim ond un cupcake sydd â gwerth CakeIsNice o Anghywir. Ar ben hynny, byddwn hefyd yn sicrhau ein bod yn diweddaru'r rhes gywir trwy ddefnyddio "A" cymal. Rydym yn defnyddio y "A" cymal i fireinio ein ymholiad pellach. Yn yr achos hwn, oherwydd gwyddom fod y cupcake yw siocled, byddwn yn defnyddio'r golofn hon CakeType. BLE gofod ein gofod colofn gofod CakeIsNice amodol = False, a gofod CakeType = 'SIOCLED.' Felly, rhoi'r cwbl at ei gilydd, mae'r datganiad hwn yn dweud diweddariad dod o hyd i holl cacennau bach yn ein cwpwrdd cupcake, ac os oes cupcake ei colofn CakeIsNice yn cynnwys y gwerth False a CakeType yn cynnwys y SIOCLED gwerth, rydym am i ddiweddaru'r gwerth CakeIsNice penodol rhesi i Gwir. Felly, gadewch i ni fynd yn ei flaen a gweithredu'r datganiad. Ac yn awr, rydym yn trefnu. Mae hyn i gyd sôn am cacennau bach wedi fy ngwneud ychydig yn llwglyd. Rwy'n meddwl y dylwn i helpu fy hun i un. Ond os wyf mewn gwirionedd yn bwyta hwn cupcake, dylwn o leiaf hefyd yn dileu ei fodolaeth  oddi wrth ein bwrdd cupcake_cupboard. I wneud hyn, byddwn yn defnyddio y "Dileu" datganiad. Gall y "Dileu" datganiad yn cael ei ddefnyddio i dynnu pob un neu rai rhesi o'r tabl. Os ydych yn dymuno i dynnu rhywfaint rhes benodol o'r tabl, yna rhaid i chi ddarparu "Where" cymal, a thrwy hynny pennu colofn a ddylai fod yn unigryw i'r rhes eich bod yn dymuno i gael gwared. Dyma'r gystrawen: DELETE gofod O le mae ein bwrdd, cupcake_cupboard, gofod. Nawr, ar y pwynt hwn, pryd bynnag y byddwch yn mor bell â hyn yn eich datganiad ddileu ydych chi am fod yn ofalus iawn. Er enghraifft, os ydw i eisiau i redeg y ymholiad fel y mae heb roi rhai "Where" cymal Byddwn yn colli'r holl ddata yn y tabl hwn cupcake_cupboard, ond am fy mod eisoes yn gwybod bod fy IDs gacen yn unigryw, byddaf yn defnyddio ID Velvet gacen Goch ar gyfer fy cymal "Where". BLE gofod ein colofn, CakeID = 1. Gan fod hyn yn werth cyfanrif nid oes angen i amgylchynu'r mewn dyfynodau sengl. Felly, gadewch i ni gyflawni'r datganiad. Wel, yn awr ein bod wedi sychu fodolaeth y cupcake oddi wrth ein bwrdd cupcake_cupboard, dim ond un peth chwith: Ei gwneud yn diflannu. Rwy'n Christopher Bartholomew. Mae hyn yn CS50.