1 00:00:00,000 --> 00:00:03,493 >> [MUSIK SPELA] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: I våra filmer på webbutveckling ämnen 4 00:00:07,100 --> 00:00:10,560 vi har nämnt begreppet en databas ett par gånger, eller hur? 5 00:00:10,560 --> 00:00:12,700 Så en databas du är förmodligen bekant med från 6 00:00:12,700 --> 00:00:15,780 säger att använda Microsoft Excel eller Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Det är egentligen bara en organiserad uppsättning tabeller, rader och kolumner. 8 00:00:20,650 --> 00:00:23,140 >> Och en databas är där vår hemsida butiker 9 00:00:23,140 --> 00:00:26,760 information som är viktig för vår hemsida för att fungera korrekt. 10 00:00:26,760 --> 00:00:30,150 Återigen, ett riktigt vanligt exempel här lagrar användarnamn och lösenord 11 00:00:30,150 --> 00:00:32,824 i en databas, så att när en användare loggar in på vår hemsida, 12 00:00:32,824 --> 00:00:36,690 databasen kan frågas att se om användaren finns i databasen. 13 00:00:36,690 --> 00:00:39,260 Och om de är, kontrollera att deras lösenord är korrekt. 14 00:00:39,260 --> 00:00:43,420 Och om deras lösenord är korrekt, då kan vi ge dem vad sida 15 00:00:43,420 --> 00:00:45,370 de efterfrågar. 16 00:00:45,370 --> 00:00:48,590 >> Så du är förmodligen igen, bekanta med denna idé från Excel eller Google 17 00:00:48,590 --> 00:00:49,430 Kalkylblad. 18 00:00:49,430 --> 00:00:52,980 Vi har databaser, tabeller, rader och kolumner. 19 00:00:52,980 --> 00:00:56,450 Och det är verkligen sorterar den grundläggande uppsättningen 20 00:00:56,450 --> 00:00:58,470 hierarkisk uppdelning här. 21 00:00:58,470 --> 00:00:59,800 Så här är ett Excel-ark. 22 00:00:59,800 --> 00:01:02,640 Och om du någonsin öppnat här eller ett annat liknande program 23 00:01:02,640 --> 00:01:06,780 du vet att dessa är här rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Dessa är kolumner. 25 00:01:08,760 --> 00:01:11,790 >> Kanske här nere, men du kan inte använda den här funktionen fruktansvärt much-- 26 00:01:11,790 --> 00:01:15,370 Jag ska in in-- vi har denna idé av ett ark. 27 00:01:15,370 --> 00:01:17,930 Så kanske dessa ark, om Jag växlar fram och tillbaka, 28 00:01:17,930 --> 00:01:21,600 är olika tabeller som existerar i min databas. 29 00:01:21,600 --> 00:01:25,210 Och om vi fortsätter exemplet alla vägen, namnet på denna databas 30 00:01:25,210 --> 00:01:26,940 är Book 1. 31 00:01:26,940 --> 00:01:28,710 Kanske har jag Bok 2 och Bok 3. 32 00:01:28,710 --> 00:01:33,270 Så varje Excelfil är en databas, är varje ark ett bord, 33 00:01:33,270 --> 00:01:39,530 och insidan av varje bord har jag denna idé rader och kolumner. 34 00:01:39,530 --> 00:01:41,900 >> Så hur gör jag arbeta med denna databas? 35 00:01:41,900 --> 00:01:43,630 Hur får jag information från det? 36 00:01:43,630 --> 00:01:47,540 Jo det finns ett språk som kallas SQL-- som jag brukar bara ringa Sequel-- 37 00:01:47,540 --> 00:01:50,010 och det står för Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 Och det är ett programmeringsspråk, men det är en ganska begränsad programmerings 39 00:01:52,981 --> 00:01:53,480 språk. 40 00:01:53,480 --> 00:01:56,407 Det är inte riktigt som andra att vi har arbetat med. 41 00:01:56,407 --> 00:01:58,240 Men syftet med detta programmeringsspråk 42 00:01:58,240 --> 00:02:01,570 är att fråga en databas, till be uppgifter av en databas, 43 00:02:01,570 --> 00:02:04,480 information i en databas, och så vidare. 44 00:02:04,480 --> 00:02:08,449 >> Vi har också, i CS50-- och det är en mycket gemensam plattform, det kallas MySQL. 45 00:02:08,449 --> 00:02:10,600 Det är vad vi använder i kursen. 46 00:02:10,600 --> 00:02:12,880 Det är en öppen källkod plattform som upprättar 47 00:02:12,880 --> 00:02:16,732 en så kallad relations database-- en databas, på ett effektivt sätt. 48 00:02:16,732 --> 00:02:18,440 Vi behöver inte få in alltför mycket i detalj 49 00:02:18,440 --> 00:02:20,930 på vad en relationsdatabas är. 50 00:02:20,930 --> 00:02:24,650 Men SQL-språket är mycket skicklig på att arbeta 51 00:02:24,650 --> 00:02:29,760 med MySQL och andra liknande färger relationsdatabaser. 52 00:02:29,760 --> 00:02:34,010 >> Och många installationer av MySQL har något 53 00:02:34,010 --> 00:02:37,760 kallas phpMyAdmin, som är ett grafiskt användargränssnitt 54 00:02:37,760 --> 00:02:40,970 interface-- en GUI-- som gör det lite mer 55 00:02:40,970 --> 00:02:44,410 användarvänlig att exekvera databasfrågor, 56 00:02:44,410 --> 00:02:48,980 eftersom databaser inte bara används av avancerade programmerare, eller hur? 57 00:02:48,980 --> 00:02:51,510 Ibland finns dessa små företag, 58 00:02:51,510 --> 00:02:53,900 och de har inte råd att hyra ett team av programmerare, 59 00:02:53,900 --> 00:02:56,700 men de fortfarande behöver lagra information i en databas. 60 00:02:56,700 --> 00:02:59,300 >> Något som phpMyAdmin gör det mycket lätt för någon 61 00:02:59,300 --> 00:03:03,630 som aldrig programmeras före till plocka upp och bli bekant med hur 62 00:03:03,630 --> 00:03:07,710 att arbeta med en databas. 63 00:03:07,710 --> 00:03:11,800 Problemet är, phpMyAdmin, medan Det är ett fantastiskt verktyg för lärande 64 00:03:11,800 --> 00:03:14,850 om databaser, är det manuell. 65 00:03:14,850 --> 00:03:18,050 Du kommer att behöva logga in den och utföra kommandon och typ 66 00:03:18,050 --> 00:03:19,910 saker manuellt. 67 00:03:19,910 --> 00:03:23,160 >> Och som vi vet från vår exempel på PHP webbprogrammering, 68 00:03:23,160 --> 00:03:26,550 att manuellt behöva göra saker på vår hemsida, 69 00:03:26,550 --> 00:03:30,970 Om vi ​​vill ha en dynamisk, aktiv lyhörd webbplats, kanske inte det bästa tillvägagångssättet. 70 00:03:30,970 --> 00:03:33,980 Vi vill hitta ett sätt att kanske automatisera detta på något sätt. 71 00:03:33,980 --> 00:03:37,864 Och SQL gör det möjligt för oss att göra detta. 72 00:03:37,864 --> 00:03:39,780 Så när vi ska börja arbeta med SQL, 73 00:03:39,780 --> 00:03:41,220 måste vi först ha en databas för att arbeta med. 74 00:03:41,220 --> 00:03:42,510 Skapa en databas något du förmodligen 75 00:03:42,510 --> 00:03:45,350 kommer att göra i phpMyAdmin, eftersom du behöver bara göra det en gång, 76 00:03:45,350 --> 00:03:49,690 och syntaxen för detta är en mycket enklare. 77 00:03:49,690 --> 00:03:51,940 Det är mycket lättare att göra det i ett grafiskt användargränssnitt 78 00:03:51,940 --> 00:03:53,520 än att skriva ut det som ett kommando. 79 00:03:53,520 --> 00:03:55,186 Kommandot kan få lite besvärligt. 80 00:03:55,186 --> 00:03:58,889 På liknande sätt skapar en tabell kan få ganska lite besvärligt också. 81 00:03:58,889 --> 00:04:01,930 Och så saker som att skapa en databas och skapa en tabell, som du är 82 00:04:01,930 --> 00:04:06,270 förmodligen bara kommer att göra once-- en gång per tabell, en gång per database-- 83 00:04:06,270 --> 00:04:09,040 det är OK att göra det i ett grafiskt gränssnitt. 84 00:04:09,040 --> 00:04:11,570 Vid förfarandet enligt att skapa en tabell, du 85 00:04:11,570 --> 00:04:14,840 måste också ange alla kolumner som kommer att vara i tabellen. 86 00:04:14,840 --> 00:04:18,149 Vilken typ av information gör du vill spara i tabellen? 87 00:04:18,149 --> 00:04:24,520 Kanske en användares namn och födelsedatum, lösenord, användar-ID, och kanske 88 00:04:24,520 --> 00:04:26,170 stad och stat, eller hur? 89 00:04:26,170 --> 00:04:30,080 >> Och för varje gång vi vill lägga till en användare till databasen, vi vill få alla sex 90 00:04:30,080 --> 00:04:31,890 av dessa bitar av information. 91 00:04:31,890 --> 00:04:34,840 Och vi gör det genom att lägga till tabellen. 92 00:04:34,840 --> 00:04:37,800 Så vi först skapa en databas, då skapar vi en tabell. 93 00:04:37,800 --> 00:04:40,100 Som ett led i att skapa ett bord, vi frågade 94 00:04:40,100 --> 00:04:44,280 ange varje kolumn som Vi vill i denna tabell. 95 00:04:44,280 --> 00:04:47,247 Och sedan när vi börja lägga informationen till databasen 96 00:04:47,247 --> 00:04:49,580 och söka i databasen mer generally-- inte bara lägga till, 97 00:04:49,580 --> 00:04:51,610 men allt annat vi do-- vi kommer att hantera 98 00:04:51,610 --> 00:04:58,870 med raderna i tabellen, som är ett användarens information från hela uppsättningen. 99 00:04:58,870 --> 00:05:03,210 >> Så varje SQL kolumn är i stånd att som endast innehåller data av en viss datatyp. 100 00:05:03,210 --> 00:05:06,560 Så vi slags eliminerat denna idén om datatyper i PHP, 101 00:05:06,560 --> 00:05:08,747 men de är tillbaka här i SQL. 102 00:05:08,747 --> 00:05:10,080 Och det finns en hel del datatyper. 103 00:05:10,080 --> 00:05:13,420 Här är bara 20 av dem, men det är inte ens alla av dem. 104 00:05:13,420 --> 00:05:16,240 Så vi har idéer som INTs-- Integers-- vi vet förmodligen 105 00:05:16,240 --> 00:05:17,760 att den här kolumnen kan hålla heltal. 106 00:05:17,760 --> 00:05:21,077 Och det finns variationer thereon-- SMALLINT, tinyint, MEDIUMINT, bigint. 107 00:05:21,077 --> 00:05:22,660 Kanske har vi inte alltid behöver fyra bites. 108 00:05:22,660 --> 00:05:26,800 Kanske behöver vi åtta byte, och så vi kan använda dessa varianter på heltal 109 00:05:26,800 --> 00:05:28,510 att vara lite mer utrymmeseffektiv. 110 00:05:28,510 --> 00:05:31,899 Vi kan göra decimaltal, vi kan göra flyttal. 111 00:05:31,899 --> 00:05:32,940 Dessa är ganska likartade. 112 00:05:32,940 --> 00:05:34,773 Det finns vissa skillnader, och om du skulle 113 00:05:34,773 --> 00:05:37,330 vilja slå upp SQL sorts guide, du 114 00:05:37,330 --> 00:05:40,670 kan se vad den lilla skillnaderna är mellan dem. 115 00:05:40,670 --> 00:05:43,250 >> Kanske vi vill lagra information om datum och tid. 116 00:05:43,250 --> 00:05:47,047 Vi kanske ska hålla reda på när användaren anslutit sig till vår hemsida, 117 00:05:47,047 --> 00:05:48,880 och så kanske vi vill att ha en kolumn som är 118 00:05:48,880 --> 00:05:52,820 ett datum tid eller en tidsstämpel som indikerar när användaren faktiskt 119 00:05:52,820 --> 00:05:54,130 anmält sig. 120 00:05:54,130 --> 00:05:56,132 Vi kan göra geometrier och linestrings. 121 00:05:56,132 --> 00:05:57,340 Detta är faktiskt ganska coolt. 122 00:05:57,340 --> 00:06:01,410 Vi kunde staka ut en geografiska området med hjälp av 123 00:06:01,410 --> 00:06:05,110 GIS-koordinater för att rita ut ett område. 124 00:06:05,110 --> 00:06:08,580 Så kan faktiskt lagra denna typ av information i en SQL-kolonn. 125 00:06:08,580 --> 00:06:11,390 >> TEXT är bara jätte blobbar text, kanske. 126 00:06:11,390 --> 00:06:12,840 ENUMs är typ av intressant. 127 00:06:12,840 --> 00:06:16,080 De finns faktiskt i C. Vi gör inte prata om dem eftersom de inte är 128 00:06:16,080 --> 00:06:19,110 oerhört vanligt förekommande, åtminstone CS50. 129 00:06:19,110 --> 00:06:22,680 Men det är en uppräknad datatyp som kan hålla begränsade värden. 130 00:06:22,680 --> 00:06:25,940 >> Ett riktigt bra exempel här skulle vara att skapa en enum där sju 131 00:06:25,940 --> 00:06:29,394 Möjliga värden är söndag, måndag, Tisdag, onsdag, torsdag, fredag, 132 00:06:29,394 --> 00:06:30,060 Lördag, eller hur? 133 00:06:30,060 --> 00:06:33,311 Denna datatyp Dag Vecka existerar inte, 134 00:06:33,311 --> 00:06:35,310 men vi skulle kunna skapa en uppräknade datatyp sådan 135 00:06:35,310 --> 00:06:39,400 att denna kolumn alltid bara kan hålla en av dessa sju möjliga värden. 136 00:06:39,400 --> 00:06:44,300 Vi har uppräknade alla av de möjliga värdena. 137 00:06:44,300 --> 00:06:47,630 >> Sedan har vi CHAR och VARCHAR, och jag har färg dessa gröna 138 00:06:47,630 --> 00:06:49,505 eftersom vi faktiskt kommer att ta en andra 139 00:06:49,505 --> 00:06:51,950 att tala om skillnaden mellan dessa två saker. 140 00:06:51,950 --> 00:06:55,780 Så CHAR, till skillnad från C, där CHAR var ett enda tecken, 141 00:06:55,780 --> 00:07:00,730 i SQL en CHAR hänvisar till en längd sträng fast. 142 00:07:00,730 --> 00:07:02,620 Och när vi skapar här kolonn, vi faktiskt 143 00:07:02,620 --> 00:07:05,070 kan ange längden av strängen. 144 00:07:05,070 --> 00:07:08,080 >> Så i detta exempel, vi kan säga CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Det betyder att varje del av den kolumnen 146 00:07:11,190 --> 00:07:13,910 kommer att bestå av 10 bitgrupper av information. 147 00:07:13,910 --> 00:07:15,770 Varken mer eller mindre. 148 00:07:15,770 --> 00:07:21,780 Så om vi försöker och sätta i en 15 bitars eller en 15 teckenelement 149 00:07:21,780 --> 00:07:25,340 eller värdet i den här kolumnen, vi bara få första 10. 150 00:07:25,340 --> 00:07:27,290 Om vi ​​sätter i de två tecken lång värde, 151 00:07:27,290 --> 00:07:30,700 vi kommer att ha två tecken, och sedan åtta null bites. 152 00:07:30,700 --> 00:07:34,990 Vi kommer aldrig att vara effektivare än så. 153 00:07:34,990 --> 00:07:37,727 >> En VARCHAR är ungefär som vår uppfattning av en sträng 154 00:07:37,727 --> 00:07:39,560 att vi är bekant med från C eller från PHP. 155 00:07:39,560 --> 00:07:40,830 Det är en variabel längd sträng. 156 00:07:40,830 --> 00:07:42,560 Och när du skapar den här kolumnen, du bara 157 00:07:42,560 --> 00:07:44,860 ange de högsta möjliga längder. 158 00:07:44,860 --> 00:07:49,065 Så kanske 99, eller allmänt 255. 159 00:07:49,065 --> 00:07:50,440 Det skulle vara den maximala längden. 160 00:07:50,440 --> 00:07:52,890 Och så om vi lagrar 15 teckensträng, 161 00:07:52,890 --> 00:07:56,157 vi skulle använda 15 bytes, kanske 16 byte för null terminator. 162 00:07:56,157 --> 00:07:57,990 Om vi ​​lagra en tre teckensträng, 163 00:07:57,990 --> 00:08:01,120 vi skulle använda tre eller fyra byte. 164 00:08:01,120 --> 00:08:03,050 Men vi skulle inte använda hela 99. 165 00:08:03,050 --> 00:08:05,190 >> Så varför skulle vi ha både och? 166 00:08:05,190 --> 00:08:08,210 Tja, om vi behöver ta reda på hur långa något är med en VARCHAR 167 00:08:08,210 --> 00:08:10,680 vi måste slags iterate över det precis som vi gjorde i C 168 00:08:10,680 --> 00:08:12,230 och räkna ut var det slutar. 169 00:08:12,230 --> 00:08:15,920 Medan om vi vet att allt i denna kolumn är 10 bytes, kanske 170 00:08:15,920 --> 00:08:19,220 vi vet att information kan vi hoppa 10 byte, 10 byte, 10 byte, 10 byte, 171 00:08:19,220 --> 00:08:21,790 och alltid hitta början av strängen. 172 00:08:21,790 --> 00:08:25,210 >> Så vi kan ha en viss oanvänt utrymme med en CHAR, 173 00:08:25,210 --> 00:08:28,510 men kanske det finns en handel off av att ha bättre hastighet 174 00:08:28,510 --> 00:08:30,160 navigera databasen. 175 00:08:30,160 --> 00:08:32,330 Men kanske vi vill att flexibiliteten hos en VARCHAR 176 00:08:32,330 --> 00:08:36,710 istället för having-- Om vår CHAR var 255, men de flesta av våra användare 177 00:08:36,710 --> 00:08:40,537 var bara mata in tre eller fyra byte värde av information eller tre eller fyra 178 00:08:40,537 --> 00:08:41,870 tecken värde av informationen. 179 00:08:41,870 --> 00:08:44,324 >> Men en del användare använde hela 255, kanske 180 00:08:44,324 --> 00:08:45,990 VARCHAR vore lämpligare där. 181 00:08:45,990 --> 00:08:49,840 Det är en slags kompromiss, och i allmänhet i syfte att CS50, 182 00:08:49,840 --> 00:08:54,107 du behöver inte oroa sig alltför mycket om oavsett om du använder en CHAR eller VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Men i den verkliga världen, dessa saker någon roll eftersom alla dessa kolumner 184 00:08:57,190 --> 00:08:59,300 ta upp faktiska fysiskt utrymme. 185 00:08:59,300 --> 00:09:04,150 Och fysiskt utrymme, i verkliga världen, kommer vid en premie. 186 00:09:04,150 --> 00:09:06,800 >> Så en annan ersättning när du bygger ett bord 187 00:09:06,800 --> 00:09:09,840 är att välja en kolumn ska vara vad som kallas en primärnyckel. 188 00:09:09,840 --> 00:09:14,350 Och en primärnyckel är en kolumn där varje enskilt värde är unikt. 189 00:09:14,350 --> 00:09:19,980 Och det betyder att du kan enkelt plocka ut en enda rad bara genom att titta 190 00:09:19,980 --> 00:09:22,450 på primärnyckeln för den raden. 191 00:09:22,450 --> 00:09:24,580 Så till exempel, du i allmänhet, med användare, 192 00:09:24,580 --> 00:09:27,210 vill inte två användare som har samma användar-ID-nummer. 193 00:09:27,210 --> 00:09:28,960 Och så kanske du har massor av information, 194 00:09:28,960 --> 00:09:30,793 och kanske två användare kan har samma name-- 195 00:09:30,793 --> 00:09:32,650 du har John Smith och John Smith. 196 00:09:32,650 --> 00:09:34,520 Det är inte nödvändigtvis ett problem, eftersom det finns flera personer 197 00:09:34,520 --> 00:09:35,830 i världen som heter John Smith. 198 00:09:35,830 --> 00:09:40,766 Men vi har bara ett användar-ID nummer 10, en användar-ID nummer 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Vi har inte två användare med samma nummer, 200 00:09:42,640 --> 00:09:46,010 och så kanske användar-ID nummer skulle vara en bra primärnyckel. 201 00:09:46,010 --> 00:09:48,610 >> Vi har inte någon dubblering, och vi kan nu unikt 202 00:09:48,610 --> 00:09:52,619 identifiera varenda rad bara genom att titta på den kolumnen. 203 00:09:52,619 --> 00:09:55,410 Välja primärnycklar kan faktiskt göra efterföljande tabelloperationer 204 00:09:55,410 --> 00:09:59,710 en mycket enklare eftersom du kan utnyttja det faktum att vissa rader kommer 205 00:09:59,710 --> 00:10:02,720 vara unik, eller en viss kolumn av databasen eller tabellen 206 00:10:02,720 --> 00:10:06,030 kommer att vara unik för att plocka ut särskilda rader. 207 00:10:06,030 --> 00:10:08,790 >> Du kan också ha en gemensam primär nyckel, där du kan hitta tillfälle 208 00:10:08,790 --> 00:10:11,720 att använda, vilket är bara en kombination av två kolumner som 209 00:10:11,720 --> 00:10:13,280 garanteras vara unikt. 210 00:10:13,280 --> 00:10:16,410 Så kanske du har en kolumn som är lika och B, 211 00:10:16,410 --> 00:10:19,290 en kolumn som är en, två, och tre, men du kommer bara någonsin 212 00:10:19,290 --> 00:10:23,660 har en enda A1, en enda A2, och så vidare och så vidare. 213 00:10:23,660 --> 00:10:28,980 Men du kanske har en B2, en C2, eller en A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Så du kan ha flera As, multipel B, flera sådana, flera tvåor, 215 00:10:32,840 --> 00:10:38,567 men du kan alltid bara ha en enda A1, B2, C3, och så vidare. 216 00:10:38,567 --> 00:10:40,400 Så som sagt, är SQL en programmeringsspråk, 217 00:10:40,400 --> 00:10:42,024 men den har en ganska begränsad vokabulär. 218 00:10:42,024 --> 00:10:44,880 Det är inte riktigt lika expansiv som C och PHP och andra språk 219 00:10:44,880 --> 00:10:46,350 att vi talar i kursen. 220 00:10:46,350 --> 00:10:49,960 Det är mer utförlig en språk än vad vi är 221 00:10:49,960 --> 00:10:52,789 kommer att tala om i den här video, eftersom det i den här videon 222 00:10:52,789 --> 00:10:54,830 vi kommer att prata om fyra verksamheter som vi 223 00:10:54,830 --> 00:10:55,720 kan utföra på ett bord. 224 00:10:55,720 --> 00:10:56,761 >> Det finns mer än så. 225 00:10:56,761 --> 00:10:58,730 Vi kan göra mer än så, men för våra ändamål, 226 00:10:58,730 --> 00:11:02,250 vi generellt kommer att använda bara fyra operations-- insatsen, 227 00:11:02,250 --> 00:11:05,360 välj, uppdatera och ta bort. 228 00:11:05,360 --> 00:11:08,750 Och du kan förmodligen intuitivt gissa vad alla dessa fyra saker att göra. 229 00:11:08,750 --> 00:11:12,520 Men vi kommer att gå in i en bit detalj på var och en. 230 00:11:12,520 --> 00:11:15,780 >> Så för tillämpningen av denna video, låt oss anta 231 00:11:15,780 --> 00:11:18,870 vi har följande två tabeller i en enda databas. 232 00:11:18,870 --> 00:11:23,460 Vi har ett bord som heter Användare som har fyra columns-- ID-nummer, användarnamn, 233 00:11:23,460 --> 00:11:25,350 lösenord och fullständiga namn. 234 00:11:25,350 --> 00:11:27,430 Och vi har en andra tabell i samma databas 235 00:11:27,430 --> 00:11:32,129 kallas Moms som bara lagrar information om ett användarnamn och en mor. 236 00:11:32,129 --> 00:11:33,920 Så för alla exempel i den här videon, vi ska 237 00:11:33,920 --> 00:11:37,945 att använda denna databas och efterföljande uppdateringar till det. 238 00:11:37,945 --> 00:11:40,070 Så låt oss säga att vi vill lägga till information i en tabell. 239 00:11:40,070 --> 00:11:44,460 Det är vad insatsoperationen gör. 240 00:11:44,460 --> 00:11:46,550 För att förklara alla dessa kommandon, jag kommer 241 00:11:46,550 --> 00:11:48,860 för att ge dig en allmän skelett att använda. 242 00:11:48,860 --> 00:11:51,661 Eftersom grunden, frågorna går ser ganska lika, 243 00:11:51,661 --> 00:11:54,660 vi bara kommer att förändras lite olika bitar av information 244 00:11:54,660 --> 00:11:56,750 att göra olika saker med tabellen. 245 00:11:56,750 --> 00:11:59,200 >> Så för INSERT, skelettet ser ungefär som detta. 246 00:11:59,200 --> 00:12:02,230 Vi vill infoga i en viss tabell. 247 00:12:02,230 --> 00:12:05,290 Sedan har vi en öppen parentes och en lista över kolumner 248 00:12:05,290 --> 00:12:08,070 att vi vill sätta värden i. 249 00:12:08,070 --> 00:12:10,974 Stäng parentes följande värden, och sedan 250 00:12:10,974 --> 00:12:13,390 igen, vi lista ut värdena Vi vill sätta i tabellen. 251 00:12:13,390 --> 00:12:15,950 >> Så ett exempel på detta skulle vara följande. 252 00:12:15,950 --> 00:12:19,170 Jag vill infoga i tabellen användare följande columns-- 253 00:12:19,170 --> 00:12:21,010 användarnamn, lösenord, och fullname. 254 00:12:21,010 --> 00:12:25,282 Så en ny rad där jag lägger i dessa tre kolumner och vi är 255 00:12:25,282 --> 00:12:30,030 ska sätta i värdena Newman, USMAIL, och Newman. 256 00:12:30,030 --> 00:12:32,730 Så i detta fall, är jag sätta gemener newman 257 00:12:32,730 --> 00:12:38,710 in användarnamnet kolumnen lösenordet USMAIL och det fullständiga namnet huvudstaden N 258 00:12:38,710 --> 00:12:41,940 Newman i fullname kolonnen. 259 00:12:41,940 --> 00:12:44,240 >> Så här är vad databasen såg ut innan. 260 00:12:44,240 --> 00:12:48,250 Här är vad tabellen användare på top såg ut innan vi gjorde detta. 261 00:12:48,250 --> 00:12:50,760 När vi utföra detta fråga, vi får detta. 262 00:12:50,760 --> 00:12:54,790 Vi har lagt till en ny rad i tabellen. 263 00:12:54,790 --> 00:12:56,810 Men märker detta en sak att jag inte specificera 264 00:12:56,810 --> 00:12:59,880 men på något sätt jag har ett värde för, vilket är 12 här. 265 00:12:59,880 --> 00:13:02,820 Jag sa inte att jag ville sätta ID-nummer där. 266 00:13:02,820 --> 00:13:04,900 Jag ville sätta användarnamn, lösenord, fullname. 267 00:13:04,900 --> 00:13:06,440 Och jag gjorde det, det är bra. 268 00:13:06,440 --> 00:13:07,760 >> Men jag fick också detta 12. 269 00:13:07,760 --> 00:13:09,490 Varför fick jag denna 12? 270 00:13:09,490 --> 00:13:12,904 Tja, visar det sig att när du definierar 271 00:13:12,904 --> 00:13:15,570 en kolumn som kommer att bli din primärnyckel, som vanligtvis är, 272 00:13:15,570 --> 00:13:16,510 som sagt, ett ID-nummer. 273 00:13:16,510 --> 00:13:18,718 Det är inte alltid nödvändigtvis kommer att bli ett ID-nummer, 274 00:13:18,718 --> 00:13:22,380 men det är oftast en bra idé att vara någon form av heltal. 275 00:13:22,380 --> 00:13:25,950 Du har ett alternativ i phpMyAdmin när du skapar din databas 276 00:13:25,950 --> 00:13:31,130 eller ditt bord för att ställa in det kolumn som auto inkrementering. 277 00:13:31,130 --> 00:13:34,520 >> Som är en riktigt bra idé när du arbetar med en primärnyckel, 278 00:13:34,520 --> 00:13:39,330 eftersom du vill att varje värde i den kolumnen att vara unik. 279 00:13:39,330 --> 00:13:43,310 Och om du glömmer att ange den för mer än en person, 280 00:13:43,310 --> 00:13:46,240 du nu har en situation där kolumnen är inte längre unik. 281 00:13:46,240 --> 00:13:50,200 Du har två ämnen, så att du kan ingen längre identifiera en column-- 282 00:13:50,200 --> 00:13:54,150 eller så kan du inte längre unikt identifiera en rad baserat på den kolumnen. 283 00:13:54,150 --> 00:13:57,010 Det har förlorat alla sina värde som en primärnyckel. 284 00:13:57,010 --> 00:14:02,010 >> Och så tydligen vad jag har gjort Här är konfigurerad användar-ID 285 00:14:02,010 --> 00:14:07,790 kolumn till automatisk ökning så att varje tid jag lägger till information i tabellen, 286 00:14:07,790 --> 00:14:12,220 Det kommer automatiskt att ge mig ett värde för den primära nyckeln. 287 00:14:12,220 --> 00:14:15,570 Så jag kan aldrig glömma att göra det eftersom databasen kommer att göra det åt mig. 288 00:14:15,570 --> 00:14:16,587 Så det är ganska trevligt. 289 00:14:16,587 --> 00:14:18,670 Och så det är därför vi får 12 där, eftersom jag har 290 00:14:18,670 --> 00:14:21,772 ställa kolumnen upp till automatisk ökning. 291 00:14:21,772 --> 00:14:23,730 Om jag lagt någon annan det skulle vara 13, om jag lagt 292 00:14:23,730 --> 00:14:27,890 någon annan det skulle vara 14, och så vidare. 293 00:14:27,890 --> 00:14:30,190 >> Så låt oss bara göra en ytterligare insättning. 294 00:14:30,190 --> 00:14:34,530 Vi kommer att sätta i tabellen moms, i särskilt användarnamn och mor 295 00:14:34,530 --> 00:14:37,390 kolonn, värdena Kramer och Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 Och så hade vi förut. 297 00:14:39,140 --> 00:14:41,800 När vi kör det SQL-fråga, har vi redan. 298 00:14:41,800 --> 00:14:47,290 Vi har lagt Kramer och Babs Kramer till bordet moms. 299 00:14:47,290 --> 00:14:48,350 >> Så det är att sätta in. 300 00:14:48,350 --> 00:14:51,850 SELECT är vad vi använder för att extrahera information från tabellen. 301 00:14:51,850 --> 00:14:54,390 Så det här är hur vi får information ur databasen. 302 00:14:54,390 --> 00:14:59,589 Och så välja kommandon kommer att vara mycket ofta används i programmering. 303 00:14:59,589 --> 00:15:02,130 Den allmänna framework-- den allmän skelett ser ut så här. 304 00:15:02,130 --> 00:15:06,550 Välj en uppsättning kolumner från en tabell, och sedan eventuellt 305 00:15:06,550 --> 00:15:11,090 du kan ange en Skick- eller vad vi kallar typiskt ett predikat, 306 00:15:11,090 --> 00:15:13,010 är oftast term vi använder i SQL. 307 00:15:13,010 --> 00:15:16,490 >> Men det är i princip vad särskilda rader som du vill få. 308 00:15:16,490 --> 00:15:19,100 Om du vill, i stället för att få allt begränsa den, 309 00:15:19,100 --> 00:15:20,060 det är där du skulle göra det. 310 00:15:20,060 --> 00:15:22,777 Och sedan eventuellt, kan du också beställning av en särskild kolumn. 311 00:15:22,777 --> 00:15:25,860 Så kanske du vill ha saker sorteras alfabetiskt baserat på en kolonn 312 00:15:25,860 --> 00:15:27,540 eller alfabetisk ordning baserad på en annan. 313 00:15:27,540 --> 00:15:30,610 >> Igen, VAR och ORDER BY är valfria. 314 00:15:30,610 --> 00:15:32,681 Men de kommer förmodligen att useful-- särskilt 315 00:15:32,681 --> 00:15:34,680 VAR kommer att vara till nytta för begränsa så att du inte 316 00:15:34,680 --> 00:15:37,460 få hela din databas tillbaka och måste bearbeta det, du bara få 317 00:15:37,460 --> 00:15:39,300 bitar av det som du bryr dig om. 318 00:15:39,300 --> 00:15:44,932 Så till exempel kan jag vill välja ID-nummer och fullname från användarna. 319 00:15:44,932 --> 00:15:46,140 Så vad kan detta se ut? 320 00:15:46,140 --> 00:15:48,270 Så här är min användare bord. 321 00:15:48,270 --> 00:15:51,080 Jag vill välja idnum och fullname från användarna. 322 00:15:51,080 --> 00:15:52,300 Vad ska jag få? 323 00:15:52,300 --> 00:15:53,580 Jag kommer att få detta. 324 00:15:53,580 --> 00:15:56,930 Jag ville inte begränsa det, så jag är få ID-nummer för varje rad 325 00:15:56,930 --> 00:16:00,850 och jag får hela namn från varje rad. 326 00:16:00,850 --> 00:16:02,210 >> OK. 327 00:16:02,210 --> 00:16:05,640 Vad gör jag om jag vill välja lösenord från användare WHERE-- så nu 328 00:16:05,640 --> 00:16:10,370 Jag lägger ett tillstånd, en predicate-- där idnum är mindre än 12. 329 00:16:10,370 --> 00:16:13,660 Så här är min databas igen, min användare tabellen toppen. 330 00:16:13,660 --> 00:16:17,030 Vad ska jag få om jag vill markera denna information, lösenord, 331 00:16:17,030 --> 00:16:21,550 där användar-ID eller idnum är mindre än 12? 332 00:16:21,550 --> 00:16:24,910 Jag kommer att få detta information tillbaka, eller hur? 333 00:16:24,910 --> 00:16:29,170 Det händer att idnum är 10, mindre än 12, ID-nummer 11 mindre än 12. 334 00:16:29,170 --> 00:16:32,160 Jag får lösenordet för dessa rader. 335 00:16:32,160 --> 00:16:33,914 Det är vad jag bad om. 336 00:16:33,914 --> 00:16:34,580 Hur är detta? 337 00:16:34,580 --> 00:16:39,170 Vad gör jag om jag vill välja stjärna från moms bord där användarnamn är lika Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, är den speciella väljer stjärnan typ av wild card så kallade 339 00:16:43,780 --> 00:16:45,670 som vi använder för att få allt. 340 00:16:45,670 --> 00:16:48,620 Så de säger välj användarnamn kommatecken mor, som 341 00:16:48,620 --> 00:16:51,060 råkade vara den enda två kolumner i denna tabell, 342 00:16:51,060 --> 00:16:53,260 Jag kan bara välja stjärna och få allt 343 00:16:53,260 --> 00:16:55,030 där användarnamnet är lika Jerry. 344 00:16:55,030 --> 00:16:59,380 Och så det är vad jag skulle få om jag gjorde just den frågan. 345 00:16:59,380 --> 00:17:01,810 >> Nu, databaser stor eftersom de tillåter 346 00:17:01,810 --> 00:17:06,074 oss att organisera information kanske lite mer effektivt än vi 347 00:17:06,074 --> 00:17:06,740 annars skulle kunna. 348 00:17:06,740 --> 00:17:10,240 Vi behöver inte nödvändigtvis för att lagra alla relevanta bit information 349 00:17:10,240 --> 00:17:12,230 om en användare i samma tabell. 350 00:17:12,230 --> 00:17:13,730 Vi hade två tabeller där. 351 00:17:13,730 --> 00:17:15,734 >> Vi behöver lagra allas mors namn, 352 00:17:15,734 --> 00:17:18,900 och kanske vi inte har den sociala tryggheten nummer, har vi deras födelsedatum. 353 00:17:18,900 --> 00:17:21,819 Det behöver inte alltid att vara i samma tabell. 354 00:17:21,819 --> 00:17:25,339 Så länge vi kan definiera förhållanden mellan tables-- 355 00:17:25,339 --> 00:17:28,440 och det är där som relations databas sikt slags kommer 356 00:17:28,440 --> 00:17:32,130 i play-- så länge vi kan definiera relationer mellan tabellerna, 357 00:17:32,130 --> 00:17:35,545 vi kan sorts compartmentalize eller abstrakta saker sätt, 358 00:17:35,545 --> 00:17:37,670 där vi bara har verkligen viktig information 359 00:17:37,670 --> 00:17:39,270 vi bryr oss om i användarens tabellen. 360 00:17:39,270 --> 00:17:43,220 Och sedan har vi extra information eller extra information i andra tabeller 361 00:17:43,220 --> 00:17:48,260 att vi kan koppla tillbaka till huvud användare bord på ett visst sätt. 362 00:17:48,260 --> 00:17:52,200 >> Så här har vi dessa två tabeller, men det finns ett samband mellan dem, 363 00:17:52,200 --> 00:17:53,010 höger? 364 00:17:53,010 --> 00:17:55,070 Det verkar som användarnamn kan vara något 365 00:17:55,070 --> 00:17:59,909 som existerar gemensamt mellan dessa två olika tabeller. 366 00:17:59,909 --> 00:18:01,700 Så vad händer om vi nu har en situation där vi 367 00:18:01,700 --> 00:18:06,046 vill få en användares fullständiga namn från användarens tabellen, och deras mor 368 00:18:06,046 --> 00:18:07,170 namn från moderbordet? 369 00:18:07,170 --> 00:18:10,960 Vi har inte ett sätt att få att som det ser ut, eller hur? 370 00:18:10,960 --> 00:18:17,790 Det finns ingen enda tabell som innehåller både fullständiga namn och moderns namn. 371 00:18:17,790 --> 00:18:20,400 Vi har inte det alternativet från vad vi har sett hittills. 372 00:18:20,400 --> 00:18:22,950 >> Och så vi måste införa idén om en JOIN. 373 00:18:22,950 --> 00:18:24,857 Och sammanfogar är förmodligen mest complex-- 374 00:18:24,857 --> 00:18:27,940 det är verkligen mest komplexa operation vi kommer att prata om i videon. 375 00:18:27,940 --> 00:18:30,040 De är lite komplicerat, men när du väl fått kläm på det, 376 00:18:30,040 --> 00:18:31,248 de är faktiskt inte så illa. 377 00:18:31,248 --> 00:18:32,820 Det är bara ett specialfall av en SELECT. 378 00:18:32,820 --> 00:18:37,120 Vi kommer att välja en uppsättning kolumner från en tabell som förenar 379 00:18:37,120 --> 00:18:40,650 i en andra tabell på vissa predikat. 380 00:18:40,650 --> 00:18:45,340 >> I det här fallet, tänk på det gillar this-- tabell en är en cirkel hit, 381 00:18:45,340 --> 00:18:47,530 tabell två är en annan cirkel hit. 382 00:18:47,530 --> 00:18:49,410 Och det predikat del i mitten, är det 383 00:18:49,410 --> 00:18:51,701 ungefär som om du tror om en Venndiagram, vad 384 00:18:51,701 --> 00:18:52,670 har de gemensamt? 385 00:18:52,670 --> 00:18:55,960 Vi vill länka dessa två tabeller baserat på vad de har gemensamt 386 00:18:55,960 --> 00:19:01,230 och skapa denna hypotetiska tabell som är en sammanslagning av de två tillsammans. 387 00:19:01,230 --> 00:19:03,480 Så vi får se detta i ett exempel och kanske det hjälper 388 00:19:03,480 --> 00:19:04,521 rensa upp lite. 389 00:19:04,521 --> 00:19:09,260 Så kanske du vill välja user.fullname och moms.mother 390 00:19:09,260 --> 00:19:13,220 från användare som ansluter i moms tabell i varje situation 391 00:19:13,220 --> 00:19:16,790 där användarnamn kolumnen är densamma mellan dem. 392 00:19:16,790 --> 00:19:19,240 Och detta är en ny syntax här, den här användaren. 393 00:19:19,240 --> 00:19:20,460 och mammor .. 394 00:19:20,460 --> 00:19:26,697 Om jag gör flera tabeller tillsammans, kan jag ange en tabell. 395 00:19:26,697 --> 00:19:29,530 Jag kan urskilja i synnerhet som på längst ned där. 396 00:19:29,530 --> 00:19:33,220 Jag kan urskilja användarnamnet kolumnen i tabellen användare 397 00:19:33,220 --> 00:19:36,010 från användarnamnet kolumnen i moms tabell, som är otherwise-- 398 00:19:36,010 --> 00:19:38,070 om vi just sagt användarnamn lika användarnamn, som egentligen inte 399 00:19:38,070 --> 00:19:38,970 betyder någonting. 400 00:19:38,970 --> 00:19:41,440 Vi vill göra det där de matchar. 401 00:19:41,440 --> 00:19:46,080 >> Så jag kan ange tabellen och kolumnnamn i händelse av en situation 402 00:19:46,080 --> 00:19:48,370 där det skulle vara oklart vad jag talar om. 403 00:19:48,370 --> 00:19:51,880 Så det är allt jag gör det är att jag är säger denna kolumn från denna tabell, 404 00:19:51,880 --> 00:19:54,020 och är mycket tydlig. 405 00:19:54,020 --> 00:19:56,810 Så återigen, jag välja fullständiga namn och moderns namn 406 00:19:56,810 --> 00:20:00,950 från tabellen användare sammanlänkade med moms tabellen i varje situation 407 00:20:00,950 --> 00:20:05,960 där de delar som column-- de delar som användarnamn begrepp. 408 00:20:05,960 --> 00:20:08,580 >> Så här är de tabeller som vi hade tidigare. 409 00:20:08,580 --> 00:20:12,210 Detta är tillståndet i vår databas som den existerar just nu. 410 00:20:12,210 --> 00:20:16,390 Informationen vi utvinna är detta till att börja med. 411 00:20:16,390 --> 00:20:19,820 Detta är den nya tabellen vi ska att skapa att kombinera dessa tillsammans. 412 00:20:19,820 --> 00:20:23,585 Och märker att vi inte lyfta Newmans rad i användarens tabellen, 413 00:20:23,585 --> 00:20:25,960 och vi är inte att lyfta fram Kramers rad i tabellen moms 414 00:20:25,960 --> 00:20:31,250 eftersom varken en förekommer i både sets-- i båda tabellerna. 415 00:20:31,250 --> 00:20:36,260 >> Den enda information som är gemensamt mellan dem är Jerry är båda tabellerna 416 00:20:36,260 --> 00:20:39,100 och gcostanza är i båda tabellerna. 417 00:20:39,100 --> 00:20:42,620 Och så när vi gör SQL JOIN, vad vi get-- och vi gör faktiskt få detta. 418 00:20:42,620 --> 00:20:44,830 Det blir liksom en temporär variabel. 419 00:20:44,830 --> 00:20:47,330 Det är som en hypotetisk sammanslagning av de två tabellerna. 420 00:20:47,330 --> 00:20:49,930 Vi får faktiskt något så här, där 421 00:20:49,930 --> 00:20:54,730 Vi har slås ihop borden på information som de har gemensamt. 422 00:20:54,730 --> 00:20:58,334 >> Så märker att users.username och moms.username kolonn, 423 00:20:58,334 --> 00:20:59,250 Det är exakt samma. 424 00:20:59,250 --> 00:21:01,820 Det var den information som överensstämde från användarna 425 00:21:01,820 --> 00:21:02,890 bord och bordet moms. 426 00:21:02,890 --> 00:21:04,270 Och så vi slås ihop dem. 427 00:21:04,270 --> 00:21:06,919 Vi kastas Kramer eftersom han existerade inte i tabellen användare, 428 00:21:06,919 --> 00:21:09,710 och vi kastas Newman, eftersom Han fanns inte i tabellen moms. 429 00:21:09,710 --> 00:21:16,450 Så det här är den hypotetiska fusionen använder JOIN driften av SELECT. 430 00:21:16,450 --> 00:21:21,250 >> Och sedan vi letar efter användarens fullständiga namn och användarens mor, 431 00:21:21,250 --> 00:21:24,999 och så detta är den information som vi skulle få från den övergripande frågan 432 00:21:24,999 --> 00:21:26,040 att vi gjort med SELECT. 433 00:21:26,040 --> 00:21:28,873 Så vi gick med tabeller tillsammans och vi extraherade dessa två kolumner, 434 00:21:28,873 --> 00:21:31,610 och så det är vad vi skulle få. 435 00:21:31,610 --> 00:21:33,370 Men SQL ansluter sig till en slags komplicerat. 436 00:21:33,370 --> 00:21:36,770 Du har förmodligen inte kommer att göra dem alltför mycket, men bara har en uppfattning om skelettet 437 00:21:36,770 --> 00:21:41,992 som du kan använda för att slå samman två tabeller tillsammans om du behöver till. 438 00:21:41,992 --> 00:21:43,700 De två sista är en bit enklare Jag lovar. 439 00:21:43,700 --> 00:21:48,040 Så uppdatera, kan vi använda UPPDATERING att ändra information i en tabell. 440 00:21:48,040 --> 00:21:53,880 Det allmänna formatet är UPPDATERING vissa tabell, ange några kolumn till ett visst värde 441 00:21:53,880 --> 00:21:55,540 Om vissa predikat är nöjd. 442 00:21:55,540 --> 00:21:57,850 Så till exempel kan vi vill att uppdatera tabellen användare 443 00:21:57,850 --> 00:22:04,400 och ange lösenordet till yada bla, där ID-numret är 10. 444 00:22:04,400 --> 00:22:06,400 >> Så i det här fallet, vi är uppdatering av tabellen användare. 445 00:22:06,400 --> 00:22:08,275 ID-numret är 10 för den första raden där, 446 00:22:08,275 --> 00:22:10,690 och vi vill uppdatera lösenord till yadaen yada. 447 00:22:10,690 --> 00:22:12,170 Och så det är vad som skulle hända. 448 00:22:12,170 --> 00:22:13,628 Det är ganska enkelt, eller hur? 449 00:22:13,628 --> 00:22:17,990 Det är bara en mycket enkel modifiering av tabellen. 450 00:22:17,990 --> 00:22:22,250 >> TA BORT operationen vi brukade ta bort information från en tabell. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM tabell VAR vissa predikat är nöjd. 452 00:22:24,817 --> 00:22:26,900 Vi vill ta bort från användare bord till exempel 453 00:22:26,900 --> 00:22:28,254 där användarnamnet är Newman. 454 00:22:28,254 --> 00:22:31,420 Du kan antagligen gissa vad som kommer att hända här när vi utför det SQL 455 00:22:31,420 --> 00:22:35,790 fråga, är Newman borta från bordet. 456 00:22:35,790 --> 00:22:40,460 >> Så alla dessa operationer, som jag har sagt, är mycket lätt att göra i phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Det är ett mycket användarvänligt gränssnitt. 458 00:22:43,020 --> 00:22:45,930 Men det kräver manuellt arbete. 459 00:22:45,930 --> 00:22:47,840 Vi vill inte anställa manuellt arbete. 460 00:22:47,840 --> 00:22:51,280 Vi vill att våra program till gör detta för oss, eller hur? 461 00:22:51,280 --> 00:22:53,190 Så vi kanske vill göra detta programmässigt. 462 00:22:53,190 --> 00:22:56,410 Vi vill införliva SQL och har något annat att göra detta för oss. 463 00:22:56,410 --> 00:23:02,710 >> Men vad har vi sett som gör oss att program göra något? 464 00:23:02,710 --> 00:23:03,690 Vi har sett PHP, eller hur? 465 00:23:03,690 --> 00:23:05,760 Det införs vissa dynamik i våra program. 466 00:23:05,760 --> 00:23:10,430 Och så lyckligtvis, SQL och PHP spela mycket snyggt tillsammans. 467 00:23:10,430 --> 00:23:13,230 Det finns en funktion i PHP kallas fråga, som kan användas. 468 00:23:13,230 --> 00:23:15,870 Och du kan passera som parameter eller argument 469 00:23:15,870 --> 00:23:19,210 att fråga en SQL-fråga som du vill köra. 470 00:23:19,210 --> 00:23:23,250 Och PHP kommer att göra det för din räkning. 471 00:23:23,250 --> 00:23:25,564 >> Så efter att du har anslutit till din databas med PHP, 472 00:23:25,564 --> 00:23:26,980 det finns två primär du gör detta. 473 00:23:26,980 --> 00:23:29,230 Det finns något som kallas mysqli och något som kallas PDO. 474 00:23:29,230 --> 00:23:31,063 Vi kommer inte att gå in i en enorm belopp detalj där. 475 00:23:31,063 --> 00:23:32,957 I CS50 använder vi PDO. 476 00:23:32,957 --> 00:23:34,790 När du har anslutit till din databas, du 477 00:23:34,790 --> 00:23:40,980 kan sedan göra sökningar databasen genom att leda frågor som argument 478 00:23:40,980 --> 00:23:42,730 till PHP funktioner. 479 00:23:42,730 --> 00:23:46,460 Och när du gör det, lagrar du resultatuppsättning i en associativ array. 480 00:23:46,460 --> 00:23:50,290 >> Och vi vet hur man arbetar med associativa arrayer i PHP. 481 00:23:50,290 --> 00:23:52,630 Så jag kan säga något liknande this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 Detta är i PHP-- lika frågan. 483 00:23:55,470 --> 00:23:57,660 Och sedan insidan av sökfunktion som argument 484 00:23:57,660 --> 00:24:00,130 att jag passerar för att fråga som ser ut som SQL. 485 00:24:00,130 --> 00:24:01,160 Och i själva verket som är SQL. 486 00:24:01,160 --> 00:24:05,700 Det är frågesträngen att jag skulle vilja köra på min databas. 487 00:24:05,700 --> 00:24:09,250 >> Och så i rött, är detta PHP. 488 00:24:09,250 --> 00:24:11,890 Detta är SQL att jag är integreras i PHP genom att göra 489 00:24:11,890 --> 00:24:15,020 Det argumentet till frågefunktionen. 490 00:24:15,020 --> 00:24:19,640 Jag vill välja fullname från användare där ID-nummer är lika 10. 491 00:24:19,640 --> 00:24:22,560 Och då kanske efter att jag har gjort det, Jag kan säga ungefär så här. 492 00:24:22,560 --> 00:24:25,550 Jag vill skriva ut meddelande Tack för att logga in. 493 00:24:25,550 --> 00:24:32,530 >> Och jag vill ha det interpolate-- jag vill att interpolera $ resultat fullname. 494 00:24:32,530 --> 00:24:36,280 Och så det är hur jag arbetar med att associativ array som jag kom tillbaka. 495 00:24:36,280 --> 00:24:39,730 $ resultat fullname skulle princip sluta skriva ut, 496 00:24:39,730 --> 00:24:42,870 tack för att logga in, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Det var det fullständiga namnet där idnum motsvarar 10. 498 00:24:46,570 --> 00:24:48,850 >> Och så allt jag gör är jag now-- jag lagras 499 00:24:48,850 --> 00:24:52,780 min fråga, resultatet av min fråga och resulterar i en associativ array, 500 00:24:52,780 --> 00:24:56,330 och fullname är namnet på kolonnen jag fick för. 501 00:24:56,330 --> 00:25:01,010 Så det är min nyckel till resultaten associativ array som jag vill. 502 00:25:01,010 --> 00:25:05,930 Så tack för att logga in, $ resultat, fullname kommer att skriva ut, kommer att hålla 503 00:25:05,930 --> 00:25:08,654 mitt emellan de lockigt hängslen, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 Och jag gillar att skriva ut meddelandet Tack för att logga in Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Nu, vi förmodligen inte vill hårt kod sånt i, eller hur? 506 00:25:16,652 --> 00:25:19,860 Vi kanske vill göra något liknande print f, där vi kan ersätta och kanske 507 00:25:19,860 --> 00:25:22,443 samla olika information, eller kanske har frågeprocessen 508 00:25:22,443 --> 00:25:23,370 olika information. 509 00:25:23,370 --> 00:25:27,920 Och så frågan har sökfunktion denna föreställning om slags utbyten 510 00:25:27,920 --> 00:25:32,310 mycket lik ut f procent s och procent c, är frågetecken. 511 00:25:32,310 --> 00:25:34,290 >> Och vi kan använda fråga märken mycket analogt 512 00:25:34,290 --> 00:25:38,400 att skriva ut f ersättnings variabler. 513 00:25:38,400 --> 00:25:44,120 Så kanske ditt användarnamn inloggad tidigare, och du har sparat deras användar-ID nummer 514 00:25:44,120 --> 00:25:51,710 i $ _SESSION av PHP super global nyckel ID. 515 00:25:51,710 --> 00:25:55,947 Så kanske efter att de loggat in, du ställer $ _SESSION ID är lika med 10, 516 00:25:55,947 --> 00:25:58,280 extrapolering från exemplet vi bara såg en andra sedan. 517 00:25:58,280 --> 00:26:01,960 >> Och så när vi faktiskt utför detta ifrågasätta resultatet nu, 518 00:26:01,960 --> 00:26:08,440 det skulle koppla in 10, eller vad som helst de $ _SESSION ID-värde är. 519 00:26:08,440 --> 00:26:10,790 Och så som tillåter oss att vara lite mer dynamisk. 520 00:26:10,790 --> 00:26:12,699 Vi är inte svårt kodning saker längre. 521 00:26:12,699 --> 00:26:14,490 Vi sparar informationen någonstans och sedan 522 00:26:14,490 --> 00:26:18,924 Vi kan använda den informationen en gång till sorts generalisera vad vi vill göra, 523 00:26:18,924 --> 00:26:21,090 och bara plug-in och förändring beteende vår sida 524 00:26:21,090 --> 00:26:26,489 baserat på vad användarens ID-nummer egentligen är när de har loggat in. 525 00:26:26,489 --> 00:26:28,530 Det är också möjligt, men att dina resultat set 526 00:26:28,530 --> 00:26:30,840 kan bestå av flera rader. 527 00:26:30,840 --> 00:26:33,990 I vilket fall, har du en matris med arrays-- 528 00:26:33,990 --> 00:26:35,334 en array av associativa arrayer. 529 00:26:35,334 --> 00:26:37,000 Och du behöver bara iterera igenom det. 530 00:26:37,000 --> 00:26:41,950 Och vi vet hur man iterera genom en rad i PHP, eller hur? 531 00:26:41,950 --> 00:26:45,600 Så här är förmodligen den mest komplex sak som vi har sett hittills. 532 00:26:45,600 --> 00:26:49,640 Det faktiskt integrerar tre språk tillsammans. 533 00:26:49,640 --> 00:26:52,920 >> Här i rött, är detta något HTML. 534 00:26:52,920 --> 00:26:56,872 Jag tydligen starting-- detta är ett utdrag av någon HTML som jag har. 535 00:26:56,872 --> 00:26:59,580 Jag börjar ett nytt stycke som säger mammor av TV Seinfeld. 536 00:26:59,580 --> 00:27:02,350 Och sedan omedelbart efteråt Jag börjar en tabell. 537 00:27:02,350 --> 00:27:06,060 Och sedan efter att jag har någon PHP, eller hur? 538 00:27:06,060 --> 00:27:08,229 Jag har all denna PHP-kod där. 539 00:27:08,229 --> 00:27:09,645 Jag uppenbarligen kommer att göra en förfrågan. 540 00:27:09,645 --> 00:27:14,180 Och för att göra frågan, kommer jag att att använda SELECT mödrar FRÅN moms. 541 00:27:14,180 --> 00:27:15,970 >> Så det här är getting-- detta är SQL. 542 00:27:15,970 --> 00:27:17,300 Så det blå är SQL. 543 00:27:17,300 --> 00:27:19,680 Den röda vi såg för en sekund sedan var HTML. 544 00:27:19,680 --> 00:27:21,360 Och den gröna här är PHP. 545 00:27:21,360 --> 00:27:23,400 Så jag gör en fråga till min databas, jag 546 00:27:23,400 --> 00:27:26,040 markera alla mödrar i tabellen moms. 547 00:27:26,040 --> 00:27:30,710 Inte bara minska ner till särskilda rad, jag ber för dem alla. 548 00:27:30,710 --> 00:27:33,290 >> Sedan kollar jag om resultatet inte jämlikar lika falskt. 549 00:27:33,290 --> 00:27:37,410 Detta är bara mitt sätt att kontrollera sort av om resultaten inte är lika med noll, 550 00:27:37,410 --> 00:27:40,260 att vi skulle få se c till exempel. 551 00:27:40,260 --> 00:27:44,000 I grund och botten detta är bara kontrollera för att säker på att det faktiskt fick data tillbaka. 552 00:27:44,000 --> 00:27:47,041 Eftersom jag inte vill börja skriva ut ut uppgifter om jag inte fick några uppgifter. 553 00:27:47,041 --> 00:27:50,690 Sedan för varje resultat till följd av foreach syntax från PHP, allt jag gör 554 00:27:50,690 --> 00:27:53,399 skriver ut $ resultat mödrar. 555 00:27:53,399 --> 00:27:55,940 Och så jag kommer att få en uppsättning av alla de mödrar till each-- 556 00:27:55,940 --> 00:27:59,980 det är en samling av associativ arrays-- och jag skriva ut 557 00:27:59,980 --> 00:28:03,649 varje en som sin egen rad i en tabell. 558 00:28:03,649 --> 00:28:05,690 Och det är verkligen söt mycket allt som finns till den. 559 00:28:05,690 --> 00:28:07,750 Jag vet att det finns en liten bit pågår här 560 00:28:07,750 --> 00:28:13,210 i detta sista exemplet med matriser av arrays-- arrayer av associativa arrayer. 561 00:28:13,210 --> 00:28:17,340 Men det är verkligen inte bara koka i SQL för att göra en förfrågan, 562 00:28:17,340 --> 00:28:21,102 vanligtvis välja när vi har redan lägga in information i tabellen, 563 00:28:21,102 --> 00:28:22,310 och sedan bara dra ut den. 564 00:28:22,310 --> 00:28:25,710 >> Och det är vi skulle dra det i detta särskilda fall. 565 00:28:25,710 --> 00:28:31,120 Vi skulle extrahera alla de enskilda mödrar från bordet moms. 566 00:28:31,120 --> 00:28:35,970 Vi fick en hel uppsättning av dem, och vi vill iterera igenom och skriva ut 567 00:28:35,970 --> 00:28:37,630 varenda en. 568 00:28:37,630 --> 00:28:40,510 Så återigen, detta är förmodligen det mest komplicerat exempel 569 00:28:40,510 --> 00:28:44,510 vi har sett eftersom vi blandar tre olika språk tillsammans, eller hur? 570 00:28:44,510 --> 00:28:50,100 >> Återigen har vi HTML här i rött, blandat med lite SQL här i blått, 571 00:28:50,100 --> 00:28:52,049 blandat med lite PHP i grönt. 572 00:28:52,049 --> 00:28:53,840 Men alla dessa spelar fint tillsammans, är det 573 00:28:53,840 --> 00:28:57,060 bara en fråga om att utveckla goda vanor så att du kan få 574 00:28:57,060 --> 00:28:58,780 dem att arbeta tillsammans på det sätt du vill. 575 00:28:58,780 --> 00:29:03,790 Och det enda sättet att verkligen göra det är att öva, öva, öva. 576 00:29:03,790 --> 00:29:06,740 Jag är Doug Lloyd, är detta CS50. 577 00:29:06,740 --> 00:29:08,647