1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [Christopher Bartolomé] [Universitato Harvard] 3 00:00:04,000 --> 00:00:06,000 [THIS IS CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Do, programistoj uzas datumbazoj kiel ilo por stoki kaj organizi 5 00:00:11,620 --> 00:00:13,620 nia konstanta datumoj ene tabloj. 6 00:00:13,620 --> 00:00:18,960 Tio signifas ke via datumoj stokitaj sur ne-volátil medianoj kiel malmola disko, 7 00:00:18,960 --> 00:00:22,940 kaj eĉ kiam la komputilo estas malŝaltita, la datumoj estas ankoraŭ nerompita. 8 00:00:22,940 --> 00:00:29,530 Kaj, kiel programistoj, niaj programoj uzi datumbazojn por scenejoj kiel provizon 9 00:00:29,530 --> 00:00:32,890 uzanto informoj el retejo formoj, rigardante supren inventaro, 10 00:00:32,890 --> 00:00:36,210 aŭ ĝisdatigi informojn pri kio lokoj montri. 11 00:00:37,150 --> 00:00:40,070 Sed kiel ni efektive interagi kun nia datumbazo, 12 00:00:40,070 --> 00:00:43,150 aŭ kion ni uzas por legi, stoki, forigi, 13 00:00:43,150 --> 00:00:46,070 kaj ĝisdatigi niaj datumoj ene de ĉi tiuj datumbazo tabloj? 14 00:00:47,280 --> 00:00:49,700 Nu, la respondo estas, ke ni uzas specialan tipon de datumbazo lingvo 15 00:00:49,700 --> 00:00:53,400 kiuj interagas rekte kun nia datumbazo tabloj. 16 00:00:53,400 --> 00:00:56,740 Ĝi estas nomo Strukturita Query Language, 17 00:00:56,740 --> 00:00:58,740 [Strukturita Query Language] 18 00:00:58,740 --> 00:01:00,740 aŭ kion mi raportas kiel SQL. 19 00:01:00,740 --> 00:01:05,100 >> Nun, [Se-quel], aŭ SQL, ne estas programlingvo, 20 00:01:05,100 --> 00:01:08,580 sed anstataŭe, ĝi estas lingvo, kiun havigas normo aron da ordonoj 21 00:01:08,580 --> 00:01:13,520 por elsxuti kaj manipuli datumojn de vario de datumbazo mastrumado sistemoj. 22 00:01:13,520 --> 00:01:17,630 Por la celo de CS50, ni transiru kvar bazaj komandoj: 23 00:01:17,630 --> 00:01:21,210 elektu, enigi, ĝisdatigi kaj forviŝi. 24 00:01:21,210 --> 00:01:26,230 Plue, ni uzas datumbazo retejo interfaco nomita phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 kiuj instalita sur la aparaton por skribi nian SQL deklaroj. 26 00:01:30,830 --> 00:01:33,050 Do, por helpi vin memori tiujn ordonojn, 27 00:01:33,050 --> 00:01:37,080 Mi alportis kelkajn cupcakes en ŝranko por helpi kun niaj scenejoj. 28 00:01:39,650 --> 00:01:42,210 Diru vi havas cupcake la datumbazo, 29 00:01:42,210 --> 00:01:44,490 kie vi stoki tutan informon pri via cupcakes. 30 00:01:44,490 --> 00:01:48,220 Nun, datumbazoj, povas enhavi multaj tabloj 31 00:01:48,220 --> 00:01:50,950 kaj la tabloj sin povas enhavi multaj kolumnoj. 32 00:01:50,950 --> 00:01:57,020 Ene de nia cupcake la datumbazo, ni havas tabulon nomita cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Ĉi tiu tabelo estos uzita por stoki tutan informon pri cupcakes 34 00:02:00,500 --> 00:02:02,990 kiuj estas, nu, en via ŝranko. 35 00:02:02,990 --> 00:02:07,770 La kolumnoj kiuj estas en via tablo reprezentas la atributoj de cupcake. 36 00:02:07,770 --> 00:02:14,560 Ekzemple, la cupcake_cupboard la kolumnoj estas 37 00:02:14,560 --> 00:02:15,920 Kuko ID, CakeType, CakeColor, kaj CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Ĉi bulea-tajpitaj kolumno estas uzata por determini se la kuko estas bela aŭ ne bela. 39 00:02:23,040 --> 00:02:26,560 Ni tuj komencu per skribado unuaranga komunikaĵo. 40 00:02:26,560 --> 00:02:32,160 Elektu deklaroj estas uzataj por elsxuti datumoj de aparta datumbazon tablo. 41 00:02:32,160 --> 00:02:34,890 En ĉi tiu scenaro, ni volas scii cxion 42 00:02:34,890 --> 00:02:39,080 pri la tuta cupcakes kiuj ekzistas en nia sxranko. 43 00:02:39,080 --> 00:02:48,670 La sintakso por fari ĉi tiu estas "Select" spacon stelo, aux *, spaco de spaco nia tablo, 44 00:02:48,670 --> 00:02:52,050 kio estas cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Ni iru antaŭen kaj ekzekuti tio. 46 00:02:56,670 --> 00:03:00,140 >> Kiel ni povas vidi, tiuj estas ĉiuj cupcakes en nia sxranko. 47 00:03:00,140 --> 00:03:05,110 Estas grave noti, ke *, aŭ asterisko, estas ĵokero karaktero 48 00:03:05,110 --> 00:03:08,830 ke signifas la renkontiĝo de ĉiuj kolumnoj de iu tablo. 49 00:03:08,830 --> 00:03:13,650 Kutime, ni povas aliri specifa kolumno aŭ kolumnoj 50 00:03:13,650 --> 00:03:16,950 anstataŭante * kun la efektiva kolumno nomo. 51 00:03:16,950 --> 00:03:21,220 Se ni volas multnombraj kolumnoj, sed ne ĉiuj, ni povas atingi tiun 52 00:03:21,220 --> 00:03:25,620 skribante la kolumno nomoj limigi ĉiu kolumno de komo. 53 00:03:25,620 --> 00:03:28,620 Ekzemple, ni nur elsxuti la CakeId kaj CakeType en la cupcake_cupboard tablo. 54 00:03:28,620 --> 00:03:38,370 La sintakso por fari ĉi tio estas: SELECT spaco CakeID komo 55 00:03:38,370 --> 00:03:44,370 CakeType spaco de nia tablo, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Ni iru antaŭen kaj ekzekuti ĉi. 57 00:03:49,340 --> 00:03:52,670 Kaj tie, ni nun nur havas la du kolumnojn ni specifita 58 00:03:52,670 --> 00:03:54,670 por ĉiu cupcake en nia sxranko. 59 00:03:54,670 --> 00:03:57,710 Ni povas ankaŭ rafini nia query results erojn specifigante 60 00:03:57,710 --> 00:04:00,910 la "Kie" klaŭzon ĝuste post la tablo nomo. 61 00:04:02,000 --> 00:04:05,410 Ekzemple, tie ŝajnas esti cupcake en nia sxranko 62 00:04:05,410 --> 00:04:08,660 tio estas, nu, ne tiel bela rigardante. 63 00:04:08,660 --> 00:04:13,950 Ni kalkuli ĉiujn cupcakes en nia sxranko kiu estas, nu, ne tiel bela rigardis 64 00:04:13,950 --> 00:04:16,110 uzante la "Kie" klaŭzon. 65 00:04:16,110 --> 00:04:26,390 La sintakso por fari ĉi tio estas: SELECT spaco * spaco EL spaco cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 spaco KIE spaco nia kondiĉa kolumno, en ĉi tiu kazo CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 kaj la bulea valoro de False. 68 00:04:36,900 --> 00:04:42,750 Estas grave noti, ke se vi uzas kordojn, vi devas kunsendi ĝin en unuopa citaĵoj. 69 00:04:42,750 --> 00:04:49,620 Tio estas vera por ĉiuj kordoj en SQL, aŭ, en SQL datumbazo terminoj, varianto karakteroj 70 00:04:49,620 --> 00:04:51,620 konata kiel Varchar Datumtipo. 71 00:04:51,620 --> 00:04:57,660 En ĉi tiu kazo, ni uzas Vera aŭ Falsa, kiu estas bulea valoro kaj ne ĉenon. 72 00:04:59,120 --> 00:05:00,660 Ni iru antaŭen kaj ekzekuti ĉi komando. 73 00:05:00,660 --> 00:05:05,340 >> Jen kaj jen estas la kazo, ke ni havas 1 ĉokoladon 74 00:05:05,340 --> 00:05:07,920 ne tiel bela cupcake en nia sxranko. 75 00:05:09,620 --> 00:05:11,460 Poste, ni iras al skribi insert komunikaĵo. 76 00:05:11,460 --> 00:05:15,560 Insert deklaroj estas uzataj por enmeti aŭ aldoni 77 00:05:15,560 --> 00:05:17,770 pliaj vicoj de datumoj en la datumbazo tabelo. 78 00:05:17,770 --> 00:05:23,160 Revizitado nia hipotezo, ni supozu, ke ni ĵus faris tute nova cupcake. 79 00:05:25,910 --> 00:05:30,080 Ĉar ni estas tre organizita cupcake manĝoĉambrojn, ni tuj devos enmeti tiun novan cupcake 80 00:05:30,080 --> 00:05:32,330 en nia cupcake_cupboard tablo. 81 00:05:32,330 --> 00:05:40,690 La sintakso por fari ĉi estas jena: Enmetu spaco enen spaco nia tablo, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, spaco (, 83 00:05:46,830 --> 00:05:51,060 kaj tie ni indikas la kolumnoj nomoj, limigita de komo, 84 00:05:51,060 --> 00:05:59,790 CakeType komo CakeColor komo CakeIsNice) spaco. 85 00:05:59,790 --> 00:06:06,540 Post tio, ni skribu la vorton valoroj spaco (kaj ĉi tie 86 00:06:06,540 --> 00:06:12,170 ni eniras la valoron por ĉiu kolumno respektive, ankaŭ limigita de komo. 87 00:06:12,170 --> 00:06:17,830 Sola citaĵo, ĉar ili ĉiuj estas Varchar valoroj ni ĉirkaŭas ilin en simpla citaĵoj, 88 00:06:17,830 --> 00:06:26,780 Peanut butter 'komo' LUMO BRUNA 'komo Vera. 89 00:06:26,780 --> 00:06:30,480 Nun, estas grava por doni ĉiu vico unika numero por identigi sin. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing kolumnon havigas tion kiel 91 00:06:33,660 --> 00:06:37,410  "Ne du la samajn IDs povas iam ekzisti en ĉi tiu tabulo." 92 00:06:37,410 --> 00:06:39,480 Ni iru antaŭen kaj ekzekuti. 93 00:06:39,480 --> 00:06:45,380 Tie ni iru, ĉiuj organizitaj. 94 00:06:49,720 --> 00:06:52,100 >> La venonta SQL aserto ke ni skribos estas ĝisdatigo komunikaĵo. 95 00:06:52,100 --> 00:06:55,650 La ĝisdatigo deklaro povas esti uzata por modifi datumoj ene de kolumno 96 00:06:55,650 --> 00:06:58,440 por ajna ekzistanta vico en via datumbaza tabelo. 97 00:06:59,670 --> 00:07:03,420 Pli frue en niaj scenaro, uzante unuaranga deklaro, ni identigis cupcake 98 00:07:03,420 --> 00:07:08,300 ene de nia cupcake_cupboard tablo kies CakeIsNice valoro estis Falsa. 99 00:07:08,300 --> 00:07:12,050 Ni supozu, ke dum nia mani buteron cupcake estis en la forno, 100 00:07:12,050 --> 00:07:15,790 ni faris nian ne tiel agrabla cupcake tre agrabla. 101 00:07:18,020 --> 00:07:22,240 Estante tiel escepte organizitaj, ni volas nian cupcake pripensi tiun valoron 102 00:07:22,240 --> 00:07:24,240 en nia cupcake_cupboard tablo. 103 00:07:24,240 --> 00:07:28,710 Tial, ni ĝisdatigi nian ĉokolado cupcake en la datumbazo por pripensi tion. 104 00:07:28,710 --> 00:07:39,720 La sintakso estas: UPDATE spaco nia tablo, cupcake_cupboard, spaco SERIO spaco 105 00:07:39,720 --> 00:07:44,240 la kolumno, ke ni deziras ŝanĝi, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Tiam jen ni metas nian novan valoron True spaco. 107 00:07:49,210 --> 00:07:54,290 Nun, ĉar ni ne volas ĝisdatigi ĉiujn vicojn kun tiu valoro, 108 00:07:54,290 --> 00:07:57,400 ni volas proponi "Kie" klaŭzon kiu marki ni 109 00:07:57,400 --> 00:07:59,830 al la ĝusta vico ke ni volas modifi. 110 00:07:59,830 --> 00:08:03,690 En ĉi tiu kazo, ni scias, ke ekzistas nur unu cupcake 111 00:08:03,690 --> 00:08:06,670 kiu havas CakeIsNice valoro de False. 112 00:08:06,670 --> 00:08:11,030 Plue, ni ankaŭ certigi ke ni ĝisdatigi la korekta vico 113 00:08:11,030 --> 00:08:13,030 uzante la "Kaj" klaŭzon. 114 00:08:14,340 --> 00:08:17,270 Ni uzas la "Kaj" klaŭzon por rafini nia query plu. 115 00:08:17,270 --> 00:08:20,380 En ĉi tiu kazo, ĉar ni scias ke la cupcake estas ĉokolado, 116 00:08:20,380 --> 00:08:23,160 ni uzos ĉi CakeType kolumno. 117 00:08:23,160 --> 00:08:31,500 KIE spaco nia kondiĉa kolumna spaco CakeIsNice spaco = False, 118 00:08:31,500 --> 00:08:38,330 kaj spaco CakeType = 'CHOCOLATE.' 119 00:08:38,330 --> 00:08:41,880 Do, metante ĉion kune, ĉi tiu ĝisdatigo deklaro diras 120 00:08:41,880 --> 00:08:44,670 trovi ĉiujn cupcakes en nia cupcake ŝranko, 121 00:08:44,670 --> 00:08:50,520 kaj se estas cupcake kies kolumno CakeIsNice enhavas la valoron False 122 00:08:50,520 --> 00:08:54,130 kaj CakeType enhavas la valoron CHOCOLATE, 123 00:08:54,130 --> 00:08:58,240 ni volas ĝisdatigi la specifa vicoj CakeIsNice valoro al True. 124 00:08:58,240 --> 00:09:01,140 Do, ni iru antaŭen kaj ekzekuti la komunikaĵo. 125 00:09:03,860 --> 00:09:05,860 Kaj nun, ni organizas. 126 00:09:06,650 --> 00:09:09,220 >> Ĉiuj ĉi diskuto de cupcakes faris min iom malsata. 127 00:09:09,220 --> 00:09:11,360 Mi kredas ke mi devus helpi min al unu. 128 00:09:11,360 --> 00:09:17,670 Sed se mi vere manĝi ĉi cupcake, mi devus almenaŭ ankaŭ eltiri lian ekziston 129 00:09:17,670 --> 00:09:19,670  de nia cupcake_cupboard tablo. 130 00:09:20,650 --> 00:09:22,590 Por fari tion, ni uzos la "Forigi" komunikaĵo. 131 00:09:22,590 --> 00:09:27,400 La "Forigi" frazo povas esti uzata por forigi ĉiuj aŭ iu vicoj de la tablo. 132 00:09:27,400 --> 00:09:29,920 Se vi volas forigi iun specifan vicon de la tablo, 133 00:09:29,920 --> 00:09:34,360 tiam vi devas havigi "Kie" klaŭzo, tiel preciziganta kolumno 134 00:09:34,360 --> 00:09:37,660 kiuj devus esti unika al la vico ke vi volas forigi. 135 00:09:37,660 --> 00:09:47,370 Ĉi tiu estas la sintakso: DELETE spaco EL spaco nia tablo, cupcake_cupboard, spaco. 136 00:09:47,370 --> 00:09:51,760 Nun, je ĉi tiu punkto, kiam ajn vi estas ĉi tie en via delete komunikaĵo 137 00:09:51,760 --> 00:09:54,240 volas esti atentema. 138 00:09:54,240 --> 00:09:59,970 Ekzemple, se mi volas kuri ĉi query kiel estas sen havigi iujn "Kie" klaŭzo 139 00:09:59,970 --> 00:10:04,500 Mi perdus la tutan datumojn en ĉi cupcake_cupboard tablo, 140 00:10:04,500 --> 00:10:09,590 sed ĉar mi jam scias, ke mia kuko IDs estas solaj, mi uzas 141 00:10:09,590 --> 00:10:12,410 la Ruĝa Veluro kuko ID por mia "Kie" klaŭzon. 142 00:10:14,550 --> 00:10:20,670 KIE spaco nia kolumno, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Ĉar ĉi tio estas entjera valoro ne estas neceso por ĉirkaŭi ĝin en unuopa citaĵoj. 144 00:10:25,010 --> 00:10:27,020 Do, ni ekzekuti la komunikaĵo. 145 00:10:33,560 --> 00:10:35,990 Nu, nun ke ni viŝis la ekzisto de ĉi cupcake 146 00:10:35,990 --> 00:10:40,360 de nia cupcake_cupboard tablo, ni nur havas unu afero maldekstra: 147 00:10:41,680 --> 00:10:43,680 Make it malaperi. 148 00:10:43,680 --> 00:10:46,990 Mi Christopher Bartolomé. Ĉi tiu estas CS50.