1 00:00:00,000 --> 00:00:03,493 >> [Musik spiller] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: I vores videoer på webudvikling emner, 4 00:00:07,100 --> 00:00:10,560 vi har nævnt begrebet en database, et par gange, ikke? 5 00:00:10,560 --> 00:00:12,700 Så en database, du er formentlig bekendt med fra 6 00:00:12,700 --> 00:00:15,780 sige ved hjælp af Microsoft Excel eller Google Regneark. 7 00:00:15,780 --> 00:00:20,650 Det er virkelig bare en organiseret sæt af tabeller, rækker og kolonner. 8 00:00:20,650 --> 00:00:23,140 >> Og en database er hvor vores hjemmeside butikker 9 00:00:23,140 --> 00:00:26,760 information, der er vigtig til vores hjemmeside for at fungere korrekt. 10 00:00:26,760 --> 00:00:30,150 Igen, en virkelig almindeligt eksempel her gemmer brugernavne og adgangskoder 11 00:00:30,150 --> 00:00:32,824 i en database, så når en bruger logger ind i vores hjemmeside, 12 00:00:32,824 --> 00:00:36,690 databasen kan forespørges at se hvis denne bruger eksisterer i databasen. 13 00:00:36,690 --> 00:00:39,260 Og hvis de er, at kontrollere, at deres password er korrekt. 14 00:00:39,260 --> 00:00:43,420 Og hvis deres password er korrekt, så kan vi give dem, hvad side 15 00:00:43,420 --> 00:00:45,370 de er anmoder om. 16 00:00:45,370 --> 00:00:48,590 >> Så er du sikkert, igen, kender med denne idé fra Excel eller Google 17 00:00:48,590 --> 00:00:49,430 Regneark. 18 00:00:49,430 --> 00:00:52,980 Vi har databaser, tabeller, rækker og kolonner. 19 00:00:52,980 --> 00:00:56,450 Og det er virkelig sortere af de grundlæggende sæt 20 00:00:56,450 --> 00:00:58,470 af hierarkisk opdeling her. 21 00:00:58,470 --> 00:00:59,800 Så her er et Excel-regneark. 22 00:00:59,800 --> 00:01:02,640 Og hvis du nogensinde har åbnet dette eller en anden lignende program 23 00:01:02,640 --> 00:01:06,780 du ved, at disse her er rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Disse er kolonner. 25 00:01:08,760 --> 00:01:11,790 >> Måske hernede, selvom du måske ikke bruge denne funktion forfærdeligt much-- 26 00:01:11,790 --> 00:01:15,370 Jeg vil zoome in-- vi har denne idé om et ark. 27 00:01:15,370 --> 00:01:17,930 Så måske disse plader, hvis I skifte frem og tilbage, 28 00:01:17,930 --> 00:01:21,600 er forskellige tabeller, eksisterer i min database. 29 00:01:21,600 --> 00:01:25,210 Og hvis vi fortsætter eksemplet alle den måde, navnet på denne database 30 00:01:25,210 --> 00:01:26,940 er Bog 1. 31 00:01:26,940 --> 00:01:28,710 Måske har jeg Bog 2 og Bog 3. 32 00:01:28,710 --> 00:01:33,270 Så hver Excel-fil er en database, hvert ark er en tabel, 33 00:01:33,270 --> 00:01:39,530 og indersiden af ​​hver tabel har jeg denne idé af rækker og kolonner. 34 00:01:39,530 --> 00:01:41,900 >> Så hvordan kan jeg arbejde med denne database? 35 00:01:41,900 --> 00:01:43,630 Hvordan får jeg information fra det? 36 00:01:43,630 --> 00:01:47,540 Godt der er et sprog kaldet SQL-- som jeg normalt bare kalde Sequel-- 37 00:01:47,540 --> 00:01:50,010 og det står for Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 Og det er et programmeringssprog, men det er en temmelig begrænset programmering 39 00:01:52,981 --> 00:01:53,480 sprog. 40 00:01:53,480 --> 00:01:56,407 Det er ikke helt ligesom andre at vi har arbejdet med. 41 00:01:56,407 --> 00:01:58,240 Men formålet med denne programmeringssprog 42 00:01:58,240 --> 00:02:01,570 er at forespørge en database, til anmode om oplysninger af en database, 43 00:02:01,570 --> 00:02:04,480 finde oplysninger i en database, og så videre. 44 00:02:04,480 --> 00:02:08,449 >> Vi har også, i CS50-- og det er en meget fælles platform, kaldes det MySQL. 45 00:02:08,449 --> 00:02:10,600 Det er, hvad vi bruger i løbet. 46 00:02:10,600 --> 00:02:12,880 Det er en open source platform, der etablerer 47 00:02:12,880 --> 00:02:16,732 en såkaldt relationel database-- en database, effektivt. 48 00:02:16,732 --> 00:02:18,440 Vi har ikke brug for at få for meget i detaljer 49 00:02:18,440 --> 00:02:20,930 om, hvad en relationel database er. 50 00:02:20,930 --> 00:02:24,650 Men SQL sproget er meget dygtige til at arbejde 51 00:02:24,650 --> 00:02:29,760 med MySQL og andre lignende stilarter relationsdatabaser. 52 00:02:29,760 --> 00:02:34,010 >> Og mange installationer af MySQL komme med noget 53 00:02:34,010 --> 00:02:37,760 kaldet phpMyAdmin, som er en grafisk brugergrænseflade 54 00:02:37,760 --> 00:02:40,970 interface-- en GUI-- der gør det lidt mere 55 00:02:40,970 --> 00:02:44,410 brugervenlig at udføre databaseforespørgsler, 56 00:02:44,410 --> 00:02:48,980 fordi databaser ikke bare brugt af avancerede programmører, ikke? 57 00:02:48,980 --> 00:02:51,510 Nogle gange er der disse små virksomheder, 58 00:02:51,510 --> 00:02:53,900 og de kan ikke tillade sig at leje et team af programmører, 59 00:02:53,900 --> 00:02:56,700 men de har stadig brug for at gemme oplysninger i en database. 60 00:02:56,700 --> 00:02:59,300 >> Noget som phpMyAdmin gør det meget nemt for nogen 61 00:02:59,300 --> 00:03:03,630 som aldrig programmeret før til afhente og blive fortrolig med, hvordan 62 00:03:03,630 --> 00:03:07,710 at arbejde med en database. 63 00:03:07,710 --> 00:03:11,800 Problemet er, phpMyAdmin, mens Det er et fantastisk værktøj til at lære 64 00:03:11,800 --> 00:03:14,850 om databaser, det er manuel. 65 00:03:14,850 --> 00:03:18,050 Du kommer til at have til at logge ind det og udføre kommandoer og typen 66 00:03:18,050 --> 00:03:19,910 ting i manuelt. 67 00:03:19,910 --> 00:03:23,160 >> Og som vi kender fra vores eksempel på PHP web programmering, 68 00:03:23,160 --> 00:03:26,550 skulle manuelt gøre ting på vores hjemmeside, 69 00:03:26,550 --> 00:03:30,970 hvis vi ønsker en dynamisk, aktiv lydhør hjemmeside, måske ikke den bedste fremgangsmåde. 70 00:03:30,970 --> 00:03:33,980 Vi vil gerne finde en måde at måske automatisere dette eller anden måde. 71 00:03:33,980 --> 00:03:37,864 Og SQL vil give os mulighed for at gøre dette. 72 00:03:37,864 --> 00:03:39,780 Så når vi kommer til at begynde at arbejde med SQL, 73 00:03:39,780 --> 00:03:41,220 vi først nødt til at have en database at arbejde med. 74 00:03:41,220 --> 00:03:42,510 Oprettelse af en database noget du sandsynligvis 75 00:03:42,510 --> 00:03:45,350 vil gøre i phpMyAdmin, fordi du kun behøver at gøre det én gang, 76 00:03:45,350 --> 00:03:49,690 og syntaks for at gøre det er meget mere ligetil. 77 00:03:49,690 --> 00:03:51,940 Det er meget nemmere at gøre det i en grafisk brugergrænseflade 78 00:03:51,940 --> 00:03:53,520 end at skrive det ud som en kommando. 79 00:03:53,520 --> 00:03:55,186 Kommandoen kan få lidt besværligt. 80 00:03:55,186 --> 00:03:58,889 Ligeledes oprette en tabel kan få ganske lidt besværlig som godt. 81 00:03:58,889 --> 00:04:01,930 Og så ting som at oprette en database og skabe en tabel, som du er 82 00:04:01,930 --> 00:04:06,270 sandsynligvis kun vil gøre once-- én gang pr bord, én gang pr database-- 83 00:04:06,270 --> 00:04:09,040 det er OK at gøre det i en grafisk brugerflade. 84 00:04:09,040 --> 00:04:11,570 I processen med skabe et bord, vil du 85 00:04:11,570 --> 00:04:14,840 også nødt til at angive alle de kolonner, der vil være i tabellen. 86 00:04:14,840 --> 00:04:18,149 Hvilken slags oplysninger gør du ønsker at gemme i tabellen? 87 00:04:18,149 --> 00:04:24,520 Måske en brugers navn og fødselsdato, adgangskode, bruger-ID-nummer, og måske 88 00:04:24,520 --> 00:04:26,170 by og stat, ikke? 89 00:04:26,170 --> 00:04:30,080 >> Og for hver gang vi ønsker at tilføje en bruger til databasen, vi ønsker at få alle seks 90 00:04:30,080 --> 00:04:31,890 af disse stykker information. 91 00:04:31,890 --> 00:04:34,840 Og det gør vi ved at tilføje rækker til bordet. 92 00:04:34,840 --> 00:04:37,800 Så vi først oprette en database, så skaber vi et bord. 93 00:04:37,800 --> 00:04:40,100 Som en del af at skabe et bord, bliver vi bedt 94 00:04:40,100 --> 00:04:44,280 at specificere hver kolonne, vi gerne i denne tabel. 95 00:04:44,280 --> 00:04:47,247 Og derefter som vi begynder at tilføje oplysninger til databasen 96 00:04:47,247 --> 00:04:49,580 og søge i databasen mere generally-- ikke blot at tilføje, 97 00:04:49,580 --> 00:04:51,610 men alt andet, vi do-- vi vil være der beskæftiger sig 98 00:04:51,610 --> 00:04:58,870 med rækker af tabellen, som er en brugerens information fra hele sættet. 99 00:04:58,870 --> 00:05:03,210 >> Så hver SQL kolonne er i stand til holder data for en bestemt datatype. 100 00:05:03,210 --> 00:05:06,560 Så vi slags elimineret dette idé om datatyper i PHP, 101 00:05:06,560 --> 00:05:08,747 men de er tilbage her i SQL. 102 00:05:08,747 --> 00:05:10,080 Og der er en masse af datatyper. 103 00:05:10,080 --> 00:05:13,420 Her er kun 20 af dem, men det er ikke engang dem alle. 104 00:05:13,420 --> 00:05:16,240 Så vi har ideer som INTs-- Integers-- vi kender sikkert 105 00:05:16,240 --> 00:05:17,760 at denne kolonne kan holde heltal. 106 00:05:17,760 --> 00:05:21,077 Og der er variationer thereon-- SMALLINT, tinyint, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Måske har vi ikke altid behøver fire bid. 108 00:05:22,660 --> 00:05:26,800 Måske har vi brug for otte byte, og så vi kan bruge disse variationer på heltal 109 00:05:26,800 --> 00:05:28,510 at være en smule mere plads effektiv. 110 00:05:28,510 --> 00:05:31,899 Vi kan gøre decimaltal, vi kan gøre flydende komma tal. 111 00:05:31,899 --> 00:05:32,940 Disse er temmelig ens. 112 00:05:32,940 --> 00:05:34,773 Der er nogle forskelle, og hvis du ville 113 00:05:34,773 --> 00:05:37,330 gerne se op SQL slags vejledning, du 114 00:05:37,330 --> 00:05:40,670 kan se, hvad den lille forskelle mellem dem. 115 00:05:40,670 --> 00:05:43,250 >> Måske vi ønsker at gemme information om dato og tid. 116 00:05:43,250 --> 00:05:47,047 Måske vi holde styr på når brugeren sluttede vores hjemmeside, 117 00:05:47,047 --> 00:05:48,880 og så måske vi ønsker at have en kolonne, der er 118 00:05:48,880 --> 00:05:52,820 en dato tid eller et tidsstempel, der angiver, når brugeren rent faktisk 119 00:05:52,820 --> 00:05:54,130 tilmeldt. 120 00:05:54,130 --> 00:05:56,132 Vi kan gøre geometrier og linestrings. 121 00:05:56,132 --> 00:05:57,340 Dette er faktisk ret cool. 122 00:05:57,340 --> 00:06:01,410 Vi kunne kortlægge en geografisk område ved hjælp af 123 00:06:01,410 --> 00:06:05,110 GIS-koordinater til plot ud af et område. 124 00:06:05,110 --> 00:06:08,580 Så kan faktisk gemme den slags af oplysninger i en SQL-kolonne. 125 00:06:08,580 --> 00:06:11,390 >> TEKST er blot kæmpe klatter af tekst, måske. 126 00:06:11,390 --> 00:06:12,840 Gentagelsestyper er lidt interessant. 127 00:06:12,840 --> 00:06:16,080 De faktisk eksisterer i C. Vi gør ikke taler om dem, fordi de ikke er 128 00:06:16,080 --> 00:06:19,110 frygtelig almindeligt anvendt, i det mindste CS50. 129 00:06:19,110 --> 00:06:22,680 Men det er en nummereret datatype, som er i stand til at holde begrænsede værdier. 130 00:06:22,680 --> 00:06:25,940 >> Et rigtig godt eksempel her ville være at skabe en enum hvor syv 131 00:06:25,940 --> 00:06:29,394 Mulige værdier er søndag, mandag, Tirsdag, onsdag, torsdag, fredag, 132 00:06:29,394 --> 00:06:30,060 Lørdag, ikke? 133 00:06:30,060 --> 00:06:33,311 At datatype Dag Uge ikke eksisterer, 134 00:06:33,311 --> 00:06:35,310 men vi kunne skabe en optalt datatype sådan 135 00:06:35,310 --> 00:06:39,400 at denne kolonne kun nogensinde kan holde en af ​​de syv mulige værdier. 136 00:06:39,400 --> 00:06:44,300 Vi har optalt alle af de mulige værdier. 137 00:06:44,300 --> 00:06:47,630 >> Så har vi CHAR og VARCHAR, og jeg har farve disse grønne 138 00:06:47,630 --> 00:06:49,505 fordi vi er faktisk kommer til at tage en anden 139 00:06:49,505 --> 00:06:51,950 at tale om forskellen mellem disse to ting. 140 00:06:51,950 --> 00:06:55,780 Så CHAR modsætning C, hvor CHAR var et enkelt tegn, 141 00:06:55,780 --> 00:07:00,730 i SQL en CHAR refererer til en streng fast længde. 142 00:07:00,730 --> 00:07:02,620 Og når vi skaber dette kolonne, vi faktisk 143 00:07:02,620 --> 00:07:05,070 kan angive længden af ​​strengen. 144 00:07:05,070 --> 00:07:08,080 >> Så i dette eksempel, vi kan sige CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Det betyder, at hver element i denne kolonne 146 00:07:11,190 --> 00:07:13,910 vil bestå af 10 bytes af information. 147 00:07:13,910 --> 00:07:15,770 Ikke mere, ikke mindre. 148 00:07:15,770 --> 00:07:21,780 Så hvis vi forsøger og sat i en 15 bit eller en 15 karakter element 149 00:07:21,780 --> 00:07:25,340 eller værdien i denne kolonne, vi kun får de første 10. 150 00:07:25,340 --> 00:07:27,290 Hvis vi lægger i de to karakter lange værdi, 151 00:07:27,290 --> 00:07:30,700 vi vil have de to tegn, og derefter otte null bid. 152 00:07:30,700 --> 00:07:34,990 Vi vil aldrig være mere effektiv end det. 153 00:07:34,990 --> 00:07:37,727 >> En VARCHAR er lidt ligesom vores opfattelse af en streng 154 00:07:37,727 --> 00:07:39,560 at vi kender med fra C eller fra PHP. 155 00:07:39,560 --> 00:07:40,830 Det er en variabel streng længde. 156 00:07:40,830 --> 00:07:42,560 Og når du opretter denne kolonne, skal du bare 157 00:07:42,560 --> 00:07:44,860 specificere den maksimale mulige længder. 158 00:07:44,860 --> 00:07:49,065 Så måske 99, eller almindeligvis 255. 159 00:07:49,065 --> 00:07:50,440 Det ville være den maksimale længde. 160 00:07:50,440 --> 00:07:52,890 Og så hvis vi var lagring 15 tegnstreng, 161 00:07:52,890 --> 00:07:56,157 vi ville bruge 15 bytes, måske 16 bytes for null terminator. 162 00:07:56,157 --> 00:07:57,990 Hvis vi var lagring af en tre tegnstreng, 163 00:07:57,990 --> 00:08:01,120 vi ville bruge tre eller fire bytes. 164 00:08:01,120 --> 00:08:03,050 Men vi ville ikke bruge den fulde 99. 165 00:08:03,050 --> 00:08:05,190 >> Så hvorfor skulle vi have begge dele? 166 00:08:05,190 --> 00:08:08,210 Tja, hvis vi har brug for at regne ud, hvordan lange noget er med en VARCHAR, 167 00:08:08,210 --> 00:08:10,680 vi er nødt til slags ITERATE- på tværs af det ligesom vi gjorde i C 168 00:08:10,680 --> 00:08:12,230 og finde ud af hvor det stopper. 169 00:08:12,230 --> 00:08:15,920 Hvorimod hvis vi ved, at alt i denne kolonne er 10 bytes, måske 170 00:08:15,920 --> 00:08:19,220 vi ved, at information, kan vi hoppe 10 bytes, 10 bytes, 10 bytes, 10 bytes, 171 00:08:19,220 --> 00:08:21,790 og altid finde den begyndelsen af ​​strengen. 172 00:08:21,790 --> 00:08:25,210 >> Så vi kan have nogle spildt plads med en CHAR, 173 00:08:25,210 --> 00:08:28,510 men måske er der en handel off for at have bedre hastighed 174 00:08:28,510 --> 00:08:30,160 i navigering databasen. 175 00:08:30,160 --> 00:08:32,330 Men måske vi ønsker fleksibiliteten i et VARCHAR 176 00:08:32,330 --> 00:08:36,710 i stedet for having-- Hvis vores CHAR var 255, men de fleste af vores brugere 177 00:08:36,710 --> 00:08:40,537 blev kun indlæsning tre eller fire bytes værd af oplysninger eller tre eller fire 178 00:08:40,537 --> 00:08:41,870 tegn værd af oplysninger. 179 00:08:41,870 --> 00:08:44,324 >> Men nogle brugere brugte hele 255, måske 180 00:08:44,324 --> 00:08:45,990 VARCHAR ville være mere passende der. 181 00:08:45,990 --> 00:08:49,840 Det er en slags en afvejning, og generelt med henblik på CS50, 182 00:08:49,840 --> 00:08:54,107 du behøver ikke at bekymre dig for meget om uanset om du bruger en CHAR eller VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Men i den virkelige verden, disse ting enten noget, fordi alle disse kolonner 184 00:08:57,190 --> 00:08:59,300 optager faktiske fysiske rum. 185 00:08:59,300 --> 00:09:04,150 Og fysiske rum, i virkelige verden, kommer på en præmie. 186 00:09:04,150 --> 00:09:06,800 >> Så en anden overvejelse når du bygger et bord 187 00:09:06,800 --> 00:09:09,840 er at vælge en kolonne til at være hvad der kaldes en primær nøgle. 188 00:09:09,840 --> 00:09:14,350 Og en primær nøgle er en kolonne hvor hver enkelt værdi er unik. 189 00:09:14,350 --> 00:09:19,980 Og det betyder, at du nemt udvælge en enkelt række blot ved at kigge 190 00:09:19,980 --> 00:09:22,450 på den primære nøgle i den pågældende række. 191 00:09:22,450 --> 00:09:24,580 Så du for eksempel generelt med brugerne, 192 00:09:24,580 --> 00:09:27,210 ønsker ikke to brugere, der har det samme bruger-id-nummer. 193 00:09:27,210 --> 00:09:28,960 Og så måske du har masser af oplysninger, 194 00:09:28,960 --> 00:09:30,793 og måske to brugere kan har samme name-- 195 00:09:30,793 --> 00:09:32,650 du har John Smith og John Smith. 196 00:09:32,650 --> 00:09:34,520 Det er ikke nødvendigvis et problem, fordi der er flere personer 197 00:09:34,520 --> 00:09:35,830 i verden ved navn John Smith. 198 00:09:35,830 --> 00:09:40,766 Men vi har kun én bruger id-nummer 10, en bruger-id nummer 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Vi har ikke to brugere med det samme antal, 200 00:09:42,640 --> 00:09:46,010 og så måske bruger id-numre ville være en god primær nøgle. 201 00:09:46,010 --> 00:09:48,610 >> Vi har ikke nogen overlapning, og vi kan nu entydigt 202 00:09:48,610 --> 00:09:52,619 identificere hver enkelt række lige ved at se på denne kolonne. 203 00:09:52,619 --> 00:09:55,410 Valg primære nøgler kan faktisk gøre efterfølgende tabel operationer 204 00:09:55,410 --> 00:09:59,710 meget lettere, fordi du kan udnytte det faktum, at visse rækker vil 205 00:09:59,710 --> 00:10:02,720 være unikke eller en bestemt kolonne af din database eller bord 206 00:10:02,720 --> 00:10:06,030 vil være unik at gå af bestemte rækker. 207 00:10:06,030 --> 00:10:08,790 >> Du kan også have en fælles primær nøgle, som du kan finde lejlighed 208 00:10:08,790 --> 00:10:11,720 at bruge, som er blot en kombination af to kolonner, 209 00:10:11,720 --> 00:10:13,280 er garanteret at være unik. 210 00:10:13,280 --> 00:10:16,410 Så måske du har en kolonne, der er så og Bs, 211 00:10:16,410 --> 00:10:19,290 én kolonne, der er en, to, og tre, men du vil altid kun 212 00:10:19,290 --> 00:10:23,660 have en enkelt A1, en enkelt A2, og så videre og så videre. 213 00:10:23,660 --> 00:10:28,980 Men du måske har en B2, en C2, eller A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Så du kan have flere Som, flere Bs, flere dem, flere toere, 215 00:10:32,840 --> 00:10:38,567 men du kan altid kun have en single A1, B2, C3, og så videre. 216 00:10:38,567 --> 00:10:40,400 Så som jeg sagde, SQL er en programmeringssprog, 217 00:10:40,400 --> 00:10:42,024 men det har en temmelig begrænset ordforråd. 218 00:10:42,024 --> 00:10:44,880 Det er ikke helt så ekspansiv som C og PHP og andre sprog 219 00:10:44,880 --> 00:10:46,350 at vi taler i løbet. 220 00:10:46,350 --> 00:10:49,960 Det er mere detaljeret et sprog, end hvad vi er 221 00:10:49,960 --> 00:10:52,789 vil tale om i denne video, fordi i denne video 222 00:10:52,789 --> 00:10:54,830 vi kommer til at tale om fire operationer, som vi 223 00:10:54,830 --> 00:10:55,720 kan udføre på et bord. 224 00:10:55,720 --> 00:10:56,761 >> Der er mere end dette. 225 00:10:56,761 --> 00:10:58,730 Vi kan gøre mere end dette, men til vores formål, 226 00:10:58,730 --> 00:11:02,250 vi generelt skal bruge blot fire operations-- indsats, 227 00:11:02,250 --> 00:11:05,360 Vælg, opdatere og slette. 228 00:11:05,360 --> 00:11:08,750 Og du kan sikkert intuitivt gætte hvad alle fire af disse ting gør. 229 00:11:08,750 --> 00:11:12,520 Men vi vil gå ind i en lidt detaljer om hver enkelt. 230 00:11:12,520 --> 00:11:15,780 >> Så for anvendelsen af ​​denne video, lad os antage 231 00:11:15,780 --> 00:11:18,870 Vi har følgende to tabeller i en enkelt database. 232 00:11:18,870 --> 00:11:23,460 Vi har en tabel kaldet Brugere, der har fire columns-- id-nummer, brugernavn, 233 00:11:23,460 --> 00:11:25,350 adgangskode og fulde navn. 234 00:11:25,350 --> 00:11:27,430 Og vi har en anden tabel i den samme database 235 00:11:27,430 --> 00:11:32,129 kaldet Moms, der bare gemmer oplysninger om et brugernavn og en mor. 236 00:11:32,129 --> 00:11:33,920 Så for alle eksempler i denne video, vi får 237 00:11:33,920 --> 00:11:37,945 bruge denne database og efterfølgende opdateringer til det. 238 00:11:37,945 --> 00:11:40,070 Så lad os sige, vi ønsker at tilføj oplysninger til en tabel. 239 00:11:40,070 --> 00:11:44,460 Det er, hvad indsatsen operationen gør. 240 00:11:44,460 --> 00:11:46,550 Forklare alle disse kommandoer, jeg skal 241 00:11:46,550 --> 00:11:48,860 at give dig en generel skelet til at bruge. 242 00:11:48,860 --> 00:11:51,661 Fordi Grundlæggende forespørgsler går se temmelig ens, 243 00:11:51,661 --> 00:11:54,660 vi bare kommer til at være under forandring lidt forskellige stykker information 244 00:11:54,660 --> 00:11:56,750 at gøre forskellige ting med bordet. 245 00:11:56,750 --> 00:11:59,200 >> Så for INSERT, skelettet ser lidt ligesom dette. 246 00:11:59,200 --> 00:12:02,230 Vi ønsker at indsætte i en bestemt tabel. 247 00:12:02,230 --> 00:12:05,290 Så har vi en åben parentes og en liste over kolonner 248 00:12:05,290 --> 00:12:08,070 at vi ønsker at sætte værdier ind. 249 00:12:08,070 --> 00:12:10,974 Luk parenteser, den følgende værdier, og derefter 250 00:12:10,974 --> 00:12:13,390 igen, vi liste ud de værdier Vi ønsker at sætte i tabellen. 251 00:12:13,390 --> 00:12:15,950 >> Så et eksempel på denne vil være følgende. 252 00:12:15,950 --> 00:12:19,170 Jeg ønsker at indsætte i tabellen brugere følgende columns-- 253 00:12:19,170 --> 00:12:21,010 brugernavn, adgangskode og fullname. 254 00:12:21,010 --> 00:12:25,282 Så en ny række, hvor jeg lægger i disse tre kolonner, og vi er 255 00:12:25,282 --> 00:12:30,030 kommer til at sætte i værdierne Newman, USMAIL, og Newman. 256 00:12:30,030 --> 00:12:32,730 Så i dette tilfælde, er jeg sætte små bogstaver Newman 257 00:12:32,730 --> 00:12:38,710 i brugernavn kolonnen adgangskoden USMAIL, og det fulde navn hovedstad N 258 00:12:38,710 --> 00:12:41,940 Newman i fullname kolonnen. 259 00:12:41,940 --> 00:12:44,240 >> Så her er hvad databasen lignede før. 260 00:12:44,240 --> 00:12:48,250 Her er, hvad brugerne tabellen på top lignede før vi gjorde dette. 261 00:12:48,250 --> 00:12:50,760 Efter at vi udføre denne forespørgsel, vi får dette. 262 00:12:50,760 --> 00:12:54,790 Vi har tilføjet en ny række i tabellen. 263 00:12:54,790 --> 00:12:56,810 Men bemærke dette ene ting at jeg ikke angive, 264 00:12:56,810 --> 00:12:59,880 men på en måde jeg har fået en værdi for, som er denne 12 lige her. 265 00:12:59,880 --> 00:13:02,820 Jeg sagde ikke, jeg ville sætte ID-nummer derinde. 266 00:13:02,820 --> 00:13:04,900 Jeg ønskede at sætte brugernavn, adgangskode, fullname. 267 00:13:04,900 --> 00:13:06,440 Og jeg gjorde det, det er fint. 268 00:13:06,440 --> 00:13:07,760 >> Men jeg fik også denne 12. 269 00:13:07,760 --> 00:13:09,490 Hvorfor fik jeg denne 12? 270 00:13:09,490 --> 00:13:12,904 Tja, det viser sig, at når du definerer 271 00:13:12,904 --> 00:13:15,570 en kolonne, der vil være din primær nøgle, hvilket er normalt, 272 00:13:15,570 --> 00:13:16,510 som jeg sagde, et ID-nummer. 273 00:13:16,510 --> 00:13:18,718 Det er ikke altid nødvendigvis kommer til at være et ID-nummer, 274 00:13:18,718 --> 00:13:22,380 men det er som regel en god ide at være en slags heltalsværdi. 275 00:13:22,380 --> 00:13:25,950 Du har en mulighed i phpMyAdmin når du opretter din database 276 00:13:25,950 --> 00:13:31,130 eller dit bord til at indstille, at kolonne som auto inkrementeringen. 277 00:13:31,130 --> 00:13:34,520 >> Som er en virkelig god idé, når du arbejder med en primær nøgle, 278 00:13:34,520 --> 00:13:39,330 fordi du vil have hver værdi i kolonnen for at være unik. 279 00:13:39,330 --> 00:13:43,310 Og hvis du glemmer at angive det for mere end én person, 280 00:13:43,310 --> 00:13:46,240 du nu har en situation, hvor denne kolonne er ikke længere enestående. 281 00:13:46,240 --> 00:13:50,200 Du har to blanke, så du kan ikke længere entydigt at identificere et column-- 282 00:13:50,200 --> 00:13:54,150 eller du kan ikke længere entydigt identificere en række baseret på denne kolonne. 283 00:13:54,150 --> 00:13:57,010 Det har mistet alle sine værdi som en primær nøgle. 284 00:13:57,010 --> 00:14:02,010 >> Og så tilsyneladende, hvad jeg har gjort her er konfigureret bruger-ID 285 00:14:02,010 --> 00:14:07,790 kolonne til auto tilvækst, således at hver gang jeg tilføjer oplysninger til bordet, 286 00:14:07,790 --> 00:14:12,220 Det vil automatisk give mig en værdi for den primære nøgle. 287 00:14:12,220 --> 00:14:15,570 Så jeg kan aldrig glemme at gøre det, fordi databasen vil gøre det for mig. 288 00:14:15,570 --> 00:14:16,587 Så det er lidt rart. 289 00:14:16,587 --> 00:14:18,670 Og så det er derfor vi får 12 derinde, fordi jeg har 290 00:14:18,670 --> 00:14:21,772 sætte kolonnen op til auto tilvækst. 291 00:14:21,772 --> 00:14:23,730 Hvis jeg har tilføjet en anden det ville være 13, hvis jeg tilføjede 292 00:14:23,730 --> 00:14:27,890 en anden ville det være 14, og så videre. 293 00:14:27,890 --> 00:14:30,190 >> Så lad os bare gøre endnu et indsættelse. 294 00:14:30,190 --> 00:14:34,530 Vi vil indsætte i moms tabellen, i Især det brugernavn og mor 295 00:14:34,530 --> 00:14:37,390 kolonne, værdierne kramer og Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 Og så havde vi dette før. 297 00:14:39,140 --> 00:14:41,800 Efter at vi udfører, at SQL-forespørgsel, vi har denne. 298 00:14:41,800 --> 00:14:47,290 Vi har tilføjet Kramer og Babs Kramer til mødre tabellen. 299 00:14:47,290 --> 00:14:48,350 >> Så der er indsættelse. 300 00:14:48,350 --> 00:14:51,850 SELECT er det, vi bruger til at udtrække information fra tabellen. 301 00:14:51,850 --> 00:14:54,390 Så dette er, hvordan vi får oplysninger ud af databasen. 302 00:14:54,390 --> 00:14:59,589 Og så vælge kommandoer vil være meget ofte i programmering. 303 00:14:59,589 --> 00:15:02,130 Den generelle framework-- den generel skelet ser sådan ud. 304 00:15:02,130 --> 00:15:06,550 Vælger et sæt kolonner fra en tabel, og derefter eventuelt 305 00:15:06,550 --> 00:15:11,090 du kan angive en Stand- eller hvad vi kalder typisk et prædikat, 306 00:15:11,090 --> 00:15:13,010 er normalt udtrykket vi bruger i SQL. 307 00:15:13,010 --> 00:15:16,490 >> Men det er, hvad der dybest set særlige rækker du ønsker at få. 308 00:15:16,490 --> 00:15:19,100 Hvis du vil, i stedet for at få alt, indsnævre den ned, 309 00:15:19,100 --> 00:15:20,060 det er her, du ville gøre det. 310 00:15:20,060 --> 00:15:22,777 Og så eventuelt, kan du også orden af ​​en bestemt kolonne. 311 00:15:22,777 --> 00:15:25,860 Så måske du ønsker at have ting sorteres alfabetisk baseret på en kolonne 312 00:15:25,860 --> 00:15:27,540 eller alfabetisk baseret på en anden. 313 00:15:27,540 --> 00:15:30,610 >> Igen, HVOR og ORDER BY er valgfrie. 314 00:15:30,610 --> 00:15:32,681 Men de vil sandsynligvis være useful-- især 315 00:15:32,681 --> 00:15:34,680 Hvor vil være nyttigt at indsnævre, så du ikke gør 316 00:15:34,680 --> 00:15:37,460 få hele din database tilbage og nødt til at behandle det, du bare få 317 00:15:37,460 --> 00:15:39,300 stykker af det, at du holder af. 318 00:15:39,300 --> 00:15:44,932 Så for eksempel, kan jeg ønsker at vælge ID-nummer og fullname fra brugerne. 319 00:15:44,932 --> 00:15:46,140 Så hvad kan dette se ud? 320 00:15:46,140 --> 00:15:48,270 Så her er min brugere bord. 321 00:15:48,270 --> 00:15:51,080 Jeg vil vælge idnum og fullname fra brugerne. 322 00:15:51,080 --> 00:15:52,300 Hvad skal jeg købe? 323 00:15:52,300 --> 00:15:53,580 Jeg har tænkt mig at få dette. 324 00:15:53,580 --> 00:15:56,930 Jeg har ikke indsnævre den ned, så jeg er få ID-nummer for hver række 325 00:15:56,930 --> 00:16:00,850 og jeg får den fulde navn fra hver række. 326 00:16:00,850 --> 00:16:02,210 >> OK. 327 00:16:02,210 --> 00:16:05,640 Hvad hvis jeg ønsker at vælge adgangskode fra brugerne WHERE-- så nu 328 00:16:05,640 --> 00:16:10,370 Jeg tilføjer en tilstand, en predicate-- hvor idnum er mindre end 12. 329 00:16:10,370 --> 00:16:13,660 Så her er min database igen, mine brugere bord toppen. 330 00:16:13,660 --> 00:16:17,030 Hvad skal jeg få, hvis jeg ønsker at vælge disse oplysninger, password, 331 00:16:17,030 --> 00:16:21,550 hvor bruger-id eller idnum er mindre end 12? 332 00:16:21,550 --> 00:16:24,910 Jeg har tænkt mig at få denne oplysninger tilbage, ikke? 333 00:16:24,910 --> 00:16:29,170 Det sker, at idnum er 10, mindre end 12, id-nummer 11 mindre end 12. 334 00:16:29,170 --> 00:16:32,160 Jeg får adgangskoden til disse rækker. 335 00:16:32,160 --> 00:16:33,914 Det er, hvad jeg bad om. 336 00:16:33,914 --> 00:16:34,580 Hvad med det her? 337 00:16:34,580 --> 00:16:39,170 Hvad hvis jeg ønsker at vælge stjerne fra moms bordet, hvor brugernavn er lig med Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, vælg stjerne er den særlige slags wild card såkaldte 339 00:16:43,780 --> 00:16:45,670 som vi bruger til at få alt. 340 00:16:45,670 --> 00:16:48,620 Så de siger at vælge brugernavn komma mor, som 341 00:16:48,620 --> 00:16:51,060 tilfældigvis den eneste to kolonner af denne tabel, 342 00:16:51,060 --> 00:16:53,260 Jeg kan bare vælge stjerne og få alt 343 00:16:53,260 --> 00:16:55,030 hvor brugernavn er lig Jerry. 344 00:16:55,030 --> 00:16:59,380 Og så det er hvad jeg ville få hvis jeg gjorde den pågældende forespørgsel. 345 00:16:59,380 --> 00:17:01,810 >> Nu, databaser er stor, fordi de tillader 346 00:17:01,810 --> 00:17:06,074 os til at organisere information måske en smule mere effektivt end vi 347 00:17:06,074 --> 00:17:06,740 måske ellers. 348 00:17:06,740 --> 00:17:10,240 Vi behøver ikke nødvendigvis at gemme hver relevant oplysning 349 00:17:10,240 --> 00:17:12,230 om en bruger i den samme tabel. 350 00:17:12,230 --> 00:17:13,730 Vi havde to tabeller der. 351 00:17:13,730 --> 00:17:15,734 >> Vi er nødt til at gemme alles mors navn, 352 00:17:15,734 --> 00:17:18,900 og måske har vi ikke den sociale sikring nummer, har vi deres fødselsdato. 353 00:17:18,900 --> 00:17:21,819 Det betyder ikke altid brug for at være i den samme tabel. 354 00:17:21,819 --> 00:17:25,339 Så længe vi kan definere relationer mellem tables-- 355 00:17:25,339 --> 00:17:28,440 og det er her, at relationelle database sigt slags kommer 356 00:17:28,440 --> 00:17:32,130 ind play-- så længe vi kan definere relationer mellem tabellerne, 357 00:17:32,130 --> 00:17:35,545 Vi kan slags inddeler eller abstrakte ting, en måde, 358 00:17:35,545 --> 00:17:37,670 hvor vi kun har virkelig vigtige oplysninger 359 00:17:37,670 --> 00:17:39,270 vi interesserer os i brugerens bord. 360 00:17:39,270 --> 00:17:43,220 Og så har vi supplerende oplysninger eller ekstra information i andre tabeller 361 00:17:43,220 --> 00:17:48,260 at vi kan forbinde tilbage til de vigtigste brugere tabellen på en bestemt måde. 362 00:17:48,260 --> 00:17:52,200 >> Så her vi har disse to tabeller, men der er en sammenhæng mellem dem, 363 00:17:52,200 --> 00:17:53,010 højre? 364 00:17:53,010 --> 00:17:55,070 Det ser ud som brugernavn kunne være noget 365 00:17:55,070 --> 00:17:59,909 der findes i fælles mellem disse to forskellige tabeller. 366 00:17:59,909 --> 00:18:01,700 Så hvad nu hvis vi nu har en situation, hvor vi 367 00:18:01,700 --> 00:18:06,046 ønsker at få en brugers fulde navn fra brugerens bordet, og deres mors 368 00:18:06,046 --> 00:18:07,170 navn fra moderen bordet? 369 00:18:07,170 --> 00:18:10,960 Vi har ikke en måde at få at som det er nu, ikke? 370 00:18:10,960 --> 00:18:17,790 Der er ingen enkelt tabel, der indeholder både fulde navn og mors navn. 371 00:18:17,790 --> 00:18:20,400 Vi har ikke denne mulighed fra hvad vi har set hidtil. 372 00:18:20,400 --> 00:18:22,950 >> Og så vi nødt til at indføre ideen om en JOIN. 373 00:18:22,950 --> 00:18:24,857 Og slutter sig er nok den mest complex-- 374 00:18:24,857 --> 00:18:27,940 det er virkelig mest komplekse operation vi kommer til at tale om i videoen. 375 00:18:27,940 --> 00:18:30,040 De er lidt kompliceret, men når du får hænge af det, 376 00:18:30,040 --> 00:18:31,248 de er faktisk ikke så slemt. 377 00:18:31,248 --> 00:18:32,820 Det er bare et specialtilfælde af en SELECT. 378 00:18:32,820 --> 00:18:37,120 Vi kommer til at vælge et sæt kolonner fra en tabel, sammenføjning 379 00:18:37,120 --> 00:18:40,650 i en anden tabel på nogle prædikat. 380 00:18:40,650 --> 00:18:45,340 >> I dette tilfælde, tænker over det gerne denne-- tabel ene er en cirkel herovre, 381 00:18:45,340 --> 00:18:47,530 tabel to er en anden cirkel herovre. 382 00:18:47,530 --> 00:18:49,410 Og det prædikat del i midten, er det 383 00:18:49,410 --> 00:18:51,701 lidt ligesom, hvis du tror om en Venn-diagram, hvilket 384 00:18:51,701 --> 00:18:52,670 har de til fælles? 385 00:18:52,670 --> 00:18:55,960 Vi ønsker at forbinde disse to tabeller baseret på, hvad de har til fælles 386 00:18:55,960 --> 00:19:01,230 og skabe denne hypotetiske tabel der er en fusion af de to sammen. 387 00:19:01,230 --> 00:19:03,480 Så vi vil se dette i en eksempel og måske det vil hjælpe 388 00:19:03,480 --> 00:19:04,521 rydde det op en lille smule. 389 00:19:04,521 --> 00:19:09,260 Så måske du ønsker at vælge USER.FULLNAME og moms.mother 390 00:19:09,260 --> 00:19:13,220 fra brugere, slutter i mødre bord i enhver situation 391 00:19:13,220 --> 00:19:16,790 hvor brugernavn kolonnen er den samme mellem dem. 392 00:19:16,790 --> 00:19:19,240 Og dette er en ny syntaks her, denne bruger. 393 00:19:19,240 --> 00:19:20,460 og mødre .. 394 00:19:20,460 --> 00:19:26,697 Hvis jeg gør flere tabeller sammen, kan jeg angive et bord. 395 00:19:26,697 --> 00:19:29,530 Jeg kan skelne især om at der på i bunden der. 396 00:19:29,530 --> 00:19:33,220 Jeg kan skelne brugernavnet kolonne i brugernes tabellen 397 00:19:33,220 --> 00:19:36,010 fra brugernavnet kolonne i moms bord, som er otherwise-- 398 00:19:36,010 --> 00:19:38,070 hvis vi lige sagt brugernavn lig brugernavn, der ikke rigtig 399 00:19:38,070 --> 00:19:38,970 betyder noget. 400 00:19:38,970 --> 00:19:41,440 Vi ønsker at gøre det, hvor de passer. 401 00:19:41,440 --> 00:19:46,080 >> Så jeg kan specificere bordet og kolonnenavn i tilfælde af en situation 402 00:19:46,080 --> 00:19:48,370 hvor det ville være uklart hvad jeg taler om. 403 00:19:48,370 --> 00:19:51,880 Så det er alt jeg gør er der jeg er siger denne kolonne fra denne tabel, 404 00:19:51,880 --> 00:19:54,020 og bliver meget eksplicit. 405 00:19:54,020 --> 00:19:56,810 Så igen, jeg vælge fulde navn og moderens navn 406 00:19:56,810 --> 00:20:00,950 fra brugere tabellen kædet sammen med mødre tabellen i enhver situation 407 00:20:00,950 --> 00:20:05,960 hvor de deler, at column-- de deler det brugernavn begreb. 408 00:20:05,960 --> 00:20:08,580 >> Så her er de tabeller, vi havde før. 409 00:20:08,580 --> 00:20:12,210 Dette er den tilstand af vores database, som den eksisterer lige nu. 410 00:20:12,210 --> 00:20:16,390 De oplysninger, vi udvinder er det til at begynde med. 411 00:20:16,390 --> 00:20:19,820 Dette er den nye tabel vi vil at skabe kombinere disse sammen. 412 00:20:19,820 --> 00:20:23,585 Og mærke vi ikke fremhæve Newmans række i brugerens tabel, 413 00:20:23,585 --> 00:20:25,960 og vi ikke fremhæve Kramers række i moms tabellen 414 00:20:25,960 --> 00:20:31,250 fordi hverken den ene findes i både sets-- i begge tabeller. 415 00:20:31,250 --> 00:20:36,260 >> Den eneste information, der er til fælles mellem dem er Jerry er i begge tabeller 416 00:20:36,260 --> 00:20:39,100 og gcostanza er i begge tabeller. 417 00:20:39,100 --> 00:20:42,620 Og så når vi gør SQL JOIN, hvad vi get-- og vi gør faktisk får dette. 418 00:20:42,620 --> 00:20:44,830 Det er en slags midlertidig variabel. 419 00:20:44,830 --> 00:20:47,330 Det er ligesom en hypotetisk fusion af de to tabeller. 420 00:20:47,330 --> 00:20:49,930 Vi har faktisk få noget som dette, hvor 421 00:20:49,930 --> 00:20:54,730 vi har fusioneret sammen tabellerne på oplysninger, som de har til fælles. 422 00:20:54,730 --> 00:20:58,334 >> Så bemærke, at users.username og moms.username søjle, 423 00:20:58,334 --> 00:20:59,250 Det er præcis den samme. 424 00:20:59,250 --> 00:21:01,820 Det var de oplysninger, som var konsistent fra brugerne 425 00:21:01,820 --> 00:21:02,890 tabel og mødre tabellen. 426 00:21:02,890 --> 00:21:04,270 Og så vi fusionerede dem sammen. 427 00:21:04,270 --> 00:21:06,919 Vi kasseret Kramer, fordi han fandtes ikke i brugertabellen, 428 00:21:06,919 --> 00:21:09,710 og vi kasseret Newman, fordi han ikke eksisterer i den moms tabellen. 429 00:21:09,710 --> 00:21:16,450 Så dette er den hypotetiske fusion ved hjælp af JOIN driften af ​​SELECT. 430 00:21:16,450 --> 00:21:21,250 >> Og så var vi på udkig efter den brugerens fulde navn og brugerens mor, 431 00:21:21,250 --> 00:21:24,999 og så dette er den information, vi ville få fra den samlede forespørgsel 432 00:21:24,999 --> 00:21:26,040 at vi lavet med SELECT. 433 00:21:26,040 --> 00:21:28,873 Så vi sluttede tabellerne sammen og vi ekstraheret disse to kolonner, 434 00:21:28,873 --> 00:21:31,610 og så det er, hvad vi ville få. 435 00:21:31,610 --> 00:21:33,370 Men SQL Sammenføjninger en slags kompliceret. 436 00:21:33,370 --> 00:21:36,770 Du vil sandsynligvis ikke gøre dem for meget, men bare have en idé om skelettet 437 00:21:36,770 --> 00:21:41,992 at man kunne bruge til at flette to tabeller sammen, hvis du havde brug for. 438 00:21:41,992 --> 00:21:43,700 De sidste to er en lidt enklere lover jeg. 439 00:21:43,700 --> 00:21:48,040 Så opdatere, kan vi bruge UPDATE at ændre information i en tabel. 440 00:21:48,040 --> 00:21:53,880 Den generelle format er UPDATE nogle tabel, der er nogle kolonnen til en vis værdi 441 00:21:53,880 --> 00:21:55,540 Hvor nogle prædikat er tilfreds. 442 00:21:55,540 --> 00:21:57,850 Så for eksempel, kan vi ønsker for at opdatere brugere tabellen 443 00:21:57,850 --> 00:22:04,400 og angive adgangskoden til yada yada, hvor ID-nummeret er 10. 444 00:22:04,400 --> 00:22:06,400 >> Så i dette tilfælde, er vi opdatering af brugere tabellen. 445 00:22:06,400 --> 00:22:08,275 ID-nummeret er 10 for at første række er, 446 00:22:08,275 --> 00:22:10,690 og vi ønsker at opdatere adgangskode til yada yada. 447 00:22:10,690 --> 00:22:12,170 Og så det er hvad der ville ske. 448 00:22:12,170 --> 00:22:13,628 Det er ret ligetil, ikke? 449 00:22:13,628 --> 00:22:17,990 Det er bare en meget simpel ændring af tabellen. 450 00:22:17,990 --> 00:22:22,250 >> DELETE er operationen vi plejede at fjerne oplysninger fra en tabel. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM tabel, hvor nogle prædikat er tilfreds. 452 00:22:24,817 --> 00:22:26,900 Vi ønsker at slette fra brugere tabellen for eksempel 453 00:22:26,900 --> 00:22:28,254 hvor brugernavn er Newman. 454 00:22:28,254 --> 00:22:31,420 Du kan sikkert gætte hvad der kommer til ske her efter vi udfører, at SQL 455 00:22:31,420 --> 00:22:35,790 forespørgsel, er Newman gået fra bordet. 456 00:22:35,790 --> 00:22:40,460 >> Så alle disse operationer, som jeg har sagt, er meget let at gøre i phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Det er en meget brugervenlig grænseflade. 458 00:22:43,020 --> 00:22:45,930 Men det kræver manuel indsats. 459 00:22:45,930 --> 00:22:47,840 Vi ønsker ikke at ansætte manuel indsats. 460 00:22:47,840 --> 00:22:51,280 Vi ønsker, at vores programmer til gøre dette for os, ikke? 461 00:22:51,280 --> 00:22:53,190 Så vi måske ønsker at gøre dette programmeringsmæssigt. 462 00:22:53,190 --> 00:22:56,410 Vi ønsker at indarbejde SQL og har noget andet at gøre dette for os. 463 00:22:56,410 --> 00:23:02,710 >> Men hvad har vi set, der giver mulighed os programmeringsmæssigt gøre noget? 464 00:23:02,710 --> 00:23:03,690 Vi har set PHP, ikke? 465 00:23:03,690 --> 00:23:05,760 Det indfører nogle dynamik i vores programmer. 466 00:23:05,760 --> 00:23:10,430 Og så heldigvis SQL og PHP spiller meget pænt sammen. 467 00:23:10,430 --> 00:23:13,230 Der er en funktion i PHP kaldes forespørgsel, som kan anvendes. 468 00:23:13,230 --> 00:23:15,870 Og du kan passere som parameter eller argumentet 469 00:23:15,870 --> 00:23:19,210 til at forespørge en SQL-forespørgsel, du gerne vil udføre. 470 00:23:19,210 --> 00:23:23,250 Og PHP vil gøre det på dine vegne. 471 00:23:23,250 --> 00:23:25,564 >> Så efter du har tilsluttet til din database med PHP, 472 00:23:25,564 --> 00:23:26,980 Der er to primærvalg du gør dette. 473 00:23:26,980 --> 00:23:29,230 Der er noget kaldet MySQLi og noget, der hedder BOB. 474 00:23:29,230 --> 00:23:31,063 Vi vil ikke gå ind i en kæmpe mængde detaljer der. 475 00:23:31,063 --> 00:23:32,957 I CS50 bruger vi BOB. 476 00:23:32,957 --> 00:23:34,790 Når du har tilsluttet til din database, du 477 00:23:34,790 --> 00:23:40,980 kan derefter foretage forespørgsler din database ved at lede forespørgsler som argumenter 478 00:23:40,980 --> 00:23:42,730 til PHP funktioner. 479 00:23:42,730 --> 00:23:46,460 Og når du gør det, du opbevarer resultatsæt i et associativt array. 480 00:23:46,460 --> 00:23:50,290 >> Og vi ved, hvordan man arbejder med associative arrays i PHP. 481 00:23:50,290 --> 00:23:52,630 Så jeg kan sige noget ligesom denne-- $ results-- 482 00:23:52,630 --> 00:23:55,470 dette er i PHP-- lig forespørgsel. 483 00:23:55,470 --> 00:23:57,660 Og derefter inde i søgefunktion dette argument 484 00:23:57,660 --> 00:24:00,130 at jeg passerer at forespørge der ligner SQL. 485 00:24:00,130 --> 00:24:01,160 Og i virkeligheden som er SQL. 486 00:24:01,160 --> 00:24:05,700 Det er søgestrengen, at jeg ville gerne udføre på min database. 487 00:24:05,700 --> 00:24:09,250 >> Og så i rød, er dette PHP. 488 00:24:09,250 --> 00:24:11,890 Det er SQL, at jeg er integreret i PHP ved at gøre 489 00:24:11,890 --> 00:24:15,020 det argument forespørgslen funktionen. 490 00:24:15,020 --> 00:24:19,640 Jeg vil vælge fullname fra brugere, hvor ID-nummer svarer til 10. 491 00:24:19,640 --> 00:24:22,560 Og så måske efter jeg har gjort det, Jeg kan sige noget som dette. 492 00:24:22,560 --> 00:24:25,550 Jeg ønsker at udskrive besked Tak for at logge ind. 493 00:24:25,550 --> 00:24:32,530 >> Og jeg vil have det interpolate-- jeg vil at interpolere $ resultater fullname. 494 00:24:32,530 --> 00:24:36,280 Og så det er sådan jeg arbejder med at associative array, jeg fik tilbage. 495 00:24:36,280 --> 00:24:39,730 $ resultater fullname ville dybest set ender udskrive, 496 00:24:39,730 --> 00:24:42,870 tak for at logge ind, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Det var det fulde navn hvor idnum lig 10. 498 00:24:46,570 --> 00:24:48,850 >> Og så alt jeg gør er jeg nu-- jeg gemt 499 00:24:48,850 --> 00:24:52,780 min forespørgsel, resultaterne af min forespørgsel og resulterer i en associativ array, 500 00:24:52,780 --> 00:24:56,330 og fullname er navnet på kolonnen jeg fik efter. 501 00:24:56,330 --> 00:25:01,010 Så det er min nøgle til resultaterne associative array, som jeg ønsker. 502 00:25:01,010 --> 00:25:05,930 Så tak for at logge ind, $ resultater, fullname vil udskrive, vil holde 503 00:25:05,930 --> 00:25:08,654 ret i mellem dem, krøllede seler, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 Og jeg vil gerne udskrive meddelelsen Tak for at logge på Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Nu, vi sandsynligvis ikke ønsker at hårdt kode sådan noget i, ikke? 506 00:25:16,652 --> 00:25:19,860 Vi vil måske gøre noget som print f, hvor vi kan erstatte og måske 507 00:25:19,860 --> 00:25:22,443 indsamle forskellige oplysninger, eller måske har forespørgslen processen 508 00:25:22,443 --> 00:25:23,370 forskellige oplysninger. 509 00:25:23,370 --> 00:25:27,920 Og så forespørgsel, forespørgslen funktion har dette begreb slags udskiftninger 510 00:25:27,920 --> 00:25:32,310 meget lig udskrive f procent s og procent c, er spørgsmålstegn. 511 00:25:32,310 --> 00:25:34,290 >> Og vi kan bruge spørgsmål mærker meget analogt 512 00:25:34,290 --> 00:25:38,400 at udskrive f for at erstatte variabler. 513 00:25:38,400 --> 00:25:44,120 Så måske din bruger logget ind tidligere, og du har gemt deres bruger-id nummer 514 00:25:44,120 --> 00:25:51,710 i $ _SESSION af PHP super globalt i nøgle-ID. 515 00:25:51,710 --> 00:25:55,947 Så måske efter at de er logget ind, du indstille $ _SESSION ID er lig 10, 516 00:25:55,947 --> 00:25:58,280 ekstrapolere fra eksemplet Vi har lige set en anden siden. 517 00:25:58,280 --> 00:26:01,960 >> Og så når vi faktisk udføre Denne forespørgsel resultaterne nu, 518 00:26:01,960 --> 00:26:08,440 det ville tilslutte 10, eller hvad de $ _SESSION ID værdi. 519 00:26:08,440 --> 00:26:10,790 Og så tillader os at være lidt mere dynamisk. 520 00:26:10,790 --> 00:26:12,699 Vi er ikke hårdt kodning tingene i længere. 521 00:26:12,699 --> 00:26:14,490 Vi gemmer oplysninger et eller andet sted og derefter 522 00:26:14,490 --> 00:26:18,924 vi kan bruge disse oplysninger igen for at slags generalisere, hvad vi ønsker at gøre, 523 00:26:18,924 --> 00:26:21,090 og bare plug-in og forandring adfærd vores side 524 00:26:21,090 --> 00:26:26,489 baseret på, hvad brugerens ID-nummer faktisk er efter at de har logget ind. 525 00:26:26,489 --> 00:26:28,530 Det er også muligt, selv om, at dine resultater indstillet 526 00:26:28,530 --> 00:26:30,840 kan bestå af flere rækker. 527 00:26:30,840 --> 00:26:33,990 I hvilket tilfælde, du har en vifte af arrays-- 528 00:26:33,990 --> 00:26:35,334 et array af associative arrays. 529 00:26:35,334 --> 00:26:37,000 Og du skal bare gentage gennem det. 530 00:26:37,000 --> 00:26:41,950 Og vi ved, hvordan man gentage gennem et array i PHP, ikke? 531 00:26:41,950 --> 00:26:45,600 Så her er nok den mest komplekse ting, vi har set hidtil. 532 00:26:45,600 --> 00:26:49,640 Det faktisk integrerer tre sprog sammen. 533 00:26:49,640 --> 00:26:52,920 >> Her i rød, dette er en HTML. 534 00:26:52,920 --> 00:26:56,872 Jeg åbenbart starting-- dette er et uddrag af nogle HTML, som jeg har. 535 00:26:56,872 --> 00:26:59,580 Jeg begynder et nyt afsnit, der siger mødre af tv Seinfeld. 536 00:26:59,580 --> 00:27:02,350 Og derefter straks bagefter Jeg begynder et bord. 537 00:27:02,350 --> 00:27:06,060 Og så efter det, jeg har nogle PHP, ikke? 538 00:27:06,060 --> 00:27:08,229 Jeg har alt dette PHP-kode derinde. 539 00:27:08,229 --> 00:27:09,645 Jeg tilsyneladende vil gøre en forespørgsel. 540 00:27:09,645 --> 00:27:14,180 Og for at gøre forespørgslen, vil jeg være at bruge SELECT mødre FRA moms. 541 00:27:14,180 --> 00:27:15,970 >> Så dette er getting-- dette er SQL. 542 00:27:15,970 --> 00:27:17,300 Så den blå er SQL. 543 00:27:17,300 --> 00:27:19,680 Den røde oplevede vi en anden siden var HTML. 544 00:27:19,680 --> 00:27:21,360 Og den grønne her er PHP. 545 00:27:21,360 --> 00:27:23,400 Så jeg gør en forespørgsel til min database, er jeg 546 00:27:23,400 --> 00:27:26,040 vælge alle de mødre i moms tabel. 547 00:27:26,040 --> 00:27:30,710 Ikke bare indsnævre den ned til bestemte række, jeg beder for dem alle. 548 00:27:30,710 --> 00:27:33,290 >> Så tjek I, hvis resultatet er ikke ligeværdige lig falsk. 549 00:27:33,290 --> 00:27:37,410 Dette er blot min måde at kontrollere slags af hvis resultater er ikke lig med nul, 550 00:27:37,410 --> 00:27:40,260 at vi ville se c for eksempel. 551 00:27:40,260 --> 00:27:44,000 Dybest set er dette bare kontrol for at sikker på, at det faktisk fik data tilbage. 552 00:27:44,000 --> 00:27:47,041 Fordi jeg ikke ønsker at starte udskrivningen ud data, hvis jeg ikke fik nogen data. 553 00:27:47,041 --> 00:27:50,690 Så for hver resultater som følge af foreach syntaks fra PHP, alt jeg gør 554 00:27:50,690 --> 00:27:53,399 udskriver ud $ resultat mødre. 555 00:27:53,399 --> 00:27:55,940 Og så jeg har tænkt mig at få et sæt af alle mødre each-- 556 00:27:55,940 --> 00:27:59,980 Det er en bred vifte af associativ arrays-- og jeg udskrivning ud 557 00:27:59,980 --> 00:28:03,649 hver enkelt som sin egen række i en tabel. 558 00:28:03,649 --> 00:28:05,690 Og det er virkelig smuk meget alt der er til det. 559 00:28:05,690 --> 00:28:07,750 Jeg ved, der er en lille bit foregår her 560 00:28:07,750 --> 00:28:13,210 i dette sidste eksempel med arrays af arrays-- arrays af associative arrays. 561 00:28:13,210 --> 00:28:17,340 Men det virkelig bare koge ned i SQL til at gøre en forespørgsel, 562 00:28:17,340 --> 00:28:21,102 normalt vælge efter vi har allerede lægge oplysninger i tabellen, 563 00:28:21,102 --> 00:28:22,310 og så bare trække det ud. 564 00:28:22,310 --> 00:28:25,710 >> Og det er vi ville trække det i dette særlige tilfælde. 565 00:28:25,710 --> 00:28:31,120 Vi vil udtrække alle de enkelte mødre fra mødre tabellen. 566 00:28:31,120 --> 00:28:35,970 Vi fik et helt sæt af dem, og vi ønsker at gentage gennem og udskrive 567 00:28:35,970 --> 00:28:37,630 hver og en. 568 00:28:37,630 --> 00:28:40,510 Så igen, det er nok den mest komplicerede eksempel 569 00:28:40,510 --> 00:28:44,510 vi har set, fordi vi blander tre forskellige sprog sammen, ikke? 570 00:28:44,510 --> 00:28:50,100 >> Igen har vi HTML her i rødt, blandet med nogle SQL med blåt, 571 00:28:50,100 --> 00:28:52,049 blandet med nogle PHP i grønt. 572 00:28:52,049 --> 00:28:53,840 Men alle disse spiller pænt sammen, er det 573 00:28:53,840 --> 00:28:57,060 bare et spørgsmål om at udvikle gode vaner, så du kan få 574 00:28:57,060 --> 00:28:58,780 dem til at arbejde sammen som du ønsker. 575 00:28:58,780 --> 00:29:03,790 Og den eneste måde at virkelig gøre det er at øve, øve, øve. 576 00:29:03,790 --> 00:29:06,740 Jeg er Doug Lloyd, det er CS50. 577 00:29:06,740 --> 00:29:08,647