1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [Christopher Jerneja] [Univerzi Harvard] 3 00:00:04,000 --> 00:00:06,000 [To je CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Torej, programerji uporabo podatkovnih baz kot orodje za shranjevanje in organiziranje 5 00:00:11,620 --> 00:00:13,620 naša obstojna podatki v tabelah. 6 00:00:13,620 --> 00:00:18,960 To pomeni, da so vaši podatki shranjeni na nehlapnih median, kot so trdi disk, 7 00:00:18,960 --> 00:00:22,940 in tudi, ko je računalnik izklopljen, so podatki še vedno nedotaknjen. 8 00:00:22,940 --> 00:00:29,530 In, kot programerji, naši programi uporabljajo podatkovne baze za scenarije, kot so skladiščenje 9 00:00:29,530 --> 00:00:32,890 uporabnik podatke iz spletnih obrazcev pogledal seznam, 10 00:00:32,890 --> 00:00:36,210 ali posodabljanje informacij o tem, kaj strani zaslona. 11 00:00:37,150 --> 00:00:40,070 Ampak kako smo dejansko interakcijo z bazo podatkov, 12 00:00:40,070 --> 00:00:43,150 ali kaj bomo uporabili za branje, shranjevanje, brisanje, 13 00:00:43,150 --> 00:00:46,070 in posodobiti svoje podatke v okviru teh tabel zbirke podatkov? 14 00:00:47,280 --> 00:00:49,700 No, odgovor je, da uporabite posebno vrsto jezika zbirke 15 00:00:49,700 --> 00:00:53,400 ki je neposredno povezano z našimi tabelah zbirke podatkov. 16 00:00:53,400 --> 00:00:56,740 To ime je Structured Query Language, 17 00:00:56,740 --> 00:00:58,740 [Structured Query Language] 18 00:00:58,740 --> 00:01:00,740 ali kaj mislim, da je SQL. 19 00:01:00,740 --> 00:01:05,100 >> Zdaj, [Se-quel] ali SQL, ni programski jezik, 20 00:01:05,100 --> 00:01:08,580 ampak, to je jezik, ki ga predvideva standardni nabor ukazov 21 00:01:08,580 --> 00:01:13,520 za pridobivanje in upravljanje podatkov iz različnih sistemov za upravljanje podatkovnih baz. 22 00:01:13,520 --> 00:01:17,630 Za CS50, bova šla skozi štiri osnovne ukaze: 23 00:01:17,630 --> 00:01:21,210 izberite vstavi, posodabljanje in brisanje. 24 00:01:21,210 --> 00:01:26,230 Poleg tega bomo izkoristili vmesnik zbirke podatkov, imenovano spletno phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 ki je nameščen na stroju, da napišete svoje SQL. 26 00:01:30,830 --> 00:01:33,050 Torej, da si boste lažje zapomnili te ukaze, 27 00:01:33,050 --> 00:01:37,080 Prinesel sem nekaj piškote v omari za pomoč pri naših scenarijev. 28 00:01:39,650 --> 00:01:42,210 Recimo, da imate Cupcake v bazo podatkov, 29 00:01:42,210 --> 00:01:44,490 kje hrani podatke o vaši piškote. 30 00:01:44,490 --> 00:01:48,220 Sedaj lahko baze podatkov vsebuje več tabel 31 00:01:48,220 --> 00:01:50,950 in lahko sami tabele vsebujejo veliko stolpcev. 32 00:01:50,950 --> 00:01:57,020 Znotraj baze naše Cupcake, imamo tabelo imenovano cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Ta tabela se bo uporabljala za shranjevanje vseh podatkov o piškote 34 00:02:00,500 --> 00:02:02,990 da so tudi v vaši omari. 35 00:02:02,990 --> 00:02:07,770 Kolone, ki so v vašem tabeli predstavljajo atribute cupcake. 36 00:02:07,770 --> 00:02:14,560 Na primer, v cupcake_cupboard je stolpci 37 00:02:14,560 --> 00:02:15,920 Cake ID, CakeType, CakeColor in CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Ta boolean-natipkan stolpec se uporablja za ugotavljanje, če je lepo torto ali ni lepo. 39 00:02:23,040 --> 00:02:26,560 Bomo začeli s pisanjem izberite izjavo. 40 00:02:26,560 --> 00:02:32,160 Izberite izkazi se uporablja za pridobivanje podatkov za posamezne tabele zbirke podatkov. 41 00:02:32,160 --> 00:02:34,890 V tem primeru želimo, da vedo vse 42 00:02:34,890 --> 00:02:39,080 o vseh piškote, ki obstajajo v naši omari. 43 00:02:39,080 --> 00:02:48,670 Skladnja za to je "Izberi" prostor zvezda, ali *, vesolje iz vesolja naše tabele, 44 00:02:48,670 --> 00:02:52,050 ki je cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Pojdimo in izvršitev tega. 46 00:02:56,670 --> 00:03:00,140 >> Kot lahko vidimo, so vse piškote v naši omari. 47 00:03:00,140 --> 00:03:05,110 Pomembno je omeniti, da *, ali zvezdico, je joker znak 48 00:03:05,110 --> 00:03:08,830 , ki označuje zbiranje vseh stolpcih neke tabele. 49 00:03:08,830 --> 00:03:13,650 Običajno lahko do določenega stolpec ali stolpce 50 00:03:13,650 --> 00:03:16,950 * z zamenjavo z dejanskim imenom stolpca. 51 00:03:16,950 --> 00:03:21,220 Če želimo več stolpcev, a ne vsi, lahko to dosežemo 52 00:03:21,220 --> 00:03:25,620 pisno imena stolpcev razmejitvi vsak stolpec z vejico. 53 00:03:25,620 --> 00:03:28,620 Na primer, recimo, samo naloľiti CakeId in CakeType v cupcake_cupboard tabeli. 54 00:03:28,620 --> 00:03:38,370 Sintaksa za to je: SELECT prostor CakeID vejica 55 00:03:38,370 --> 00:03:44,370 CakeType prostora iz naše tabele, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Gremo naprej in izvedbo tega. 57 00:03:49,340 --> 00:03:52,670 In tukaj imamo sedaj samo dve koloni smo določene 58 00:03:52,670 --> 00:03:54,670 Za vsak cupcake v naši omari. 59 00:03:54,670 --> 00:03:57,710 Prav tako lahko izboljšajo svoje rezultate poizvedbe z navedbo 60 00:03:57,710 --> 00:04:00,910 "Kje klavzula" samo po ime tabele. 61 00:04:02,000 --> 00:04:05,410 Na primer, se zdi, da tortica v naši omari 62 00:04:05,410 --> 00:04:08,660 to je, no, ne tako lepo videti. 63 00:04:08,660 --> 00:04:13,950 Naj razbrati vse piškote v naši omari, ki so, no, ne tako lepo videti 64 00:04:13,950 --> 00:04:16,110 uporabo "Kam" klavzula. 65 00:04:16,110 --> 00:04:26,390 Sintaksa za to je: SELECT prostor * prostor IZ cupcake_cupboard prostora 66 00:04:26,390 --> 00:04:34,080 Prostor, kjer je prostor našega pogojno stolpec, v tem primeru CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 in boolean vrednost False. 68 00:04:36,900 --> 00:04:42,750 Pomembno je opozoriti, da če uporabljate nizov, ga morate priložiti v enojnih narekovajih. 69 00:04:42,750 --> 00:04:49,620 To velja za vse nize v SQL, ali, v smislu SQL baze podatkov, varianta znakov 70 00:04:49,620 --> 00:04:51,620 znan kot varchar datatype. 71 00:04:51,620 --> 00:04:57,660 V tem primeru smo z uporabo True ali False, kar je logična vrednost in ne niz. 72 00:04:59,120 --> 00:05:00,660 Pojdimo in poženite ta ukaz. 73 00:05:00,660 --> 00:05:05,340 >> Lo in vidite, da je res, da imamo 1 čokolado 74 00:05:05,340 --> 00:05:07,920 Ne tako lepo cupcake v naši omari. 75 00:05:09,620 --> 00:05:11,460 Naprej gremo napisati vstaviti izjavo. 76 00:05:11,460 --> 00:05:15,560 Vstavi izjave se uporabljajo za vstavljanje ali dodajanje 77 00:05:15,560 --> 00:05:17,770 dodatne vrstice podatkov v tabeli zbirke podatkov. 78 00:05:17,770 --> 00:05:23,160 Ponovno pregledati naše scenarij, predpostavimo, da smo šele na povsem nov cupcake. 79 00:05:25,910 --> 00:05:30,080 Ker smo zelo organizirana Cupcake jedce, bomo morali vstaviti to novo cupcake 80 00:05:30,080 --> 00:05:32,330 v našem cupcake_cupboard tabeli. 81 00:05:32,330 --> 00:05:40,690 Sintaksa za to je to: Vstavite presledek v vesolje naše tabele, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, presledek (, 83 00:05:46,830 --> 00:05:51,060 in tu določite stolpce imena, ločene z vejico, 84 00:05:51,060 --> 00:05:59,790 CakeType vejico CakeColor vejico CakeIsNice) prostor. 85 00:05:59,790 --> 00:06:06,540 Po tem, pišemo prostor besedo vrednot (in tu 86 00:06:06,540 --> 00:06:12,170 vnesemo vrednosti za vsak stolpec v tem zaporedju, tudi ločene z vejico. 87 00:06:12,170 --> 00:06:17,830 Enojni narekovaj, ker so vse vrednosti varchar jih bomo surround v enojnih narekovajih, 88 00:06:17,830 --> 00:06:26,780 Arašidovo maslo "vejica" svetlo rjava vejica "True. 89 00:06:26,780 --> 00:06:30,480 Zdaj je pomembno, da vsaka vrstica svojo številko, da se identificirajo. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing stolpec določa, da je to 91 00:06:33,660 --> 00:06:37,410  "Ne obstajata dva enaka ID-ji kdaj obstajajo v tej tabeli." 92 00:06:37,410 --> 00:06:39,480 Pojdimo in izvrševanje. 93 00:06:39,480 --> 00:06:45,380 Takole, vse organizirano. 94 00:06:49,720 --> 00:06:52,100 >> Naslednji SQL izjava, da bomo napisali, je sprememba podatkov. 95 00:06:52,100 --> 00:06:55,650 Dopolnitev podatkov je mogoče uporabiti za spreminjanje podatkov v stolpcu 96 00:06:55,650 --> 00:06:58,440 za katerokoli obstoječo vrstico v vaši zbirki podatkov. 97 00:06:59,670 --> 00:07:03,420 Predhodni v našem scenariju, po ožji izjavo, smo ugotovili, tortica 98 00:07:03,420 --> 00:07:08,300 v tabeli naše cupcake_cupboard v katerih CakeIsNice vrednost je False. 99 00:07:08,300 --> 00:07:12,050 Denimo, da medtem ko je naša kikirikijevo maslo cupcake je bila v pečici, 100 00:07:12,050 --> 00:07:15,790 smo naredili, ne-tako-lepo tortica zelo lepo. 101 00:07:18,020 --> 00:07:22,240 Ker je to izjemno organizirano, želimo, da naši cupcake ki bi odražala ta vrednost 102 00:07:22,240 --> 00:07:24,240 v našem cupcake_cupboard tabeli. 103 00:07:24,240 --> 00:07:28,710 Zato dajmo posodobitev naše čokolade cupcake v podatkovni zbirki s tem. 104 00:07:28,710 --> 00:07:39,720 Sintaksa je: UPDATE prostor naša miza, cupcake_cupboard, prostor, prostor 105 00:07:39,720 --> 00:07:44,240 stolpec, ki ga želite spremeniti, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Potem tukaj je temelj naše nove prave vrednosti prostora. 107 00:07:49,210 --> 00:07:54,290 No, saj ne želimo, da posodobite vse vrstice s to vrednostjo, 108 00:07:54,290 --> 00:07:57,400 želimo zagotoviti "Where" klavzule, ki nam bo zelo majhnimi 109 00:07:57,400 --> 00:07:59,830 točno na vrsti, da ga želimo spremeniti. 110 00:07:59,830 --> 00:08:03,690 V tem primeru vemo, da obstaja samo en kolaček 111 00:08:03,690 --> 00:08:06,670 ki ima CakeIsNice vrednost False. 112 00:08:06,670 --> 00:08:11,030 Poleg tega bomo tudi zagotoviti, da bomo posodobiti pravilno vrstico 113 00:08:11,030 --> 00:08:13,030 z uporabo "in" klavzulo. 114 00:08:14,340 --> 00:08:17,270 Mi uporabljamo "in" klavzulo za izboljšanje naše poizvedbe naprej. 115 00:08:17,270 --> 00:08:20,380 V tem primeru, saj vemo, da je cupcake je čokolada, 116 00:08:20,380 --> 00:08:23,160 bomo uporabili to CakeType stolpec. 117 00:08:23,160 --> 00:08:31,500 Kadar prostor naša pogojena stolpec prostor CakeIsNice prostor = False, 118 00:08:31,500 --> 00:08:38,330 in prostor CakeType = "ČOKOLADA". 119 00:08:38,330 --> 00:08:41,880 Torej, ga je dala vse skupaj, ta posodobitev saopsstenju 120 00:08:41,880 --> 00:08:44,670 našli vse piškote v naši Cupcake omari, 121 00:08:44,670 --> 00:08:50,520 in če je cupcake katerega stolpec CakeIsNice vsebuje vrednost False 122 00:08:50,520 --> 00:08:54,130 in CakeType vsebuje vrednost čokolado, 123 00:08:54,130 --> 00:08:58,240 želimo posodobiti posebne CakeIsNice vrstic vrednost True. 124 00:08:58,240 --> 00:09:01,140 Torej, gremo naprej in izvedbo izjavo. 125 00:09:03,860 --> 00:09:05,860 In zdaj smo organizirali smo. 126 00:09:06,650 --> 00:09:09,220 >> Vse to govorjenje o piškote sem bil malo lačen. 127 00:09:09,220 --> 00:09:11,360 Mislim, da bi morala sama pomagati enemu. 128 00:09:11,360 --> 00:09:17,670 Ampak, če sem dejansko poje to cupcake, naj vsaj odpravila tudi njen obstoj 129 00:09:17,670 --> 00:09:19,670  iz naše cupcake_cupboard mizo. 130 00:09:20,650 --> 00:09:22,590 Če želite to narediti, bomo uporabili "Delete" izjavo. 131 00:09:22,590 --> 00:09:27,400 V "Delete" Izjava se lahko uporabi, da odstranite vse ali nekatere vrstice iz tabele. 132 00:09:27,400 --> 00:09:29,920 Če želite odstraniti nekaj posebno vrstico iz tabele, 133 00:09:29,920 --> 00:09:34,360 potem morate zagotoviti "Where" klavzule, s čimer se podate stolpec 134 00:09:34,360 --> 00:09:37,660 da bi morala biti enotna za vrstico, ki jo želite odstraniti. 135 00:09:37,660 --> 00:09:47,370 To je sintaksa: DELETE FROM prostor prostor naša miza, cupcake_cupboard, prostor. 136 00:09:47,370 --> 00:09:51,760 Zdaj, v tem trenutku, ko ste tako daleč v svoji izjavi za brisanje 137 00:09:51,760 --> 00:09:54,240 hočeš biti zelo previdni. 138 00:09:54,240 --> 00:09:59,970 Na primer, če želim izvesti to vprašanje, kot je, ne da nekaj "Kje" klavzule 139 00:09:59,970 --> 00:10:04,500 Jaz bi izgubili vse podatke v tej tabeli cupcake_cupboard, 140 00:10:04,500 --> 00:10:09,590 ampak zato, ker že vem, da so moje torto ID edinstvena, bom uporabo 141 00:10:09,590 --> 00:10:12,410 Red Velvet torta ID za mojo "kje" klavzule. 142 00:10:14,550 --> 00:10:20,670 KJE prostor naša kolona, ​​CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Ker je to celo vrednost ni potrebe, da ga obkroža v enojnih narekovajih. 144 00:10:25,010 --> 00:10:27,020 Torej, kaj je izvršitev izjavo. 145 00:10:33,560 --> 00:10:35,990 No, zdaj, ko smo obrisal obstoj te cupcake 146 00:10:35,990 --> 00:10:40,360 iz naše cupcake_cupboard mizi, imamo samo eno stvar levi: 147 00:10:41,680 --> 00:10:43,680 Naj bo izginila. 148 00:10:43,680 --> 00:10:46,990 Sem Christopher Bartolomeja. To je CS50.