1 00:00:00,000 --> 00:00:03,493 >> [Predvaja glasba] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 Doug LLOYD: V naših video posnetkov Na spletnih razvojnih temah, 4 00:00:07,100 --> 00:00:10,560 smo omenili koncept zbirka podatkov nekajkrat, kajne? 5 00:00:10,560 --> 00:00:12,700 Torej podatkovna baza ste verjetno seznanjeni z od 6 00:00:12,700 --> 00:00:15,780 pravijo uporabo Microsoft Excel ali Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 To je res samo organizirano niz tabel, vrstic in stolpcev. 8 00:00:20,650 --> 00:00:23,140 >> In je podatkovna baza, kjer naše spletne trgovine 9 00:00:23,140 --> 00:00:26,760 informacije, ki so pomembne za našo spletno stran, da deluje pravilno. 10 00:00:26,760 --> 00:00:30,150 Še enkrat, res običajen primer tukaj je shranjevanje uporabniških imen in gesel 11 00:00:30,150 --> 00:00:32,824 v podatkovno bazo, tako da, ko uporabnik prijavi v naši spletni strani, 12 00:00:32,824 --> 00:00:36,690 baze podatkov se lahko poizveduje za prikaz če obstaja, da si v bazo podatkov. 13 00:00:36,690 --> 00:00:39,260 In če so, preverjanje, njihovo geslo je pravilno. 14 00:00:39,260 --> 00:00:43,420 In če je njihova geslo pravilna, Nato smo jim karkoli strani lahko dam 15 00:00:43,420 --> 00:00:45,370 oni zahtevajo. 16 00:00:45,370 --> 00:00:48,590 >> Torej ste verjetno spet pozna s to idejo iz Excela ali Google 17 00:00:48,590 --> 00:00:49,430 Preglednic. 18 00:00:49,430 --> 00:00:52,980 Imamo podatkovnih baz, tabele, vrstice in stolpce. 19 00:00:52,980 --> 00:00:56,450 In to je res nekako temeljnega niza 20 00:00:56,450 --> 00:00:58,470 od hierarhične členitve tukaj. 21 00:00:58,470 --> 00:00:59,800 Torej, tukaj je Excel. 22 00:00:59,800 --> 00:01:02,640 In če ste kdaj to odprta ali drug podoben program 23 00:01:02,640 --> 00:01:06,780 veš, da tukaj gre za rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 To so stebri. 25 00:01:08,760 --> 00:01:11,790 >> Mogoče sem dol, čeprav si lahko to funkcijo ne uporabljajte strašno much-- 26 00:01:11,790 --> 00:01:15,370 Bom povečavo in-- imamo ta ideja stanja. 27 00:01:15,370 --> 00:01:17,930 Mogoče ti listi, če Sem izmenično naprej in nazaj, 28 00:01:17,930 --> 00:01:21,600 različne tabele, ki obstajajo v moji zbirki podatkov. 29 00:01:21,600 --> 00:01:25,210 In če bomo še naprej zgled vse pot, ime te baze podatkov 30 00:01:25,210 --> 00:01:26,940 je knjiga 1. 31 00:01:26,940 --> 00:01:28,710 Mogoče imam Book 2 in rezervirajte 3. 32 00:01:28,710 --> 00:01:33,270 Torej vsak Excel datoteka Podatkovna baza, vsak list je tabela, 33 00:01:33,270 --> 00:01:39,530 in znotraj vsakega mizi imam ta ideja vrstic in stolpcev. 34 00:01:39,530 --> 00:01:41,900 >> Torej, kako naj delam s to zbirko podatkov? 35 00:01:41,900 --> 00:01:43,630 Kako dobim informacije od njega? 36 00:01:43,630 --> 00:01:47,540 No, tam je jezik imenuje SQL-- ki sem ponavadi samo pokliči Sequel-- 37 00:01:47,540 --> 00:01:50,010 in se zavzema za Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 In to je programski jezik, ampak to je precej omejena programiranje 39 00:01:52,981 --> 00:01:53,480 jezik. 40 00:01:53,480 --> 00:01:56,407 To ni čisto tako kot drugi da smo delali s. 41 00:01:56,407 --> 00:01:58,240 Toda namen tega programski jezik 42 00:01:58,240 --> 00:02:01,570 je, da se pozanima bazo podatkov, da vprašajte podatke iz baze podatkov, 43 00:02:01,570 --> 00:02:04,480 iskanje informacij v Sistemu Podatkovna baza, in tako naprej. 44 00:02:04,480 --> 00:02:08,449 >> Prav tako je v CS50-- in to je zelo skupna platforma, je pozval MySQL. 45 00:02:08,449 --> 00:02:10,600 To je tisto, kar bomo uporabili v teku. 46 00:02:10,600 --> 00:02:12,880 To je open source platforma, ki vzpostavlja 47 00:02:12,880 --> 00:02:16,732 tako imenovani relacijske database-- baze podatkov, učinkovito. 48 00:02:16,732 --> 00:02:18,440 Mi ne potrebujemo, da bi dobili v preveč podrobnosti 49 00:02:18,440 --> 00:02:20,930 o tem, kaj je relacijska podatkovna baza. 50 00:02:20,930 --> 00:02:24,650 Toda SQL jezik zelo spretni pri delajo 51 00:02:24,650 --> 00:02:29,760 z MySQL in druge podobne stili relacijskih podatkovnih baz. 52 00:02:29,760 --> 00:02:34,010 >> In številne inštalacije MySQL pridejo z nečim 53 00:02:34,010 --> 00:02:37,760 imenovano phpMyAdmin, ki je grafični uporabniški 54 00:02:37,760 --> 00:02:40,970 interface-- je GUI-- da zaradi česar je malo bolj 55 00:02:40,970 --> 00:02:44,410 uporabniku prijazen izvršiti poizvedbe zbirke podatkov, 56 00:02:44,410 --> 00:02:48,980 ker so baze podatkov, ne samo uporablja z naprednimi programerji, kajne? 57 00:02:48,980 --> 00:02:51,510 Včasih obstajajo ta mala podjetja, 58 00:02:51,510 --> 00:02:53,900 in si ne morejo privoščiti, da bi najeti ekipo programerjev, 59 00:02:53,900 --> 00:02:56,700 vendar jih še vedno potrebujejo za shranjevanje Podatki v zbirki podatkov. 60 00:02:56,700 --> 00:02:59,300 >> Nekaj ​​podobnega phpMyAdmin je zelo enostavno za nekoga 61 00:02:59,300 --> 00:03:03,630 ki je nikoli ni programiran prej pick up in se seznanili s tem, kako 62 00:03:03,630 --> 00:03:07,710 za delo z bazo podatkov. 63 00:03:07,710 --> 00:03:11,800 Problem je, phpMyAdmin, medtem to je fantastično orodje za učenje 64 00:03:11,800 --> 00:03:14,850 o bazah podatkov, je ročno. 65 00:03:14,850 --> 00:03:18,050 Boste morali prijaviti v to in izvajanje ukazov in vrste 66 00:03:18,050 --> 00:03:19,910 stvari v ročno. 67 00:03:19,910 --> 00:03:23,160 >> In kot vemo iz naše Primer za PHP programiranje web, 68 00:03:23,160 --> 00:03:26,550 ob ročno narediti stvari na naši spletni strani, 69 00:03:26,550 --> 00:03:30,970 če želimo, dinamičen, aktiven odziven spletna stran, morda ni najboljši pristop. 70 00:03:30,970 --> 00:03:33,980 Radi bi, da bi našli pot do morda avtomatizirati to nekako. 71 00:03:33,980 --> 00:03:37,864 In nam bo SQL omogočiti, da to storijo. 72 00:03:37,864 --> 00:03:39,780 Torej, ko bomo začeti delati z SQL, 73 00:03:39,780 --> 00:03:41,220 moramo najprej imeti Podatkovna baza za delo z. 74 00:03:41,220 --> 00:03:42,510 Ustvarjanje baze podatkov je nekaj, kar verjetno 75 00:03:42,510 --> 00:03:45,350 bo naredil v phpMyAdmin, saj morate le, da to storite enkrat, 76 00:03:45,350 --> 00:03:49,690 in sintakso za to je veliko bolj enostavno. 77 00:03:49,690 --> 00:03:51,940 To je veliko lažje, da to storite v grafičnega uporabniškega vmesnika 78 00:03:51,940 --> 00:03:53,520 kot da ga vnesete ven kot ukaz. 79 00:03:53,520 --> 00:03:55,186 Ukaz lahko dobili malo okorni. 80 00:03:55,186 --> 00:03:58,889 Podobno ustvarja tabelo lahko dobili kar precej zapleten, kot dobro. 81 00:03:58,889 --> 00:04:01,930 In tako stvari, kot so ustvarjanje baze podatkov in ustvarjanje tabelo, ki ste 82 00:04:01,930 --> 00:04:06,270 Verjetno samo boš naredil once-- enkrat na mizi, enkrat na database-- 83 00:04:06,270 --> 00:04:09,040 to je v redu, da to storim v grafični vmesnik. 84 00:04:09,040 --> 00:04:11,570 V procesu ustvariti tabelo, boste 85 00:04:11,570 --> 00:04:14,840 tudi opredeliti vse stebri, ki bodo v tej tabeli. 86 00:04:14,840 --> 00:04:18,149 Kakšne informacije storiti želite shraniti v tabeli? 87 00:04:18,149 --> 00:04:24,520 Mogoče naštejemo uporabnikov in datum rojstva, gesla, uporabniški ID številko, in morda 88 00:04:24,520 --> 00:04:26,170 mesto in državo, kajne? 89 00:04:26,170 --> 00:04:30,080 >> In vsakič, ko želimo dodati uporabnika do baze podatkov, želimo, da bi dobili vseh šest 90 00:04:30,080 --> 00:04:31,890 teh informacijami. 91 00:04:31,890 --> 00:04:34,840 In to storimo z dodajanjem vrstic k mizi. 92 00:04:34,840 --> 00:04:37,800 Torej moramo najprej ustvariti bazo podatkov, Nato smo ustvarili tabelo. 93 00:04:37,800 --> 00:04:40,100 Kot del ustvarjanja miza, smo vprašal 94 00:04:40,100 --> 00:04:44,280 navesti vsak stolpec, ki Radi bi v tej tabeli. 95 00:04:44,280 --> 00:04:47,247 In potem, kot smo začeli, da dodate Podatki v podatkovno bazo 96 00:04:47,247 --> 00:04:49,580 in se pozanima podatkovna baza več generally-- ne samo dodal, 97 00:04:49,580 --> 00:04:51,610 ampak vse ostalo smo do-- bomo ukvarjajo 98 00:04:51,610 --> 00:04:58,870 z vrstic v tabeli, ki je ena Podatki uporabnikov iz celotnega sklopa. 99 00:04:58,870 --> 00:05:03,210 >> Torej vsak SQL stolpec je sposoben držite podatke določenega podatkovnega tipa. 100 00:05:03,210 --> 00:05:06,560 Tako smo nekako odpraviti to Ideja vrste podatkov v PHP, 101 00:05:06,560 --> 00:05:08,747 ampak oni so spet tukaj v SQL. 102 00:05:08,747 --> 00:05:10,080 In tam je veliko podatkovnih tipov. 103 00:05:10,080 --> 00:05:13,420 Tu je samo 20 od njih, ampak to ni še vse od njih. 104 00:05:13,420 --> 00:05:16,240 Torej imamo ideje, kot INTs-- Integers-- bomo verjetno veste 105 00:05:16,240 --> 00:05:17,760 da lahko ta stolpec imajo cela. 106 00:05:17,760 --> 00:05:21,077 In obstajajo razlike thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Mogoče ne bomo vedno potrebovali štiri ugrizi. 108 00:05:22,660 --> 00:05:26,800 Morda bomo potrebovali osem bajtov, in tako smo Lahko uporabite te razlike na števil 109 00:05:26,800 --> 00:05:28,510 da bo malo več prostora učinkovito. 110 00:05:28,510 --> 00:05:31,899 Mi lahko naredimo decimalnih številk, smo lahko storite s plavajočo vejico. 111 00:05:31,899 --> 00:05:32,940 To so precej podobni. 112 00:05:32,940 --> 00:05:34,773 Obstajajo nekatere razlike, in če bi 113 00:05:34,773 --> 00:05:37,330 želeli pogledati gor SQL nekako vodilo, boste 114 00:05:37,330 --> 00:05:40,670 lahko videli, kaj se rahlo Razlike so med njimi. 115 00:05:40,670 --> 00:05:43,250 >> Morda želimo shraniti informacije o datumu in času. 116 00:05:43,250 --> 00:05:47,047 Mogoče smo sledenja ko uporabnik pridružil našo spletno stran, 117 00:05:47,047 --> 00:05:48,880 in zato morda želimo da ima steber, ki je 118 00:05:48,880 --> 00:05:52,820 čas, datum ali časovni žig, ki označuje ko uporabnik dejansko 119 00:05:52,820 --> 00:05:54,130 prijavili. 120 00:05:54,130 --> 00:05:56,132 Mi lahko naredimo geometrij in linestrings. 121 00:05:56,132 --> 00:05:57,340 To je pravzaprav zelo kul. 122 00:05:57,340 --> 00:06:01,410 Mi lahko karto ven Geografsko območje uporabe 123 00:06:01,410 --> 00:06:05,110 GIS koordinate parcelo iz območja. 124 00:06:05,110 --> 00:06:08,580 Tako dejansko lahko shranite, da se takšne informacij v stolpcu SQL. 125 00:06:08,580 --> 00:06:11,390 >> BESEDILO je le velikan mehurčki besedila, morda. 126 00:06:11,390 --> 00:06:12,840 ENUMs so nekako zanimivo. 127 00:06:12,840 --> 00:06:16,080 Dejansko obstajajo v C. Mi ne govori o njih, ker oni ne 128 00:06:16,080 --> 00:06:19,110 strašno pogosto uporablja, vsaj CS50. 129 00:06:19,110 --> 00:06:22,680 Ampak to je našteta vrsta podatkov, ki je sposobna zadržati omejene vrednosti. 130 00:06:22,680 --> 00:06:25,940 >> Res dober primer tukaj bi ustvariti ENUM, kjer sedem 131 00:06:25,940 --> 00:06:29,394 možne vrednosti so nedelja, ponedeljek, Torek, sreda, četrtek, petek, 132 00:06:29,394 --> 00:06:30,060 Sobota, kajne? 133 00:06:30,060 --> 00:06:33,311 Ta vrsta podatkov dan Teden ne obstaja, 134 00:06:33,311 --> 00:06:35,310 vendar smo lahko ustvarite našteta vrsta podatkov, kot 135 00:06:35,310 --> 00:06:39,400 da lahko ta kolona le vedno drži eden od teh sedmih možnih vrednosti. 136 00:06:39,400 --> 00:06:44,300 Mi smo našteli vse od možnih vrednosti. 137 00:06:44,300 --> 00:06:47,630 >> Potem imamo CHAR in VARCHAR, in sem barve Ta zelena 138 00:06:47,630 --> 00:06:49,505 ker smo dejansko bo trajalo sekundo 139 00:06:49,505 --> 00:06:51,950 govoriti o razliki med tema dvema stvarema. 140 00:06:51,950 --> 00:06:55,780 Torej CHAR, za razliko od C, kjer CHAR je bil en sam znak, 141 00:06:55,780 --> 00:07:00,730 v SQL char nanaša določen niz dolžine. 142 00:07:00,730 --> 00:07:02,620 In ko smo ustvarili to stolpec, smo dejansko 143 00:07:02,620 --> 00:07:05,070 lahko določite dolžino niza. 144 00:07:05,070 --> 00:07:08,080 >> Torej v tem primeru, lahko bi rekli CHAR (10). 145 00:07:08,080 --> 00:07:11,190 To pomeni, da je vsak element te kolone 146 00:07:11,190 --> 00:07:13,910 bo sestavljen iz 10 bajtov podatkov. 147 00:07:13,910 --> 00:07:15,770 Nič več, nič manj. 148 00:07:15,770 --> 00:07:21,780 Torej, če se trudimo in dal v 15 bit ali element 15 znakov 149 00:07:21,780 --> 00:07:25,340 ali vrednost v tem stolpcu, smo dobili le prvo 10. 150 00:07:25,340 --> 00:07:27,290 Če smo se v dveh značaj dolgo vrednost, 151 00:07:27,290 --> 00:07:30,700 bomo imeli dva znakov, nato pa osem null ugrizi. 152 00:07:30,700 --> 00:07:34,990 Nikoli ne bomo bolj učinkoviti kot to. 153 00:07:34,990 --> 00:07:37,727 >> VARCHAR je nekako kot naš pojem niz 154 00:07:37,727 --> 00:07:39,560 da smo seznanjeni s izmed C ali PHP. 155 00:07:39,560 --> 00:07:40,830 To je spremenljiva dolžina niz. 156 00:07:40,830 --> 00:07:42,560 In ko ustvarite ta stolpec, ki ste jo pravkar 157 00:07:42,560 --> 00:07:44,860 določa največje možne dolžine. 158 00:07:44,860 --> 00:07:49,065 Torej, morda 99 ali običajno 255. 159 00:07:49,065 --> 00:07:50,440 To bi bila največja dolžina. 160 00:07:50,440 --> 00:07:52,890 In tako, če smo bili shranjevanje 15 znakov niz, 161 00:07:52,890 --> 00:07:56,157 bomo uporabili 15 bajtov, morda 16 bajti za null terminator. 162 00:07:56,157 --> 00:07:57,990 Če smo bili shranjevanje tri niz znakov, 163 00:07:57,990 --> 00:08:01,120 bomo uporabili tri ali štiri bajte. 164 00:08:01,120 --> 00:08:03,050 Vendar pa ne bi uporabil polno 99. 165 00:08:03,050 --> 00:08:05,190 >> Torej, zakaj bi imeli oboje? 166 00:08:05,190 --> 00:08:08,210 No, če smo morali ugotoviti, kako Dokler je nekaj z VARCHAR, 167 00:08:08,210 --> 00:08:10,680 moramo vrste ponovitev čez to šele radi smo v C 168 00:08:10,680 --> 00:08:12,230 in ugotoviti, kje se ustavi. 169 00:08:12,230 --> 00:08:15,920 Ker se, če vemo, da je vse V tem stolpcu je 10 bajtov, morda 170 00:08:15,920 --> 00:08:19,220 vemo, da so informacije, da lahko skoči 10 bajtov, 10 bajtov, 10 bajtov, 10 bajtov, 171 00:08:19,220 --> 00:08:21,790 in vedno najdejo začetka niza. 172 00:08:21,790 --> 00:08:25,210 >> Tako bomo lahko imeli nekateri zapravljen prostor z CHAR, 173 00:08:25,210 --> 00:08:28,510 a morda obstaja trgovina off imajo boljšo hitrost 174 00:08:28,510 --> 00:08:30,160 na navigacijo baze podatkov. 175 00:08:30,160 --> 00:08:32,330 Ampak morda želimo, Fleksibilnost je varchar 176 00:08:32,330 --> 00:08:36,710 namesto having-- Če naš CHAR je bilo 255, vendar je večina naših uporabnikov 177 00:08:36,710 --> 00:08:40,537 so samo vnesla tri ali štiri bajte vredno informacij ali tri ali štiri 178 00:08:40,537 --> 00:08:41,870 znaki vredno informacij. 179 00:08:41,870 --> 00:08:44,324 >> Ampak nekateri uporabniki so uporabljali celotna 255, morda 180 00:08:44,324 --> 00:08:45,990 VARCHAR bi bilo bolj primerno tam. 181 00:08:45,990 --> 00:08:49,840 To je neke vrste kompromis, in na splošno za namene CS50, 182 00:08:49,840 --> 00:08:54,107 vam ni treba skrbeti preveč o ali uporabite CHAR ali VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Toda v resničnem svetu, te stvari pa važno, ker so vse te stolpce 184 00:08:57,190 --> 00:08:59,300 traja do dejanskega fizičnega prostora. 185 00:08:59,300 --> 00:09:04,150 In fizični prostor, v realnem svetu, prihaja na premijo. 186 00:09:04,150 --> 00:09:06,800 >> Torej, eno drugo obravnavo Ko ste izgradnjo mizo 187 00:09:06,800 --> 00:09:09,840 je, da izberete en stolpec, da bi kar se imenuje primarni ključ. 188 00:09:09,840 --> 00:09:14,350 In primarni ključ je stolpec kjer je vsak vrednost unikatna. 189 00:09:14,350 --> 00:09:19,980 In to pomeni, da lahko enostavno izločiti enovrstna samo jih je videti 190 00:09:19,980 --> 00:09:22,450 Na primarnem ključu tej vrstici. 191 00:09:22,450 --> 00:09:24,580 Tako na primer, na splošno, z uporabniki, 192 00:09:24,580 --> 00:09:27,210 Ne želim dveh uporabnikov, ki imajo enako uporabniški ID številko. 193 00:09:27,210 --> 00:09:28,960 In tako morda imate veliko informacij, 194 00:09:28,960 --> 00:09:30,793 in morda dva lahko uporabniki imajo enako name-- 195 00:09:30,793 --> 00:09:32,650 imate John Smith in John Smith. 196 00:09:32,650 --> 00:09:34,520 To ni nujno težava, ker obstaja več ljudi 197 00:09:34,520 --> 00:09:35,830 na svetu z imenom John Smith. 198 00:09:35,830 --> 00:09:40,766 Vendar imamo le en uporabniški ID številko 10, en uporabnik številka 11, 12, 13 ID. 199 00:09:40,766 --> 00:09:42,640 Nimamo dveh uporabnikov z isto številko, 200 00:09:42,640 --> 00:09:46,010 in tako morda uporabniški ID številke bi bila dobra primarni ključ. 201 00:09:46,010 --> 00:09:48,610 >> Nimamo nobenega podvajanja, in bomo lahko zdaj nedvomno 202 00:09:48,610 --> 00:09:52,619 identificirati vsak vrstico tik ga je videti na ta stolpec. 203 00:09:52,619 --> 00:09:55,410 Izbira primarne ključe lahko dejansko bi nadaljnje poslovanje tabele 204 00:09:55,410 --> 00:09:59,710 veliko lažje, saj lahko vzvod dejstvo, da so nekatere vrstice bo 205 00:09:59,710 --> 00:10:02,720 biti edinstvena, ali neka stolpec vaše baze podatkov ali tabele 206 00:10:02,720 --> 00:10:06,030 bo edinstvena izbrati od posebne vrste. 207 00:10:06,030 --> 00:10:08,790 >> Lahko imajo tudi skupno primarni ključ, ki ga lahko najdejo priložnost 208 00:10:08,790 --> 00:10:11,720 za uporabo, ki je le Kombinacija dveh stolpcih, ki 209 00:10:11,720 --> 00:10:13,280 je zagotovljeno, da je edinstven. 210 00:10:13,280 --> 00:10:16,410 Mogoče imate eno stolpec, ki je tako in Bs, 211 00:10:16,410 --> 00:10:19,290 en stolpec, ki je ena, dva, in tri, vendar boste le kdaj 212 00:10:19,290 --> 00:10:23,660 imajo en sam A1, enoten A2, in tako naprej in tako naprej. 213 00:10:23,660 --> 00:10:28,980 Ampak morda imate B2, A C2, ali A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Torej, imate morda več kot, multipla Bs, več tisti, več dvojke, 215 00:10:32,840 --> 00:10:38,567 vendar lahko samo kdaj ima enojna A1, B2, C3, in tako naprej. 216 00:10:38,567 --> 00:10:40,400 Torej, kot sem rekel, SQL je programski jezik, 217 00:10:40,400 --> 00:10:42,024 vendar ima precej omejen besednjak. 218 00:10:42,024 --> 00:10:44,880 To ni čisto tako širok, kot je C in PHP in drugih jezikih 219 00:10:44,880 --> 00:10:46,350 da govorimo v teku. 220 00:10:46,350 --> 00:10:49,960 To je bolj verbose jezik, kot tisto, kar smo 221 00:10:49,960 --> 00:10:52,789 dogaja, da govorimo o pri tem video, saj v tem videu 222 00:10:52,789 --> 00:10:54,830 bomo govorili o štiri operacije, da smo 223 00:10:54,830 --> 00:10:55,720 lahko izvaja na mizi. 224 00:10:55,720 --> 00:10:56,761 >> Obstaja več kot to. 225 00:10:56,761 --> 00:10:58,730 Lahko storimo več kot to, vendar za naše namene, 226 00:10:58,730 --> 00:11:02,250 smo na splošno bodo s pomočjo samo štiri operations-- vložek, 227 00:11:02,250 --> 00:11:05,360 izberite, posodobitev in brisanje. 228 00:11:05,360 --> 00:11:08,750 In ti si verjetno lahko intuitivno uganiti kaj vse štiri od teh stvari narediti. 229 00:11:08,750 --> 00:11:12,520 Bom, ampak gremo v malo podrobnosti o vsakega od njih. 230 00:11:12,520 --> 00:11:15,780 >> Torej za namene tega video, predpostavimo 231 00:11:15,780 --> 00:11:18,870 smo naslednjih dveh tabele v enotni bazi podatkov. 232 00:11:18,870 --> 00:11:23,460 Imamo tabelo imenovano uporabnike, ki jih ima štiri columns-- ID številko, uporabniško ime, 233 00:11:23,460 --> 00:11:25,350 geslo, ime in priimek. 234 00:11:25,350 --> 00:11:27,430 In imamo sekundo tabelo v isti podatkovni bazi 235 00:11:27,430 --> 00:11:32,129 imenuje mame, ki so pravkar shranjuje informacije o ime in mati. 236 00:11:32,129 --> 00:11:33,920 Torej za vse primere v tem videu, bomo 237 00:11:33,920 --> 00:11:37,945 je treba uporabo te podatkovne baze in poznejše posodobitve z njo. 238 00:11:37,945 --> 00:11:40,070 Torej, recimo, da želimo Dodajanje informacij za mizo. 239 00:11:40,070 --> 00:11:44,460 To je tisto, kar operacija vložek počne. 240 00:11:44,460 --> 00:11:46,550 Pri pojasnjevanju vse ti ukazi, jaz grem 241 00:11:46,550 --> 00:11:48,860 da bi vam splošno ogrodje za uporabo. 242 00:11:48,860 --> 00:11:51,661 Ker v bistvu, poizvedb gredo videz precej podoben, 243 00:11:51,661 --> 00:11:54,660 smo le, da bo treba spreminjajoče nekoliko različni informaciji 244 00:11:54,660 --> 00:11:56,750 storiti z mizi različne stvari. 245 00:11:56,750 --> 00:11:59,200 >> Torej za vstavljanje, okostja izgleda nekako takole. 246 00:11:59,200 --> 00:12:02,230 Želimo, da vstavite posebno tabelo. 247 00:12:02,230 --> 00:12:05,290 Potem imamo odprt oklepaj in seznam stolpcev 248 00:12:05,290 --> 00:12:08,070 da želimo postaviti vrednote. 249 00:12:08,070 --> 00:12:10,974 Zapri oklepaje je po vrednosti, nato pa 250 00:12:10,974 --> 00:12:13,390 spet smo seznam vrednote, želimo postaviti na mizo. 251 00:12:13,390 --> 00:12:15,950 >> Torej primer tega bi bili naslednji. 252 00:12:15,950 --> 00:12:19,170 Hočem vstaviti v tabelo Uporabniki naslednje columns-- 253 00:12:19,170 --> 00:12:21,010 uporabniško ime, geslo in fullname. 254 00:12:21,010 --> 00:12:25,282 Torej novo vrstico, kjer sem dajanje v teh treh stolpcih in smo 255 00:12:25,282 --> 00:12:30,030 bo dal v vrednosti Newman, USMAIL in Newman. 256 00:12:30,030 --> 00:12:32,730 Torej, v tem primeru sem dajanje male Newman 257 00:12:32,730 --> 00:12:38,710 v kolono uporabniškim imenom, geslo USMAIL ter polno ime kapital N 258 00:12:38,710 --> 00:12:41,940 Newman v kolono FULLNAME. 259 00:12:41,940 --> 00:12:44,240 >> Torej, tukaj je, kaj je baza podatkov izgledala prej. 260 00:12:44,240 --> 00:12:48,250 Evo, kaj tabela uporabniki na top izgledala preden bomo to storili. 261 00:12:48,250 --> 00:12:50,760 Ko smo izvršiti to poizvedbe, smo dobili to. 262 00:12:50,760 --> 00:12:54,790 Dodali smo novo vrstico v tabelo. 263 00:12:54,790 --> 00:12:56,810 Ampak obvestilo, to eno stvar da nisem določite, 264 00:12:56,810 --> 00:12:59,880 ampak nekako imam vrednosti , kar je za to 12 tukaj. 265 00:12:59,880 --> 00:13:02,820 Nisem rekel, da sem si želel dal ID številka tam. 266 00:13:02,820 --> 00:13:04,900 Želel sem dati ime, geslo, fullname. 267 00:13:04,900 --> 00:13:06,440 In sem to storil, da je v redu. 268 00:13:06,440 --> 00:13:07,760 >> Ampak sem tudi dobil to 12. 269 00:13:07,760 --> 00:13:09,490 Zakaj sem to dobil 12? 270 00:13:09,490 --> 00:13:12,904 No, izkaže se, da ko se opredeljujejo 271 00:13:12,904 --> 00:13:15,570 stolpec, da se bo vaš primarni ključ, ki je običajno, 272 00:13:15,570 --> 00:13:16,510 kot sem rekel, identifikacijsko številko. 273 00:13:16,510 --> 00:13:18,718 To ni nujno vedno dogaja, da je identifikacijska številka, 274 00:13:18,718 --> 00:13:22,380 ampak to je običajno dobra ideja, da neke vrste celoštevilsko vrednost. 275 00:13:22,380 --> 00:13:25,950 Imate možnost v phpMyAdmin ko ste ustvarili svojo zbirko podatkov 276 00:13:25,950 --> 00:13:31,130 ali vašo mizo, da določi, da Kolona auto povečevanje. 277 00:13:31,130 --> 00:13:34,520 >> Ki je res dobra ideja, ko delate s primarnim ključem, 278 00:13:34,520 --> 00:13:39,330 ker želite vse vrednosti v tem stolpcu, da je edinstven. 279 00:13:39,330 --> 00:13:43,310 In če ste pozabili, da določite je za več kot eno osebo, 280 00:13:43,310 --> 00:13:46,240 imate zdaj situacijo, v kateri da kolona ni več edinstven. 281 00:13:46,240 --> 00:13:50,200 Imate dve prazne, tako da lahko brez več enolično identifikacijo column-- 282 00:13:50,200 --> 00:13:54,150 ali si ne more več enolično določiti vrstico, ki temelji na tej koloni. 283 00:13:54,150 --> 00:13:57,010 To je izgubila vse njene vrednost kot primarni ključ. 284 00:13:57,010 --> 00:14:02,010 >> In tako očitno, kaj sem naredil Tukaj je nastavljen uporabniški ID 285 00:14:02,010 --> 00:14:07,790 stolpec auto prirastek, tako da je vsak Čas dodam podatke na mizo, 286 00:14:07,790 --> 00:14:12,220 se bo samodejno mi vrednost za primarni ključ. 287 00:14:12,220 --> 00:14:15,570 Torej, jaz nikoli ne more pozabiti, da to storite, ker baza podatkov, bo to za mano. 288 00:14:15,570 --> 00:14:16,587 Tako da je nekako lepo. 289 00:14:16,587 --> 00:14:18,670 In da je, zakaj smo dobili 12 tja, ker sem 290 00:14:18,670 --> 00:14:21,772 nastavite, da kolono do auto prirastka. 291 00:14:21,772 --> 00:14:23,730 Če sem dodal nekoga drugega da bi bilo 13, če sem dodal 292 00:14:23,730 --> 00:14:27,890 nekdo drug bi bilo 14, in tako naprej. 293 00:14:27,890 --> 00:14:30,190 >> Torej, kaj je samo naredil še eno vstavljanje. 294 00:14:30,190 --> 00:14:34,530 Bomo vstavite v tabelo mame, v zlasti ime in mati 295 00:14:34,530 --> 00:14:37,390 stolpcu vrednosti kramer in Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 In tako smo to imeli prej. 297 00:14:39,140 --> 00:14:41,800 Ko smo izvršiti, da SQL poizvedba, imamo to. 298 00:14:41,800 --> 00:14:47,290 Dodali smo Kramer in Babs Kramer na mizo mame. 299 00:14:47,290 --> 00:14:48,350 >> Tako, da je vstavljanje. 300 00:14:48,350 --> 00:14:51,850 SELECT je tisto, kar bomo uporabili za pridobivanje Podatki iz tabele. 301 00:14:51,850 --> 00:14:54,390 Torej, to je, kako bomo dobili Podatki iz baze podatkov. 302 00:14:54,390 --> 00:14:59,589 In tako izberete ukaze se bodo Zelo pogosto se uporabljajo pri programiranju. 303 00:14:59,589 --> 00:15:02,130 Splošni framework-- splošno skeleton izgleda takole. 304 00:15:02,130 --> 00:15:06,550 Izberite nabor stolpcev iz miza, in nato po izbiri 305 00:15:06,550 --> 00:15:11,090 lahko določite condition-- ali kar običajno imenujemo predikat, 306 00:15:11,090 --> 00:15:13,010 je običajno izraz, ki jih uporabljamo v SQL. 307 00:15:13,010 --> 00:15:16,490 >> Ampak to je v bistvu kaj posebne vrstice želite. 308 00:15:16,490 --> 00:15:19,100 Če želite, namesto da bi dobili Vse, ozki, 309 00:15:19,100 --> 00:15:20,060 to je, če bi to naredil. 310 00:15:20,060 --> 00:15:22,777 In potem po želji, lahko tudi vi naročite ga določenem stolpcu. 311 00:15:22,777 --> 00:15:25,860 Torej, morda želite imeti stvari razvrščeni abecedi temelji na enem stolpcu 312 00:15:25,860 --> 00:15:27,540 ali po abecedi, ki temelji na drugega. 313 00:15:27,540 --> 00:15:30,610 >> Again, KJE in ORDER BY so obvezna. 314 00:15:30,610 --> 00:15:32,681 Vendar jih bomo verjetno useful-- zlasti 315 00:15:32,681 --> 00:15:34,680 Kjer bo koristno zožilo, tako da vam ne 316 00:15:34,680 --> 00:15:37,460 dobite celotno zbirko podatkov in nazaj morali obdelati, ki ste jo pravkar dobil 317 00:15:37,460 --> 00:15:39,300 kosi to, da vam je mar. 318 00:15:39,300 --> 00:15:44,932 Tako, na primer, morda želim, da izberete ID številka in fullname od uporabnikov. 319 00:15:44,932 --> 00:15:46,140 Torej, kaj bi to izgledal? 320 00:15:46,140 --> 00:15:48,270 Torej, tukaj je moj uporabniki miza. 321 00:15:48,270 --> 00:15:51,080 Želim izbrati IDNUM in FULLNAME od uporabnikov. 322 00:15:51,080 --> 00:15:52,300 Kaj bom dobil? 323 00:15:52,300 --> 00:15:53,580 Bom dobil to. 324 00:15:53,580 --> 00:15:56,930 Nisem ga zožilo, tako da sem dobili ID številko za vsako vrstico 325 00:15:56,930 --> 00:16:00,850 in sem že v celoti ime iz vsake vrstice. 326 00:16:00,850 --> 00:16:02,210 >> V REDU. 327 00:16:02,210 --> 00:16:05,640 Kaj pa, če hočem, da izberete geslo od uporabnikov WHERE-- zdaj 328 00:16:05,640 --> 00:16:10,370 Jaz sem dodal pogoj, A predicate-- kjer IDNUM je manj kot 12. 329 00:16:10,370 --> 00:16:13,660 Torej, tukaj je moja baza podatkov še enkrat, moj uporabniki tabela top. 330 00:16:13,660 --> 00:16:17,030 Kaj bom, da bi dobili, če želim izberite, da so informacije, geslo, 331 00:16:17,030 --> 00:16:21,550 kjer je uporabniško ime ali IDNUM manj kot 12? 332 00:16:21,550 --> 00:16:24,910 Jaz bom dobil to Informacije nazaj, kajne? 333 00:16:24,910 --> 00:16:29,170 To se zgodi, da je IDNUM 10, manj od 12, ID številka 11 manj kot 12. 334 00:16:29,170 --> 00:16:32,160 Dobivam geslo za teh vrstic. 335 00:16:32,160 --> 00:16:33,914 To je tisto, kar sem prosil za. 336 00:16:33,914 --> 00:16:34,580 Kaj praviš na to? 337 00:16:34,580 --> 00:16:39,170 Kaj pa, če hočem, da izberete zvezda iz mame miza, kjer username enaka Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, izberite zvezda je posebna sortiranje divjega kartice, tako imenovani 339 00:16:43,780 --> 00:16:45,670 da bomo uporabili, da bi dobili vse. 340 00:16:45,670 --> 00:16:48,620 Torej ti praviš, da izberete username vejico mater, ki 341 00:16:48,620 --> 00:16:51,060 se je zgodilo, da je edina dva stolpca v tej tabeli, 342 00:16:51,060 --> 00:16:53,260 Jaz lahko samo izbrati zvezda in dobili vse 343 00:16:53,260 --> 00:16:55,030 kjer username enaka Jerry. 344 00:16:55,030 --> 00:16:59,380 In tako, da je tisto, kar bi jaz dobil če sem to posebno vprašanje. 345 00:16:59,380 --> 00:17:01,810 >> Zdaj pa so baze podatkov super, ker omogočajo 346 00:17:01,810 --> 00:17:06,074 nam, da organizirajo informacije morda nekoliko bolj učinkovito kot mi 347 00:17:06,074 --> 00:17:06,740 morda drugače. 348 00:17:06,740 --> 00:17:10,240 Mi ne nujno za shranjevanje vsak pomembni podatek 349 00:17:10,240 --> 00:17:12,230 o uporabniku v isti tabeli. 350 00:17:12,230 --> 00:17:13,730 Imeli smo dve tabeli tam. 351 00:17:13,730 --> 00:17:15,734 >> Moramo za shranjevanje Ime Vsi so matere, 352 00:17:15,734 --> 00:17:18,900 in morda nimamo socialne varnosti Številka, imamo svoj datum rojstva. 353 00:17:18,900 --> 00:17:21,819 Da vedno ne potrebujemo da je v isti tabeli. 354 00:17:21,819 --> 00:17:25,339 Dokler bomo lahko opredelimo razmerja med tables-- 355 00:17:25,339 --> 00:17:28,440 in da je, če je ta relacijska Podatkovna baza izraz vrsta prihaja 356 00:17:28,440 --> 00:17:32,130 v play-- tako dolgo, kot lahko definiramo odnosi med tabelami, 357 00:17:32,130 --> 00:17:35,545 bomo lahko nekako delitve v ali abstraktnih stvari na način, 358 00:17:35,545 --> 00:17:37,670 kjer imamo samo res pomembne informacije 359 00:17:37,670 --> 00:17:39,270 skrbimo v uporabnikovi mizi. 360 00:17:39,270 --> 00:17:43,220 In potem imamo pomožne informacije ali dodatne informacije v drugih tabelah 361 00:17:43,220 --> 00:17:48,260 da bomo lahko povežete nazaj na glavno Uporabniki miza na določen način. 362 00:17:48,260 --> 00:17:52,200 >> Torej, tukaj imamo teh dveh tabel, vendar obstaja povezava med njimi, 363 00:17:52,200 --> 00:17:53,010 prav? 364 00:17:53,010 --> 00:17:55,070 Zdi se, kot ime bi lahko kaj 365 00:17:55,070 --> 00:17:59,909 da obstaja v skupno med ti dve različni mize. 366 00:17:59,909 --> 00:18:01,700 Pa kaj, če imamo zdaj razmere, v katerih smo 367 00:18:01,700 --> 00:18:06,046 želijo, da bi dobili uporabnikovo polno ime uporabnikovo miza, in njihova mati je 368 00:18:06,046 --> 00:18:07,170 ime od matere mizo? 369 00:18:07,170 --> 00:18:10,960 Nimamo način, da bi dobili da, kot je, kajne? 370 00:18:10,960 --> 00:18:17,790 Ni ena tabela, ki vsebuje tako polno ime in ime matere. 371 00:18:17,790 --> 00:18:20,400 Nimamo te možnosti od tega, kar smo videli doslej. 372 00:18:20,400 --> 00:18:22,950 >> In zato moramo uvesti ideja pridruži. 373 00:18:22,950 --> 00:18:24,857 In se pridruži so verjetno Najbolj complex-- 374 00:18:24,857 --> 00:18:27,940 to je res najbolj zapleten postopek bomo govorili o v videu. 375 00:18:27,940 --> 00:18:30,040 Oni so nekoliko zapletena, ampak ko boste dobili visi za to, 376 00:18:30,040 --> 00:18:31,248 oni dejansko ni preveč slabo. 377 00:18:31,248 --> 00:18:32,820 To je samo poseben primer izbrancev. 378 00:18:32,820 --> 00:18:37,120 Bomo izbrali niz stolpce iz tabele spajanja 379 00:18:37,120 --> 00:18:40,650 v drugi tabeli na nek predikat. 380 00:18:40,650 --> 00:18:45,340 >> V tem primeru, pomislite, da je všeč this-- miza ena je eden krog tukaj, 381 00:18:45,340 --> 00:18:47,530 miza dveh je še en krog tukaj. 382 00:18:47,530 --> 00:18:49,410 In da predikat del v sredini, to je 383 00:18:49,410 --> 00:18:51,701 nekaj podobnega, če menite, približno kot Vennov diagram, kaj 384 00:18:51,701 --> 00:18:52,670 pa imajo skupnega? 385 00:18:52,670 --> 00:18:55,960 Želimo povezati teh dveh tabel ki temelji na tisto, kar imajo skupnega 386 00:18:55,960 --> 00:19:01,230 in ustvariti to hipotetično tabelo da je združitev dveh skupaj. 387 00:19:01,230 --> 00:19:03,480 Torej bomo to videli v primer in morda, da bomo pomagali 388 00:19:03,480 --> 00:19:04,521 jo pospraviti malo. 389 00:19:04,521 --> 00:19:09,260 Torej, morda želite izbrati user.fullname in moms.mother 390 00:19:09,260 --> 00:19:13,220 od uporabnikov, ki povezujejo v mame miza v vsaki situaciji 391 00:19:13,220 --> 00:19:16,790 kjer je kolona uporabniško ime je enak med njimi. 392 00:19:16,790 --> 00:19:19,240 In to je nova skladnje tukaj, ta uporabnik. 393 00:19:19,240 --> 00:19:20,460 in mame .. 394 00:19:20,460 --> 00:19:26,697 Če delam več tabel skupaj, sem lahko določite tabelo. 395 00:19:26,697 --> 00:19:29,530 Ne morem razlikovati zlasti na da je na samem dnu tam. 396 00:19:29,530 --> 00:19:33,220 Ne morem razlikovati ime stolpec tabele uporabnikov 397 00:19:33,220 --> 00:19:36,010 z imenom stolpcu mame miza, ki so otherwise-- 398 00:19:36,010 --> 00:19:38,070 če smo pravkar rekel username enaka uporabniško ime, ki v resnici ne 399 00:19:38,070 --> 00:19:38,970 pomeni ničesar. 400 00:19:38,970 --> 00:19:41,440 Želimo, da to storite, ko se ujemata. 401 00:19:41,440 --> 00:19:46,080 >> Tako sem lahko določite mizo in Ime stolpca pri položaju 402 00:19:46,080 --> 00:19:48,370 če bi bilo jasno, kaj sem govoril. 403 00:19:48,370 --> 00:19:51,880 Tako, da je vse, kar delam, je, da sem pravijo, ta stolpec iz te tabele, 404 00:19:51,880 --> 00:19:54,020 in je zelo jasna. 405 00:19:54,020 --> 00:19:56,810 Torej še enkrat, jaz da izberete polno ime in ime matere 406 00:19:56,810 --> 00:20:00,950 Iz tabele uporabnikov povezanega skupaj z mizo mame v vsaki situaciji 407 00:20:00,950 --> 00:20:05,960 kjer si delijo to column-- si delijo to uporabniško ime pojem. 408 00:20:05,960 --> 00:20:08,580 >> Torej, tukaj so mize smo jih imeli prej. 409 00:20:08,580 --> 00:20:12,210 To je stanje našega baze podatkov, kot ga poznamo sedaj. 410 00:20:12,210 --> 00:20:16,390 Informacije, ki smo ekstrakcijo je to za začetek. 411 00:20:16,390 --> 00:20:19,820 To je nova tabela gremo ustvariti kombinacije teh skupaj. 412 00:20:19,820 --> 00:20:23,585 In opazili nismo poudarjanje Vrstica Newman je v uporabnikovi mizi, 413 00:20:23,585 --> 00:20:25,960 in ne bomo poudarjanje Vrstica Kramer je v tabeli mame 414 00:20:25,960 --> 00:20:31,250 ker niti ena obstaja tako sets-- v obeh tabelah. 415 00:20:31,250 --> 00:20:36,260 >> Edina informacija, ki je v skupni med njimi je Jerry je v obeh tabelah 416 00:20:36,260 --> 00:20:39,100 in gcostanza je v obeh tabelah. 417 00:20:39,100 --> 00:20:42,620 In tako, ko smo storili SQL JOIN, kar smo get-- in počnemo dejansko dobil to. 418 00:20:42,620 --> 00:20:44,830 To je neke vrste začasno spremenljivko. 419 00:20:44,830 --> 00:20:47,330 To je kot hipotetični Združitev dveh tabel. 420 00:20:47,330 --> 00:20:49,930 Dejansko smo dobili nekaj kot je ta, kadar 421 00:20:49,930 --> 00:20:54,730 smo združili skupaj mize na informacije, ki so jim skupne. 422 00:20:54,730 --> 00:20:58,334 >> Tako opazili, da users.username in moms.username stolpec, 423 00:20:58,334 --> 00:20:59,250 to je povsem enako. 424 00:20:59,250 --> 00:21:01,820 Da so bili podatki, ki je bil dosleden od uporabnikov 425 00:21:01,820 --> 00:21:02,890 in tabelo mame. 426 00:21:02,890 --> 00:21:04,270 In tako smo jih združili skupaj. 427 00:21:04,270 --> 00:21:06,919 Mi zavreči Kramer, ker je ne obstaja v tabeli uporabnikov, 428 00:21:06,919 --> 00:21:09,710 in smo zavrgli Newman, ker on ne obstaja v tabeli mame. 429 00:21:09,710 --> 00:21:16,450 Torej je to hipotetična združitev uporabo pridruži delovanje izberete. 430 00:21:16,450 --> 00:21:21,250 >> In potem smo iskali za uporabnikov polno ime in uporabnikov mati, 431 00:21:21,250 --> 00:21:24,999 in zato je ta podatek, da mi bi dobili od celotne poizvedbe 432 00:21:24,999 --> 00:21:26,040 da smo se s SELECT. 433 00:21:26,040 --> 00:21:28,873 Tako smo se pridružili tabel skupaj in smo ga dobili teh dveh stolpcev, 434 00:21:28,873 --> 00:21:31,610 in tako, da je tisto, kar bomo dobili. 435 00:21:31,610 --> 00:21:33,370 Ampak SQL pridruži nekakšno zapleteno. 436 00:21:33,370 --> 00:21:36,770 Verjetno ste jim ne bo preveč, ampak imajo kakšno idejo okostja 437 00:21:36,770 --> 00:21:41,992 da lahko uporabite za združitev dveh mize skupaj, če so potrebni za. 438 00:21:41,992 --> 00:21:43,700 Zadnji dve sta bit enostavnejše obljubim. 439 00:21:43,700 --> 00:21:48,040 Torej posodabljanje, lahko uporabite UPDATE spremeniti podatke v tabeli. 440 00:21:48,040 --> 00:21:53,880 Splošna oblika je UPDATE nekateri Mizica, pogrni nekaj stolpec za nekaj vrednosti 441 00:21:53,880 --> 00:21:55,540 KJE nekaj predikat zadovoljen. 442 00:21:55,540 --> 00:21:57,850 Tako na primer, lahko želimo posodobiti tabelo uporabnikov 443 00:21:57,850 --> 00:22:04,400 in nastavite geslo za Yada bla, pri čemer je identifikacijska številka 10. 444 00:22:04,400 --> 00:22:06,400 >> Torej, v tem primeru smo posodabljanje tabelo uporabnikom. 445 00:22:06,400 --> 00:22:08,275 Število ID 10 za da prvi vrsti tam, 446 00:22:08,275 --> 00:22:10,690 in želimo posodobiti geslo za nakladanje. 447 00:22:10,690 --> 00:22:12,170 In tako, da je tisto, kar se bo zgodilo. 448 00:22:12,170 --> 00:22:13,628 To je zelo enostavno, kajne? 449 00:22:13,628 --> 00:22:17,990 To je samo zelo enostavna sprememba na mizo. 450 00:22:17,990 --> 00:22:22,250 >> DELETE se operacija smo uporabili za odstraniti podatke iz tabele. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM tabela WHERE nekateri predikat je zadovoljen. 452 00:22:24,817 --> 00:22:26,900 Želimo izbrisati iz Uporabniki miza za primer 453 00:22:26,900 --> 00:22:28,254 kjer je username Newman. 454 00:22:28,254 --> 00:22:31,420 Si verjetno lahko uganiti, kaj se dogaja, da tukaj zgodilo po tem, ko smo se izvrši to SQL 455 00:22:31,420 --> 00:22:35,790 poizvedbe, je Newman odšel iz tabele. 456 00:22:35,790 --> 00:22:40,460 >> Torej vse te operacije, kot sem rekel, so zelo enostavno narediti v phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 To je zelo uporabniku prijazen vmesnik. 458 00:22:43,020 --> 00:22:45,930 Ampak to ne zahteva ročnega napora. 459 00:22:45,930 --> 00:22:47,840 Mi ne želimo zaposliti ročnega napora. 460 00:22:47,840 --> 00:22:51,280 Želimo, da naše programe To storite za nas, kajne? 461 00:22:51,280 --> 00:22:53,190 Tako bomo morda želeli narediti to načrtno. 462 00:22:53,190 --> 00:22:56,410 Želimo, da vključi SQL in imajo nekaj drugega, da to stori za nas. 463 00:22:56,410 --> 00:23:02,710 >> Toda kaj smo videli, da omogoča nam programsko nekaj narediti? 464 00:23:02,710 --> 00:23:03,690 Videli smo PHP, kajne? 465 00:23:03,690 --> 00:23:05,760 Uvaja nekaj dinamičnost v naše programe. 466 00:23:05,760 --> 00:23:10,430 In tako srečo, SQL in PHP igrajo zelo lepo skupaj. 467 00:23:10,430 --> 00:23:13,230 Tam je funkcija v PHP imenovano izraz, ki se lahko uporabljajo. 468 00:23:13,230 --> 00:23:15,870 In lahko prenese kot parameter ali argument 469 00:23:15,870 --> 00:23:19,210 za poizvedbo SQL poizvedbo, bi želeli izvesti. 470 00:23:19,210 --> 00:23:23,250 In bo PHP to storite v vašem imenu. 471 00:23:23,250 --> 00:23:25,564 >> Torej, ko ste povezani na vašo bazo podatkov z PHP, 472 00:23:25,564 --> 00:23:26,980 tam je dve Primarni to storite. 473 00:23:26,980 --> 00:23:29,230 Nekaj ​​je pozval MySQLi in nekaj, kar ti ZOP. 474 00:23:29,230 --> 00:23:31,063 Mi ne bo šel v ogromen detajl znesek tam. 475 00:23:31,063 --> 00:23:32,957 V CS50 uporabljamo ZOP. 476 00:23:32,957 --> 00:23:34,790 Ko ste povezani na vašo bazo podatkov, 477 00:23:34,790 --> 00:23:40,980 Nato lahko poizvedbe zbirke podatkov z opravljanjem poizvedb kot argumente 478 00:23:40,980 --> 00:23:42,730 za PHP funkcij. 479 00:23:42,730 --> 00:23:46,460 In ko boste to storili, boste shranite komplet rezultatov v asociativni array. 480 00:23:46,460 --> 00:23:50,290 >> In vemo, kako delati z asociativne nize v PHP. 481 00:23:50,290 --> 00:23:52,630 Torej lahko rečem nekaj kot this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 to je v PHP-- enaka poizvedbo. 483 00:23:55,470 --> 00:23:57,660 In potem v notranjosti Funkcija poizvedba ta trditev 484 00:23:57,660 --> 00:24:00,130 da sem mimo, da se pozanima ki izgleda kot SQL. 485 00:24:00,130 --> 00:24:01,160 In v tem, da je SQL. 486 00:24:01,160 --> 00:24:05,700 To je niz poizvedbe, da bi jaz želeli izvršiti na moji bazi podatkov. 487 00:24:05,700 --> 00:24:09,250 >> In tako v rdeči barvi, to je PHP. 488 00:24:09,250 --> 00:24:11,890 To je SQL, da sem vključevanje v PHP, tako da 489 00:24:11,890 --> 00:24:15,020 je argument za funkcijo poizvedbe. 490 00:24:15,020 --> 00:24:19,640 Želim izbrati FULLNAME od Uporabniki kjer ID številka enak 10. 491 00:24:19,640 --> 00:24:22,560 In potem pa, ko sem to storil, Jaz bi rekel kaj takega. 492 00:24:22,560 --> 00:24:25,550 Želim natisniti ven sporočilo Hvala, se prijavite. 493 00:24:25,550 --> 00:24:32,530 >> In hočem jo interpolate-- želim za interpolacijo $ rezultate FULLNAME. 494 00:24:32,530 --> 00:24:36,280 In da je, kako delam s tem asociativno paleto, da sem se vrnil. 495 00:24:36,280 --> 00:24:39,730 $ rezultati fullname bi v bistvu končajo tiskanje, 496 00:24:39,730 --> 00:24:42,870 hvala za prijavo v, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 To je bilo polno ime kjer IDNUM enaka 10. 498 00:24:46,570 --> 00:24:48,850 >> In tako vse delam se bom now-- sem shranjena 499 00:24:48,850 --> 00:24:52,780 moje vprašanje, rezultati mojega poizvedbe in rezultati v asociativni array, 500 00:24:52,780 --> 00:24:56,330 in fullname je ime stolpec sem se za. 501 00:24:56,330 --> 00:25:01,010 Torej, to je moj ključ v rezultatih asociativni niz, ki ga želim. 502 00:25:01,010 --> 00:25:05,930 Torej, hvala za prijavo v $ rezultati, fullname bo izpisal, bo palico 503 00:25:05,930 --> 00:25:08,654 prav med tistimi Curly naramnice, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 In bom všeč, da natisnete sporočilo Hvala za prijavo v Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Zdaj, mi verjetno ne želite, da težko Koda stvari, kot da, kajne? 506 00:25:16,652 --> 00:25:19,860 Mi bi želeli narediti nekaj podobnega tisk f, kjer bomo lahko nadomestili in morda 507 00:25:19,860 --> 00:25:22,443 zbira različne informacije, ali morda ima proces poizvedbo 508 00:25:22,443 --> 00:25:23,370 različne informacije. 509 00:25:23,370 --> 00:25:27,920 In tako vprašanje, funkcija poizvedba ima ta pojem vrste substitucij 510 00:25:27,920 --> 00:25:32,310 Zelo podobna natisniti f odstotkov ih in odstotek c, je vprašljiva. 511 00:25:32,310 --> 00:25:34,290 >> In bomo lahko uporabili vprašanje Oznake zelo analogno 512 00:25:34,290 --> 00:25:38,400 natisniti f nadomestnih spremenljivk. 513 00:25:38,400 --> 00:25:44,120 Torej, morda vaš uporabnik prijavljen v že prej, in ste shranili svoj uporabniški ID številko 514 00:25:44,120 --> 00:25:51,710 v $ _session PHP super Globalna v ključnih ID. 515 00:25:51,710 --> 00:25:55,947 Mogoče po tem, ko so prijavljeni, nastavite $ _session ID je enak 10, 516 00:25:55,947 --> 00:25:58,280 ekstrapolacijo iz primera smo pravkar videli drugi nazaj. 517 00:25:58,280 --> 00:26:01,960 >> In tako, ko smo dejansko izvrši to poizvedbo rezultate zdaj, 518 00:26:01,960 --> 00:26:08,440 bi priključite v 10, ali karkoli ID vrednost $ _session je. 519 00:26:08,440 --> 00:26:10,790 In tako, da nam omogoča lahko malo bolj dinamično. 520 00:26:10,790 --> 00:26:12,699 Mi ni težko kodiranje stvari več. 521 00:26:12,699 --> 00:26:14,490 Mi smo varčevanje informacije nekje nato 522 00:26:14,490 --> 00:26:18,924 bomo lahko ponovno uporabijo te informacije nekako posploševati, kaj želimo narediti, 523 00:26:18,924 --> 00:26:21,090 in samo plug-in sprememba obnašanje naši spletni strani 524 00:26:21,090 --> 00:26:26,489 temelji na kakšnem ID uporabnika številu dejansko je po tem, ko so prijavljeni. 525 00:26:26,489 --> 00:26:28,530 Prav tako je mogoče, čeprav, da nastavite vaš Rezultati 526 00:26:28,530 --> 00:26:30,840 lahko sestavljen iz več vrstic. 527 00:26:30,840 --> 00:26:33,990 V tem primeru, imate array arrays-- 528 00:26:33,990 --> 00:26:35,334 niz asociativnih polj. 529 00:26:35,334 --> 00:26:37,000 In morate le Ponovil skozi to. 530 00:26:37,000 --> 00:26:41,950 In vemo, kako Ponovil skozi array v PHP, kajne? 531 00:26:41,950 --> 00:26:45,600 Torej, tukaj je verjetno najbolj kompleksna stvar, ki smo jih videli doslej. 532 00:26:45,600 --> 00:26:49,640 To dejansko združuje trije jeziki skupaj. 533 00:26:49,640 --> 00:26:52,920 >> Tu v rdeči barvi, to je nekaj HTML. 534 00:26:52,920 --> 00:26:56,872 Jaz sem očitno starting-- to je košček neke HTML, ki jo imam. 535 00:26:56,872 --> 00:26:59,580 Začenjam nov odstavek, ki se pravi, da so mame za TV Seinfeld. 536 00:26:59,580 --> 00:27:02,350 In potem takoj zatem Začenjam mizo. 537 00:27:02,350 --> 00:27:06,060 In potem, ko da sem nekaj PHP, kajne? 538 00:27:06,060 --> 00:27:08,229 Imam vse te kode PHP tam. 539 00:27:08,229 --> 00:27:09,645 Jaz sem očitno dogaja narediti poizvedbo. 540 00:27:09,645 --> 00:27:14,180 In da bi se vprašanje, bom na uporabljali SELECT matere od mame. 541 00:27:14,180 --> 00:27:15,970 >> Torej je ta getting-- to SQL. 542 00:27:15,970 --> 00:27:17,300 Torej modra je SQL. 543 00:27:17,300 --> 00:27:19,680 Rdeča smo videli pred eno sekundo je HTML. 544 00:27:19,680 --> 00:27:21,360 In zelena tukaj je PHP. 545 00:27:21,360 --> 00:27:23,400 Torej delam poizvedbo na mojo zbirko podatkov, da sem 546 00:27:23,400 --> 00:27:26,040 izbiranje vse matere v tabeli mame. 547 00:27:26,040 --> 00:27:30,710 Ne samo skrčila, da zlasti vrstica, bom prosil za vse od njih. 548 00:27:30,710 --> 00:27:33,290 >> Potem sem preveriti, če izid Ne Ene enaka false. 549 00:27:33,290 --> 00:27:37,410 To je samo moj način preverjanja vrste to, če rezultati niso enaka NULL, 550 00:27:37,410 --> 00:27:40,260 da vidimo C za primer. 551 00:27:40,260 --> 00:27:44,000 V bistvu je to samo preverjanje, da bi prepričani, da je dejansko dobil podatke nazaj. 552 00:27:44,000 --> 00:27:47,041 Ker ne želim, da začnete tiskanje iz podatkov, če nisem dobil nobenih podatkov. 553 00:27:47,041 --> 00:27:50,690 Nato pa za vsako rezultate kot rezultat foreach sintakso iz PHP, vse jaz delam 554 00:27:50,690 --> 00:27:53,399 izpisuje $ rezultat matere. 555 00:27:53,399 --> 00:27:55,940 In tako bom dobil niz od vseh mater each-- 556 00:27:55,940 --> 00:27:59,980 je niz asociativnega arrays-- in sem tiskanje 557 00:27:59,980 --> 00:28:03,649 vsak za svoj vrsti tabele. 558 00:28:03,649 --> 00:28:05,690 In to je res lepa veliko vse kar je z njo. 559 00:28:05,690 --> 00:28:07,750 Vem, da je malo bit dogaja tukaj 560 00:28:07,750 --> 00:28:13,210 V tem zadnjem primeru z nizi arrays-- nizi asociativnih polj. 561 00:28:13,210 --> 00:28:17,340 Ampak to res samo zavre navzdol v SQL za izdelavo poizvedbo, 562 00:28:17,340 --> 00:28:21,102 običajno izbiro, ko smo že dati podatke v tabelo, 563 00:28:21,102 --> 00:28:22,310 in potem samo da jo izvlečete. 564 00:28:22,310 --> 00:28:25,710 >> In to je, mi bi ga potegnite v tem konkretnem primeru. 565 00:28:25,710 --> 00:28:31,120 Želimo izločiti vse posamezne matere iz tabele mame. 566 00:28:31,120 --> 00:28:35,970 Imamo celo vrsto njih, in smo želijo skozi Ponovil in natisnete 567 00:28:35,970 --> 00:28:37,630 vsak. 568 00:28:37,630 --> 00:28:40,510 Torej še enkrat, to je verjetno najbolj zapleten primer 569 00:28:40,510 --> 00:28:44,510 smo videli, ker smo mešanje tri različni jeziki skupaj, kajne? 570 00:28:44,510 --> 00:28:50,100 >> Spet imamo HTML tu v rdeči barvi, zmešamo z nekaj SQL tukaj v modri barvi, 571 00:28:50,100 --> 00:28:52,049 zmešamo z nekaj PHP v zeleno. 572 00:28:52,049 --> 00:28:53,840 Ampak vsi ti igrajo lepo skupaj, to je 573 00:28:53,840 --> 00:28:57,060 samo stvar v razvoju dobre navade, tako da jih lahko dobite 574 00:28:57,060 --> 00:28:58,780 da delajo skupaj, tako, kot želite. 575 00:28:58,780 --> 00:29:03,790 In edini način, da se res ne da je praksa, praksa, praksa. 576 00:29:03,790 --> 00:29:06,740 Sem Doug Lloyd, to je CS50. 577 00:29:06,740 --> 00:29:08,647