1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [BARTHOLOMEW CHRISTOPHER] [HARVARD UNIVERSITY] 3 00:00:04,000 --> 00:00:06,000 [HWN YW CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Felly, rhaglenwyr defnyddio cronfeydd data fel offeryn i storio a threfnu 5 00:00:11,620 --> 00:00:13,620 ein data parhaus mewn tablau. 6 00:00:13,620 --> 00:00:18,960 Mae hyn yn golygu bod eich data yn cael ei storio ar dir nad yw'n anweddol canolrifau fel 'n anawdd cathrena, 7 00:00:18,960 --> 00:00:22,940 a hyd yn oed pan fydd y cyfrifiadur wedi'i ddiffodd, mae'r data yn dal yn gyfan. 8 00:00:22,940 --> 00:00:29,530 Ac, fel rhaglenwyr, mae ein rhaglenni yn defnyddio cronfeydd data ar gyfer sefyllfaoedd o'r fath fel storio 9 00:00:29,530 --> 00:00:32,890 gwybodaeth defnyddwyr o ffurflenni ar y we, edrych i fyny rhestr, 10 00:00:32,890 --> 00:00:36,210 neu ddiweddaru gwybodaeth am yr hyn y safleoedd arddangos. 11 00:00:37,150 --> 00:00:40,070 Ond sut yn union ydym ni'n rhyngweithio â'n cronfa ddata, 12 00:00:40,070 --> 00:00:43,150 neu beth ydyn ni'n eu defnyddio i ddarllen, storio, dileu, 13 00:00:43,150 --> 00:00:46,070 ac yn diweddaru ein data o fewn y tablau cronfa ddata? 14 00:00:47,280 --> 00:00:49,700 Wel, yr ateb yw ein bod yn defnyddio math arbennig o iaith cronfa ddata 15 00:00:49,700 --> 00:00:53,400 sy'n rhyngweithio yn uniongyrchol gyda'n tablau cronfa ddata. 16 00:00:53,400 --> 00:00:56,740 Mae ei enw yn cael ei strwythuro o Iaith Ymholiad, 17 00:00:56,740 --> 00:00:58,740 [Iaith Ymholiad Strwythuredig] 18 00:00:58,740 --> 00:01:00,740 neu beth y cyfeiriaf ato fel SQL. 19 00:01:00,740 --> 00:01:05,100 >> Yn awr, [Se-QueL], neu beidio SQL, yn iaith raglennu, 20 00:01:05,100 --> 00:01:08,580 ond yn hytrach, mae'n iaith sy'n darparu set safonol o orchmynion 21 00:01:08,580 --> 00:01:13,520 i adfer a thrin data o amrywiaeth o systemau rheoli cronfa ddata. 22 00:01:13,520 --> 00:01:17,630 At ddibenion CS50, byddwn yn mynd dros bedair gorchmynion sylfaenol: 23 00:01:17,630 --> 00:01:21,210 dewis, mewnosod, diweddaru a dileu. 24 00:01:21,210 --> 00:01:26,230 Ar ben hynny, byddwn yn defnyddio cronfa ddata rhyngwyneb ar y we o'r enw phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 oedd yn ei osod ar y peiriant i ysgrifennu ein datganiadau SQL. 26 00:01:30,830 --> 00:01:33,050 Felly, i'ch helpu i gofio gorchmynion hyn, 27 00:01:33,050 --> 00:01:37,080 Rydw i wedi dod â rhai cacennau bach mewn cwpwrdd i gynorthwyo gyda'n senarios. 28 00:01:39,650 --> 00:01:42,210 Dywedwch eich bod chi wedi cronfa ddata cupcake, yn 29 00:01:42,210 --> 00:01:44,490 lle byddwch yn cadw holl wybodaeth am eich cacennau bach. 30 00:01:44,490 --> 00:01:48,220 Yn awr, gall cronfeydd data yn cynnwys llawer o dablau 31 00:01:48,220 --> 00:01:50,950 a gall y tablau eu hunain yn cynnwys colofnau lawer. 32 00:01:50,950 --> 00:01:57,020 Y tu mewn cronfa ddata ein cupcake yn, mae gennym tabl o'r enw cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Bydd y tabl yn cael ei ddefnyddio i storio holl wybodaeth am cacennau bach 34 00:02:00,500 --> 00:02:02,990 sydd, yn dda, yn eich cwpwrdd. 35 00:02:02,990 --> 00:02:07,770 Mae'r colofnau sydd y tu mewn i'ch bwrdd yn cynrychioli nodweddion o cupcake. 36 00:02:07,770 --> 00:02:14,560 Er enghraifft, colofnau y cupcake_cupboard yw 37 00:02:14,560 --> 00:02:15,920 Cacen ID, CakeType, CakeColor, a CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Mae'r golofn hon yn boolean-deipio yn cael ei ddefnyddio i benderfynu os yw'r gacen yn neis neu beidio 'n glws. 39 00:02:23,040 --> 00:02:26,560 Rydym yn mynd i ddechrau gydag ysgrifennu datganiad dethol. 40 00:02:26,560 --> 00:02:32,160 Datganiadau Dethol yn cael eu defnyddio i adalw data o dabl cronfa ddata penodol. 41 00:02:32,160 --> 00:02:34,890 Yn y sefyllfa hon, rydym eisiau gwybod popeth 42 00:02:34,890 --> 00:02:39,080 am yr holl cacennau bach sy'n bodoli yn ein cwpwrdd. 43 00:02:39,080 --> 00:02:48,670 Mae'r chystrawen i wneud hyn yw seren ofod "Dewis", neu *, gofod o'r gofod ein bwrdd, 44 00:02:48,670 --> 00:02:52,050 sydd yn cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Gadewch i ni fynd yn ei flaen ac yn gweithredu hynny. 46 00:02:56,670 --> 00:03:00,140 >> Fel y gallwn weld, mae'r rhain i gyd yn y cupcakes yn ein cwpwrdd. 47 00:03:00,140 --> 00:03:05,110 Mae'n bwysig nodi bod *, neu seren, yn gymeriad cerdyn gwyllt 48 00:03:05,110 --> 00:03:08,830 sy'n dynodi'r casglu holl golofnau rhai tabl. 49 00:03:08,830 --> 00:03:13,650 Fel arfer, gallwn gael gafael ar golofn penodol neu golofnau 50 00:03:13,650 --> 00:03:16,950 drwy ddisodli'r * gydag enw'r golofn ei hun. 51 00:03:16,950 --> 00:03:21,220 Os ydym am golofnau lluosog, ond nid pob un, gallwn gyflawni hyn 52 00:03:21,220 --> 00:03:25,620 drwy ysgrifennu enwau'r golofn delimiting pob colofn gan atalnod. 53 00:03:25,620 --> 00:03:28,620 Er enghraifft, gadewch i ni dim ond adfer y CakeId a CakeType yn y tabl cupcake_cupboard. 54 00:03:28,620 --> 00:03:38,370 Mae'r gystrawen i wneud hyn yw: coma CakeID gofod SELECT 55 00:03:38,370 --> 00:03:44,370 Gofod CakeType gan ein, cupcake_cupboard tabl. 56 00:03:44,370 --> 00:03:46,370 Gadewch i ni fynd yn ei flaen a gweithredu hyn. 57 00:03:49,340 --> 00:03:52,670 Ac yma, mae gennym bellach dim ond y ddwy golofn i ni bennu 58 00:03:52,670 --> 00:03:54,670 ar gyfer pob cupcake yn ein cwpwrdd. 59 00:03:54,670 --> 00:03:57,710 Gallwn hefyd fireinio ein canlyniadau ymholiad drwy bennu 60 00:03:57,710 --> 00:04:00,910 y "Where" cymal yn union ar ôl yr enw tabl. 61 00:04:02,000 --> 00:04:05,410 Er enghraifft, mae'n ymddangos i fod yn cupcake yn ein cwpwrdd 62 00:04:05,410 --> 00:04:08,660 hynny yw, ddim yn dda, felly 'n glws edrych. 63 00:04:08,660 --> 00:04:13,950 Gadewch i chyfrif i maes yr holl cacennau bach yn ein cwpwrdd sy'n cael eu, nid yn dda, felly 'n glws edrych 64 00:04:13,950 --> 00:04:16,110 defnyddio'r "Where" cymal. 65 00:04:16,110 --> 00:04:26,390 Mae'r gystrawen i wneud hyn yw: gofod SELECT * O le cupcake_cupboard gofod 66 00:04:26,390 --> 00:04:34,080 gofod BLE gofod ein colofn amodol, yn yr achos hwn CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 a gwerth boolaidd o Anghywir. 68 00:04:36,900 --> 00:04:42,750 Mae'n bwysig nodi os ydych yn defnyddio llinynnau, rhaid i chi amgáu mewn dyfynodau sengl. 69 00:04:42,750 --> 00:04:49,620 Mae hyn yn wir ar gyfer yr holl dannau yn SQL, neu, o ran gronfa ddata SQL cymeriadau amrywiol, 70 00:04:49,620 --> 00:04:51,620 a elwir yn Varchar datatype. 71 00:04:51,620 --> 00:04:57,660 Yn yr achos hwn, rydym yn defnyddio Gwir neu Gau, sydd yn werth boolaidd ac nid yn llinyn. 72 00:04:59,120 --> 00:05:00,660 Gadewch i ni fynd yn ei flaen a gweithredu gorchymyn hwn. 73 00:05:00,660 --> 00:05:05,340 >> Lo ac wele, mae'n wir ein bod wedi 1 siocled 74 00:05:05,340 --> 00:05:07,920 Nid yw mor braf cupcake yn ein cwpwrdd. 75 00:05:09,620 --> 00:05:11,460 Nesaf, rydym yn mynd i ysgrifennu datganiad rhowch. 76 00:05:11,460 --> 00:05:15,560 Datganiadau Mewnosod cael eu defnyddio i mewnosod neu ychwanegu 77 00:05:15,560 --> 00:05:17,770 rhesi ychwanegol o ddata i mewn i'ch bwrdd cronfa ddata. 78 00:05:17,770 --> 00:05:23,160 Ailedrych ar ein senario, gadewch i ni gymryd yn ganiataol ein bod wedi gwneud dim ond cupcake newydd sbon. 79 00:05:25,910 --> 00:05:30,080 Gan ein bod yn drefnus iawn bwyta cupcake, rydym yn mynd i gael i fewnosod y cupcake newydd 80 00:05:30,080 --> 00:05:32,330 yn ein tabl cupcake_cupboard. 81 00:05:32,330 --> 00:05:40,690 Mae'r gystrawen i wneud hyn yw hyn: Mewnosod gofod i'r gofod ein bwrdd, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, gofod (, 83 00:05:46,830 --> 00:05:51,060 ac yma yr ydym yn nodi enwau'r colofnau, amffinio gan goma, 84 00:05:51,060 --> 00:05:59,790 CakeType coma CakeColor coma CakeIsNice) gofod. 85 00:05:59,790 --> 00:06:06,540 Yn dilyn hyn, byddwn yn ysgrifennu y gair GWERTHOEDD gofod (, a dyma 86 00:06:06,540 --> 00:06:12,170 rydym yn mynd i mewn i'r gwerth ar gyfer pob colofn yn y drefn honno, hefyd amffinio gan goma. 87 00:06:12,170 --> 00:06:17,830 Un dyfynbris, oherwydd eu bod i gyd yn werthoedd Varchar byddwn yn eu hamgylchynu mewn dyfynodau sengl, 88 00:06:17,830 --> 00:06:26,780 'Coma' menyn pysgnau GOLAU BROWN 'coma Gwir. 89 00:06:26,780 --> 00:06:30,480 Nawr, mae'n bwysig bod gan bob rhes rhif unigryw i adnabod ei hun. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing colofn yn darparu hyn fel 91 00:06:33,660 --> 00:06:37,410  "Gall Nid oes unrhyw ddau yr un IDs erioed yn bodoli yn y tabl hwn." 92 00:06:37,410 --> 00:06:39,480 Gadewch i ni fynd yn ei flaen ac yn gweithredu. 93 00:06:39,480 --> 00:06:45,380 Dyna ni fynd, i gyd drefnus. 94 00:06:49,720 --> 00:06:52,100 >> Mae'r datganiad SQL nesaf y byddwn yn ysgrifennu yn ddatganiad diweddaru. 95 00:06:52,100 --> 00:06:55,650 Gellir gweld y datganiad diweddaru yn cael ei ddefnyddio i addasu data o fewn colofn 96 00:06:55,650 --> 00:06:58,440 gyfer unrhyw res bresennol yn eich tabl cronfa ddata. 97 00:06:59,670 --> 00:07:03,420 Yn gynharach yn ein senario, gan ddefnyddio datganiad dethol, nodwyd cupcake 98 00:07:03,420 --> 00:07:08,300 o fewn y tabl ein cupcake_cupboard y mae ei gwerth yn CakeIsNice False. 99 00:07:08,300 --> 00:07:12,050 Gadewch i ni dybio, er bod ein pysgnau cupcake menyn yn y ffwrn, 100 00:07:12,050 --> 00:07:15,790 rydym yn gwneud ein cupcake nid-er-neis iawn 'n glws. 101 00:07:18,020 --> 00:07:22,240 Mae bod yn trefnu hynny fel eithriad, rydym am i'n cupcake i adlewyrchu gwerth hwn 102 00:07:22,240 --> 00:07:24,240 yn ein tabl cupcake_cupboard. 103 00:07:24,240 --> 00:07:28,710 Felly, gadewch i ni ddiweddaru ein cupcake siocled yn y gronfa ddata i adlewyrchu hyn. 104 00:07:28,710 --> 00:07:39,720 Y cystrawen yw: DIWEDDARIAD ofod ein bwrdd, cupcake_cupboard, gofod SET gofod 105 00:07:39,720 --> 00:07:44,240 y golofn ein bod yn dymuno newid, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Yna dyma rydym yn rhoi ein gofod gwerth Gwir newydd. 107 00:07:49,210 --> 00:07:54,290 Nawr, oherwydd nid ydym am i ddiweddaru pob rhes gyda gwerth hwn, 108 00:07:54,290 --> 00:07:57,400 rydym eisiau darparu "Where" cymal a fydd yn binbwyntio ni 109 00:07:57,400 --> 00:07:59,830 i'r rhes union yr ydym am ei addasu. 110 00:07:59,830 --> 00:08:03,690 Yn yr achos hwn, rydym yn gwybod nad oes dim ond un cupcake 111 00:08:03,690 --> 00:08:06,670 sydd â gwerth CakeIsNice o Anghywir. 112 00:08:06,670 --> 00:08:11,030 Ar ben hynny, byddwn hefyd yn sicrhau ein bod yn diweddaru'r rhes gywir 113 00:08:11,030 --> 00:08:13,030 trwy ddefnyddio "A" cymal. 114 00:08:14,340 --> 00:08:17,270 Rydym yn defnyddio y "A" cymal i fireinio ein ymholiad pellach. 115 00:08:17,270 --> 00:08:20,380 Yn yr achos hwn, oherwydd gwyddom fod y cupcake yw siocled, 116 00:08:20,380 --> 00:08:23,160 byddwn yn defnyddio'r golofn hon CakeType. 117 00:08:23,160 --> 00:08:31,500 BLE gofod ein gofod colofn gofod CakeIsNice amodol = False, 118 00:08:31,500 --> 00:08:38,330 a gofod CakeType = 'SIOCLED.' 119 00:08:38,330 --> 00:08:41,880 Felly, rhoi'r cwbl at ei gilydd, mae'r datganiad hwn yn dweud diweddariad 120 00:08:41,880 --> 00:08:44,670 dod o hyd i holl cacennau bach yn ein cwpwrdd cupcake, 121 00:08:44,670 --> 00:08:50,520 ac os oes cupcake ei colofn CakeIsNice yn cynnwys y gwerth False 122 00:08:50,520 --> 00:08:54,130 a CakeType yn cynnwys y SIOCLED gwerth, 123 00:08:54,130 --> 00:08:58,240 rydym am i ddiweddaru'r gwerth CakeIsNice penodol rhesi i Gwir. 124 00:08:58,240 --> 00:09:01,140 Felly, gadewch i ni fynd yn ei flaen a gweithredu'r datganiad. 125 00:09:03,860 --> 00:09:05,860 Ac yn awr, rydym yn trefnu. 126 00:09:06,650 --> 00:09:09,220 >> Mae hyn i gyd sôn am cacennau bach wedi fy ngwneud ychydig yn llwglyd. 127 00:09:09,220 --> 00:09:11,360 Rwy'n meddwl y dylwn i helpu fy hun i un. 128 00:09:11,360 --> 00:09:17,670 Ond os wyf mewn gwirionedd yn bwyta hwn cupcake, dylwn o leiaf hefyd yn dileu ei fodolaeth 129 00:09:17,670 --> 00:09:19,670  oddi wrth ein bwrdd cupcake_cupboard. 130 00:09:20,650 --> 00:09:22,590 I wneud hyn, byddwn yn defnyddio y "Dileu" datganiad. 131 00:09:22,590 --> 00:09:27,400 Gall y "Dileu" datganiad yn cael ei ddefnyddio i dynnu pob un neu rai rhesi o'r tabl. 132 00:09:27,400 --> 00:09:29,920 Os ydych yn dymuno i dynnu rhywfaint rhes benodol o'r tabl, 133 00:09:29,920 --> 00:09:34,360 yna rhaid i chi ddarparu "Where" cymal, a thrwy hynny pennu colofn 134 00:09:34,360 --> 00:09:37,660 a ddylai fod yn unigryw i'r rhes eich bod yn dymuno i gael gwared. 135 00:09:37,660 --> 00:09:47,370 Dyma'r gystrawen: DELETE gofod O le mae ein bwrdd, cupcake_cupboard, gofod. 136 00:09:47,370 --> 00:09:51,760 Nawr, ar y pwynt hwn, pryd bynnag y byddwch yn mor bell â hyn yn eich datganiad ddileu 137 00:09:51,760 --> 00:09:54,240 ydych chi am fod yn ofalus iawn. 138 00:09:54,240 --> 00:09:59,970 Er enghraifft, os ydw i eisiau i redeg y ymholiad fel y mae heb roi rhai "Where" cymal 139 00:09:59,970 --> 00:10:04,500 Byddwn yn colli'r holl ddata yn y tabl hwn cupcake_cupboard, 140 00:10:04,500 --> 00:10:09,590 ond am fy mod eisoes yn gwybod bod fy IDs gacen yn unigryw, byddaf yn defnyddio 141 00:10:09,590 --> 00:10:12,410 ID Velvet gacen Goch ar gyfer fy cymal "Where". 142 00:10:14,550 --> 00:10:20,670 BLE gofod ein colofn, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Gan fod hyn yn werth cyfanrif nid oes angen i amgylchynu'r mewn dyfynodau sengl. 144 00:10:25,010 --> 00:10:27,020 Felly, gadewch i ni gyflawni'r datganiad. 145 00:10:33,560 --> 00:10:35,990 Wel, yn awr ein bod wedi sychu fodolaeth y cupcake 146 00:10:35,990 --> 00:10:40,360 oddi wrth ein bwrdd cupcake_cupboard, dim ond un peth chwith: 147 00:10:41,680 --> 00:10:43,680 Ei gwneud yn diflannu. 148 00:10:43,680 --> 00:10:46,990 Rwy'n Christopher Bartholomew. Mae hyn yn CS50.