[MUSIC JOC] DOUG LLOYD: În filmele noastre pe teme de dezvoltare web, am menționat conceptul de o bază de date de câteva ori, nu? Deci, o bază de date ce te probabil, familiarizat cu de la spune folosind Microsoft Excel sau foi de calcul Google. Este într-adevăr doar o organizat set de tabele, rânduri, și coloane. Și o bază de date în cazul în care este noastre de magazine site-ul informații care sunt importante pentru site-ul nostru să funcționeze corect. Din nou, un exemplu foarte comun aici este stocarea numele de utilizator și parole o bază de date, astfel încât atunci când un utilizator în site-ul nostru, baza de date poate fi interogate pentru a vedea dacă utilizatorul există în baza de date. Și dacă sunt, verificarea faptului că parola este corectă. Și dacă parola este corectă, apoi le tot ce poate da pagina acestea sunt solicitante. Deci tu ești probabil, din nou, familiar cu această idee de la Excel sau Google Foi de calcul. Avem baze de date, tabele, rânduri, și coloane. Și asta într-adevăr un fel a setului fundamental de defalcare ierarhic aici. Deci, aici este o foaie de calcul Excel. Și dacă ați deschis vreodată acest sau un alt program similar știți că acestea sunt aici rows-- 1, 2, 3, 4, 5, 6, 7. Acestea sunt coloane. Poate aici, deși s-ar putea nu utiliza această caracteristică foarte much-- Voi zoom in-- avem această idee de o foaie. Deci, poate aceste foi, dacă Am alternativ înainte și înapoi, sunt tabele diferite care există în baza mea de date. Și dacă vom continua exemplul toate Apropo, numele acestei baze de date este cartea 1. Poate că au Book 2 și 3 de carte. Deci, fiecare fișier Excel este un baze de date, fiecare foaie este un tabel, și în interiorul fiecărui tabel am această idee de rânduri și coloane. Deci, cum lucrez cu această bază de date? Cum pot obține informații de la ea? Ei bine, există un limbaj numit SQL-- care, de obicei, eu numesc doar Sequel-- și standuri pentru Structured Query Language. Și este un limbaj de programare, dar este un destul de limitat de programare limbă. Nu e destul ca alții care le-am lucrat cu. Dar scopul acestei limbaj de programare este pentru a interoga o bază de date, pentru a cere informații de baze de date, găsi informații într-o baze de date, și așa mai departe. Avem, de asemenea, în CS50-- și este un foarte platformă comună, se numește MySQL. Asta e ceea ce ne-am folosi în cursul. Este o sursă deschisă platformă care stabilește un așa-numit database-- relațională o bază de date, în mod eficient. Nu avem nevoie de a obține în prea multe detalii pe ceea ce o bază de date relațională este. Dar limbajul SQL este foarte adept la lucru cu MySQL și alte similare stiluri de baze de date relaționale. Și multe instalații de MySQL vin cu ceva numit phpMyAdmin, care este un grafică de utilizator interface-- un GUI-- care face un pic mai ușor de utilizat pentru a executa interogări de baze de date, deoarece bazele de date nu sunt utilizate doar de programatori avansate, nu? Uneori există aceste întreprinderi mici, și nu își pot permite să angaja o echipă de programatori, dar ei încă mai au nevoie pentru a stoca informații în baza de date. Ceva de genul phpMyAdmin face foarte usor pentru cineva cine nu programat înainte de a ridica și să se familiarizeze cu modul de a lucra cu o bază de date. Problema este, phpMyAdmin, în timp ce este un instrument fantastic pentru învățare despre bazele de date, este manual. Ai de gând să trebuie să vă autentificați în l și executa comenzi și de tip lucruri în manual. Și, după cum știm din nostru exemplu pe PHP programare web, au de a face manual lucruri pe site-ul nostru, dacă vrem o dinamică, receptiv activ site-ul, poate nu cea mai bună abordare. Ne-ar dori să găsească o modalitate de a poate automatiza acest cumva. Și SQL ne va permite să facă acest lucru. Așa că atunci când vom începe să lucreze cu SQL, avem nevoie mai întâi să aibă un baza de date pentru a lucra cu. Crearea unei baze de date este ai ceva, probabil, va face în phpMyAdmin, deoarece veți avea nevoie doar de a face acest lucru o singură dată, și sintaxa pentru a face acest lucru este mult mai simplă. Este mult mai ușor să o facă într-o interfață de utilizator grafică decât tastarea l ca o comandă. Comanda poate obține un pic greoaie. În mod similar, crearea unui tabel poate obține destul de un pic greoaie, de asemenea. Și așa lucruri cum ar fi crearea unei baze de date și crearea unui tabel, care ești probabil, doar de gând să faci once-- o dată pe masă, o dată pe database-- este OK pentru a face acest lucru în o interfață grafică. În procesul de crearea unui tabel, veți asemenea, trebuie să specificați toate coloane care vor fi în acest tabel. Ce fel de informații face doriți să stocați în tabel? Poate numele de utilizator și data nașterii, parola, număr de identificare de utilizator, și poate oraș și de stat, nu? Și pentru fiecare dată când doriți să adăugați un utilizator la baza de date, ne-o dorim pentru a obține toate cele șase de acele informații. Și facem asta prin adăugarea rânduri în tabel. Așa că am crea mai întâi o baza de date, atunci vom crea un tabel. Ca parte a creării un tabel, ni se cere pentru a specifica fiecare coloană care am dori în acest tabel. Și apoi ca vom începe să adăuga informații în baza de date și interoga baza de date mai generally-- nu doar adaugand, dar totul altceva am do-- vom fi de-a face cu rânduri din tabel, care este unul informații de utilizator de pe întregul set. Deci, în fiecare coloană SQL este capabil de care deține date de un anumit tip de date. Așa că am un fel de eliminat acest Ideea de tipuri de date în PHP, dar sunt aici în SQL. Și există o mulțime de tipuri de date. Iată doar 20 dintre ele, dar nu e chiar toate dintre ele. Deci, avem idei cum ar fi INTs-- Integers-- probabil știm că această coloană poate deține numere întregi. Și există variații thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Poate nu avem nevoie de patru întotdeauna mușcături. Poate avem nevoie de opt bytes, si asa ne-am pot folosi aceste variații pe numere întregi să fie un pic mai mult spațiu eficient. Putem face numere zecimale, am pot face numere în virgulă mobilă. Acestea sunt destul de similare. Există unele diferențe, și dacă v-ar place să se uite în sus Un fel de ghid SQL, voi Puteti vedea ce ușoară Diferențele sunt între ele. Poate că doriți să stocați informații despre data și ora. Poate ne ține evidența atunci când utilizatorul s-au alăturat site-ul nostru, și așa, poate ne-o dorim pentru a avea o coloană care este un timp dată sau un marcaj de timp care indică atunci când utilizatorul efectiv inscris. Putem face geometrii și linestrings. Aceasta este, de fapt destul de cool. Am putea trasa o zonă geografică, folosind GIS coordonatele pentru a parcelei pe o suprafață. Deci, poate stoca de fapt, ca un fel de informații într-o coloană SQL. Acest text este doar pete gigant de text, poate. ENUM sunt un fel de interesante. Ele există de fapt, în C. Noi nu vorbesc despre ei, deoarece ei nu sunt teribil utilizate în mod obișnuit, cel puțin CS50. Dar este un tip de date enumerat, care este capabil de a deține valori limitate. Un exemplu foarte bun aici ar fi pentru a crea o enumerare care șapte Valorile posibile sunt duminică, luni, Marți, Miercuri, Joi, Vineri, Sâmbătă, dreapta? Acest tip de date Ziua Săptămâna nu există, dar am putea crea o tip de date enumerate, cum ar care acea coloană poate deține doar vreodată unul dintre cele șapte valori posibile. Am enumerat toate de valori posibile. Apoi, avem CHAR și VARCHAR, Și am colora aceste verde pentru că suntem de fapt de gând să ia un al doilea pentru a vorbi despre diferenta între aceste două lucruri. Deci CHAR, spre deosebire de C în cazul în care CHAR fost un singur caracter, în SQL o CHAR se referă la un șir de lungime fixă. Și când vom crea acest coloană, am de fapt, poate specifica lungimea șirului. Deci, în acest exemplu, am putea spune CHAR (10). Asta înseamnă că fiecare element de care coloana va consta din 10 octeți de informație. Nu mai mult, nici mai puțin. Deci, dacă am încerca și a pus într-o 15 bit sau un element de 15 de caractere sau valoarea în această coloană, suntem primi doar primele 10. Dacă ne-am pus în cele două Valoarea caracter lung, vom avea două caractere, și apoi opt muscaturile nule. Noi nu vom fi mai eficient decât atât. Un VARCHAR este un fel de noțiunea noastră de un șir că suntem familiarizați cu de la C sau de la PHP. Este un șir de lungime variabilă. Și atunci când vă creați această coloană, doar specifica lungimile maxime posibile. Deci, poate 99, sau în mod obișnuit 255. Asta ar fi lungimea maximă. Și astfel, dacă ne-am stocarea 15 șir de caractere, ne-ar folosi de 15 bytes, poate 16 bytes pentru terminatorul nul. Dacă am fost o stocarea trei șir de caractere, ne-ar folosi trei sau patru octeți. Dar nu ne-ar folosi deplin 99. Deci, de ce ne-ar avea atât? Ei bine, dacă trebuie să ne dăm seama cum ceva timp este cu un VARCHAR, trebuie să ne fel de repeta peste place doar am făcut în C și dau seama unde se oprește. Întrucât, dacă știm că totul în această coloană este de 10 bytes, poate știm că informații, putem sări 10 bytes, 10 bytes, 10 bytes, 10 bytes, și găsi întotdeauna începutul șirului. Deci, am putea avea unele irosit spațiu cu un CHAR, dar poate exista un comert off de a avea o mai bună viteză în navigarea baza de date. Dar poate vrem flexibilitatea unui VARCHAR în loc de having-- Dacă CHAR nostru a fost 255, dar cele mai multe dintre utilizatorii noștri au fost introducerea doar trei sau patru octeți în valoare de informații sau trei sau patru caractere în valoare de informații. Dar unii utilizatori au folosit întreaga 255, poate VARCHAR ar fi mai potrivit acolo. E un fel de compromis, și în general în scopuri de CS50, nu aveți nevoie să vă faceți griji prea mult despre dacă utilizați un CHAR sau VARCHAR o. Dar, în lumea reală, aceste lucruri conteaza deoarece toate aceste coloane ocupă spațiu fizic real. Și spațiu fizic, în lumea reală, vine la o primă. Deci, un alt considerare atunci când sunteți construirea unui tabel este de a alege o coloană pentru a fi ceea ce se numește o cheie primară. Și o cheie primară este o coloană în cazul în care fiecare valoare nu este unic. Și asta înseamnă că puteți cu ușurință alege un singur rând doar uitandu-te la cheia primară de acel rând. Deci, de exemplu, puteți în general, cu utilizatorii, Nu vreau doi utilizatori care au același număr de ID-ul de utilizator. Și așa poate aveți o mulțime de informații, și, poate, doi utilizatori pot au aceeași name-- aveți John Smith și John Smith. Asta nu e neapărat o problemă, pentru că există mai multe persoane în lume pe nume John Smith. Dar avem doar un singur utilizator număr de identificare 10, un utilizator de identitate numărul 11, 12, 13. Noi nu avem doi utilizatori cu același număr, și Poate numerele de identificare utilizator ar fi un bun cheie primară. Noi nu avem nici o duplicare, și putem acum unic identifica fiecare singur rând doar uitandu-se la acea coloană. Alegerea cheile primare poate de fapt, face operațiuni de masă ulterioare mult mai ușor, deoarece puteți utiliza faptul că anumite rânduri va fie unic, sau o anumită coloană de baza de date sau tabel va fi unic pentru a alege out rânduri special. Puteți avea, de asemenea un primar comun cheie, care ar putea găsi ocazie ați de a utiliza, care este doar o Amestec de două coloane care este garantat să fie unic. Poate aveți unul coloană care este la fel de și BS, o coloană care este unul, doi, și trei, dar va numai vreodată au un singur A1, un singur A2, și așa mai departe și așa mai departe. Dar s-ar putea avea un B2, o C2, sau o A1, A2, A3, A4. Deci s-ar putea avea mai multe Ca, multiple BS, cele mai multe, mai multe câte două, dar puteți avea numai o vreodată singur A1, B2, C3, și așa mai departe. Deci, după cum am spus, SQL este un limbaj de programare, dar are un vocabular destul de limitat. Nu e la fel de expansiv ca C și PHP și alte limbi că vorbim în curs. Este o mai detaliată limbă decât ceea ce suntem vorbi despre în acest video, pentru că în acest film vom vorbi despre patru operații pe care le poate efectua pe o masă. Există mai mult de acest lucru. Putem face mai mult decât acest lucru, dar pentru scopurile noastre, ne, în general, va fi folosind doar patru insert operations--, selectați, actualiza, și șterge. Și puteți, probabil ghici intuitiv ce toate cele patru aceste lucruri. Dar vom merge într-un pic de detaliu pe fiecare dintre ele. Deci, în scopul acestei video, să presupunem Avem următoarele două tabele într-o bază de date unică. Avem o masă numit Utilizatorii care are patru columns-- număr de identificare, numele de utilizator, parola și numele complet. Și avem un al doilea tabel în aceeași bază de date numit Mamele care stochează doar informații despre un nume de utilizator și o mamă. Deci, pentru toate exemplele în acest film, vom folosi această bază de date și actualizări ulterioare ale acesteia. Deci, să spunem că vrem să adăugați informații la o masă. Asta e ceea ce face operația de inserție. În explicarea toate aceste comenzi, am de gând pentru a vă oferi un schelet generală de a utiliza. Deoarece practic, interogări vor arata destul de similare, noi suntem doar de gând să se schimbe ușor diferite piese de informații de a face lucruri diferite, cu masa. Deci, pentru INSERT, scheletul arata un fel de aceasta. Vrem să introduceți în un anumit tabel. Atunci avem o paranteză deschisă și o listă de coloane care ne-o dorim pentru a pune valori în. Aproape de paranteze, The în urma valori, iar apoi din nou, am lista din valorile vrem să pună în tabel. Deci un exemplu în acest sens ar fi cele ce urmează. Vreau să inserați în tabel utilizatorii următorul columns-- numele de utilizator, parola și FULLNAME. Deci, un nou rând în cazul în care am pune în aceste trei coloane și suntem de gând să pună în valorile Newman, USMAIL, și Newman. Deci, în acest caz, eu sunt punerea Newman minuscule în coloana numele de utilizator, parola USMAIL, și complet de capital nume N Newman în coloana FULLNAME. Deci, aici e ceea ce baza de date arăta ca înainte. Aici e ceea ce masa de utilizatori cu privire la top arata ca înainte de a făcut asta. Dupa ce am executa această interogare, avem asta. Am adăugat un rând nou în tabel. Dar observați un lucru că nu a specificat, dar cumva am o valoare pentru, care este acest 12 de aici. N-am spus am vrut să pune numărul ID acolo. Am vrut să pun numele de utilizator, parola, FULLNAME. Și am făcut asta, e în regulă. Dar, de asemenea am primit această 12. De ce am primit acest 12? Ei bine, se pare că atunci când sunt definirea o coloană care va fi dvs. cheie primară, care este de obicei, cum am spus, un număr de identificare. Nu e întotdeauna necesar O să fie un număr de identificare, dar este, de obicei, o idee bună să fie un fel de valoare întreagă. Aveți o opțiune în phpMyAdmin atunci când sunteți crearea bazei de date sau tabelul pentru a seta ca coloană ca incrementare auto. Care este o idee foarte bună, atunci când lucrați cu o cheie primară, pentru că vrei fiecare valoare în acea coloană pentru a fi unic. Și dacă vă uitați să specificați l pentru mai mult de o persoană, aveți acum o situație în care coloana nu mai este unic. Aveți două spații, astfel încât să nu puteți mai unic identifica un column-- sau nu mai poate unic identifica un rând bazat pe acea coloană. E pierdut toate sale Valoarea ca o cheie primară. Și așa se pare că ceea ce am făcut aici este configurat ID-ul utilizatorului coloană de creștere auto, astfel încât fiecare timp am adăuga informații la masa, se va da în mod automat mine o valoare pentru cheia primară. Deci, eu nu pot uita să o facă pentru că baza de date se va face pentru mine. Deci, asta e un fel de frumos. Și așa de aceea ne 12 acolo, pentru că am set care coloana de până la auto increment. Dacă am adăugat altcineva că ar fi 13, dacă am adăugat altcineva că ar fi de 14, și așa mai departe. Deci, hai să facem mai mult de o inserție. Vom introduce în tabelul de mame, în special, numele de utilizator și mama coloane, valorile Kramer și Babs Kramer. Și astfel am avut acest lucru înainte. Dupa ce am executa că Interogare SQL, avem asta. Am adăugat Kramer și Babs Kramer la masa mame. Așa că e inserarea. SELECT este ceea ce vom folosi pentru a extrage informații de pe masă. Deci, acesta este modul în care obține Informatiile din baza de date. Și așa selecta comenzile vor fi foarte frecvent folosit in programare. Generalul framework-- schelet generală arata ca acest lucru. Selectați un set de coloane din un tabel, și apoi opțional puteți specifica o condition-- sau ceea ce noi numim de obicei un predicat, este, de obicei termenul care le folosim în SQL. Dar este practic ceea ce special rânduri doriți să obțineți. Dacă doriți să, în loc de a obține totul, ea restrânge, acest lucru este în cazul în care v-ar face asta. Și apoi, opțional, puteți, de asemenea comandă de un anumit coloană. Deci, poate doriți să aveți lucruri sortate alfabetic bazat pe o coloană sau alfabetic bazat pe altul. Din nou, unde și ORDER BY sunt opționale. Dar vor fi, probabil, useful-- special Unde va fi util pentru restrânge, astfel încât să nu obține întreaga bază de date și înapoi trebuie să-l proceseze, doar te piesele de ea pe care le pasă. Deci, de exemplu, s-ar putea dori pentru a selecta Număr de identificare și FULLNAME de utilizatori. Deci, ceea ce ar putea arata ca acest? Deci, aici e tabel utilizatori mea. Vreau pentru a selecta IDNUM și FULLNAME la utilizatori. Ce am de gând pentru a obține? Am de gând pentru a obține acest lucru. Nu l-am restrânge, așa că eu sunt obtinerea numărul ID pentru fiecare rând și Primesc pe deplin nume de fiecare rând. BINE. Ce se întâmplă dacă doriți să selectați parola de la utilizatorii WHERE-- asa ca acum Sunt adăugarea unei condiții, un predicate-- în cazul în care IDNUM este mai mică de 12. Deci, aici e din nou baza mea de date, utilizatorii masa mea de sus. Ce am de gând pentru a obține dacă vreau să selectați aceste informații, parola, în cazul în care ID-ul de utilizator sau IDNUM este mai mică de 12? Am de gând pentru a obține acest informații înapoi, nu? Se întâmplă că IDNUM este de 10, mai puțin de 12, număr de identificare 11 mai puțin de 12. Primesc parola pentru acele rânduri. Asta e ceea ce am cerut. Ce zici de asta? Ce se întâmplă dacă doriți să selectați stea din mame tabel în cazul în care numele de utilizator este egal cu Jerry? OK, selectați stele este speciale un fel de carte de sălbatic așa-numitele pe care le folosim pentru a obține totul. Deci ce spun selectați username mama virgulă, care sa întâmplat să fie singurul două coloane de tabel, aceasta Pot selecta doar stele și de a lua totul în cazul în care numele de utilizator este egal cu Jerry. Și așa mai departe asta e ceea ce mi-ar lua dacă am făcut asta de interogare special. Acum, bazele de date sunt mare, deoarece acestea permit ne a organiza informațiile poate un pic mai eficient decât noi s-ar putea altfel. Noi nu neapărat pentru a stoca fiecare bucată de informații relevante despre un utilizator în același tabel. Am avut două tabele de acolo. Avem nevoie pentru a stoca numele mamei tuturor lui, si poate nu avem de securitate socială numărul, avem data lor de naștere. Care nu are nevoie de întotdeauna să fie în același tabel. Atâta timp cât putem defini relații între tables-- și că este în cazul în care acea relațională termen de baze de date de tip vine în play-- atâta timp cât putem defini relațiile dintre tabele, putem fel de compartimentează sau lucruri abstracte-un fel, unde avem doar Informații cu adevarat important ne pasă în tabelul utilizatorului. Și apoi ne-am informații auxiliare sau informații suplimentare în alte tabele că ne putem conecta înapoi la principalele masă de utilizatori într-un anumit fel. Deci, aici avem aceste două tabele, dar există o relație între ele, dreapta? Se pare ca numele de utilizator ar putea fi ceva care există în comun între aceste două tabele diferite. Și ce dacă avem acum o situație în care ne-am doriți să obțineți numele complet al unui utilizator de la masa utilizatorului, și mama lor numele de tabelul mamei? Noi nu avem o modalitate de a obține că în forma sa actuală, nu? Nu e nici o singur tabel care conține atât numele complet și numele mamei lui. Noi nu avem această opțiune de la ceea ce am văzut până acum. Și așa ne-am să introducă ideea unei TE. Și se alătură sunt, probabil, cel mai complex-- este într-adevăr cel mai operațiune complexă vom vorbi despre în video. Sunt un pic mai complicat, dar odată ce te obișnuiești cu ea, nu sunt de fapt prea rău. E doar un caz special de un SELECT. Vom selecta un set de coloanele dintr-un tabel de îmbinare într-o a doua masă pe unele predicat. În acest caz, gândiți-vă place asta: Tabelul unul este un cerc aici, Tabelul doi este un alt cerc aici. Și că o parte predicat în mijloc, e un fel de, dacă credeți despre o diagramă Venn, ceea ce nu au în comun? Vrem să lega aceste două tabele bazate pe ceea ce au în comun și de a crea acest tabel ipotetic că este fuziunea dintre cele două împreună. Deci, vom vedea acest lucru într-un exemplu și poate că va ajuta clar-l un pic. Deci, poate doriți să o selectați USER.FULLNAME și moms.mother de la utilizatorii alătura masă mame în fiecare situație în cazul în care coloana nume de utilizator este aceeași între ele. Și aceasta este o nouă sintaxa aici, acest utilizator. si mame .. Dacă fac mai multe tabele împreună, pot specifica un tabel. Eu pot distinge în special pe care pe la foarte jos acolo. Eu pot distinge numele de utilizator coloană din tabel utilizatori din coloana numele de utilizator al tabel mame, care sunt otherwise-- dacă ne-am spus numele de utilizator este egal cu numele de utilizator, care nu prea înseamnă nimic. Vrem să o facem în cazul în care acestea se potrivesc. Deci, eu pot specifica masă și nume de coloană în cazul unei situații în cazul în care ar fi clar ce vorbesc despre. Deci, asta e tot ce fac este că sunt spunând această coloană din acest tabel, și fiind foarte explicit. Deci, din nou, eu sunt selectarea numele complet și numele mamei din tabelul utilizatorilor legate între ele cu tabelul de mame în orice situație în cazul în care împărtășesc această column-- ei împărtășesc această noțiune nume de utilizator. Deci, aici sunt tabelele le-am avut până acum. Aceasta este starea de nostru bază de date așa cum există acum. Informațiile ne extragere este aceasta pentru a începe cu. Acesta este noul tabel vom pentru a crea combinarea acestor împreună. Și observați că nu te subliniind Rândul lui Newman în masa utilizatorului, si nu suntem subliniind Rândul Kramer în tabelul mame pentru că nici unul există în atât sets-- în ambele tabele. Singurele informații care este în comun între ele este Jerry este în ambele tabele și gcostanza este, în ambele tabele. Și așa că atunci când facem SQL se alăture, ceea ce get-- și facem de fapt obține acest. E un fel de variabile temporare. E ca un ipotetic fuziune dintre cele două tabele. Ne-am de fapt, ceva ca aceasta, în cazul în care am fuzionat împreună tabelele de pe informațiile pe care le au în comun. Deci observați că users.username și coloana moms.username, e exact la fel. Asta a fost informațiile pe care a fost consistentă de la utilizatori de masă și masa mame. Și așa le-am fuzionat împreună. Am aruncat Kramer pentru că el nu există în tabela de utilizatori, și ne-am aruncat Newman, deoarece el nu există în tabela mame. Astfel încât acesta este fuziunea ipotetic folosind funcționarea TE de SELECT. Și apoi am fost în căutarea pentru numele complet de utilizator și mama utilizatorului, și așa mai departe acest lucru este informația pe care ne-ar obține de la interogarea de ansamblu că am făcut cu SELECT. Așa că am aderat la mesele împreună și am extras cele două coloane, și așa mai departe asta e ceea ce ne-ar ajunge. Dar SQL se alătură un fel de complicat. Tu, probabil, nu le va face prea mult, dar doar avea o idee a scheletului pe care le-ar putea folosi pentru a fuziona două tabele împreună dacă necesare pentru a. Ultimele două sunt o bit simplu promit. Deci actualizarea, putem folosi UPDATE pentru a schimba informații într-un tabel. Formatul general este UPDATE unele masă, seta unele coloană la o valoare Atunci când unele predicat este îndeplinită. Deci, de exemplu, ne-am putea dori să se actualizeze tabelul utilizatori și setați parola pentru bla bla, în cazul în care numărul de ID-ul este de 10. Deci, în acest caz, noi suntem actualizarea tabelului utilizatori. Numărul ID-ul este de 10 de că în primul rând rând acolo, și vrem să actualizeze parola pentru a bla bla. Și pentru ca e ceea ce se va întâmpla. E destul de simplu, nu? E doar un foarte simplu modificare a tabelului. DELETE este operațiunea am folosit pentru a elimina informațiile dintr-un tabel. DELETE FROM masa la care unele predicat este îndeplinită. Vrem să ștergeți din tabel utilizatori, de exemplu, în cazul în care numele de utilizator este Newman. Probabil puteți ghici ce se va se întâmplă aici după ce am executa că SQL interogare, Newman este plecat de la masă. Deci, toate aceste operațiuni, așa cum am spus, sunt foarte ușor de făcut în phpMyAdmin. Este o interfata prietenoasa foarte user. Dar are nevoie de un efort manual. Noi nu vrem să angajeze efort manual. Ne dorim ca programele noastre de face acest lucru pentru noi, nu? Deci, am putea vrem să facem acest programatic. Vrem să includă SQL și au altceva de a face acest lucru pentru noi. Dar ceea ce am văzut, care permite ne să facem programatic ceva? Am văzut PHP, nu? Introduce unele dinamism în programele noastre. Și astfel, din fericire, SQL și PHP joacă foarte bine împreună. Există o funcție în PHP numit interogare, care poate fi utilizat. Și puteți trece ca parametru sau argumentul pentru a interoga o interogare SQL care doriți să execute. Și PHP va face în numele dumneavoastră. Deci, după ce ați conectat la baza de date cu PHP, există două primare să faci asta. E ceva numit MySQLi și ceva numit DOP. Nu vom merge într-un imens sumă detaliu acolo. În CS50 vom folosi DOP. După ce ați conectat la baza de date, vă poate face apoi interogări baza de date prin trecerea interogări ca argumente la funcțiile PHP. Și când faci asta, tu magazin set de rezultate într-un tablou asociativ. Și știm cum să lucreze cu tablouri asociative în PHP. Așa că s-ar putea spune ceva ca asta: $ results-- acest lucru este în PHP-- egal interogare. Și apoi în interiorul Funcția de interogare acest argument că eu sunt trecerea la interogare care arata ca SQL. Și, de fapt, care este SQL. Asta e șir de interogare care mi-ar Vrei să execute pe baza mea de date. Și astfel în roșu, aceasta este PHP. Aceasta este SQL că eu sunt integrarea în PHP făcând este argumentul funcției de interogare. Vreau pentru a selecta de la FULLNAME utilizatorii în cazul în care numărul de identificare este egal cu 10. Și atunci poate, după ce am făcut asta, Am putea spune ceva de genul asta. Vreau să imprima Multumesc pentru mesaj logare. Și eu o vreau interpolate-- vreau a interpola $ rezultate FULLNAME. Și așa așa lucrez cu care tablou asociativ care m-am întors. $ FULLNAME rezultatele ar practic ajung imprimarea, Vă mulțumim pentru logare, Jerry Seinfeld. Asta a fost numele complet în cazul în care este egal cu 10 IDNUM. Și atunci tot fac este Sunt now-- am stocat interogare mea, rezultatele de interogare meu și are ca rezultat o matrice asociativ, și FULLNAME este numele coloana am fost obtinerea de. Deci, asta e cheia mea în rezultatele tablou asociativ care vreau. Deci, Vă mulțumim pentru logare, $ rezultate, FULLNAME va imprima, se va lipi chiar în între cei cret bretele, Jerry Seinfeld. Și voi dori pentru a imprima mesajul Vă mulțumim pentru logare Jerry Seinfeld. Acum, noi, probabil, nu doresc să greu Codul lucruri de genul asta in, nu? S-ar putea dori să facă ceva de genul de imprimare f, unde putem înlocui și poate colecta informații diferite, sau poate au procesul de interogare informații diferite. Și astfel de interogare, funcția de interogare a această noțiune de fel de substituții foarte asemănătoare cu a imprima f sută s și la suta C, este semne de întrebare. Și putem folosi întrebare mărci foarte analog pentru a imprima f la variabile de substituție. Deci, poate că dvs. de utilizator autentificat devreme, și ați salvat numărul lor ID utilizator în $ _SESSION de PHP super- la nivel mondial în ID-ul cheie. Deci, poate că după ce au autentificat, setați $ _SESSION ID egal 10, extrapolând exemplul tocmai am văzut în urmă cu o secundă. Și așa că atunci când am executa efectiv Această interogare rezultatele acum, ar conectați 10, sau orice valoarea ID-ul $ _SESSION este. Și pentru ca ne permite să fi un pic mai dinamică. Nu ne greu de codificare lucrurile în mai. Suntem salvarea informațiilor undeva și apoi putem folosi aceste informații din nou pentru a un fel de a generaliza ceea ce vrem să facem, și doar plug-in și schimbare comportamentul paginii noastre bazat pe ceea ce numărul de identificare al utilizatorului este de fapt după ce au autentificat. Este de asemenea posibil, totuși, că rezultatele stabilite poate consta din mai multe rânduri. În acest caz, aveți o serie de arrays-- o serie de tablouri asociative. Și trebuie doar să itera prin ea. Și știm cum să repeta printr-o serie în PHP, nu? Deci, aici este, probabil, cel mai lucru complex ne-am văzut până acum. Este de fapt integrează trei limbi împreună. Aici, în roșu, aceasta este un HTML. Am aparent sunt starting-- acest lucru este un fragment de unele HTML care le-am. Încep un nou alineat, care spune mamele de Seinfeld TV. Și apoi, imediat după aceea Am început o masă. Și apoi după aceea, am au unele PHP, nu? Am toate acest cod PHP acolo. Mă duc aparent face o interogare. Și pentru a face interogare, am de gând să fie folosind SELECT mamele din mame. Deci, aceasta este getting-- acest lucru este SQL. Deci, albastru este SQL. Roșu am văzut-o a doua în urmă a fost HTML. Și verde aici este PHP. Deci, eu sunt a face o interogare la baza mea de date, eu sunt selectarea cele de mai mamele din tabelul de mame. Nu doar îngustarea jos pentru a special rând, eu cer pentru toate acestea. Apoi am verifica dacă rezultatul este nu este egal la egal la egal false. Acesta este doar felul meu de a verifica fel de cazul în care rezultatele nu este egal cu NULL, care ne-ar vedea, de exemplu, c. Practic aceasta nu este doar de verificare pentru a face sigur că de fapt a primit date înapoi. Pentru că nu vreau să încep tipărirea din date, dacă nu am primi nici date. Apoi pentru fiecare rezultat, ca atare, foreach sintaxa din PHP, toate fac este imprimarea mamele $ rezultat. Și așa am de gând pentru a obține un set tuturor mamele each-- este o serie de asociativ arrays-- și eu sunt imprimarea fiecare ca propria linie a unui tabel. Și asta e într-adevăr destul de mult tot acolo este să-l. Știu că e un pic bit se întâmplă aici în acest ultim exemplu, cu rețele de arrays-- tablouri de tablouri asociative. Dar chiar nu doar fierbe în SQL pentru a face o interogare, de obicei, selectarea după ce am deja pune informații în tabel, și apoi doar trăgând. Și acest lucru este ne-ar trage în acest caz particular. Ne-ar extrage toate individului mamele din tabelul mame. Avem un set întreg de ei, iar noi doresc să itera prin și imprima fiecare. Deci, din nou, acest lucru este, probabil, exemplul cel mai complicat am văzut că suntem de amestecare cu trei limbi diferite împreună, nu? Din nou, avem aici HTML în roșu, amestecat cu unele SQL aici, în albastru, amestecat cu unele PHP în verde. Dar toate acestea juca frumos împreună, e doar o chestiune de dezvoltare obiceiuri bune, astfel încât să puteți obține le să lucreze împreună așa cum doriți. Și singurul mod de a face cu adevărat că este de a practica, practica, practica. Sunt Doug Lloyd, aceasta este CS50.