[Glazbom] Doug LLOYD: U našim video na web razvoj teme, smo spomenuli pojam baza podataka nekoliko puta, zar ne? Dakle baza si vjerojatno upoznati s od kažu pomoću Microsoft Excel ili Google. To je zapravo samo organizirano skup tablica, retke i stupce. A baza podataka gdje Naša web stranica trgovinama informacije koje je važno za naše web stranice kako bi ispravno funkcionirao. Opet, stvarno čest primjer ovdje je spremanje korisničkih imena i lozinki u bazi podataka, tako da kada se korisnik prijavi u našem web, baza podataka može biti ispitan vidjeti ako to korisnik ne postoji u bazi podataka. A ako su, provjeravajući njihova lozinka ispravna. A ako je njihova lozinka ispravna, onda smo ih sve što stranica mogu dati oni traži. Znači, ti si vjerojatno, opet, poznato s tom idejom iz Excel ili Google Proračunske tablice. Imamo baze podataka, tablice, redaka, i stupaca. I to je zapravo neka vrsta temeljnog skupa hijerarhijskih sloma ovdje. Dakle ovdje je Excel spreadsheet-ovima. A ako ste ikad otvorili ovaj ili neki drugi sličan program znate da to ovdje rows-- 1, 2, 3, 4, 5, 6, 7, To su stupovi. Možda ovdje, iako ste svibanj Ne koristite ovu značajku strašno much-- Ja ću uvećanje in-- smo ova ideja list. Dakle, možda su ti listovi, ako I izmjenjivati ​​naprijed i natrag, su različite tablice koje postoji u mom bazi podataka. A ako mi i dalje na primjer sve Put naziv ove baze podataka je knjiga 1. Možda Imam knjigu 2 i 3 knjigu. Dakle, svaki Excel datoteka je baze podataka, svaki list je tablica, a unutar svake tablice imam ova ideja redaka i stupaca. Pa kako ja radim s ovom bazom podataka? Kako mogu dobiti informacije od njega? Pa postoji jezik zove SQL-- koje sam obično samo nazvati Sequel-- i to stoji za Structured Query Language. I to je programski jezik, ali to je prilično ograničen programiranje jezik. To nije baš kao i drugi da smo radili s. Ali svrha ove programski jezik je upita baze podataka, kako bi pitajte informacije baze podataka, naći informacije u baze podataka, i tako dalje. Također, u CS50-- i to je vrlo zajednička platforma, to se zove MySQL. To je ono što koristimo u tijeku. To je open source platforma koja uspostavlja takozvani relacijskih database-- baza podataka, učinkovito. Ne trebate dobiti u previše detalja na što je relacijskih baza podataka je. No, SQL jezik vrlo vješt u radno s MySQL i druga slična stilovi relacijskim bazama podataka. I mnogi postrojenja MySQL dolaze s nešto zove phpMyAdmin, koji je grafičko korisničko interface-- je GUI-- da čini malo više user friendly izvršiti upita baze podataka, jer baza podataka ne samo koristi napredne programera, zar ne? Ponekad postoje ove male tvrtke, i oni ne mogu priuštiti zaposliti tim programera, ali još uvijek je potrebno pohraniti informacije u bazu podataka. Nešto poput phpMyAdmin ga čini vrlo lako za nekoga tko nikad nije programiran da prije pokupiti i upoznati s načinom za rad s bazom podataka. Problem je, phpMyAdmin, a to je fantastičan alat za učenje o bazama podataka, to je ručni. Ti si idući u morati prijaviti na to i izvršiti naredbe i tip stvari u ručno. A kao što znamo iz naše Primjer na PHP web programiranje, potrebe da ručno napraviti stvari na našim web stranicama, ako želimo dinamična, aktivna osjetljiv web stranica, možda i nije najbolji pristup. Želimo pronaći put do Možda to nekako automatizirati. I SQL će nam omogućiti da to učinite. Dakle, kada ćemo početi raditi sa SQL, prvo moramo imati Baza raditi. Stvaranje baze podataka je nešto što je vjerojatno će učiniti u phpMyAdmin, jer samo trebate to učiniti jednom, i sintaksa za to je puno više jednostavan. To je puno lakše za napraviti u grafičkom korisničkom sučelju nego ga upisivati ​​izvan kao zapovijed. Naredba se može dobiti malo težak. Isto tako, stvarajući stol dobili vrlo malo glomazan kao dobro. I tako stvari kao što su stvaranje baze podataka i stvaranje tablice, koje ste vjerojatno samo će učiniti once-- jednom po stolu, jednom po database-- to je u redu to učiniti u grafičko sučelje. U procesu stvaranje tablice, vi ćete Također morate navesti sve od stupaca koji će biti u toj tablici. Kakve informacije učiniti želite pohraniti u tablici? Možda naziv korisnički i datum rođenja, lozinka, korisnički ID broj, a možda i grad i država, zar ne? I svaki put želimo dodati korisnika bazi podataka, želimo da se svih šest tih komada informacija. I mi to učiniti dodavanjem redaka u tablici. Tako smo prvo stvoriti bazu podataka, onda ćemo stvoriti tablicu. U sklopu izrade stol, od nas se traži navesti svaki stupac koji želimo u ovoj tablici. A onda kao što smo započeli dodati informacije na bazi i upita baze podataka više generally-- ne samo dodao, ali sve ostalo smo do-- ćemo se bave s redovima stola, što je jedan Korisnički podaci iz cijelog seta. Dakle, svaki SQL stupac je sposoban drži podatke o određenoj vrsti podataka. Tako smo vrsta eliminira ovaj Ideja vrste podataka u PHP, ali oni su ovdje u SQL. I tu je puno tipova podataka. Evo samo 20 od njih, ali to nije ni sve njih. Dakle, imamo ideje poput INTs-- Integers-- smo vjerojatno znate da je ovaj stupac može sadržavati prirodnih brojeva. A tu su varijacije thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Možda ne uvijek potrebna četiri zalogaja. Možda trebamo osam bajtova, pa smo Možete koristiti ove varijacije brojeva biti malo više prostora učinkovit. Mi možemo učiniti decimalne brojeve, mi možete učiniti brojeve s pomičnim zarezom. To su prilično slični. Postoje neke razlike, a ako bi vole gledati gore SQL vrsta vodiča, možete vidjeti što je neznatno razlike među njima. Možda želimo pohraniti informacije o datumu i vremenu. Možda smo praćenja kada korisnik pridružio našu web stranicu, pa možda želimo imati stupac koji je datum vrijeme ili vremenska oznaka koja pokazuje kada korisnik zapravo prijavljen. Mi možemo učiniti geometrije i linestrings. To je zapravo prilično cool. Mogli bismo map out zemljopisno područje korištenja Koordinata GIS zemljište izvan površinu. Pa zapravo može pohraniti takvu informacija u SQL stupcu. Tekst je samo div mrljica teksta, možda. ENUMs su vrsta zanimljiv. Oni su zapravo postoje u C. Mi ne govoriti o njima jer oni nisu Strašno uobičajeno, barem CS50. No, to je popisana tip podataka, koji je sposoban za držanje ograničene vrijednosti. Stvarno dobar primjer ovdje bi se stvoriti nabrajanja gdje sedam Moguće vrijednosti su nedjelja, ponedjeljak, Utorak, srijeda, četvrtak, petak, Subota, zar ne? Ta vrsta podataka Dan Tjedan ne postoji, ali smo mogli stvoriti nabrojane tip podataka kao da je stupac može uvijek samo držati jedan od onih sedam mogućih vrijednosti. Mi smo popisani svi od mogućih vrijednosti. Onda smo CHAR i VARCHAR, a ja sam to zelena boja jer smo zapravo će uzeti sekundu govoriti o razlici između ove dvije stvari. Dakle CHAR, za razliku od C gdje CHAR je jedan lik, u SQL char odnosi fiksni string duljine. A kad smo stvorili ovo stupac, mi zapravo može odrediti duljinu niza. Dakle, u ovom primjeru, mogli bismo reći CHAR (10). To znači da je svaki element tog stupca će se sastojati od 10 bajtova podataka. Nema više, ni manje. Dakle, ako ćemo pokušati staviti u 15 bitna ili element 15 znakova ili vrijednost u ovaj stupac, mi samo smo dobili prvu 10. Ako stavimo u dva lik dugo vrijednost, ćemo imati dva likovi, a zatim osam null ugriza. Nikada nećemo biti učinkovitiji od toga. VARCHAR je vrsta kao naš pojam nizu da smo upoznati s od C ili PHP. To je varijabla duljina niza. A kada ste stvorili ovaj stupac, samo odrediti maksimalne moguće dužine. Dakle, možda 99 ili obično 255. To će biti maksimalna duljina. I tako, ako smo bili spremanje 15 niz znakova, mi bi koristili 15 bajtova, možda 16 za nultu Terminator bajtova. Ako smo pohranjivanja tri niza znakova, mi bi koristiti tri ili četiri bajta. Ali mi ne bi koristili puni 99. Pa zašto bi smo oboje? Pa, ako moramo shvatiti kako dugo je nešto s VARCHAR, moramo vrste ponoviti preko njega baš kao što smo učinili u C i shvatiti gdje se zaustavlja. Dok ako znamo da je sve u ovom stupcu je 10 bajtova, možda znamo te podatke, možemo skočiti 10 bajtova, 10 bajtova, 10 bajtova, 10 bajtova, i uvijek pronaći početak niza. Dakle, možemo imati neke izgubiti prostor s CHAR, ali možda postoji trgovinu off imaju bolju brzinu u kretanju baze podataka. Ali možda želimo fleksibilnost u VARCHAR umjesto having-- Ako naš CHAR bio je 255, ali većina naših korisnika su samo unosom tri ili četiri bajta vrijedno informacija ili tri ili četiri likovi vrijedan informacija. No, neki korisnici su pomoću cijeli 255, možda VARCHAR bi prikladnije bilo. To je neka vrsta trgovine off, i općenito u svrhu CS50, ne morate brinuti previše o koristite li ugljen ili varchar. No, u stvarnom svijetu, te stvari ne smeta, jer sve ove stupce zauzimaju stvarni fizički prostor. I fizički prostor, u stvarni svijet, dolazi u premium. Dakle, jedan drugog obzir kada izgradnji stol je odabrati jedan stupac se ono što se zove primarni ključ. I primarni ključ je stupac gdje je svaka pojedinačna vrijednost je jedinstven. A to znači da možete lako izabrati jedan red samo gledanjem na primarni ključ tog reda. Tako na primjer, uglavnom, s korisnicima, ne želim dva korisnika koji imaju isti korisnički ID broj. I tako možda imate puno informacija, a možda i dvije korisnici mogu imaju istu name-- imate John Smith i John Smith. To nije nužno problem, jer postoji više ljudi u svijetu se zove John Smith. Ali imamo samo jedan korisnički ID broj 10, jedan korisnički ID broj 11, 12, 13. Nemamo dva korisnika s istim brojem, i tako možda korisnički ID brojevi bi bilo dobro primarni ključ. Nemamo nikakvu dupliciranje, i sada možemo jedinstveno identificiraju svaki redak samo gledajući tu kolonu. Odabir primarne ključeve zapravo može napraviti naknadne operacije stol puno lakše jer možete utjecati činjenica da su određene retke će biti jedinstven, ili određeni stupac Vaše baze podataka ili tablice će biti jedinstven za pokupiti out pojedine retke. Također možete imati zajedničku primarni Ključ koji možete naći prigodu koristiti, što je samo kombinacija dva stupca koji zasigurno biti jedinstveno. Pa možda imate stupac koji je kao i B, jedan stupac to je jedan, dva, i tri, ali samo ćete ikad imaju jednu A1, jedan A2, i tako dalje i tako dalje. Ali možda imate B2, C2, ili A1, A2, A3, A4. Dakle, možete imati više Kao, višestruki B, više one, više dvojke, ali samo ikada imati jedan A1, B2, C3, i tako dalje. Dakle, kao što sam rekao, SQL je programski jezik, ali ima prilično ograničen vokabular. To nije baš tako prostrani kao C i PHP i drugim jezicima da govorimo u tijeku. To je više preopširan jezik od onoga što smo ćemo govoriti o tome u ovom Video, jer je u ovom videu ćemo govoriti o četiri operacije koje mi mogu obavljati na stol. Postoji više od toga. Mi možemo učiniti više od toga, ali za naše potrebe, mi smo uglavnom će se koristiti Samo četiri operations-- umetak, odabir, ažurirati i brisati. I vjerojatno možete pogoditi intuitivno što sve četiri od tih stvari raditi. No, mi ćemo ići u malo pojedinosti o svakom od njih. Dakle, za potrebe ovog Video, pretpostavimo smo sljedeće dvije tablice u jedinstvenu bazu podataka. Imamo stol pozvao korisnike da ima četiri columns-- ID broj, korisničko ime, lozinku i ime i prezime. I imamo drugi stol u istoj bazi podataka zove Moms da je samo pohranjuje podatke o korisničkim imenom i majka. Dakle, za sve primjere u ovom videu, mi ćemo koristiti ovu bazu podataka i naknadna ažuriranja na njega. Dakle, recimo da želimo dodavanje podataka stolu. To je ono što je operacija umetak radi. U objašnjenju sve ove naredbe, idem vam dati opći kostur za korištenje. Jer u osnovi, upite će izgledati lijepo slično, samo ćemo se mijenja malo različite dijelove informacije raditi različite stvari sa stola. Dakle, za INSERT, kostura Izgleda vrsta kao što je ovaj. Želimo umetnuti u određeni stol. Onda imamo otvorenu zagradu i popis stupaca da želimo staviti vrijednosti u. Zatvori zagradama, Sljedeće vrijednosti, a zatim Ponovno smo se popis vrijednosti želimo staviti u tablici. Dakle, primjer za to će biti sljedeće. Želim umetnuti u tablicu Korisnici sljedeće columns-- korisničko ime, lozinku i Korisnik FULLNAME. Dakle, novi redak u kojem sam stavljajući u tim tri stupca, a mi smo će staviti u vrijednosti Newman, USMAIL i Newman. Dakle, u ovom slučaju, ja sam stavljajući malim slovom Newman u stupcu korisničkim imenom, lozinkom USMAIL, a puni naziv grada N Newman u Korisnik FULLNAME kolonu. Evo što je baza podataka izgledao kao prije. Evo što je stol korisnicima na Top izgledao kao prije nego što je to učinio. Nakon što smo izvršiti ovu upita, dobili smo ovo. Dodali smo novi redak u tablici. Ali primijetite tu jednu stvar da nisu naveli, ali nekako imam vrijednost za što je ovo 12 ovdje. Nisam rekla da želim staviti identifikacijski broj tamo. Htjela sam staviti ime, lozinku, Korisnik FULLNAME. I ja to učinio, to je u redu. Ali ja također dobio ovaj 12. Zašto se to 12.? Pa, ispada da kada se definiraju stupac koji će biti tvoj primarni ključ, što je obično, kao što sam rekao, identifikacijski broj. To nije uvijek nužno će biti matični broj, ali to je obično dobra ideja da nekakva cjelobrojna vrijednost. Imate opciju u phpMyAdmin prilikom stvaranja baze podataka ili vaš stol postaviti da Kolona kao auto povećavati. Što je stvarno dobra ideja kada radite s primarni ključ, jer želite sve vrijednosti u tom stupcu biti jedinstveni. A ako ste zaboravili navesti je za više od jedne osobe, sada imate situaciju u kojoj da kolona više nije jedinstvena. Imate dvije praznine, tako da možete bez više jedinstveno identificira column-- ili više ne možete jedinstveno identificirati red na temelju tog stupca. To je izgubio sve njegove vrijednost kao primarni ključ. I tako očito ono što sam učinio Ovdje je konfiguriran ID korisnika Kolona se auto prirast, tako da svaki Vrijeme dodam podatke u tablici, to će mi automatski dati vrijednost za primarni ključ. Pa ja nikada ne mogu zaboraviti to učiniti, jer baza podataka će to učiniti za mene. Dakle, to je vrsta lijepo. I tako to je razlog zašto smo dobili 12 tamo, jer sam postaviti taj stupac up na auto prirast. Ako sam dodao netko drugi bilo bi 13, ako sam dodao netko drugi to bi bilo 14, i tako dalje. Pa neka je samo napraviti još jedan umetanje. Mi ćemo umetnuti u tablici mame, u Konkretno, korisničko ime i majka stupaca, vrijednosti Kramer i Babs Kramer. I tako smo imali prije. Nakon što smo izvršiti da SQL upit, imamo ovo. Dodali smo Kramer i Babs Kramer na stol mame. Tako da je umetanje. SELECT je ono što ćemo koristiti za izdvajanje Podaci iz tablice. Dakle, to je kako smo dobili Podaci iz baze podataka. I tako SELECT naredbe će biti Vrlo često se koristi u programiranju. Opći framework-- Općenito kostur izgleda ovako. Odaberite skup stupaca iz stol, a zatim po potrebi možete odrediti condition-- ili ono što mi obično nazivamo predikat, je obično pojam koristimo u SQL. No, to je u osnovi ono što Pojedini redovi želite dobiti. Ako želite, umjesto da se sve, suzili ga, ovo je mjesto gdje bi to učiniti. I onda po želji, također možete naručiti određeni stupac. Dakle, možda želite imati stvari sortirane abecednom temelji na jednom stupcu ili abecedno temelju drugog. Opet, gdje i ORDER BY izborni. Ali vjerojatno će biti useful-- osobito Gdje će biti korisno suziti tako da ne dobiti svoj cijelu bazu podataka natrag i moraju obraditi, samo dobiti komadi to da vam je stalo. Tako na primjer, ja možda želite odabrati ID broj i Korisnik FULLNAME od korisnika. Pa što bi to izgledati? Dakle ovdje je moj Korisnici stol. Želim da odaberete idnum i Korisnik FULLNAME od korisnika. Što ću dobiti? Idem ovo. Nisam ga suziti, pa sam uzimajući identifikacijski broj za svaki red i ja sam uzimajući puni ime iz svakog reda. U REDU. Što ako želim odabrati zaporku od korisnika WHERE-- tako da sada Ja sam dodavanjem stanje, predicate-- gdje idnum je manji od 12. Dakle, ovdje je moja baza podataka opet, moj Korisnici stol vrhu. Što ću dobiti ako želim odaberite te podatke, lozinka, gdje korisnički ID ili idnum manji od 12? Idem da se to Informacije natrag, zar ne? To se događa da idnum je 10 manje od 12, matični broj 11 manje od 12 godina. Dobivam lozinku za one retke. To je ono što sam tražio. Što s ovim? Što ako želim odabrati zvijezda iz popisa mame stol gdje korisničko ime jednako Jerry? OK, odaberite zvijezda je posebna vrsta divlje kartice tzv koje koristimo kako bi dobili sve. Tako oni govore odaberite korisničko ime zarezom majku, koja dogodilo se da je samo dva stupca ove tablice, Ja samo mogu odabrati zvijezda i dobiti sve gdje je korisničko ime jednak Jerry. I tako to je ono što će dobiti ako sam napravio taj određeni upit. Sada, baze podataka super jer omogućuju nas organizirati informacije možda malo učinkovitije od nas inače mogli. Mi ne nužno trgovinu svaki relevantan podatak o korisniku u istoj tablici. Imali smo dvije tablice tamo. Moramo spremiti Svi su majke ime, a možda nemamo socijalnu sigurnost broj, imamo svoj datum rođenja. To nije uvijek potrebna da se u isti stol. Dokle god možemo definirati Odnosi između tables-- i to je gdje je ta relacijska Baza JavaScript vrsta dolazi u play-- koliko god možemo definirati odnosi između stolova, možemo vrsta compartmentalize ili apstraktne stvari način, gdje smo samo imati jako važne informacije mi je stalo u korisnikovom stola. I onda imamo pomoćnih podataka ili dodatne informacije u drugim tablicama koje možemo povezati natrag u glavni Korisnici stol na poseban način. Dakle, ovdje imamo ove dvije tablice, ali postoji odnos između njih, pravo? Čini se kao korisničko ime bi moglo biti nešto da postoji zajedničko između ove dvije različite tablice. Pa što ako mi sada imamo situacija u kojoj smo želite dobiti korisničkog puni naziv iz korisnikov stol, a njihova majka ime iz matične stola? Nemamo način da se da kao što stoji, zar ne? Ne postoji niti jedan stol koji sadrži i ime i prezime i majke ime. Mi nemamo tu opciju od onoga što smo do sada vidjeli. I tako smo uvesti ideja pridružite. I pridružuje se vjerojatno najviše complex-- to je stvarno vrlo složena operacija ćemo razgovarati o u videu. Oni su malo komplicirano, ali jednom kada dobijete dokučiti ga, oni zapravo nije loš. To je samo poseban slučaj SELECT. Ćemo odabrati skup stupaca iz tablice spajanje u drugom stolu na nekoj predikata. U ovom slučaju, mislim o tome kao this-- Tablica jedna je jedan krug ovdje, Tablica dva je još jedan krug ovdje. I to predikat dio u sredini, to je vrsta kao ako mislite o kao Venn dijagrama, što oni imaju zajedničko? Želimo povezati ove dvije tablice na temelju onoga što im je zajedničko i stvoriti taj hipotetski tablice da je spajanje dva zajedno. Tako ćemo vidjeti u primjer i možda će vam pomoći jasno ga malo. Dakle, možda želite odabrati user.fullname i moms.mother od korisnika pridružio u mame stol u svakoj situaciji gdje je korisničko ime kolona je između njih ista. I ovo je nova Sintaksa ovdje, ovog korisnika. i mame .. Ako radim više tablica zajedno, mogu odrediti tablicu. Ja mogu razlikovati posebice o da je na samom dnu tamo. Ja mogu razlikovati ime stupac tablice korisnika iz korisničkim imenom stupcu mame stol, koji su otherwise-- ako mi samo rekao korisničko ime jednako korisničko ime, da ne stvarno znači ništa. Želimo to učiniti, gdje se podudaraju. Dakle, ja mogu odrediti tablicu i ime stupca u slučaju situaciji gdje će biti nejasno ono što sam pričaju. Tako da je sve što radim je sam govoreći ovaj stupac iz ove tablice, i što je vrlo eksplicitno. Pa opet, ja odabirom puni naziv i majčino ime od stola korisnici povezani zajedno sa stolom mame u svakoj situaciji gdje su podijeliti tu column-- dijele tu korisničko ime pojam. Dakle, ovdje su stolovi smo imali prije. To je stanje naše Baza kao što postoji upravo sada. Informacije smo vađenje je to za početak. Ovo je nova tablica ćemo stvoriti kombinirajući to zajedno. I primijetiti nismo isticanje Newman je red na korisnikovom stolom, i nismo isticanje Kramer je red u tablici mame jer niti jedan postoji u kako sets-- u obje tablice. Jedini podatak koji je zajednički između njih je Jerry u obje tablice i gcostanza je u obje tablice. I tako, kada mi je SQL JOIN, što smo get-- i radimo zapravo dobiti ovo. To je vrsta privremenog varijable. To je kao hipotetski spajanje dvije tablice. Mi zapravo nešto ovako, gdje smo spojene zajedno tablicama na informacije koje im je zajedničko. Dakle, primijetite da users.username i moms.username stupac, to je točno isto. To je podatak da je u skladu s korisnicima stol i stol mame. I tako smo ih spojili zajedno. Odbačena smo Kramer, jer je on ne postoji u tablici korisnika, a mi odbačena Newmana, jer on ne postoji u tablici mame. Dakle, ovo je hipotetski spajanje pomoću Pridružite rad SELECT. A onda su mi u potrazi za korisnički puni naziv i korisnikov majka, pa to je podatak da bismo dobili od ukupnog upit koje smo napravili s odabranim. Tako smo se pridružio tablice zajedno i smo izdvojili one dvije kolone, pa to je ono što bismo dobili. Ali SQL pridružuje vrsta komplicirano. Vjerojatno ih neće učiniti previše, ali samo neke ideje o kosturu da biste mogli koristiti za spajanje dva Stolovi zajedno ako bilo potrebno. Posljednja dva su malo jednostavnije obećavam. Dakle ažuriranje, možemo koristiti UPDATE mijenjati podatke u tablici. Opći format je UPDATE neke stol, postaviti neke stupac do neke vrijednosti Gdje su neki predikat je zadovoljan. Tako, na primjer, mogli bismo želimo ažurirati tablicu korisnika i postavite lozinku za BLA Yada, gdje je ID broj je 10. Dakle, u ovom slučaju, mi smo ažuriranje tablice korisnicima. ID broj je 10 za da prvi red tamo, i želimo ažurirati lozinku za naklapanje. I tako to je ono što će se dogoditi. To je prilično jednostavan, zar ne? To je samo vrlo jednostavan izmjena stola. DELETE se rad koristi smo ukloniti podatke iz tablice. Izbrisati iz stola gdje neki predikat je zadovoljan. Želimo izbrisati iz Korisnici stol za primjer gdje je korisničko ime je Newman. Vjerojatno možete pretpostaviti što će se ovdje dogoditi nakon što smo izvršiti tu SQL upita, Newman je otišao od stola. Dakle, sve ove radnje, kao što sam rekao, vrlo jednostavno za napraviti u phpMyAdmin. To je vrlo korisnik prijazan sučelje. No, to ne zahtijeva ručnu napor. Mi ne želimo zaposliti ručnog truda. Želimo naše programe to učiniti za nas, zar ne? Tako smo možda želite učiniti ovaj programski. Želimo da se uključi SQL i imati nešto drugo to učiniti za nas. No, ono što smo vidjeli koja omogućuje nas programatski nešto učiniti? Vidjeli smo PHP, zar ne? On uvodi neke dinamika u naše programe. I tako Srećom, SQL i PHP igraju vrlo lijepo zajedno. Postoji funkcija u PHP zove upit, koji se može koristiti. A možete proći kao parametar ili argument upita SQL upit koji želite izvršiti. I PHP će to učiniti u vaše ime. Dakle, nakon što ste povezani na bazi podataka s PHP, postoje dva predizborima ste to učinili. Postoji nešto što se zove MySQLi i nešto što se zove PDO. Nećemo ići u veliki Iznos detalj tamo. U CS50 koristimo PDO. Nakon što ste spojeni na svoju bazu podataka, Zatim možete napraviti upita baze podataka donošenjem upite kao argumente za PHP funkcija. A kada to učinite, možete pohraniti skup rezultata u asocijativni niz. A znamo kako raditi s asocijativne nizove u PHP. Tako sam mogao nešto reći kao this-- $ results-- ovo je PHP-- jednak upit. A onda unutrašnjosti Funkcija upit koji argument da sam prolazu upita da izgleda kao SQL. A u stvari je to SQL. To je niza upita da bih željeli izvršiti na mom bazi podataka. I tako je u crveno, to je PHP. To je SQL da sam integriranje u PHP čineći to je argument u funkciji upit. Želim da odaberete Korisnik FULLNAME iz Korisnici gdje Matični broj iznosi 10. A onda možda nakon što sam to učinio, Možda sam reći nešto poput ovoga. Želim ispisati poruka Hvala za prijave. I ja to želim interpolate-- želim interpolirati rezultate $ Korisnik FULLNAME. I tako to je kako ja radim s tim asocijativni niz koji sam se vratio. $ rezultati Korisnik FULLNAME bi osnovi završiti ispis, hvala za prijave, Jerry Seinfeld. To je puno ime gdje idnum jednak 10. I tako ja radim je sam now-- sam pohranjeni moj upit, rezultati mog upita i rezultira asocijativni niz, i Korisnik FULLNAME je naziv kolona je sam se za. Dakle, to je moj ključ u rezultatima asocijativni niz koji ja želim. Tako Hvala prijave, $ rezultati, Korisnik FULLNAME će ispisati će se držati Pravo između onih kovrčava aparatić, Jerry Seinfeld. A ja ću željeli ispisati poruku Hvala prijavite Jerry Seinfeld. Sada, mi vjerojatno ne žele teško kod takve stvari, zar ne? Mi možda želite učiniti nešto poput ispis f, gdje možemo zamijeniti, a možda prikuplja različite podatke, ili možda ima proces upit različite informacije. I tako upita, funkcija upita ima ovaj pojam vrstom zamjene vrlo sličan ispis f posto ih i posto c, je upitnika. I možemo koristiti pitanje Oznake vrlo analogno ispisati f zamijeniti varijabli. Dakle, možda je vaš korisnički prijavljeni ranije, i ti spasio svoj korisnički ID broj u $ _session PHP super Globalna u ključnom ID. Dakle, možda nakon što su prijavljeni, postavite _session $ ID jednak 10, ekstrapolacijom iz primjera smo upravo vidjeli prije sekundu. I tako kad smo zapravo izvršavanje Ovaj upit rezultate sada, to bi priključite 10, ili što god ID vrijednost $ _session je. I da nam omogućuje da biti malo dinamičniji. Nećemo teško kodiranja stvari više. Mi spremanja podataka negdje i onda možemo koristiti te podatke opet vrsta generalizirati ono što želimo učiniti, i samo plug-in i promjena ponašanje naše stranice na temelju onoga što ID broj korisnika zapravo je nakon što su prijavljeni. Također je moguće, ipak, kako postaviti rezultati može sastojati od više redova. U tom slučaju, morate niz arrays-- niz asocijativnih polja. A vi samo trebate ponoviti kroz njega. A znamo kako ponoviti kroz niz u PHP-u, zar ne? Dakle, ovdje je vjerojatno složena stvar koju smo dosad vidjeli. To zapravo integrira tri jezika zajedno. Ovdje u crveno, to je neki HTML. Ja sam očito starting-- ovo isječak neke HTML da imam. Počinjem se novi stavak tu kaže se mame za TV Seinfeld. A onda odmah nakon toga Počinjem stol. I onda nakon toga, ja imaju neke PHP, zar ne? Imam sve ove PHP koda tamo. Ja sam očito će napraviti upit. A kako bi upit, idem se pomoću SELECT majki iz mame. Dakle, ovo je getting-- to SQL. Tako je plavo je SQL. Crvena smo vidjeli prije sekundu bio HTML. I zeleni ovdje je PHP. Pa ja sam stvaranje upit mom bazi podataka, ja sam Odabirom sve od majke u tablici mame. Ne samo to sužavanje dolje na posebno red, ja tražim za sve njih. Tada sam provjeriti da li je rezultat Ne jednaki jednako lažna. Ovo je samo moj način provjere vrsta od, ako rezultati nisu jednaki null, da bismo vidjeli c za primjer. Uglavnom ovo je samo provjera da bi sigurni da je to zapravo dobio podatke natrag. Jer ja ne želim započeti ispis iz podataka ako nisam dobio nikakve podatke. Tada za svaku rezultate kao rezultat foreach sintaksa od PHP-u, sve radim ispisuje se majke $ rezultat. I tako ću dobiti set od svih majki each-- to je niz asocijativnih arrays-- i sam ispis svaki kao vlastitom nizu tablice. I to je stvarno lijepa velik dio sve što je na njega. Znam da je malo malo se ovdje događa u ovom zadnjem primjeru s nizova arrays-- polja asocijativnih polja. Ali to zapravo samo ne kuhati dolje u SQL za stvaranje upita, obično odabiru nakon što ste već stavite podatke u tablici, i onda samo ga čupanje. A to je da će ga povući u ovom konkretnom slučaju. Bismo ekstrakt sve pojedinca majke iz tablice mame. Imamo cijeli niz njih, a mi želim ponoviti kroz i ispis svaki. Pa opet, to je vjerojatno najsloženijih primjer vidjeli smo jer smo miješanjem tri različiti jezici, zar ne? Opet, imamo HTML ovdje u crveno, pomiješana s nekim SQL ovdje u plavo, pomiješana s nekim PHP u zeleno. No, sve to odigrati lijepo zajedno, to je Samo je pitanje razvoja dobre navike, tako da možete dobiti ih da rade zajedno na način koji želite. A jedini način da se stvarno učiniti je praksa, praksa, praksa. Ja sam Doug Lloyd, ovo je CS50.