1 00:00:00,000 --> 00:00:03,493 >> [Přehrávání hudby] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: V našich videí na témata, vývoj webových aplikací, 4 00:00:07,100 --> 00:00:10,560 jsme se zmínil koncepci databáze několikrát, že jo? 5 00:00:10,560 --> 00:00:12,700 Takže databáze jste pravděpodobně znát z 6 00:00:12,700 --> 00:00:15,780 říkají, pomocí aplikace Microsoft Excel nebo Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Je to opravdu jen organizovaný sada tabulek, řádků a sloupců. 8 00:00:20,650 --> 00:00:23,140 >> A je databáze, kde našich webových stránek prodejny 9 00:00:23,140 --> 00:00:26,760 informace, které jsou důležité na našich webových stránkách pracovat správně. 10 00:00:26,760 --> 00:00:30,150 Opět platí, že skutečně společný příkladem je ukládání uživatelských jmen a hesel 11 00:00:30,150 --> 00:00:32,824 v databázi, tak, že když přihlášení uživatele do našich webových stránkách, 12 00:00:32,824 --> 00:00:36,690 databáze může být dotazovány vidět v případě, že uživatel existuje v databázi. 13 00:00:36,690 --> 00:00:39,260 A pokud jsou, ověřit, že Jejich heslo je správné. 14 00:00:39,260 --> 00:00:43,420 A pokud je jejich heslo je správné, pak jim můžeme dát cokoliv strana 15 00:00:43,420 --> 00:00:45,370 jsou to požádá. 16 00:00:45,370 --> 00:00:48,590 >> Takže jste pravděpodobně opět obeznámený s touto myšlenkou z aplikace Excel nebo Google 17 00:00:48,590 --> 00:00:49,430 Tabulek. 18 00:00:49,430 --> 00:00:52,980 Máme databází, stoly, řádky a sloupce. 19 00:00:52,980 --> 00:00:56,450 A to je opravdu druh základního souboru 20 00:00:56,450 --> 00:00:58,470 hierarchického členění zde. 21 00:00:58,470 --> 00:00:59,800 Takže tady je tabulkový procesor Excel. 22 00:00:59,800 --> 00:01:02,640 A pokud jste někdy otevřeli nebo jiný podobný program 23 00:01:02,640 --> 00:01:06,780 víte, že to zde rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 To jsou sloupy. 25 00:01:08,760 --> 00:01:11,790 >> Možná, že tady dole, i když může být Není tuto funkci používat strašně much-- 26 00:01:11,790 --> 00:01:15,370 Budu zoom in-- máme Tato myšlenka listu. 27 00:01:15,370 --> 00:01:17,930 Takže možná těchto listů, pokud I střídavě tam a zpět, 28 00:01:17,930 --> 00:01:21,600 jsou různé tabulky, které existují v mé databázi. 29 00:01:21,600 --> 00:01:25,210 A pokud budeme pokračovat příklad všechny ta cesta, název této databáze 30 00:01:25,210 --> 00:01:26,940 je Kniha 1. 31 00:01:26,940 --> 00:01:28,710 Možná mám Kniha 2 a 3 knihy. 32 00:01:28,710 --> 00:01:33,270 Takže každý soubor Excel je databáze, každý list je tabulka, 33 00:01:33,270 --> 00:01:39,530 a uvnitř každé tabulky mám Tato myšlenka řádků a sloupců. 34 00:01:39,530 --> 00:01:41,900 >> Tak jak jsem se pracovat s touto databází? 35 00:01:41,900 --> 00:01:43,630 Jak získám informace z něj? 36 00:01:43,630 --> 00:01:47,540 No tam je jazyk s názvem SQL-- které jsem obvykle jen zavolat Sequel-- 37 00:01:47,540 --> 00:01:50,010 a to stojí pro Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 A to je programovací jazyk, ale je to poměrně omezené programování 39 00:01:52,981 --> 00:01:53,480 jazyk. 40 00:01:53,480 --> 00:01:56,407 Není to úplně jako ostatní že jsme pracovali s. 41 00:01:56,407 --> 00:01:58,240 Ale účel tohoto programovací jazyk 42 00:01:58,240 --> 00:02:01,570 je dotaz databáze, aby zeptejte se informace z databáze, 43 00:02:01,570 --> 00:02:04,480 naleznete informace v databázi, a tak dále. 44 00:02:04,480 --> 00:02:08,449 >> Také jsme v CS50-- a je to velmi společná platforma, je to jen MySQL. 45 00:02:08,449 --> 00:02:10,600 To je to, co používáme v průběhu. 46 00:02:10,600 --> 00:02:12,880 Je to open source platforma, která stanoví 47 00:02:12,880 --> 00:02:16,732 takzvaný relační database-- databáze, efektivně. 48 00:02:16,732 --> 00:02:18,440 Nepotřebujeme, aby si do přílišných podrobností 49 00:02:18,440 --> 00:02:20,930 na to, co relační databáze. 50 00:02:20,930 --> 00:02:24,650 Ale jazyk SQL je velmi zběhlý v práci 51 00:02:24,650 --> 00:02:29,760 s MySQL a jiná podobná styly relačních databází. 52 00:02:29,760 --> 00:02:34,010 >> A mnoho instalace MySQL přijít s něčím 53 00:02:34,010 --> 00:02:37,760 volal phpMyAdmin, který je grafické uživatelské 54 00:02:37,760 --> 00:02:40,970 interface-- a GUI-- který dělá to trochu víc 55 00:02:40,970 --> 00:02:44,410 uživatelsky přívětivý spustit databázové dotazy, 56 00:02:44,410 --> 00:02:48,980 proto, že databáze nejsou právě používány pokročilými programátory, že jo? 57 00:02:48,980 --> 00:02:51,510 Někdy tam jsou Tyto malé a střední podniky, 58 00:02:51,510 --> 00:02:53,900 a oni si nemohou dovolit najmout tým programátorů, 59 00:02:53,900 --> 00:02:56,700 ale stále potřebujete uložit informace v databázi. 60 00:02:56,700 --> 00:02:59,300 >> Něco jako phpMyAdmin je pro někoho je velmi snadné 61 00:02:59,300 --> 00:03:03,630 kteří nikdy předtím naprogramované vyzvednout a seznámit se s tím, jak 62 00:03:03,630 --> 00:03:07,710 pracovat s databází. 63 00:03:07,710 --> 00:03:11,800 Problém je v tom, phpMyAdmin, zatímco to je fantastický nástroj pro učení 64 00:03:11,800 --> 00:03:14,850 o databáze, je manuální. 65 00:03:14,850 --> 00:03:18,050 Budeš muset přihlásit do to a provádět příkazy a typ 66 00:03:18,050 --> 00:03:19,910 věci ručně. 67 00:03:19,910 --> 00:03:23,160 >> A jak víme z našich Příklad na PHP webové programování, 68 00:03:23,160 --> 00:03:26,550 museli ručně udělat věci na našich webových stránkách, 69 00:03:26,550 --> 00:03:30,970 Chceme-li dynamická, aktivní citlivý webové stránky, možná ne nejlepší přístup. 70 00:03:30,970 --> 00:03:33,980 Chtěli bychom najít způsob, jak snad to nějak zautomatizovat. 71 00:03:33,980 --> 00:03:37,864 A SQL nám umožní udělat. 72 00:03:37,864 --> 00:03:39,780 Takže když jdeme začít pracovat s SQL, 73 00:03:39,780 --> 00:03:41,220 musíme nejprve mít Databáze pracovat. 74 00:03:41,220 --> 00:03:42,510 Vytvoření databáze je něco, co pravděpodobně 75 00:03:42,510 --> 00:03:45,350 bude dělat v phpMyAdmin, protože budete potřebovat pouze to udělat jednou, 76 00:03:45,350 --> 00:03:49,690 a syntax za to je mnohem přímočařejší. 77 00:03:49,690 --> 00:03:51,940 Je to mnohem snazší dělat to v grafického uživatelského rozhraní 78 00:03:51,940 --> 00:03:53,520 než psát to jako příkaz. 79 00:03:53,520 --> 00:03:55,186 Příkaz může dostat trochu těžkopádné. 80 00:03:55,186 --> 00:03:58,889 Podobně, vytvoření tabulky může dostat trochu těžkopádné stejně. 81 00:03:58,889 --> 00:04:01,930 A tak se věci, jako je vytvoření databáze a vytvoření tabulky, který, kterou jste 82 00:04:01,930 --> 00:04:06,270 pravděpodobně jen dělat once-- jednou za tabulkou, jednou za database-- 83 00:04:06,270 --> 00:04:09,040 je to v pořádku k tomu, že v grafické rozhraní. 84 00:04:09,040 --> 00:04:11,570 V procesu vytvoření tabulky, budete 85 00:04:11,570 --> 00:04:14,840 Také je třeba zadat všechny sloupce, které budou v této tabulce. 86 00:04:14,840 --> 00:04:18,149 Jaký druh informací dělat Chcete-li uložit v tabulce? 87 00:04:18,149 --> 00:04:24,520 Možná, že jméno uživatele a datum narození, heslo, ID číslo uživatele, a možná 88 00:04:24,520 --> 00:04:26,170 město a stát, že jo? 89 00:04:26,170 --> 00:04:30,080 >> A pokaždé, když chceme přidat uživatele do databáze, chceme dostat všech šest 90 00:04:30,080 --> 00:04:31,890 z těchto částí informací. 91 00:04:31,890 --> 00:04:34,840 A děláme, že přidáním řádků. 92 00:04:34,840 --> 00:04:37,800 Tak jsme nejprve vytvořit databázi, Pak jsme se vytvořit tabulku. 93 00:04:37,800 --> 00:04:40,100 V rámci vytvoření stůl, jsme požádáni 94 00:04:40,100 --> 00:04:44,280 určit, že každý sloupec Rádi bychom v této tabulce. 95 00:04:44,280 --> 00:04:47,247 A pak, jak začneme přidávat Informace do databáze 96 00:04:47,247 --> 00:04:49,580 a vyhledávat v databázi více generally-- nejen přidávat, 97 00:04:49,580 --> 00:04:51,610 ale všechno ostatní jsme do-- budeme zabývat 98 00:04:51,610 --> 00:04:58,870 s řádky v tabulce, která je jednou Informace o uživateli z celého setu. 99 00:04:58,870 --> 00:05:03,210 >> Takže každý SQL sloupec je schopen držení dat určitého typu dat. 100 00:05:03,210 --> 00:05:06,560 Takže jsme nějak eliminovat tento Myšlenka datových typů v PHP, 101 00:05:06,560 --> 00:05:08,747 ale jsou zpátky v SQL. 102 00:05:08,747 --> 00:05:10,080 A je tu spousta datových typů. 103 00:05:10,080 --> 00:05:13,420 Tady je jen 20 z nich, ale to není ani všechny z nich. 104 00:05:13,420 --> 00:05:16,240 Takže máme nápady jako INTs-- Integers-- jsme asi víte, 105 00:05:16,240 --> 00:05:17,760 že tento sloupec může držet celá čísla. 106 00:05:17,760 --> 00:05:21,077 A tam jsou variace thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Možná, že ne vždy potřebovat čtyři sousta. 108 00:05:22,660 --> 00:05:26,800 Možná potřebujeme osm bytů, a tak jsme Můžete použít tyto variace na celá čísla 109 00:05:26,800 --> 00:05:28,510 být trochu více prostoru efektivnější. 110 00:05:28,510 --> 00:05:31,899 Můžeme si dělat, desetinná čísla, my může dělat s plovoucí desetinnou čárkou. 111 00:05:31,899 --> 00:05:32,940 To jsou dost podobné. 112 00:05:32,940 --> 00:05:34,773 Tam jsou některé rozdíly, a pokud by 113 00:05:34,773 --> 00:05:37,330 vypadat zřizuje SQL druh průvodce, budete 114 00:05:37,330 --> 00:05:40,670 může vidět, co mírný rozdíly mezi nimi. 115 00:05:40,670 --> 00:05:43,250 >> Možná, že chceme uložit informace o datu a čase. 116 00:05:43,250 --> 00:05:47,047 Možná jsme sledování když se uživatel připojil naše webové stránky, 117 00:05:47,047 --> 00:05:48,880 a tak možná chceme mít sloupec, který je 118 00:05:48,880 --> 00:05:52,820 čas datum nebo časové razítko, která indikuje, zda je uživatel skutečně 119 00:05:52,820 --> 00:05:54,130 přihlásil. 120 00:05:54,130 --> 00:05:56,132 Můžeme si dělat, geometrií a linestrings. 121 00:05:56,132 --> 00:05:57,340 To je vlastně docela v pohodě. 122 00:05:57,340 --> 00:06:01,410 Mohli bychom zmapovat Zeměpisná oblast použití 123 00:06:01,410 --> 00:06:05,110 GIS souřadnic na pozemek mimo oblast. 124 00:06:05,110 --> 00:06:08,580 Takže můžete skutečně uložit takový druh informací v SQL sloupci. 125 00:06:08,580 --> 00:06:11,390 >> TEXT je jen obří puntíky textu, možná. 126 00:06:11,390 --> 00:06:12,840 Výčty jsou docela zajímavé. 127 00:06:12,840 --> 00:06:16,080 Jsou to vlastně existují v C. Nemáme mluvit o nich, protože to nejsou 128 00:06:16,080 --> 00:06:19,110 strašně běžně používají, alespoň CS50. 129 00:06:19,110 --> 00:06:22,680 Ale je to výčtového typu dat, která je schopna pojmout omezené hodnoty. 130 00:06:22,680 --> 00:06:25,940 >> Opravdu dobrý příkladem by zde vytvořit ENUM, kde se sedmi 131 00:06:25,940 --> 00:06:29,394 možné hodnoty jsou neděle, pondělí, Úterý, středa, čtvrtek, pátek, 132 00:06:29,394 --> 00:06:30,060 Sobota, že jo? 133 00:06:30,060 --> 00:06:33,311 Tento typ dat den Týden neexistuje, 134 00:06:33,311 --> 00:06:35,310 ale mohli bychom vytvořit výčtového typu dat, jako 135 00:06:35,310 --> 00:06:39,400 že sloupec může jen někdy držet jeden z těchto sedmi možných hodnot. 136 00:06:39,400 --> 00:06:44,300 Jsme vyjmenovány všechny z možných hodnot. 137 00:06:44,300 --> 00:06:47,630 >> Pak máme CHAR a VARCHAR, A já jsem barvu těchto zelených 138 00:06:47,630 --> 00:06:49,505 proto, že jsme vlastně bude trvat druhý 139 00:06:49,505 --> 00:06:51,950 mluvit o rozdílu mezi těmito dvěma věcmi. 140 00:06:51,950 --> 00:06:55,780 Takže CHAR, na rozdíl od C kde CHAR byl jediný znak, 141 00:06:55,780 --> 00:07:00,730 v SQL CHAR odkazuje pevné délka řetězce. 142 00:07:00,730 --> 00:07:02,620 A když jsme se vytvořit tento sloupec, jsme vlastně 143 00:07:02,620 --> 00:07:05,070 lze určit délku řetězce. 144 00:07:05,070 --> 00:07:08,080 >> Takže v tomto příkladu, mohli bychom říci, char (10). 145 00:07:08,080 --> 00:07:11,190 To znamená, že každý prvek tohoto sloupce 146 00:07:11,190 --> 00:07:13,910 se bude skládat z 10 bytů informací. 147 00:07:13,910 --> 00:07:15,770 Ne více, ne méně. 148 00:07:15,770 --> 00:07:21,780 Takže když se snažíme dát do 15 bit nebo 15 znak element 149 00:07:21,780 --> 00:07:25,340 nebo hodnoty do tohoto sloupce, jsme jen dostat na první 10. 150 00:07:25,340 --> 00:07:27,290 Dáme-li do dvou znak dlouhá hodnota, 151 00:07:27,290 --> 00:07:30,700 budeme mít dva znaky, a pak osmi null kousnutí. 152 00:07:30,700 --> 00:07:34,990 Nikdy být účinnější než to. 153 00:07:34,990 --> 00:07:37,727 >> Varchar je něco jako Naše představa řetězce 154 00:07:37,727 --> 00:07:39,560 že jsme obeznámeni se z C, nebo z PHP. 155 00:07:39,560 --> 00:07:40,830 Je to proměnná délka řetězce. 156 00:07:40,830 --> 00:07:42,560 A při vytváření Tento sloupec, který jste právě 157 00:07:42,560 --> 00:07:44,860 určit maximální možné délky. 158 00:07:44,860 --> 00:07:49,065 Takže možná 99 nebo běžně 255. 159 00:07:49,065 --> 00:07:50,440 To by maximální délka. 160 00:07:50,440 --> 00:07:52,890 A tak, když jsme byli skladování 15 řetězec znaků, 161 00:07:52,890 --> 00:07:56,157 bychom použili 15 bajtů, možná 16 bajtů pro null zakončení. 162 00:07:56,157 --> 00:07:57,990 Pokud bychom byli ukládání Tři řetězec znaků, 163 00:07:57,990 --> 00:08:01,120 bychom použili tři nebo čtyři bajty. 164 00:08:01,120 --> 00:08:03,050 Ale my nebude používat plnou 99. 165 00:08:03,050 --> 00:08:05,190 >> Tak proč bychom mít obojí? 166 00:08:05,190 --> 00:08:08,210 No, pokud budeme potřebovat zjistit, jak dlouhá je něco s VARCHAR, 167 00:08:08,210 --> 00:08:10,680 musíme druhu iterovat přes to stejně jako jsme to udělali v C 168 00:08:10,680 --> 00:08:12,230 a zjistit, kde se zastaví. 169 00:08:12,230 --> 00:08:15,920 Vzhledem k tomu, když víme, že všechno V tomto sloupci je 10 bajtů, možná 170 00:08:15,920 --> 00:08:19,220 víme, že informace, můžeme skákat 10 bajtů, 10 bajtů, 10 bajtů, 10 bajtů, 171 00:08:19,220 --> 00:08:21,790 a vždy najít začátku řetězce. 172 00:08:21,790 --> 00:08:25,210 >> Takže můžeme mít některé zbytečný prostor s char, 173 00:08:25,210 --> 00:08:28,510 ale možná je tu obchod off mít vyšší rychlost 174 00:08:28,510 --> 00:08:30,160 navigaci databáze. 175 00:08:30,160 --> 00:08:32,330 Ale možná chceme, Flexibilita VARCHAR 176 00:08:32,330 --> 00:08:36,710 místo having-- Pokud náš CHAR bylo 255, ale většina našich uživatelů 177 00:08:36,710 --> 00:08:40,537 byly zadávání pouze tři nebo čtyři byty hodnota informací nebo tři nebo čtyři 178 00:08:40,537 --> 00:08:41,870 znaky v hodnotě informací. 179 00:08:41,870 --> 00:08:44,324 >> Ale někteří uživatelé používali celá 255, možná 180 00:08:44,324 --> 00:08:45,990 VARCHAR by bylo vhodnější tam. 181 00:08:45,990 --> 00:08:49,840 Je to jakýsi kompromis, a obecně pro účely CS50, 182 00:08:49,840 --> 00:08:54,107 nemusíte příliš starat o zda používáte CHAR nebo VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Ale v reálném světě, tyto věci to jedno, protože všechny z těchto sloupců 184 00:08:57,190 --> 00:08:59,300 zabírají skutečný fyzický prostor. 185 00:08:59,300 --> 00:09:04,150 A fyzický prostor, ve reálném světě, přichází na prémie. 186 00:09:04,150 --> 00:09:06,800 >> Takže jednoho dalšího zvážení když stavíte tabulku 187 00:09:06,800 --> 00:09:09,840 je vybrat jeden sloupec být co se nazývá primární klíč. 188 00:09:09,840 --> 00:09:14,350 A primární klíč je sloupec kde každý hodnota je jedinečná. 189 00:09:14,350 --> 00:09:19,980 A to znamená, že můžete snadno vybrat jeden řádek pouhým pohledem 190 00:09:19,980 --> 00:09:22,450 na primární klíč tohoto řádku. 191 00:09:22,450 --> 00:09:24,580 Tak například, že Obecně platí, že s uživateli, 192 00:09:24,580 --> 00:09:27,210 Nechceme dva uživatele, kteří mají stejné ID uživatele číslo. 193 00:09:27,210 --> 00:09:28,960 A tak možná budete mít Množství informací, 194 00:09:28,960 --> 00:09:30,793 a možná i dva uživatelé mohou mají stejný name-- 195 00:09:30,793 --> 00:09:32,650 Máte John Smith a John Smith. 196 00:09:32,650 --> 00:09:34,520 To nemusí být problém, protože tam jsou více lidí 197 00:09:34,520 --> 00:09:35,830 ve světě jménem John Smith. 198 00:09:35,830 --> 00:09:40,766 Ale my máme jen jedno uživatelské ID číslo 10, jeden uživatel ID číslo 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Nemáme dva uživatele se stejným číslem, 200 00:09:42,640 --> 00:09:46,010 a tak možná identifikační čísla uživatel by byl dobrý primární klíč. 201 00:09:46,010 --> 00:09:48,610 >> Nemáme žádnou zdvojování, a můžeme nyní jedinečně 202 00:09:48,610 --> 00:09:52,619 identifikovat každý řádek právě při pohledu na tento sloupec. 203 00:09:52,619 --> 00:09:55,410 Volba primární klíče může vlastně aby následné operace tabulky 204 00:09:55,410 --> 00:09:59,710 mnohem jednodušší, protože můžete využít skutečnost, že některé řádky budou 205 00:09:59,710 --> 00:10:02,720 být jedinečný, nebo určitá sloupec z vaší databáze nebo tabulky 206 00:10:02,720 --> 00:10:06,030 bude unikátní vybrat out zvláštní řádky. 207 00:10:06,030 --> 00:10:08,790 >> Můžete mít také společný primární klíč, který můžete najít příležitost 208 00:10:08,790 --> 00:10:11,720 k použití, který je jen kombinace dvou sloupců, které 209 00:10:11,720 --> 00:10:13,280 je zaručeno, že je jedinečný. 210 00:10:13,280 --> 00:10:16,410 Takže možná máte jeden Sloupec, který je As a Bs, 211 00:10:16,410 --> 00:10:19,290 jeden sloupec, který je jeden, dva, a tři, ale budete jen někdy 212 00:10:19,290 --> 00:10:23,660 mají jediný A1, jedna A2, a tak dále a tak dále. 213 00:10:23,660 --> 00:10:28,980 Ale můžete mít B2, je C2, nebo A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Takže můžete mít více As, vícenásobné BS, ti více, více dvojky, 215 00:10:32,840 --> 00:10:38,567 ale můžete někdy mít pouze single A1, B2, C3, a tak dále. 216 00:10:38,567 --> 00:10:40,400 Tak jak jsem řekl, SQL je programovací jazyk, 217 00:10:40,400 --> 00:10:42,024 ale má poměrně omezenou slovní zásobu. 218 00:10:42,024 --> 00:10:44,880 Není to zas až tak expanzivní jako C a PHP a jiné jazyky 219 00:10:44,880 --> 00:10:46,350 že hovoříme v kurzu. 220 00:10:46,350 --> 00:10:49,960 To je více verbose jazyka, než to, co jsme 221 00:10:49,960 --> 00:10:52,789 mluvit o v tomto video, protože v tomto videu 222 00:10:52,789 --> 00:10:54,830 budeme mluvit o tom, čtyři operace, které my 223 00:10:54,830 --> 00:10:55,720 lze provádět na stůl. 224 00:10:55,720 --> 00:10:56,761 >> Existuje více než tohle. 225 00:10:56,761 --> 00:10:58,730 Můžeme dělat víc než to, ale pro naše účely, 226 00:10:58,730 --> 00:11:02,250 my obecně bude používat jen čtyř operations-- vložka, 227 00:11:02,250 --> 00:11:05,360 vyberte, aktualizujte, a odstranit. 228 00:11:05,360 --> 00:11:08,750 A můžete pravděpodobně intuitivně odhadnout co všechny čtyři tyto věci dělat. 229 00:11:08,750 --> 00:11:12,520 Ale půjdeme do trochu podrobnosti o každé z nich. 230 00:11:12,520 --> 00:11:15,780 >> Takže pro účely tohoto video, předpokládejme 231 00:11:15,780 --> 00:11:18,870 Máme následujících dvou tabulky v jedné databázi. 232 00:11:18,870 --> 00:11:23,460 Máme tabulku s názvem Uživatelé, který má čtyř columns-- číslo, uživatelské jméno, 233 00:11:23,460 --> 00:11:25,350 heslo, jméno a příjmení. 234 00:11:25,350 --> 00:11:27,430 A máme druhý stůl ve stejné databázi 235 00:11:27,430 --> 00:11:32,129 volal maminky, že právě ukládá informace o uživatelské jméno a matkou. 236 00:11:32,129 --> 00:11:33,920 Takže pro všechny příklady V tomto videu, budeme 237 00:11:33,920 --> 00:11:37,945 používat tuto databázi a následné aktualizace do ní. 238 00:11:37,945 --> 00:11:40,070 Takže řekněme, že chceme, aby přidat informace do tabulky. 239 00:11:40,070 --> 00:11:44,460 To je to, co dělá operace vkládání. 240 00:11:44,460 --> 00:11:46,550 Při vysvětlování všech tyto příkazy, jdu 241 00:11:46,550 --> 00:11:48,860 aby vám obecnou kostru k použití. 242 00:11:48,860 --> 00:11:51,661 Vzhledem k tomu, v podstatě, dotazů jdou vypadají docela podobný, 243 00:11:51,661 --> 00:11:54,660 jsme jen bude měnit mírně odlišné kusy informací 244 00:11:54,660 --> 00:11:56,750 dělat různé věci s tabulkou. 245 00:11:56,750 --> 00:11:59,200 >> Takže pro INSERT, kostry Vypadá trochu jako toto. 246 00:11:59,200 --> 00:12:02,230 Chceme vložit do zvláštní tabulka. 247 00:12:02,230 --> 00:12:05,290 Pak máme otevřené závorky a seznam sloupců 248 00:12:05,290 --> 00:12:08,070 že chceme dát do hodnoty. 249 00:12:08,070 --> 00:12:10,974 Zavřít závorky se následujících hodnot, a poté 250 00:12:10,974 --> 00:12:13,390 Znovu jsme se seznam hodnot Chceme, aby v tabulce. 251 00:12:13,390 --> 00:12:15,950 >> Takže příkladem by byl následující. 252 00:12:15,950 --> 00:12:19,170 Chci vložit do tabulky Uživatelé následující columns-- 253 00:12:19,170 --> 00:12:21,010 uživatelské jméno, heslo a fullname. 254 00:12:21,010 --> 00:12:25,282 Takže nový řádek, kde jsem uvedení v těchto třech sloupcích a my jsme 255 00:12:25,282 --> 00:12:30,030 dám v hodnotách Newman, USMAIL, a Newman. 256 00:12:30,030 --> 00:12:32,730 Takže v tomto případě, já jsem uvedení malá písmena Newman 257 00:12:32,730 --> 00:12:38,710 do sloupci username, heslo USMAIL, a plné jméno hlavní město N 258 00:12:38,710 --> 00:12:41,940 Newman do fullname kolony. 259 00:12:41,940 --> 00:12:44,240 >> Tak tady je to, co databáze vypadal jako předtím. 260 00:12:44,240 --> 00:12:48,250 Tady je to, co uživatelé na stůl top vypadala před jsme to udělali. 261 00:12:48,250 --> 00:12:50,760 Poté, co jsme to provést dotazu, jsme si to. 262 00:12:50,760 --> 00:12:54,790 Přidali jsme nový řádek do tabulky. 263 00:12:54,790 --> 00:12:56,810 Ale jednu věc si všimnout že jsem nespecifikoval, 264 00:12:56,810 --> 00:12:59,880 ale nějak mám hodnotu pro, což je to 12 tady. 265 00:12:59,880 --> 00:13:02,820 Neřekl jsem, že jsem chtěl vložit identifikační číslo tam. 266 00:13:02,820 --> 00:13:04,900 Chtěl jsem dát jméno, heslo, fullname. 267 00:13:04,900 --> 00:13:06,440 A já jsem to udělal, to je v pořádku. 268 00:13:06,440 --> 00:13:07,760 >> Ale také jsem dostal tuto 12. 269 00:13:07,760 --> 00:13:09,490 Proč jsem si to 12? 270 00:13:09,490 --> 00:13:12,904 No, to ukáže, že když se definování 271 00:13:12,904 --> 00:13:15,570 sloupec, který bude vaše primární klíč, který je obvykle, 272 00:13:15,570 --> 00:13:16,510 jak jsem řekl, ID číslo. 273 00:13:16,510 --> 00:13:18,718 Není to vždy nutně Bude ID číslo, 274 00:13:18,718 --> 00:13:22,380 ale to je obvykle dobrý nápad být nějaký celočíselnou hodnotu. 275 00:13:22,380 --> 00:13:25,950 Máte možnost v phpMyAdmin Při vytváření databáze 276 00:13:25,950 --> 00:13:31,130 nebo váš stůl nastavit, aby Sloupek automatické zvyšování. 277 00:13:31,130 --> 00:13:34,520 >> Což je opravdu dobrý nápad, pokud pracujete s primárním klíčem, 278 00:13:34,520 --> 00:13:39,330 proto, že chcete každou hodnotu v tomto sloupci, že je jedinečný. 279 00:13:39,330 --> 00:13:43,310 A pokud jste zapomněl zadat to na více než jednu osobu, 280 00:13:43,310 --> 00:13:46,240 nyní v situaci, kdy že sloupec už není ojedinělý. 281 00:13:46,240 --> 00:13:50,200 Máte dvě prázdná místa, takže můžete bez delší jednoznačné identifikaci column-- 282 00:13:50,200 --> 00:13:54,150 Nebo můžete již jedinečně identifikaci řádku založené na tomto sloupci. 283 00:13:54,150 --> 00:13:57,010 Je to ztratil všechny jeho hodnota jako primární klíč. 284 00:13:57,010 --> 00:14:02,010 >> A tak prý to, co jsem udělal Zde je nakonfigurován ID uživatele 285 00:14:02,010 --> 00:14:07,790 sloupec na automatický přírůstek tak, aby každý Když jsem přidat informace do tabulky, 286 00:14:07,790 --> 00:14:12,220 to bude automaticky dát mi hodnota primárního klíče. 287 00:14:12,220 --> 00:14:15,570 Tak jsem si nikdy nezapomenu na to, protože databáze bude to pro mě. 288 00:14:15,570 --> 00:14:16,587 Tak to je docela hezké. 289 00:14:16,587 --> 00:14:18,670 A tak to je důvod, proč jsme si 12 tam, protože jsem 290 00:14:18,670 --> 00:14:21,772 nastavit, aby sloupec až na auto přírůstek. 291 00:14:21,772 --> 00:14:23,730 Kdybych přidal někoho jiného to by bylo 13, když jsem přidal 292 00:14:23,730 --> 00:14:27,890 někdo jiný, že to bude 14, a tak dále. 293 00:14:27,890 --> 00:14:30,190 >> Takže pojďme prostě udělat ještě jednu vložení. 294 00:14:30,190 --> 00:14:34,530 Budeme vložit do tabulky maminky, v Zvláště, uživatelské jméno a matka 295 00:14:34,530 --> 00:14:37,390 sloupci hodnoty Kramer a Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 A tak jsme měli předtím. 297 00:14:39,140 --> 00:14:41,800 Poté, co jsme spustit, že SQL dotaz, máme to. 298 00:14:41,800 --> 00:14:47,290 Přidali jsme Kramer a Babs Kramer ke stolu maminky. 299 00:14:47,290 --> 00:14:48,350 >> Tak to je vkládání. 300 00:14:48,350 --> 00:14:51,850 SELECT je to, co používáme k extrakci Informace z tabulky. 301 00:14:51,850 --> 00:14:54,390 Takže to je to, jak se dostaneme Informace z databáze. 302 00:14:54,390 --> 00:14:59,589 A tak SELECT příkazy se bude velmi často používán v programování. 303 00:14:59,589 --> 00:15:02,130 Obecná framework-- Obecně kostra vypadá takto. 304 00:15:02,130 --> 00:15:06,550 Vyberte sadu sloupců z stůl, a potom případně 305 00:15:06,550 --> 00:15:11,090 můžete zadat condition-- nebo to, co jsme se obvykle nazývají predikát, 306 00:15:11,090 --> 00:15:13,010 je obvykle termín používáme v SQL. 307 00:15:13,010 --> 00:15:16,490 >> Ale je to v podstatě to, co Jednotlivé řádky se chcete dostat. 308 00:15:16,490 --> 00:15:19,100 Chcete-li, místo toho, jak se dostat všechno, zúžit, 309 00:15:19,100 --> 00:15:20,060 to je místo, kde byste to udělal. 310 00:15:20,060 --> 00:15:22,777 A potom případně můžete také objednat podle určitého sloupce. 311 00:15:22,777 --> 00:15:25,860 Takže možná, že chcete mít věci seřazené abecedně založené na jednom sloupci 312 00:15:25,860 --> 00:15:27,540 nebo abecedně na základě druhého. 313 00:15:27,540 --> 00:15:30,610 >> Opět platí, WHERE a ORDER BY jsou volitelné. 314 00:15:30,610 --> 00:15:32,681 Ale oni si nejspíš useful-- zejména 315 00:15:32,681 --> 00:15:34,680 Kde bude užitečné zúžit takže ne 316 00:15:34,680 --> 00:15:37,460 dostat celou databázi zpět a muset zpracovávat, můžete jen získat 317 00:15:37,460 --> 00:15:39,300 kusy to, že vám záleží. 318 00:15:39,300 --> 00:15:44,932 Tak například, mohl bych chtít vybrat ID číslo a fullname od uživatelů. 319 00:15:44,932 --> 00:15:46,140 Takže to, co by to mohlo vypadat? 320 00:15:46,140 --> 00:15:48,270 Takže tady je moje uživatelé stůl. 321 00:15:48,270 --> 00:15:51,080 Chci vybrat IDNUM a fullname od uživatelů. 322 00:15:51,080 --> 00:15:52,300 Co mám udělat? 323 00:15:52,300 --> 00:15:53,580 Jdu si to. 324 00:15:53,580 --> 00:15:56,930 Nechtěl jsem zúžit, takže jsem získání identifikační číslo pro každý řádek 325 00:15:56,930 --> 00:16:00,850 a já jsem stále v plné jméno z každé řady. 326 00:16:00,850 --> 00:16:02,210 >> DOBŘE. 327 00:16:02,210 --> 00:16:05,640 Co když chci vybrat heslo od uživatelů WHERE-- takže teď 328 00:16:05,640 --> 00:16:10,370 Já jsem dodal podmínku, je predicate-- kde IDNUM je menší než 12. 329 00:16:10,370 --> 00:16:13,660 Takže tady je moje databáze znovu, můj Uživatelé tabulka vrchol. 330 00:16:13,660 --> 00:16:17,030 Co mám udělat, když chci zvolit, že informace, heslo, 331 00:16:17,030 --> 00:16:21,550 kde ID uživatele nebo IDNUM je menší než 12 let? 332 00:16:21,550 --> 00:16:24,910 Jdu si to Informace zpátky, že jo? 333 00:16:24,910 --> 00:16:29,170 Stává se, že je IDNUM 10, méně než 12, identifikační číslo 11 méně než 12 let. 334 00:16:29,170 --> 00:16:32,160 Začínám heslo pro tyto řádky. 335 00:16:32,160 --> 00:16:33,914 To je to, co jsem žádal. 336 00:16:33,914 --> 00:16:34,580 Co tohle? 337 00:16:34,580 --> 00:16:39,170 Co když chci vybrat hvězda z maminky tabulka, kde uživatelské jméno odpovídá Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, vyberte hvězda je speciální druh divoké karty tzv 339 00:16:43,780 --> 00:16:45,670 že používáme dostat všechno. 340 00:16:45,670 --> 00:16:48,620 Tak říkají select uživatelské jméno čárkou matku, která 341 00:16:48,620 --> 00:16:51,060 se stalo, že je jediný dva sloupce této tabulky, 342 00:16:51,060 --> 00:16:53,260 Já si jen vybrat hvězdu a dostat vše 343 00:16:53,260 --> 00:16:55,030 kde uživatelské jméno odpovídá Jerry. 344 00:16:55,030 --> 00:16:59,380 A tak to je to, co bych si jestli jsem udělal, že konkrétní dotaz. 345 00:16:59,380 --> 00:17:01,810 >> Nyní, databáze jsou skvělé, protože umožňují 346 00:17:01,810 --> 00:17:06,074 nám k uspořádání informací možná o něco efektivněji než my 347 00:17:06,074 --> 00:17:06,740 Možná jinak. 348 00:17:06,740 --> 00:17:10,240 My nemusí nutně k ukládání každý relevantní údaj 349 00:17:10,240 --> 00:17:12,230 jednoho uživatele ve stejné tabulce. 350 00:17:12,230 --> 00:17:13,730 Měli jsme tam dvě tabulky. 351 00:17:13,730 --> 00:17:15,734 >> Musíme uložit Jméno Všichni jsou matky, 352 00:17:15,734 --> 00:17:18,900 a možná nemáme sociální zabezpečení číslo, máme jejich datum narození. 353 00:17:18,900 --> 00:17:21,819 To není vždy potřebovat být ve stejné tabulce. 354 00:17:21,819 --> 00:17:25,339 Tak dlouho, jak můžeme definovat vztahy mezi tables-- 355 00:17:25,339 --> 00:17:28,440 a to je místo, kde že relační Databáze termín druh pochází 356 00:17:28,440 --> 00:17:32,130 do play-- tak dlouho, jak můžeme definovat vztahy mezi tabulkami, 357 00:17:32,130 --> 00:17:35,545 můžeme nějak rozčlenit nebo abstraktní věci takovým způsobem, 358 00:17:35,545 --> 00:17:37,670 kde jsme jen Opravdu důležité informace 359 00:17:37,670 --> 00:17:39,270 staráme se o v tabulce uživatele. 360 00:17:39,270 --> 00:17:43,220 A pak máme pomocné informace nebo další informace v jiných tabulkách 361 00:17:43,220 --> 00:17:48,260 že lze připojit znovu vrátí do hlavní Uživatelé tabulka v určitým způsobem. 362 00:17:48,260 --> 00:17:52,200 >> Takže tady máme tyto dvě tabulky, ale tam je vztah mezi nimi, 363 00:17:52,200 --> 00:17:53,010 právo? 364 00:17:53,010 --> 00:17:55,070 Vypadá to, že uživatelské jméno by mohlo být něco 365 00:17:55,070 --> 00:17:59,909 která existuje v obyčejný mezi Tyto dva různé tabulky. 366 00:17:59,909 --> 00:18:01,700 A co když máme nyní situace, kdy jsme 367 00:18:01,700 --> 00:18:06,046 se chtějí dostat úplné jméno uživatele z tabulka uživatele, a jejich matky 368 00:18:06,046 --> 00:18:07,170 jméno z mateřské tabulky? 369 00:18:07,170 --> 00:18:10,960 Nemáme způsob, jak se dostat že jak to stojí, ne? 370 00:18:10,960 --> 00:18:17,790 Neexistuje jediná tabulka, která obsahuje jak celý název a jméno matky. 371 00:18:17,790 --> 00:18:20,400 Nemáme tuto možnost z toho, co jsme dosud viděli. 372 00:18:20,400 --> 00:18:22,950 >> A tak musíme zavést myšlenka JOIN. 373 00:18:22,950 --> 00:18:24,857 A se připojí jsou pravděpodobně nejvíce complex-- 374 00:18:24,857 --> 00:18:27,940 je to opravdu nejsložitější operace budeme mluvit o ve videu. 375 00:18:27,940 --> 00:18:30,040 Jsou to trochu složitější, ale jakmile se dostanete na kloub, 376 00:18:30,040 --> 00:18:31,248 jsou to vlastně není tak špatné. 377 00:18:31,248 --> 00:18:32,820 Je to jen zvláštní případ SELECT. 378 00:18:32,820 --> 00:18:37,120 Budeme vybrat sadu sloupce z tabulky spojování 379 00:18:37,120 --> 00:18:40,650 ve druhé tabulce na nějakém predikátu. 380 00:18:40,650 --> 00:18:45,340 >> V tomto případě, myslím, že o tom takhle tohle-- stůl, kdo je jeden kruh tady, 381 00:18:45,340 --> 00:18:47,530 tabulka dvou je další kruh tady. 382 00:18:47,530 --> 00:18:49,410 A že predikát část ve středu, je to 383 00:18:49,410 --> 00:18:51,701 něco jako, pokud si myslíte , o kterých v Vennův diagram, co 384 00:18:51,701 --> 00:18:52,670 to mají společného? 385 00:18:52,670 --> 00:18:55,960 Chceme propojit tyto dvě tabulky na základě toho, co mají společného 386 00:18:55,960 --> 00:19:01,230 a vytvořit tuto hypotetickou tabulku že je sloučení dvou dohromady. 387 00:19:01,230 --> 00:19:03,480 Tak uvidíme to v příklad a možná, že to pomůže 388 00:19:03,480 --> 00:19:04,521 zrušte to trochu. 389 00:19:04,521 --> 00:19:09,260 Takže možná budete chtít vybrat user.fullname a moms.mother 390 00:19:09,260 --> 00:19:13,220 od uživatelů spojování v maminky stůl v každé situaci 391 00:19:13,220 --> 00:19:16,790 kde uživatelské jméno sloupce je stejný mezi nimi. 392 00:19:16,790 --> 00:19:19,240 A to je nový syntaxe tady, tohoto uživatele. 393 00:19:19,240 --> 00:19:20,460 a maminky .. 394 00:19:20,460 --> 00:19:26,697 Pokud Dělám více tabulek spolu, mohu zadat tabulku. 395 00:19:26,697 --> 00:19:29,530 Dokážu rozlišit zejména pokud jde o že na tu v samém dně. 396 00:19:29,530 --> 00:19:33,220 Můžu rozlišit uživatelské jméno sloupec tabulky uživatelů 397 00:19:33,220 --> 00:19:36,010 z uživatelské jméno sloupce maminky stůl, které jsou otherwise-- 398 00:19:36,010 --> 00:19:38,070 kdybychom právě řekl username rovná uživatelské jméno, to není opravdu 399 00:19:38,070 --> 00:19:38,970 znamenat cokoliv. 400 00:19:38,970 --> 00:19:41,440 Chceme udělat to, kde se shodují. 401 00:19:41,440 --> 00:19:46,080 >> Takže můžu zadat tabulky a název sloupce v případě situace 402 00:19:46,080 --> 00:19:48,370 kde by bylo jasné, to, co mluvím. 403 00:19:48,370 --> 00:19:51,880 Tak to je všechno, co dělám, je, že jsem říká tento sloupec z této tabulky, 404 00:19:51,880 --> 00:19:54,020 a je velmi explicitní. 405 00:19:54,020 --> 00:19:56,810 Takže znovu, jsem volbou plné jméno a jméno matky 406 00:19:56,810 --> 00:20:00,950 Z tabulky uživatelů spojeny s tabulkou maminky v každé situaci 407 00:20:00,950 --> 00:20:05,960 kde se sdílet column-- oni sdílet uživatelské jméno pojem. 408 00:20:05,960 --> 00:20:08,580 >> Takže tady jsou tabulky, které jsme měli předtím. 409 00:20:08,580 --> 00:20:12,210 To je stav našeho databází tak, jak existuje právě teď. 410 00:20:12,210 --> 00:20:16,390 Informace jsme extrahování je to pro začátek. 411 00:20:16,390 --> 00:20:19,820 To je nová tabulka jdeme vytvořit kombinovat tyto spolu. 412 00:20:19,820 --> 00:20:23,585 A všimněte si nejsme zvýraznění Newmanova řádek v tabulce uživatele, 413 00:20:23,585 --> 00:20:25,960 a nejsme zvýraznění Kramerův řádek v tabulce maminky 414 00:20:25,960 --> 00:20:31,250 protože ani jeden existuje v jak sets-- v obou tabulkách. 415 00:20:31,250 --> 00:20:36,260 >> Jediná informace, které jsou v běžné mezi nimi je Jerry je v obou tabulkách 416 00:20:36,260 --> 00:20:39,100 a gcostanza je v obou tabulkách. 417 00:20:39,100 --> 00:20:42,620 A tak, když budeme dělat SQL JOIN, co jsme get-- a děláme vlastně si to. 418 00:20:42,620 --> 00:20:44,830 Je to něco jako dočasné proměnné. 419 00:20:44,830 --> 00:20:47,330 Je to jako hypotetický sloučení obou tabulek. 420 00:20:47,330 --> 00:20:49,930 Vlastně jsme si něco jako je tento, kde 421 00:20:49,930 --> 00:20:54,730 jsme se spojil tabulek na informace, které mají společné. 422 00:20:54,730 --> 00:20:58,334 >> Takže všimnout, že users.username a moms.username sloupec, 423 00:20:58,334 --> 00:20:59,250 je to přesně to samé. 424 00:20:59,250 --> 00:21:01,820 To byla informace, že byl v souladu od uživatelů 425 00:21:01,820 --> 00:21:02,890 stůl, který se maminky. 426 00:21:02,890 --> 00:21:04,270 A tak jsme sloučili dohromady. 427 00:21:04,270 --> 00:21:06,919 My jsme tady zavrhli Kramer, protože on neexistovaly v tabulce uživatelů, 428 00:21:06,919 --> 00:21:09,710 a my zlikvidovat Newman, protože neměl existovat v tabulce maminky. 429 00:21:09,710 --> 00:21:16,450 Tak tohle je hypotetický fúze pomocí JOIN provoz SELECT. 430 00:21:16,450 --> 00:21:21,250 >> A pak jsme hledali pro celé jméno uživatele a matka uživatele, 431 00:21:21,250 --> 00:21:24,999 a tak toto je informace, že bychom se dostali z celkového dotazu 432 00:21:24,999 --> 00:21:26,040 že jsme se s SELECT. 433 00:21:26,040 --> 00:21:28,873 Tak jsme se spojily tabulky a my se extrahuje tyto dva sloupce, 434 00:21:28,873 --> 00:21:31,610 a tak, že je to, co dostaneme. 435 00:21:31,610 --> 00:21:33,370 Ale SQL připojí jakýsi komplikovaný. 436 00:21:33,370 --> 00:21:36,770 Vy pravděpodobně nebudete dělat jim příliš mnoho, ale prostě mít určitou představu o skeletu 437 00:21:36,770 --> 00:21:41,992 že byste mohli použít k sloučení dvou Tabulky společně, pokud jste potřebovali. 438 00:21:41,992 --> 00:21:43,700 Poslední dva jsou bit jednodušší slibuju. 439 00:21:43,700 --> 00:21:48,040 Takže aktualizovat, můžeme použít UPDATE změnit údaje v tabulce. 440 00:21:48,040 --> 00:21:53,880 Obecný formát je UPDATE některé stůl, nastavit některé sloupec nějaké hodnoty 441 00:21:53,880 --> 00:21:55,540 Kde někteří predikát je splněna. 442 00:21:55,540 --> 00:21:57,850 Tak například, my bychom mohli chtít k aktualizaci tabulky uživatelů 443 00:21:57,850 --> 00:22:04,400 a nastavit heslo na Yada bla, kde identifikační číslo 10. 444 00:22:04,400 --> 00:22:06,400 >> Takže v tomto případě, my jsme aktualizaci tabulky uživatelů. 445 00:22:06,400 --> 00:22:08,275 ID číslo je 10 pro že první řádek tam, 446 00:22:08,275 --> 00:22:10,690 a chceme aktualizovat hesla tlachy. 447 00:22:10,690 --> 00:22:12,170 A tak to je to, co by se stalo. 448 00:22:12,170 --> 00:22:13,628 Je to docela jednoduché, ne? 449 00:22:13,628 --> 00:22:17,990 Je to jen velmi jednoduchá modifikace ke stolu. 450 00:22:17,990 --> 00:22:22,250 >> DELETE je operace jsme se odstranění informací z tabulky. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM stolu, kde nějaký predikát je splněna. 452 00:22:24,817 --> 00:22:26,900 Chceme odstranit z Uživatelé stůl například 453 00:22:26,900 --> 00:22:28,254 kde uživatelské jméno je Newman. 454 00:22:28,254 --> 00:22:31,420 Můžete si asi hádat, co to bude se stalo poté, co jsme tady provést SQL 455 00:22:31,420 --> 00:22:35,790 dotaz, Newman je pryč od stolu. 456 00:22:35,790 --> 00:22:40,460 >> Takže všechny tyto operace, jak už jsem řekl, je velmi snadné dělat v phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Je to velmi uživatelsky přívětivé rozhraní. 458 00:22:43,020 --> 00:22:45,930 Ale to vyžaduje manuální úsilí. 459 00:22:45,930 --> 00:22:47,840 Nechceme použít manuální úsilí. 460 00:22:47,840 --> 00:22:51,280 Chceme, aby naše programy na to pro nás, že jo? 461 00:22:51,280 --> 00:22:53,190 Takže bychom mohli chtít udělat tento programově. 462 00:22:53,190 --> 00:22:56,410 Chceme začlenit SQL a mají něco jiného, ​​aby to pro nás. 463 00:22:56,410 --> 00:23:02,710 >> Ale to, co jsme viděli, že umožňuje nás programově něco udělat? 464 00:23:02,710 --> 00:23:03,690 Viděli jsme PHP, že jo? 465 00:23:03,690 --> 00:23:05,760 To představuje některé dynamika do našich programů. 466 00:23:05,760 --> 00:23:10,430 A tak naštěstí, SQL a PHP hrají velmi pěkně pohromadě. 467 00:23:10,430 --> 00:23:13,230 K dispozici je funkce v PHP volal dotazu, které mohou být použity. 468 00:23:13,230 --> 00:23:15,870 A můžete předat jako parametr nebo argument 469 00:23:15,870 --> 00:23:19,210 do dotazu SQL dotazu, který byste chtěli spustit. 470 00:23:19,210 --> 00:23:23,250 A PHP bude dělat za vás. 471 00:23:23,250 --> 00:23:25,564 >> Takže poté, co jste připojeni do databáze s PHP, 472 00:23:25,564 --> 00:23:26,980 Jsou dva primární volby to budete dělat. 473 00:23:26,980 --> 00:23:29,230 Je tu něco, co nazývá MySQLi a něco, co nazývá PDO. 474 00:23:29,230 --> 00:23:31,063 Nebudeme zacházet do obrovský tam detail množství. 475 00:23:31,063 --> 00:23:32,957 V CS50 používáme PDO. 476 00:23:32,957 --> 00:23:34,790 Poté, co jste připojeni do databáze, vy 477 00:23:34,790 --> 00:23:40,980 pak může vytvořit dotazy na databázi předáním dotazy jako argumenty 478 00:23:40,980 --> 00:23:42,730 do funkce PHP. 479 00:23:42,730 --> 00:23:46,460 A když to uděláte, budete ukládat sada výsledků v asociativním poli. 480 00:23:46,460 --> 00:23:50,290 >> A my víme, jak pracovat s asociativní pole v PHP. 481 00:23:50,290 --> 00:23:52,630 A tak bych mohl říci něco jako tohle-- $ results-- 482 00:23:52,630 --> 00:23:55,470 je to v PHP-- rovná dotazu. 483 00:23:55,470 --> 00:23:57,660 A pak vnitřní straně Funkce dotaz tento argument 484 00:23:57,660 --> 00:24:00,130 že jsem kolem na dotaz že vypadá jako SQL. 485 00:24:00,130 --> 00:24:01,160 A v tom, že je SQL. 486 00:24:01,160 --> 00:24:05,700 To je řetězec dotazu, že bych Líbí se vykonat na mé databáze. 487 00:24:05,700 --> 00:24:09,250 >> A tak v červené barvě, to je PHP. 488 00:24:09,250 --> 00:24:11,890 To je SQL, že jsem integraci do PHP tím, že 489 00:24:11,890 --> 00:24:15,020 to je argument pro funkci dotazu. 490 00:24:15,020 --> 00:24:19,640 Chci vybrat ze CeléJméno Uživatelé kde ID číslo rovná 10. 491 00:24:19,640 --> 00:24:22,560 A pak možná poté, co jsem udělal, že, Mohl bych říci něco takového. 492 00:24:22,560 --> 00:24:25,550 Chci pro vytištění Díky zpráva pro přihlášení. 493 00:24:25,550 --> 00:24:32,530 >> A chci to interpolate-- Chci interpolovat $ výsledky CeléJméno. 494 00:24:32,530 --> 00:24:36,280 A tak to je, jak jsem se pracovat s tím asociativní pole, že jsem se vrátil. 495 00:24:36,280 --> 00:24:39,730 $ výsledky fullname by v podstatě skončit vytištění, 496 00:24:39,730 --> 00:24:42,870 díky za přihlášení, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 To bylo plné jméno kde IDNUM se rovná 10. 498 00:24:46,570 --> 00:24:48,850 >> A tak všechno, co dělám je, že jsem now-- I uloženy 499 00:24:48,850 --> 00:24:52,780 můj dotaz, výsledky mého dotazu a výsledky v asociativním poli, 500 00:24:52,780 --> 00:24:56,330 a fullname je název sloupec Byla jsem pro. 501 00:24:56,330 --> 00:25:01,010 Takže to je můj klíč do výsledků asociativní pole, které chci. 502 00:25:01,010 --> 00:25:05,930 Takže díky za přihlášení, $ výsledky, fullname vytiskne, se bude držet 503 00:25:05,930 --> 00:25:08,654 přímo mezi těmito kudrnaté šle, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 A budu rád vytisknout zprávu Díky za přihlášení Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Nyní jsme pravděpodobně nebudete chtít tvrdě Kód věci jako, že v, že jo? 506 00:25:16,652 --> 00:25:19,860 My bychom mohli udělat něco takového tisku f, kde můžeme nahradit a možná 507 00:25:19,860 --> 00:25:22,443 shromažďovat různé informace, nebo možná mají proces dotazu 508 00:25:22,443 --> 00:25:23,370 různé informace. 509 00:25:23,370 --> 00:25:27,920 A tak dotazu, funkce dotazu má Toto pojetí druhu substitucí 510 00:25:27,920 --> 00:25:32,310 velmi podobné pro tisk f procent s a procento c, je otazníky. 511 00:25:32,310 --> 00:25:34,290 >> A můžeme použít otázku značky velmi analogicky 512 00:25:34,290 --> 00:25:38,400 tisknout f nahradit proměnných. 513 00:25:38,400 --> 00:25:44,120 Takže možná si uživatel přihlášen dříve, a jste uložili své uživatelské identifikační číslo 514 00:25:44,120 --> 00:25:51,710 v $ _SESSION PHP Super globální v klíčovém ID. 515 00:25:51,710 --> 00:25:55,947 Takže možná poté, co se přihlásíte, Nastavíte $ _SESSION ID rovná 10, 516 00:25:55,947 --> 00:25:58,280 extrapolace z příkladu jsme právě viděli před vteřinou. 517 00:25:58,280 --> 00:26:01,960 >> A tak, když jsme vlastně spustit Tento dotaz výsledky nyní, 518 00:26:01,960 --> 00:26:08,440 to by připojit 10, nebo cokoliv ID hodnota $ _SESSION je. 519 00:26:08,440 --> 00:26:10,790 A tak, že nám umožňuje být trochu dynamičtější. 520 00:26:10,790 --> 00:26:12,699 Nejsme tvrdě kódování věci ještě. 521 00:26:12,699 --> 00:26:14,490 Šetříme informace někde a pak 522 00:26:14,490 --> 00:26:18,924 můžeme tyto informace znovu použít k nějak zobecnit, co chceme dělat, 523 00:26:18,924 --> 00:26:21,090 a jen plug-in a změny chování naší stránce 524 00:26:21,090 --> 00:26:26,489 základě toho, co identifikační číslo uživatele ve skutečnosti je poté, co jsem přihlášen. 525 00:26:26,489 --> 00:26:28,530 Je také možné, i když, že nastavit vaše výsledky 526 00:26:28,530 --> 00:26:30,840 se může skládat z více řadách. 527 00:26:30,840 --> 00:26:33,990 V takovém případě máte Řada arrays-- 528 00:26:33,990 --> 00:26:35,334 Pole asociativních polí. 529 00:26:35,334 --> 00:26:37,000 A stačí iterovat to. 530 00:26:37,000 --> 00:26:41,950 A my víme, jak iterovat přes pole v PHP, že jo? 531 00:26:41,950 --> 00:26:45,600 Takže zde je pravděpodobně nejvíce složitá věc, kterou jsme dosud viděli. 532 00:26:45,600 --> 00:26:49,640 Je to vlastně integruje tři jazyky dohromady. 533 00:26:49,640 --> 00:26:52,920 >> Zde v červené barvě, to je nějaký HTML. 534 00:26:52,920 --> 00:26:56,872 Jsem prý starting-- to je úryvek nějakého HTML, které mám. 535 00:26:56,872 --> 00:26:59,580 Začínám nový odstavec, který říká, že maminky z televizoru Seinfeld. 536 00:26:59,580 --> 00:27:02,350 A pak hned nato Začínám tabulku. 537 00:27:02,350 --> 00:27:06,060 A pak po to, že jsem nějaké PHP, že jo? 538 00:27:06,060 --> 00:27:08,229 Mám všechny tyto PHP kód tam. 539 00:27:08,229 --> 00:27:09,645 Já zřejmě bude dělat dotaz. 540 00:27:09,645 --> 00:27:14,180 A aby dotaz, budu být pomocí SELECT matky od maminky. 541 00:27:14,180 --> 00:27:15,970 >> Takže tohle je getting-- je to SQL. 542 00:27:15,970 --> 00:27:17,300 Takže modrá je SQL. 543 00:27:17,300 --> 00:27:19,680 Červená jsme viděli druhý před byl HTML. 544 00:27:19,680 --> 00:27:21,360 A zelená tady je PHP. 545 00:27:21,360 --> 00:27:23,400 Takže dělám dotaz do mé databáze, já jsem 546 00:27:23,400 --> 00:27:26,040 výběru všech matek v tabulce maminky. 547 00:27:26,040 --> 00:27:30,710 Nejen zúžení dolů na konkrétní řadové, ptám pro všechny z nich. 548 00:27:30,710 --> 00:27:33,290 >> Pak jsem se zkontrolovat, zda výsledek je Není rovni rovná false. 549 00:27:33,290 --> 00:27:37,410 To je jen můj způsob, jak kontrolovat sort of-li výsledky není rovna NULL, 550 00:27:37,410 --> 00:27:40,260 že bychom vidět C po dobu např. 551 00:27:40,260 --> 00:27:44,000 V podstatě je to jen kontrolovat, aby se jistý, že to vlastně dostal data zpět. 552 00:27:44,000 --> 00:27:47,041 Protože nechci, aby zahájení tisku out údajů, pokud jsem nedostal žádné údaje. 553 00:27:47,041 --> 00:27:50,690 Pak pro každou výsledků v důsledku toho foreach syntaxe z PHP, všechno, co dělám 554 00:27:50,690 --> 00:27:53,399 tiskne z $ result matky. 555 00:27:53,399 --> 00:27:55,940 A tak budu mít soubor ze všech matek each-- 556 00:27:55,940 --> 00:27:59,980 je to pole asociativní arrays-- a já jsem vytištění 557 00:27:59,980 --> 00:28:03,649 každý z nich jako vlastní řádek tabulky. 558 00:28:03,649 --> 00:28:05,690 A to je opravdu dost Kolik všechno, co je k tomu. 559 00:28:05,690 --> 00:28:07,750 Vím, že je to trochu bit tady děje 560 00:28:07,750 --> 00:28:13,210 V tomto posledním příkladu s polí arrays-- pole asociativních polí. 561 00:28:13,210 --> 00:28:17,340 Ale to opravdu jen vaří v SQL k tomu, že dotaz, 562 00:28:17,340 --> 00:28:21,102 obvykle výběru poté, co jsme již vložit informace do tabulky, 563 00:28:21,102 --> 00:28:22,310 a pak už jen vytažením. 564 00:28:22,310 --> 00:28:25,710 >> A to je, že jsme se ho vytáhnout v tomto konkrétním případě. 565 00:28:25,710 --> 00:28:31,120 Rádi bychom extrahovat všechny jedince matek z tabulky maminky. 566 00:28:31,120 --> 00:28:35,970 Máme celou řadu z nich, a my jsme Chcete iterovat a vytisknout 567 00:28:35,970 --> 00:28:37,630 každý. 568 00:28:37,630 --> 00:28:40,510 Takže znovu, toto je pravděpodobně nejkomplikovanější příklad 569 00:28:40,510 --> 00:28:44,510 viděli jsme, protože jsme míchání tři různé jazyky spolu, ne? 570 00:28:44,510 --> 00:28:50,100 >> Opět platí, že máme HTML zde v červené barvě, ve směsi s některými SQL tady v modré barvě, 571 00:28:50,100 --> 00:28:52,049 ve směsi s některými PHP v zelené barvě. 572 00:28:52,049 --> 00:28:53,840 Ale všechny tyto hrají pěkně pohromadě, je to 573 00:28:53,840 --> 00:28:57,060 jen otázka rozvíjení dobré návyky tak, že můžete získat 574 00:28:57,060 --> 00:28:58,780 je pracovat společně tak, jak chcete. 575 00:28:58,780 --> 00:29:03,790 A jediný způsob, jak skutečně to udělat je cvičit, cvičit, cvičit. 576 00:29:03,790 --> 00:29:06,740 Jsem Doug Lloyd, je to CS50. 577 00:29:06,740 --> 00:29:08,647