[Mūzikas atskaņošanai] Doug LLOYD: Mūsu video par interneta attīstības jautājumiem, mēs esam minēts jēdziens datubāze dažas reizes, vai ne? Tātad datubāze jūs esat iespējams, iepazinies ar no teikt, izmantojot Microsoft Excel vai Google izklājlapas. Tas ir patiešām vienkārši organizēta tabulu komplekts, rindas un kolonnas. Un datubāze ir vieta, kur Mūsu mājas lapa veikali informāciju, kas ir svarīga mūsu mājas lapā, lai darbotos pareizi. Atkal, patiešām kopīga piemērs šeit ir uzglabājot lietotājvārdus un paroles datu bāzē, lai tad, kad lietotājs piesakās uz mūsu mājas lapā, datubāzes var iegūt, lai redzētu ja ka lietotājs eksistē datu bāzē. Un, ja tie ir, pārbaudot, viņu parole ir pareiza. Un, ja viņu parole ir pareiza, tad mēs varam dot viņiem neatkarīgi no lapu viņi pieprasa. Tātad jūs, iespējams, atkal, pazīstams ar šo ideju no Excel vai Google Izklājlapas. Mums ir datu bāzes, galdi, rindas un kolonnas. Un tas tiešām ir sava veida no fundamentālās komplekta hierarhisko iedalījumu šeit. Tātad, šeit ir Excel izklājlapu. Un, ja jūs esat kādreiz atvēris šo vai cita līdzīga programma Jūs zināt, ka tie šeit ir rows-- 1, 2, 3, 4, 5, 6, 7. Tie ir kolonnas. Varbūt šeit lejā, lai gan jūs varat Neizmantojiet šo funkciju briesmīgi much-- Es zoom in-- mums Šī ideja par lapas. Tātad, varbūt šie loksnes, ja Es pārmaiņus uz priekšu un atpakaļ, Ir dažādas tabulas, kas pastāv manā datu bāzē. Un, ja mēs turpināsim piemēru visu veids, nosaukums šīs datu bāzes ir Book 1. Varbūt man ir grāmata 2 un Book 3. Tātad katrs Excel fails ir datubāzes, katra lapa ir tabula, un iekšā Katras tabulas man Šī ideja par rindām un kolonnām. Tātad, kā es strādāju ar šo datu bāzi? Kā es varu saņemt informāciju no tā? Nu tur ir valodā sauc SQL-- ko es parasti tikai zvanīt Sequel-- un tas apzīmē Strukturēts Query Language. Un tas ir programmēšanas valoda, bet tas ir diezgan ierobežots programmēšana valoda. Tas nav gluži tāpat kā citi ka mēs esam strādājuši ar. Bet mērķis šo programmēšanas valoda ir vaicājumu datu bāzi, lai lūgt informāciju no datu bāzes, atrast informāciju kādā datu bāzes, un tā tālāk. Mēs arī, jo CS50-- un tas ir ļoti kopīga platforma, to sauc MySQL. Tas, ko mēs izmantojam, veicot. Tā ir atvērtā koda platforma, kas nosaka tā saukto relāciju database-- datubāze, efektīvi. Mums nav nepieciešams, lai saņemtu pārāk sīki par to, kas relāciju datu bāze. Bet SQL valoda ir ļoti lietpratīgi pie darba ar MySQL un citu līdzīgu stili relāciju datu bāzēm. Un daudzi instalācijas MySQL nāk ar kaut ko sauc phpMyAdmin, kas ir grafiskā lietotāja interface-- ar GUI-- ka padara to mazliet vairāk lietotājam draudzīga izpildīt datu bāzes vaicājumu, jo datubāzes ir ne tikai izmanto ar profesionāliem programmētājiem, vai ne? Dažreiz tur ir šie mazie uzņēmumi, un viņi nevar atļauties īrēt komanda programmētāju, bet tie joprojām ir nepieciešams, lai saglabātu informāciju datu bāzē. Kaut ko līdzīgu phpMyAdmin padara to ļoti viegli, lai kāds kurš nekad ieprogrammēts pirms to uzņemt un iepazīties ar to, kā strādāt ar datu bāzi. Problēma ir tā, phpMyAdmin, bet tas ir fantastisks instruments, lai mācītos par datu bāzēm, tas ir rokasgrāmata. Jūs esat nāksies ieiet tas un izpildīt komandas un veids lietas manuāli. Un kā mēs zinām no mūsu piemērs par PHP web programmēšana, ņemot manuāli darīt lietas par mūsu mājas lapā, ja mēs gribam dinamiska, aktīva atsaucīgs mājas lapā, varbūt ne labākā pieeja. Mēs vēlētos, lai atrastu ceļu uz varbūt automatizēt tas kaut kā. Un SQL ļaus mums to darīt. Tad, kad mēs ejam sākt strādāt ar SQL, mums vispirms ir nepieciešama datu bāzi, lai strādātu ar. Izveidot datubāzi, ir kaut kas jums, iespējams, darīs phpMyAdmin, jo Jums būs nepieciešams tikai to darīt vienu reizi, un sintakse to darīt ir daudz vienkāršāka. Tas ir daudz vieglāk, lai to izdarītu grafiskā lietotāja saskarnes nekā rakstīt to, kā komanda. Komanda var iegūt mazliet apgrūtinoša. Līdzīgi, veidojot tabulu var iegūt diezgan mazliet apgrūtinoša, kā arī. Un tā lietas, piemēram, izveidojot datubāzi un veidojot tabulu, kas jūs esat iespējams, tikai gatavojas darīt once-- vienu reizi galda, vienu reizi database-- tas ir OK, lai darīt, ka grafisko interfeisu. Šajā procesā veidojot tabulu, jūs arī jānorāda visi kolonnas, kas būs šajā tabulā. Kāda veida informāciju darīt vēlaties saglabāt tabulā? Varbūt lietotāja vārds un dzimšanas datums, parole, lietotāja ID numurs, un varbūt pilsēta un valsts, vai ne? Un katru reizi, kad mēs vēlamies pievienot lietotāju datu bāzē, mēs vēlamies, lai iegūtu visas sešas Šo informācijas daļas. Un mēs to darām, ka, pievienojot rindas uz galda. Tātad, mēs vispirms izveidot datu bāzi, tad mēs izveidot tabulu. Kā daļu no radot galds, mēs esam aicināti precizēt katru kolonnu, kas mēs vēlētos šajā tabulā. Un tad kā mēs sākam pievienot informācija uz datu bāzē un vaicājumu datu bāze vairāk generally-- ne tikai pievienojot, bet viss pārējais mums do-- mēs būsim darīšana ar tabulas rindas, kas ir viens lietotāja informācija no visā kopā. Tātad katrs SQL kolonna ir spējīgs turot datus konkrēta datu tipu. Tātad, mēs veida likvidēta šis Ideja par datu tipu PHP, bet viņi atkal šeit SQL. Un tur ir daudz datu tipu. Lūk, tikai 20 no viņiem, bet tas nav pat visas no tām. Tāpēc mums ir idejas, piemēram INTs-- Integers-- mēs droši vien zināt ka šajā ailē var turēt veseli skaitļi. Un tur ir variācijas thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Varbūt mēs ne vienmēr vajag četrus kodieniem. Varbūt mums vajag astoņas baiti, un tā mēs var izmantot šos variācijas par veseliem skaitļiem nedaudz vairāk vietas efektīvāku. Mēs varam darīt decimāldaļu skaitu, mēs var darīt peldošā komata skaitļus. Tie ir diezgan līdzīgas. Ir dažas atšķirības, un ja jūs būtu patīk skatīties uz augšu SQL veida guide, jūs var redzēt, kas nedaudz atšķirības starp tām. Varbūt mēs gribam saglabāt Informācija par datumu un laiku. Varbūt mēs sekotu ja lietotājs pievienojies mūsu mājas lapā, un tāpēc varbūt mēs gribam lai būtu kolonnu, kas ir datumu laiks vai timestamp ka norāda, kad lietotājs faktiski pierakstījies. Mēs varam darīt ģeometriju un linestrings. Tas ir faktiski diezgan vēss. Mēs varētu izplānot ģeogrāfiskajā teritorijā, izmantojot GIS koordinātas gabals out platību. Tātad faktiski var uzglabāt šāda veida Informācijas SQL kolonnas. Teksts ir tikai milzu burbuļus teksta, varbūt. ENUMs ir diezgan interesants. Viņi faktiski pastāv C. Mums nav runāt par viņiem, jo ​​viņi nav briesmīgi parasti izmanto, vismaz CS50. Bet tas ir Uzskaitīto datu tips, kas spēj Holding Limited vērtības. Šeit būtu Tiešām labs piemērs ir izveidot ENUM kur septiņi Iespējamās vērtības ir Svētdiena, Pirmdiena, Otrdienās, trešdienās, ceturtdienās, piektdienās, Sestdiena, vai ne? Šis datu tips diena Nedēļa nepastāv, bet mēs varētu radīt uzskaitījis datu tips, piemēram ka kolonna var tikai kādreiz turēt viens no tiem septiņiem iespējamo vērtību. Mēs esam uzskaitīti visi no iespējamām vērtībām. Tad mums ir CHAR un VARCHAR, un es esmu krāsu tie zaļš jo mēs esam patiesībā gatavojas pieņemt otru runāt par starpību starp šīm divām lietām. Tātad CHAR, atšķirībā no C, kur CHAR bija viena raksturs, SQL char attiecas fiksēta garuma virkne. Un, kad mēs veidojam šo kolonna, mēs faktiski var norādīt garumu virknes. Tātad, šajā piemērā, mēs varētu teikt CHAR (10). Tas nozīmē, ka katrs Šīs kolonnas elements sastāvēs no 10 baitu informācijas. Ne vairāk, ne mazāk. Tātad, ja mēs mēģinātu īstenot 15 bitu vai 15 rakstzīmju elements vai vērtība šajā slejā, mēs esam tikai iegūt pirmo 10. Ja mēs ieliekam diviem raksturs garš vērtība, mēs ejam, lai būtu divas rakstzīmes, un pēc tam astoņas null kodieniem. Mēs nekad būt efektīvāka nekā. Varchar ir veids kā Mūsu jēdziens virknes ka mēs esam pazīstami ar no C vai no PHP. Tā ir mainīga garuma virkne. Un, kad jūs izveidojat šajā ailē, jūs vienkārši noteikti maksimālie iespējamie garumi. Tātad, varbūt 99, vai parasti 255. Tas būtu maksimālais garums. Un tāpēc, ja mēs glabāšanai 15 rakstzīmju virkne, mēs varētu izmantot 15 baiti, varbūt 16 baiti par null terminatoru. Ja mēs glabājusi trīs rakstzīmju virkne, mēs varētu izmantot trīs vai četri baiti. Bet mēs nevarētu izmantot pilnu 99. Tātad, kāpēc mēs esam abi? Nu, ja mums ir nepieciešams, lai noskaidrotu, kā ilgi kaut kas ir ar VARCHAR, mums ir sava veida atkārtot visā tā tāpat kā mēs to darījām C un izdomāt, kur tas apstājas. Tā kā, ja mēs zinām, ka viss Šajā ailē ir 10 baiti, varbūt Mēs zinām, ka informāciju, mēs varam pārlēkt 10 baiti, 10 baiti, 10 baiti, 10 baiti, un vienmēr atrast sākot no virknes. Tātad mums var būt daži izšķērdēta telpu ar CHAR, bet varbūt tur ir tirdzniecība pie kam labāku ātrumu kuģojoša datu bāzi. Bet varbūt mēs gribam elastīgums varchar nevis having-- Ja mūsu CHAR bija 255, bet lielākā daļa no mūsu lietotājiem Tika tikai ievadot trīs vai četri baiti vērts informācijas vai trīs vai četri rakstzīmes vērts informācijas. Bet daži lietotāji izmantoja viss 255, varbūt VARCHAR būtu piemērotāka tur. Tas ir sava veida tirdzniecības off, un parasti nolūkos CS50, jums nav jāuztraucas pārāk daudz par vai jūs izmantojat CHAR vai varchar. Bet reālajā pasaulē, šīs lietas do nozīmes, jo visu šo kolonnu aizņem faktisko fizisko telpu. Un fiziskā telpa, jo reālās pasaules, nāk ar uzcenojumu. Tātad vienu citu atlīdzību kad jūs veidot tabulu ir izvēlēties vienu kolonnu, lai būtu ko sauc par primāro atslēgu. Un primārā atslēga ir kolonna kur katrs vērtība ir unikāls. Un tas nozīmē, ka jūs varat viegli izlasīt vienu rindu tikai skatoties pie primārās atslēgas šīs rindas. Tā, piemēram, jūs parasti, ar lietotājiem, negribu diviem lietotājiem, kuri ir tāds pats lietotājs ID numuru. Un tāpēc varbūt jums ir daudz informācijas, un varbūt divi lietotāji var ir tāda pati name-- Jums ir John Smith un John Smith. Tas ir ne vienmēr ir problēma, jo tur ir vairāki cilvēki pasaulē nosaukts John Smith. Bet mums ir tikai viens lietotāja ID numuru 10, viens lietotāja ID numuru 11, 12, 13. Mums nav diviem lietotājiem ar tādu pašu numuru, un tāpēc varbūt lietotāja ID numuri būtu labs primārā atslēga. Mums nav nekādas dublēšanās, un mēs varam tagad unikāli identificēt katru rindu vienkārši aplūkojot šajā slejā. Izvēloties primārās atslēgas faktiski var veikt turpmākus galda operācijas daudz vieglāk, jo jūs varat sviras fakts, ka dažas rindas būs būt unikāls, vai kāds kolonna Jūsu datu bāzē vai galda būs unikāla izvēlēties izrakstās īpašas rindas. Jūs varat arī kopīgu galvenais Galvenais, kas jums var atrast izdevību izmantot, kas ir tikai kombinācija no divām kolonnām, kas ir garantēta unikāls. Tātad, varbūt jums ir viens kolonna, kas ir kā un Bs, viens kolonna, kas ir viens, divi, un trīs, bet jūs tikai kādreiz ir viena A1, vienu A2, un tā tālāk, un tā tālāk. Bet jūs varētu būt B2 A C2, vai A1, A2, A3, A4. Lai jūs varētu būt vairāki As, multiplā BS, vairāki no tiem, vairākas veica šo divu reģistru, bet jūs varat tikai kādreiz ir viens A1, B2, C3, un tā tālāk. Tā kā es teicu, SQL ir programmēšanas valoda, bet tas ir diezgan ierobežots vārdu krājumu. Tas nav tik plašs kā C un PHP un citas valodas ka mēs runājam gaitā. Tas ir vairāk runīgs valoda, nekā tas, ko mēs esam gatavojas runāt par šajā video, jo šajā video mēs runāsim par četras operācijas, ka mēs var veikt uz galda. Ir vairāk nekā šis. Mēs varam darīt vairāk, nekā tas, bet par mūsu mērķiem, mēs parasti būs izmantojot tikai četri operations-- ieliktnis, izvēlētos, atjaunināt un dzēst. Un jūs varat droši intuitīvi uzminēt ko visi četri šīs lietas darīt. Bet mēs iedziļināties mazliet Detalizācijas par katru no tām. Tātad nolūkā šis video, pieņemsim mēs esam šādi divi tabulas vienotā datubāzē. Mums ir tabula sauc Lietotājiem, kas ir četri columns-- ID numurs, lietotājvārdu parole, un tā atšifrējums. Un mums ir otrais tabula tajā pašā datu bāzē sauc Moms ka tikai saglabā informāciju par lietotājvārdu un māti. Tātad visiem piemēriem Šajā video, mēs izmantojot šo datu bāzi un turpmākos atjauninājumus uz to. Tātad pieņemsim, ka mēs vēlamies, lai pievienot informāciju galda. Tas ir tas, ko ievietot operācija dara. Skaidrojot visi šīs komandas, es eju lai dotu jums vispārīgu skeletu izmantot. Jo būtībā, vaicājumiem gatavojas izskatās diezgan līdzīgi, mēs esam tikai gatavojas mainās nedaudz atšķirīgas informācijas daļas darīt dažādas lietas ar tabulu. Tātad ievietot, skelets izskatās veida, piemēram, šis. Mēs vēlamies, lai ievietot īpaši galds. Tad mums ir atvērta iekavu un sarakstu kolonnu ka mēs vēlamies likt vērtības uz. Aizvērt iekavas, tad pēc vērtības, un pēc tam atkal, mēs saraksts no vērtības mēs vēlamies likt tabulā. Tātad piemērs tam būtu šādi. Es gribu ievietot tabulā Lietotāji šādu columns-- lietotājvārdu, paroli, un FULLNAME. Tātad jaunā rindā, kur es varēšu šajās trijās kolonnās, un mēs esam gatavojas īstenot vērtībām Newman, USMAIL, un Newman. Tātad šajā gadījumā, es esmu liekot mazo burtu Newman uz lietotājvārdu kolonnā, parole USMAIL, un pilns nosaukums kapitāls N Newman uz FULLNAME kolonnā. Tātad, šeit ir tas, ko datu bāze izskatījās agrāk. Lūk, ko lietotāji tabula par top izskatījās pirms mēs to darījām. Pēc mums izpildīt šo vaicājumu, mēs šo. Mēs esam pievienojuši jaunu rindu pie galda. Bet paziņojums šo vienu lietu ka man nav norādīt, bet kaut kā es esam ieguvuši vērtību par, kas ir šī 12 šeit. Es neteicu es gribēju likts ID numuru tur. Es gribēju likt lietotājvārdu, parole, FULLNAME. Un man bija, ka tas ir jauki. Bet es arī dabūju šo 12. Kāpēc man tas 12? Nu, izrādās, ka kad esat definējot kolonna, kas būs jūsu primārā atslēga, kas ir parasti, kā jau teicu, ID numurs. Tas ne vienmēr būs ID numurs, bet tas parasti ir laba ideja būt daži skaitlim vērtības veida. Jums ir iespēja phpMyAdmin kad jūs veidojat savu datu bāzi vai jūsu galda, lai uzstādītu, ka kolonna kā auto palielināšanai. Kas ir ļoti laba ideja, ja jūs strādājat ar primāro atslēgu, tāpēc, ka jūs vēlaties katru vērtību Šajā ailē jābūt unikālam. Un, ja esat aizmirsis norādīt tas vairāk nekā viena persona, Jums tagad ir situācija, kad ka kolonna vairs unikāls. Jums ir divas sagataves, lai jūs varētu nav vairs unikāli identificētu column-- vai jūs vairs nevar unikāli identificētu rindu, pamatojoties uz šajā slejā. Tas ir zaudējis visu savu vērtība kā primāro atslēgu. Un tā acīmredzot to, ko es esmu darījis Šeit ir konfigurēts lietotāja ID kolonna, lai auto soli, lai katru reizi, kad es pievienot informāciju uz galda, tas automātiski dod man vērtība attiecībā uz primāro atslēgu. Tāpēc es nekad nevar aizmirst to darīt, jo datu bāze darīs to man. Tātad tas ir sava veida jauki. Un tā tas ir iemesls, kāpēc mēs 12 tur, jo es esmu noteikt, ka kolonnā līdz auto pieaugumu. Ja es piebilda kāds cits tas lūdzu būt 13, ja es pievienoju kāds cits tā gribētu būt 14, un tā tālāk. Tātad pieņemsim tikai darīt vēl vienu ievietošanas. Mēs ievietot moms tabulā, jo Proti, lietotājvārds un māte kolonnu, vērtības Kramer un Babs Kramer. Un tā mums bija pirms tam. Pēc mēs izpildīt, ka SQL vaicājumu, mums ir šis. Mēs esam pievienojuši Kramer un Babs Kramer uz moms galda. Tātad, kas ir ievietojot. SELECT ir tas, ko mēs izmantojam, lai iegūtu informācija no tabulā. Tātad, tas ir, kā mēs informācija no datu bāzes. Un tā SELECT komandas gribam būt ļoti bieži izmanto plānošanā. Vispārējais framework-- Kopumā skelets izskatās šādi. Izvēlieties komplektu kolonnu no tabulu, un pēc tam neobligāti Jūs varat norādīt condition-- vai ko mēs parasti saucam iepriekš plānotu, parasti termins mēs izmantojam SQL. Bet tas ir būtībā kas konkrēti rindas jūs vēlaties saņemt. Ja jūs vēlaties, nevis iegūt viss, sašaurinātu to uz leju, tas ir, ja jūs varētu darīt. Un tad pēc izvēles, jūs varat arī pasūtīt konkrēta kolonnas. Tātad, varbūt jūs vēlaties, lai būtu lietas sakārtoti alfabētiski pamatojoties uz vienu kolonnu vai alfabētiski pamatojoties uz citu. Atkal, kur un ORDER BY ir obligāta. Bet viņi droši vien būs useful-- īpaši KUR būs noderīga sašaurināt tāpēc jums nav iegūt visu savu datu bāzi un atpakaļ ir to apstrādāt, jūs tikai iegūt gabalus tā, ka jums rūp. Tā, piemēram, es varētu vēlēties, lai izvēlētos ID numurs un FULLNAME no lietotājiem. Tātad, ko varētu tas izskatās? Tātad, šeit ir mana lietotājiem galds. Es gribu, lai izvēlētos idnum un FULLNAME no lietotājiem. Kas es esmu gatavojas saņemt? Es esmu gatavojas saņemt šo. Man nav sašaurināt to uz leju, tāpēc es esmu iegūt identifikācijas numuru katram rindā un es saņemu pilna nosaukt no katras kārtas. LABI. Ko darīt, ja es gribu, lai izvēlētos paroli no lietotājiem WHERE-- tāpēc tagad Es esmu pievienojot nosacījums A predicate-- kur idnum ir mazāks nekā 12. Tātad, šeit ir mana datubāze atkal, mans lietotāji galda top. Ko es esmu gatavojas saņemt, ja es gribu izvēlēties šo informāciju, parole, ja lietotāja ID vai idnum ir mazāks par 12? Es esmu gatavojas saņemt šo informācija atpakaļ, vai ne? Tā gadās, ka idnum ir 10, mazāk nekā 12, ID numurs 11 mazāk nekā 12. Es saņemu paroli šīm rindām. Tas, ko es lūdza. Ko par šo? Ko darīt, ja es gribu, lai izvēlētos zvaigzni no laukuma moms galds kur username vienāds Jerry? OK, izvēlieties zvaigzne ir īpaša veida savvaļas karti tā saukto ka mēs izmantojam, lai iegūtu visu. Tāpēc viņi saka izvēlieties lietotājvārds komatiem māti, kas gadījās būt vienīgais divās slejās šajā tabulā, Es varu tikai izvēlēties zvaigzne un saņemt visu kur lietotājvārds ir vienāds Jerry. Un tā tas ir tas, ko es varētu saņemt ja es šo konkrēto jautājumu. Tagad, datubāzes ir liels, jo tie ļauj mums organizēt informāciju, iespējams, mazliet efektīvāk nekā mēs citādi. Mēs ne vienmēr uzglabāt katrs attiecīgais gabals informācijas par lietotāja tajā pašā tabulā. Mums bija divas tabulas tur. Mums ir nepieciešams, lai saglabātu visi ir mātes vārds, un varbūt mums nav sociālo nodrošinājumu numurs, mums ir savas dzimšanas datumu. Tas nenozīmē, ka vienmēr vajag būt vienā un tajā pašā tabulā. Tik ilgi, kamēr mēs varam definēt attiecības starp tables-- un tas, kur tas relāciju datubāze termiņš veida nāk uz play-- kamēr mēs varam definēt attiecības starp tabulām, mēs varam veida sadrumstalo vai abstraktām lietām tādā veidā, kur mums tikai ir patiešām svarīga informācija mēs rūpējamies par lietotāja galda. Un tad mums ir palīginformācijas vai papildu informāciju citās tabulās ka mēs varam savienot atpakaļ uz galvenā Lietotāji galda kādā konkrētā veidā. Tātad, šeit mēs esam šīs divas tabulas, bet tur ir saistība starp tām, labi? Šķiet, tāpat kā lietotājvārdu varētu būt kaut kas ka pastāv kopīgs starp šie divi dažādi galdi. Tātad, ko tad mums tagad ir situācija, kad mēs vēlos saņemt lietotāja vārdu un uzvārdu no lietotāja galda, un viņu mātes nosaukt no mātes galda? Mums nav veids, kā iegūt ka tā stāv, vai ne? Nav viena tabula, kas satur gan pilns nosaukums un mātes vārds. Mums nav šo iespēju no tā, ko mēs esam redzējuši līdz šim. Un tāpēc mums ir jāievieš ideja pievienoties. Un pievienojas, iespējams, visvairāk complex-- tas ir patiešām visvairāk sarežģīta operācija mēs ejam runāt par video. Viņi mazliet sarežģīti, bet tad, kad jūs saņemsiet pakārt par to, viņi faktiski nav pārāk slikti. Tas ir tikai īpašs gadījums, izvēlieties. Mēs ejam, lai izvēlētos kopumu kolonnas no tabulas savieno otrajā tabulā kādu predikāts. Šajā gadījumā, domāju, ka par to kā this-- viena tabula ir viens aplis nekā šeit, divi tabula ir vēl viens aplis vairāk nekā šeit. Un tas predikātu daļa vidū, tas ir veida, piemēram, ja jūs domājat, ka apmēram kā Venna diagramma, ko viņi ir kopīgs? Mēs vēlamies, lai savienotu šīs divas tabulas pamatojoties uz to, ko viņi ir kopīgs un izveidot šo hipotētisko tabulu ka ir apvienošanās abas kopā. Tātad mēs redzēsim šo izturēties piemērs un varbūt, ka jums palīdzēt notīriet to uz augšu mazliet. Tātad, varbūt jūs vēlaties, lai izvēlētos user.fullname un moms.mother no lietotājiem iestāšanos šajā moms galda katrā situācijā kur lietotājvārds kolonna ir tas pats, starp tiem. Un tas ir jauns sintaktiskas šeit, šo lietotāju. un moms .. Ja es esmu dara vairākas tabulas kopā, es varu norādīt tabulu. Es varu atšķirt jo īpaši par ka pašā apakšā tur. Es varu atšķirt lietotājvārdu kolonna no lietotāju tabulas no lietotājvārdu kolonnā moms galds, kas ir otherwise-- ja mēs tikko teica username vienāds lietotājvārds, ka nav īsti nozīmēt jebko. Mēs vēlamies to darīt, ja tie atbilst. Tāpēc es varu norādīt tabulu un kolonnas nosaukums, ja tas ir situācijas ja tas būtu skaidrs ko es runāju par. Tātad tas ir viss, ko es daru, ir es esmu sakot, šo sleju no šīs tabulas, un ir ļoti skaidri. Tātad vēlreiz, es esmu izvēloties pilns nosaukums un mātes vārds no lietotāju tabulas sasaistīti ar moms tabulu katrā situācijā kur viņi dalās ka column-- tie koplietot šo lietotājvārdu jēdzienu. Tātad, šeit ir galdi mums bija pirms tam. Tas ir stāvoklis mūsu datubāzē, kā tas pastāv jau tagad. Informāciju mēs ieguves tas ir, lai sāktu ar. Tas ir jauns galds mēs ejam lai izveidotu apvienojot kopā. Un paziņojums mēs neesam izceļot Newman ir rinda lietotāja galda, un mēs esam ne izceļot Krāmera rinda moms tabulā jo ne viens eksistē gan sets-- abās tabulās. Vienīgā informācija, kas ir kopīgs starp tām ir Jerry ir abās tabulās un gcostanza ir abās tabulās. Un tad, kad mēs to SQL JOIN, ko mēs get-- un mēs darām faktiski iegūtu šo. Tas ir sava veida pagaidu mainīgo. Tas ir tāpat kā hipotētisks apvienošana divās tabulās. Mēs faktiski saņemt kaut ko kā šis, kur mēs esam apvienoti kopā tabulas par to informāciju, kas viņiem ir kopīgs. Tātad paziņojums, ka users.username un moms.username kolonna, tas ir tieši tas pats. Tas bija informācija, ka bija konsekvents no lietotājiem galds un māmiņas galda. Un tā mēs apvienojām kopā. Mēs izmet Kramer jo viņš nepastāvēja lietotāju tabulā, un mēs jāizmet Newman, jo viņš nepastāvēja moms tabulā. Tātad šis ir hipotētisks apvienošanās izmantojot JOIN darbību SELECT. Un tad mēs meklējam lietotāja pilnu nosaukumu un lietotāja māte, un tāpēc šī ir informācija, ka mēs varētu saņemt no kopējā vaicājumu ka mēs, kas ar SELECT. Tātad mēs pievienojāmies tabulas kopā un mēs iegūta šīs divas kolonnas, un tā, ka tas, ko mēs varētu saņemt. Bet SQL pievienojas veida sarežģīta. Jūs, iespējams, nebūs darīt to pārāk daudz, bet vienkārši ir kāda ideja par skeleta ka jūs varētu izmantot, lai apvienot divas tabulas kopā, ja jums nepieciešams. Pēdējo divu esam mazliet vienkāršāku es apsolu. Tātad atjaunināšanu, mēs varam izmantot UPDATE mainīt informāciju tabulā. Vispārējais formāts ir atjaunināt dažus galds, kas dažas kolonnu dažas vērtības Kur daži predikāta ir izpildīts. Tā, piemēram, mēs varētu vēlēties atjaunināt lietotāju tabulu un iestatīt paroli yada yada, kur ID numurs ir 10. Tātad šajā gadījumā mēs esam atjaunināt lietotāju tabulu. ID numurs ir 10, lai ka pirmā rinda tur, un mēs vēlamies, lai atjauninātu paroli yada yada. Un tā tas ir, kas notiktu. Tas ir diezgan vienkārši, vai ne? Tas ir tikai ļoti vienkāršs modifikācija uz galda. DELETE ir operācija mēs izmantojām, lai noņemt informāciju no galda. Izdzēst no galda, kur daži predikāta ir apmierināts. Mēs vēlamies, lai izdzēstu no Lietotāji tabula piemēram kur lietotājvārds ir Newman. Jūs varat droši uzminēt, kas notiek uz notikt šeit, kad mēs izpildīt, ka SQL vaicājums, Newman ir aizgājuši no galda. Tātad visas šīs darbības, kā es esmu teica, ir ļoti viegli darīt phpMyAdmin. Tas ir ļoti lietotājam draudzīgs interfeiss. Bet tas prasa roku spēks. Mēs nevēlamies, lai nodarbināt roku spēks. Mēs vēlamies, lai mūsu programmām darīt mums, vai ne? Tātad mēs varētu vēlēties darīt šis programmatiski. Mēs vēlamies iekļaut SQL un būt kaut kas cits, lai to izdarītu, mums. Bet ko mēs esam redzējuši, kas ļauj mums programmatiski kaut ko darīt? Mēs esam redzējuši PHP, vai ne? Tā ievieš dažas dinamisms mūsu programmās. Un tā par laimi, SQL un PHP spēlē ļoti labi kopā. Tur ir funkcija PHP sauc vaicājumu, ko var izmantot. Un jūs varat iet, jo parametrs vai arguments vaicājumu SQL vaicājumu, kas jūs vēlētos izpildīt. Un PHP darīs to savā vārdā. Tātad, pēc tam, kad esat savienots ar savu datu bāzi ar PHP, tur ir divas primaries jūs darīt. Tur ir kaut kas ko sauc mysqli un kaut ko sauc par ACVN. Mēs ne iedziļināties milzīgs summa detaļa tur. In CS50 mēs izmantojam ACVN. Pēc tam, kad esat savienots ar savu datu bāzi, jūs tad var veikt vaicājumus savu datu bāzi novadot vaicājumus kā argumenti PHP funkcijas. Un, kad jūs to izdarītu, jums uzglabāt uz rezultātu noteikts asociatīvā masīva. Un mēs zinām, kā strādāt ar asociatīvas masīvi PHP. Tāpēc es varētu teikt kaut ko tāpat this-- $ results-- tas ir PHP-- vienāds vaicājumu. Un tad iekšpusē vaicājums funkcija šis arguments ka es esmu iet vaicājumu kas izskatās kā SQL. Un patiesībā tas ir SQL. Tas ir vaicājuma virknes, ka es patīk izpildīt par manu datu bāzi. Un tā sarkanā, tas ir PHP. Tas ir SQL, ka es esmu integrējot PHP, padarot tas arguments uz vaicājumu funkciju. Es gribu, lai izvēlētos FULLNAME no Lietotāji kur ID numurs ir 10. Un tad varbūt pēc es esmu darījusi, ka, Es varētu teikt kaut kas līdzīgs šim. Es gribu izdrukāt ziņu Paldies piesakoties. Un es gribu to interpolate-- es gribu interpolēt $ rezultātus FULLNAME. Un tā tas ir, kā es strādāju ar to asociatīvā masīva, ka es saņēmu atpakaļ. $ rezultāti FULLNAME būtu būtībā beigties izdrukāšana, paldies par piesakoties, Jerry Seinfeld. Tas bija pilns nosaukums kur idnum vienāds 10. Un tā es esmu dara ir es esmu now-- es saglabāti mans jautājums, manas vaicājumu rezultāti un rezultātā rodas asociatīvā masīva, un FULLNAME ir nosaukums kolonna Es biju kļūst par. Tātad tas ir mans galvenais uz rezultātiem asociatīvā masīva, ka es gribu. Tātad Paldies piesakoties, $ rezultātus, FULLNAME būs izdrukāt, būs stick tieši starp šīm cirtaini bikšturi, Jerry Seinfeld. Un es patiks izdrukāt ziņu Paldies par piesakoties Jerry Seinfeld. Tagad, mēs, iespējams, nevēlaties, lai grūti kods lietas, piemēram, ka, labi? Mēs varētu vēlēties darīt kaut ko līdzīgu drukāt f, kur mēs varam aizvietot un varbūt vākt citu informāciju, vai varbūt ir vaicājuma procesu atšķirīga informācija. Un tā vaicājumu, vaicājums funkcija ir šis jēdziens veida substitūciju ļoti līdzīgs drukāt f procentiem s un procenti c, ir jautājuma zīmes. Un mēs varam izmantot jautājumu zīmes ļoti analoģijas drukāt f uz aizvietojošiem mainīgajiem. Tātad, varbūt jūsu lietotāja pieteicies agrāk, un esat saglabājis savu lietotāja ID numuru in $ _session PHP super globāls atslēgas ID. Tātad, varbūt pēc tam viņi pieteicies, Jums noteikti $ _session ID vienāds 10, ekstrapolējot no piemēra mēs tikko redzējām otrs atpakaļ. Un tad, kad mēs faktiski izpildīt Šis vaicājums rezultātus tagad, tas iespraudiet 10, vai kāds no $ _session ID vērtība ir. Un tā, kas ļauj mums būt mazliet dinamiskāks. Mēs esam ne grūti kodēšanas lietas vairs. Mēs esam ietaupot informāciju kaut kur un pēc tam mēs varam izmantot šo informāciju vēlreiz kārtot vispārināt to, ko mēs vēlamies darīt, un tikai plug-in un maiņa uzvedība mūsu lapā pamatojoties uz to, ko lietotājs ir ID numurs patiesībā ir pēc tam, kad tie esam pieteicies. Tas ir arī iespējams, lai gan, kas nosaka jūsu rezultāti var sastāvēt no vairākām rindām. Tādā gadījumā, jums ir masīvs arrays-- masīvs asociatīvas masīvi. Un jums ir nepieciešams atkārtot, izmantojot to. Un mēs zinām, kā to atkārtot izmantojot masīvu PHP, vai ne? Tātad, šeit ir iespējams, visvairāk sarežģīta lieta, ko mēs esam redzējuši līdz šim. Tas faktiski apvieno trīs valodas kopā. Šeit, sarkans, tas ir daži HTML. Es esmu acīmredzot starting-- tas ir fragments no kāda HTML, kas man ir. Es esmu sāk jaunu punktu, ka saka māmiņas no televizora Seinfeld. Un tad uzreiz pēc tam Es esmu sāk galdiņu. Un tad pēc tam, es ir dažas PHP, vai ne? Man ir visu šo PHP kodu tur. Es esmu acīmredzot gatavojas veikt vaicājumu. Un, lai padarītu vaicājumu, es esmu gatavojas būt izmantojot SELECT mātēm NO mammām. Tātad šis ir getting-- tas ir SQL. Tātad zilā ir SQL. Mēs redzējām otrā pirms sarkanā bija HTML. Un zaļā šeit ir PHP. Tāpēc es esmu padarot vaicājumu uz manu datu bāzi, es esmu Izvēloties visi māmiņas moms tabulā. Ne tikai sašaurinot to uz leju, lai īpaši rinda, es esmu lūdzot viņiem visiem. Tad es pārbaudītu, vai rezultāts ir nav vienlīdzīgi vienāds nepatiesa. Tas ir tikai mans veids, kā pārbaudīt veida no tā, ja rezultāti nav vienāds ar null, ka mēs varētu redzēt c piem. Būtībā tas ir tikai pārbaudes, lai padarītu pārliecināts, ka tas faktiski ieguva datus atpakaļ. Tā kā es nevēlos, lai sāktu drukāšanu out datiem, ja es nesaņēma nekādus datus. Tad par katru rezultātu, kā rezultātā foreach sintakse no PHP, viss, ko es daru drukā $ rezultāts mātēm. Un tāpēc es esmu gatavojas saņemt komplektu no visiem mātes each-- tas ir masīvs asociatīvās arrays-- un es esmu izdrukāšanu katrs par savu rindu tabulā. Un tas ir patiešām diezgan daudz viss notiek ar to. Es zinu, tur ir maz bit notiek šeit Šajā pēdējā piemērā ar bloki arrays-- bloki asociatīvas masīvi. Bet tas tiešām tikai vārīties noteikti SQL padarīt vaicājumu, Parasti izvēloties kad mēs esam jau nodot informāciju uz galda, un tad tikai velkot to ārā. Un tas ir, mēs varētu izvelciet to šajā konkrētajā gadījumā. Mēs būtu ekstrakts visi no indivīda māmiņas no moms tabulā. Mēs saņēmām kopums viņiem, un mēs gribu atkārtot, izmantojot un izdrukāt katrs. Tātad vēlreiz, tas ir iespējams vissarežģītāko piemērs mēs esam redzējuši, jo mēs esam sajaucot trīs dažādas valodas kopā, vai ne? Atkal, mums ir HTML šeit sarkanā krāsā, sajauc ar kādu SQL šeit zilā krāsā, sajauc ar kādu PHP zaļā krāsā. Bet visi šie spēlē labi kopā, tas ir tikai jautājums par jaunattīstības labus ēšanas paradumus, lai jūs varētu iegūt viņiem strādāt kopā, kā jūs vēlaties. Un vienīgais veids, kā patiešām darīt ir prakse, prakse, prakse. Es esmu Doug Lloyd, tas ir CS50.