[MUSIC PLAYING] DAVID Malan: Bütün sağ, bu CS50 edir. Bu həftə səkkiz sonu. Bu gün biz başlamaq bir ədəd doldurmaq üçün Bu binanın gəldikdə web şeylər. Belə ki, bazar ertəsi Xatırladaq ki biz daha çox vaxt sərf PHP, hansı bu dinamik proqramlaşdırma dili ki digər arasında, bizə çıxış imkanı verir şeyi, HTML və digər bu kimi content görmək lazımdır ki. Amma biz, həqiqətən, necə baxdı yoxdur biz hər hansı bir məlumat saxlamaq üçün olacaq. Həqiqətən, hər hansı bir ki, super Bu gün ziyarət maraqlı saytları verilənlər bazası bir növ geri sonunda, sağ? Facebook əlbəttə məlumatların çox mağazalar bütün bizə və Gmail mağazalar bütün Sizin e-poçt. Belə ki, bir çox digər saytlar yalnız var informasiya var statik content. Bu bir şəkildə həqiqətən dinamik var. Siz daxil, bu yenilikləri təmin digər insanlar üçün pages. Siz göndərmək, mesaj almaq s mesajlar, və. Belə ki, bu gün biz yaxın baxmaq layihənin underpinnings növbəti dalış lazımdır ki, həftə, CS50 Maliyyə, hansı həqiqətən qurmaq üçün gedir Biz C, amma PHP bir şey. Bir görünür ki, bir haqqinda bu kimi kiçik bir şey ki, almaq və satmaq üçün imkan verir həqiqətən ehtiyatları real zamanlar cəlb Yahoo Maliyyə fond məlumat. Və belə nəticədə, siz lazımdır Özünüz üçün və istifadəçilər üçün illüziya Siz, həqiqətən, alınması və satış edirik ki, ehtiyatları təxminən real vaxt əldə yenilikləri, idarə portfel, olan bütün olan tələb edir, nəticədə, istifadəçilər bir verilənlər bazası. Belə ki, öz sözləri ilə, Siz etdiyiniz xüsusilə kompüter ilə super tanış elm və ya verilənlər bazası, nə bir verilənlər bazası bilirik olmaq İndi, nontechnical baxımından? Bu nədir? Siz onu təsvir necə Bir roommate və ya bir dost? Auditoriya: [işitilemez] məlumat [işitilemez] DAVID Malan: Belə ki, informasiya siyahısı və ya məlumat siyahısını store-- Siz saxlamaq istəyirəm bilər ki, bir istifadəçi kimi bir şey haqqında. Və istifadəçilər var nə onlarla bağlı? Facebook və ya bir istifadəçi değilseniz Gmail, xüsusiyyətləri hansılardır ki, bizim bütün istifadəçilər var? Kimi, nə bəzi ola bilər tablo sütun olan biz son dəfə alluded? Daha, bilərsiniz, çünki bir verilənlər bazası hesab həqiqətən bir xülya Excel faylı və ya Google kimi Tablo və ya Apple Nömrələr fayl. Belə ki, siz nə düşünürsünüz Bir istifadəçi hesab zaman? Onlar nə var? Bu nədir? Auditoriya: A adı. DAVID Malan: A adı. Belə ki, əgər adı kimi, David Malan Bəzi istifadəçi adı olacaq. Bir istifadəçi başqa nə var? Auditoriya: An ID. DAVID Malan: An ID. Belə ki, Harvard kimi bir şəxsiyyət nömrəsi kimi ID ya Yale Net ID və ya kimi. Bir istifadəçi başqa nə ola bilər? Auditoriya: Parol. DAVID Malan: bəlkə bir A parol, ünvan, bəlkə bir telefon nömrəsi, bəlkə bir e-mail. Belə ki, sahələri və bu dəstələri var sort nəzarət spiral həyata bilər tez tezliklə başlamaq kimi oh, bu saxlamaq edək, həyata və bu və saxlamaq edək. Amma biz həqiqətən ki etməliyəm? Belə ki, yenə, ruhi model Bu gün üçün kimi biz faktiki SQL daxil dalış, Yapılandırılmış Query Language, bu kimi görünür ki, bir verilənlər bazası var. Bu, sadəcə satır ve sütun var. Və Google Spreadsheets təsəvvür edə bilərsiniz və ya digər proqramlar hər hansı bir sayı. Amma MySQL haqqında əsas nə verilənlər bazası proqram istifadə etmək olacaq, sərbəst açıq Facebook istifadə available-- Bu və digər websites-- hər hansı bir sayı Verilənlər bazası relationally şeyi saklar. Və relational verilənlər bazası ki, yalnız sözün bir deməkdir satır ve sütun öz data saklar. Bu kimi sadə deyil. Belə ki, Oracle kimi belə bir şey ki, Siz, ümumiyyətlə, eşitmişəm bilər bir relational verilənlər bazası var. Və başlıq altında, onu satır ve sütun mağazalar data. Və Oracle sizə bir alır pul çox bunu, MySQL ittihamlar isə Eyni üçün heç bir şey. Belə ki, SQL bizə vermək niyyətindədir ən azı dörd əməliyyatları. oxumaq kimi, data seçmək imkanı data, insert, silmək, və yeniləmə data. Başqa sözlə, həmin Həqiqətən dörd əsas əməliyyatlar bizə dəyişdirmək imkan gedir o satır ve sütun stuff. xüsusilə bu gün istifadə edəcəyik alət SQL öyrənmək və onunla oynamaq üçün yenidən PHP MyAdmin adlanır. Bu web-based aracıdır. Ümumi təsadüf ki, Bu PHP yazılı. Amma bu, bizə bir qrafik vermək olacaq istifadəçi interfeysi biz, həqiqətən bilər ki, bu satır ve sütun yaratmaq və sonra kod vasitəsilə onlara danışmaq. Belə ki, indi başlamaq edək nə mən hesab edirəm ki, səmimi deyil əyləncə prosesinin cür web geri sonuna bina, istifadəçi yoxdur hissələri görmək, lakin, şübhəsiz ki, haqqında qayğı, ki, çünki data gedəcək daha. C və A, belə ki, oxşar az PHP kimi kiçik, SQL, və ya dəstəkləyən bazası SQL, ən azı bu məlumatlar növləri var və başqaları dəstələri. CHAR, VARCHAR, INT, Bigint, Decimal və Datetime. Və bütün var digər xüsusiyyətləri dəstə, lakin bunu bildirin faktiki Məsələn yolu. Mən CS50 IDE getmək üçün gedirəm harada əvvəlcədən, mən daxil etdik və mən də bir URL ziyarət etdik PHP MyAdmin adlanan bu aracı. Və problem yeddi müəyyən, biz demək lazımdır Siz dəqiq necə bu interface almaq üçün həmçinin. Sol üst küncündə, qeyd Bu mühazirə deyir. Və yalnız o deməkdir ki, əvvəlcədən, mən yaradılmış boş bazası adlı mühazirə ki, hələ heç bir tablolar var. Heç bir satır ve sütun var. Ilk Çünki odur ki, biz nə olacaq bir masa yaratmaq üçün başlayın ki, bizim istifadəçilər saxlamaq olacaq. Belə ki, sözün üzərində Burada sağ, mən verilənlər bazası demək gedir Mən bir masa İstifadəçilər adlı istəyirəm. Belə ki, bu fayl kimi ki, mən mənim məlumatların bütün saxlamaq üçün istəyirəm. Və neçə sütun? Yaxşı, indi üçün sadə saxlamaq imkan verir. Mən yalnız bir kimi saxlamaq istəyirəm istifadəçi adı və istifadəçi üçün bir ad. Biz kiçik başlamaq lazımdır. Belə ki, mən iki sütun cəmi istəyirəm. Mən irəli getmək və Go basın gedirəm. Və sonra, bu sütunlar, mən nə gedirəm Bu internet əgər nə etmək bütün sağ cooperates-- belə ki, biz daha cəhd olacaq. Mən adlı bir masa yaratmaq üçün gedirəm Iki sütun, ilə indi OK, Go basın. İndi biz, həqiqətən, sürətli var. Çox yaxşı, təşəkkür edirəm. Bütün hüquqlar, belə ki, biz istəyirik nə Bu sütun adlandırmaq üçün necə? Belə ki, bir adı adlandırmaq olacaq. Burada və interface ki, bütün görürəm səmimi, nəhayət bir az çirkin olur Siz bir dəfə bütün bu məlumatları yazmağa başlayın. Amma nə gözəl ki, sort deyil Paradoksal, mən sütun yaradılması alıram, lakin alət gic-gic var satır onları qoydu ki, mən bu sütunlar konfiqurasiya edə bilərsiniz. Belə ki, adı altında iki blanklara var var. Bu sahələrdən biri I İstifadəçi adı deyilən istəyirəm, və digər sahə I adı səslənmək istəyirəm. İndi seçmək lazımdır bu şeylər üçün data növləri. Belə ki, Excel isə və Google Spreadsheets, Bir sütun istəyirsinizsə, siz sözün yalnız Ad və ya istifadəçi adı yazın, Enter düyməsini basın. Bəlkə qalın üz etmək yalnız aydınlıq üçün, lakin bu. Siz daxil deyil sütun növləri. İndi Google Spreadsheets və ya Excel sizə, məlumat göstərilir necə müəyyən edə bilər. Siz Format menyusu, və bilər oxşar dollar işarəsi göstərir belirtebilirsiniz, üzən point dəyər kimi bu göstərir. Belə ki, ruhu oxşar Biz nə istəyirik nə, lakin bu, həqiqətən məcbur gedir data müəyyən bir növü olmalıdır. İndi, hətta bir an əvvəl olsa yalnız bir neçə data növləri var bildirib həqiqətən var bir bütün çox, və onlar spesifikliyi dərəcə müxtəlif ilə. Və bir kənara kimi, hətta xülya şeyi edə bilərsiniz storage geometrileri kimi bir verilənlər bazası daxilində. Siz hər şeyi saxlaya bilərsiniz GPS koordinatları kimi və həqiqətən, riyazi tapmaq digər yaxın xal. Amma biz olacaq Bu super sadə saxlamaq və burada bütün qədər getmək Sözdə simli növləri. Belə ki, burada bir bir siyahısı variantları bütün dəstə. CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. Və bu böyük növü var. Və təəssüf ki, bir qədər Paradoksal C, bir CHAR həqiqətən CHAR deyil. Bir bazasında qeyd edin Sizin data type CHAR ki, ki, bəli, bu, o deməkdir ki CHAR, lakin bir və ya daha çox chars var. Və müəyyən etmək neçə chars istədiyiniz. Belə ki, nə tipik var bir istifadəçi adı üçün uzunluğu? Bir limit adətən var? Auditoriya: [işitilemez] DAVID Malan: 16 bəlkə? Kimi bir şey. Siz geri, bilirəm gün, bu səkkiz olmaq üçün istifadə. Bəzən 16, bəzən var ki, daha çox var. Belə ki, bu deyil Mənə bir char vermək deməkdir. Bu müəyyən etmək deməkdir sahəsində uzunluğu, və indi 16 kimi bir şey deyə bilər. Və burada off ticarət var. Belə ki, biz bir anda görürsünüz bu bir o deməkdir ki, hər istifadəçi adı 16 simvol olmalıdır. Amma bir dəqiqə, M-A-L-A-N gözləyin. Ki, varsa Mənim istifadəçi adı və mən yalnız beş istifadə edirəm, Verilənlər bazası ki, nə təklif edirəm 11 simvol üçün nə etmək ki, Mən yer qorunur etdik? Siz nə edərdiniz? Auditoriya: [işitilemez] DAVID Malan: Bəli, yalnız Onlara bütün null edir. Onlara boşluq olun. Amma yəqin ki, null, belə bir backslash adet sıfır çox. Belə ki, bir tərəfdən, biz İndi mənim istifadəçi adı əmin etdi 16 simvol artıq ola bilər. Və flip tərəfində Mən həqiqətən uzun ad olsaydı və ya həqiqətən uzun istədi bəzi kimi istifadəçi adı uşaqlar ki, kollec ola bilər və ya Yale.edu at, bir ola bilməz. Və belə əslində, var əgər Heç bir haqqinda üçün qeydiyyatdan və deyərək yelled almaq Şifrəni çox uzun və ya istifadəçi adı bu, çox uzun sadəcə bir proqramçı, çünki onun bazası konfiqurasiya, qərar bu sahədə olacaq ki, artıq bu uzunluğu çox ola. Bütün hüquqlar, belə nə varsa biz ad davam? Necə uzun lazımdır tipik insan adı? Neçə simvol, 16? Mən biz bilər təxmin edirəm Bu otaqda kimsə tapmaq keçən onun ilk plus adı 16 simvol artıq var. Belə ki, 17 daha yaxşı nə var? 18? 25? Böyük? 30? Auditoriya: [işitilemez] DAVID Malan: 5000, Allahım oh. Belə ki, yəqin ki, bir layiqli var yuxarı bound edilir söyləyirik. Və burada biz növ var bir qərar zəng etmək üçün. Kimi, burada heç bir düzgün cavab yoxdur. Infinite olduqca mümkün deyil biz nəhayət istəyirik, çünki biz istəyirik yaxşıdır gedir yaddaş tökülmək gedir. Belə ki, biz bir etmək lazımdır bir nöqtədə qərar zəng. Olacaq Çox ümumi, məsələn, use-- və mənə burada Kömürləşdirmək müəyyən imkan kimi, əvvəl 255 sanki Bu verilənlər bazası proqram yuxarı həddi illər öncə. Və insanlar belə, bir çox yalnız gözəl, demək olardı. 255 limit var. Yalnız maksimum istifadə edək. Bu olduqca gülməli deyil. Kimi, kimsə yazaraq edirsinizsə 200 plus simvol üçün ad, bir az gülməli ki. Amma ASCII deyil ki, unutmayın Sandıqı üçün yalnız sistem. Belə ki, xüsusilə bir Asiya qrupu çox simvol var biz bilməz Mənim ABŞ kimi klaviatura ifadə klaviatura, faktiki olaraq, bəzi simvollar 16 bit yerinə səkkiz bit almaq. Belə ki, bu, həqiqətən, bütün əsassız deyil daha çox lazımdır ki, space biz uyğun istəyirsinizsə çox ABŞ daha böyük simvol merkezli olanları müzakirə meyl etdik. Belə ki, biz bəzi yuxarı bound lazımdır. Mən ən yaxşı nə bilmirəm lakin 255 ümumiyyətlə ümumi biridir. 25 aşağı hiss edir. 16, 32 aşağı hiss edirəm. Mən tərəfində səhv düşmək olardı yüksək bir şey. Amma ticarət həmişə olduğu kimi, off var. , Bəlkə də, aydındır nə 255 chars sifariş off ticarət Mənim bazasında hər kəsin adı? Auditoriya: [işitilemez] DAVID MALAN: Nə olub? Auditoriya: [işitilemez] DAVID Malan: Bu var yaddaş çox sağ? M-A-L-A-N. Mən yalnız 250 sərf simvol yalnız mənim ad saxlamaq üçün müdafiə, yalnız halda kimsə sinif bir həqiqətən uzun adı var. Ki, bir hədsiz tradeoff kimi görünür. Belə ki, ki, SQL çıxır Bu verilənlər bazası dili, həqiqətən, bir şey dəstəkləyir VARCHAR, və ya nisbi CHAR çağırıb. Və bu ki, bu cür gözəl Bir sabit deyil müəyyən etmək üçün imkan verir eni, əksinə, dəyişən eni. Və daha çox xüsusi bir sahəsində maksimum eni. Belə ki, bu bir ad bilər o deməkdir ki, artıq 250 simvol ola, lakin əlbəttə ki, daha az ola bilər. Və verilənlər bazası smart olacaq. M-A-L-A-N qoymaq deyilsə, Bu, yalnız beş istifadə olacaq bəlkə altı bytes kimi bir arxada null xarakteri, və əlavə sərf deyil Lazımsız 249 və ya 250 bytes. Belə ki, bu mən olmalıdır kimi görünür bu hekayə ilə başlamışdır. Amma həmişə bir tradeoff var. Belə ki, bir tərəfdən, bir istifadəçi adı mən var ağır 16 kodlu etmək üçün müəyyən, və bəlkə deyil sağ zəng, bəlkə var, amma niyə istifadə Hər şey üçün VARCHARs? Bu səbəbdən mövcuddur. Niyə hər sahə üçün VARCHARs istifadə Onun uzunluğu əvvəlcədən bilmirəm Sağ, böyük bir şey görünür əgər? Kimi yalnız çox yer istifadə edin bu limit qədər lazımdır? Auditoriya: yavaş. DAVID Malan: Speller? Auditoriya: yavaş edir? DAVID Malan: Oh, yavaş var. Yaxşı, demək olar ki, həmişə var cavab səmimi. Kimi, tradeoff var? Bu da daha çox yer xərcləri və ya daha çox vaxt xərcləri. Belə ki, bu halda, bu yavaş ola bilər. Niyə? Auditoriya: [işitilemez] [Işitilemez] müəyyən. DAVID Malan: Yaxşı. Belə ki, hətta geri bilər PSED5, sizin yanaşma ilə oynayan lüğət, siz varsa dinamik yaddaş ayrılması və ya saxlamaq ki, bir bufer artır həqiqətən yavaş ola bilər. Siz malloc zəng etmək varsa, başlıq altında və bəlkə ki MySQL, belə ki, nə var Həqiqətən, bu halda ola bilər. Və yol hesab edirəm, əgər geri hətta PSet-- və ya kimi həftə iki etdik şeyi ikili axtarış və ya hətta xətti axtarış, hər sözü haqqında gözəl şeylər biri bir sütun bir verilənlər bazası və ya hər sözü hətta eyni uzunluğu olan həmin simvol bütün dəstə boş, siz istifadə edə bilərsiniz ki, Sizin data təsadüfi giriş, sağ? Hər bilirsinizsə söz, 16 simvol üz Siz ki, pointer hesab istifadə edə bilərsiniz danışmaq, bizə getmək 16, 32, 48, 64, və yalnız atlayabilir dərhal hesab istifadə edərək, verilənlər bazası sözləri hər hansı bir. Bu bir VARCHAR əgər halbuki, nə əvəzinə nə etmək lazımdır? [Telefon zəng] Bu bir VARCHAR varsa, siz təsadüfi giriş istifadə edə bilməz. Nə üçün baxmaq və ya nə etmək lazımdır? Evet? Auditoriya: [işitilemez] DAVID Malan: baxın whole-- iz vasitəsilə bütün siyahısı çox güman ki, nə axtarır? Xüsusi dəyər nə cür? Auditoriya: [işitilemez] DAVID Malan: Axtarıram null Terminators üçün ki, sözləri ayrılması ayırmaq. Belə ki, yenə, bir tradeoff və heç bir düzgün cavab yoxdur. Amma bu, xüsusilə, harada Sizin istifadəçilər bir çox ola almaq zaman Sizin server və yük, insanların sayı, yüksək olur istifadə Bu, həqiqətən, nontrivial qərarlardır. Belə ki, biz bu bu tərk, lakin bilər hüququ üzərində aşağı diyirləyin bildirin burada. İndi sütun bir neçə var biz bir qərar zəng etmək üçün var. Bir istifadəçi imkan mənada edirmi bir istifadəçi istifadəçi adı və ya istifadəçi adı, , null ola adı? Bu, yalnız boş. Bir az cəfəng hiss, mən deyiləm bu qutuları yoxlamaq niyyətində deyil. Amma bir çıxır verilənlər bazası, siz deyə bilərsiniz Kimsə isteğe bu dəyər ola bilər. Bu sütun yoxdur həqiqətən orada olmaq. İndi menyu aşağı açılan bu var. Və mən hələ də hiss orada ilk sırada, mən indi istifadəçi adı bəhs edirəm. Və bu, bir verilənlər bazası çıxır ki sadə sadəcə elektron tablo fərqli olaraq, göstəriciləri adlı güclü xüsusiyyətləri vardır. Və bir index izah bir yoldur Əvvəlcədən bazası insan ki, asan siz artıq deyiləm. Mən sorğu nə cür seçin bilirik və ya daxil etməzdən və ya silmək və ya yeniləmə Mənim code başa gedir ki, Bu bazasında bunu. Mən bir çox veri oxumaq istəyirəm. Mən bir çox veri daxil etmək istəyirəm. Mən daim istəyirəm bir çox veri silin. Mən olmaq gedirəm bilirik ki, əgər bir çox İstifadəçi adı kimi bir sahə daxil, Mən preemptively deyə bilərsiniz verilənlər bazası, Mən sizə daha çox bilmək və mən sərəncamı istəyirəm ki, Siz index bu sahə olmalıdır. Bir sahə və ya bir sütun indeksasiyası harada o deməkdir ki, əvvəlcədən bazası kimi, bəzi ideyaları borc olmalıdır, həftə dörd və beş və altı CS50 və həqiqətən qurmaq bir ikili axtarış kimi bir şey ağac və ya bir şey ümumiyyətlə B ağac çağırıb Əgər öyrənmək ki, bir sinif kimi CS124 da Harvard, bir alqoritmlər sinif, və ya digər yerlərdə hər hansı bir sayı. verilənlər bazası və ağıllı onu həyata insanlar saxlamaq üçün necə anlamaq edəcək məlumatların masa yaddaş ki, axtarışlar və digər əməliyyatlar super sürətli. Siz bunu yoxdur. Siz həyata yoxdur xətti axtarış və ya ikili axtarış və ya sort və ya seçim daxil sort ki, hər hansı bir. Siz demək əgər bazası sizin üçün bunu edir Bu preemptively index bu sahədə. Və var, çox görə bilərsiniz Bəzi digər xüsusiyyətləri biz bazası tətbiqi üçün deyə bilərsiniz. Mən unikal seçerseniz Bu nə demək bilər Bu menyu, yalnız daxilən? Evet? Auditoriya: [işitilemez] DAVID Malan: Bəli, istifadəçi adı unikal olmalıdır. Bu yaxşı bir şey və ya pis bir şey üçün istifadəçilər ilə bir haqqinda üçün bir verilənlər bazası? Istifadəçi adı unikal olmalıdır? Bəli, yəqin. Ki, varsa nə sahəsində biz daxil olmaq üçün istifadə Siz, həqiqətən, insanlar olan istəmirəm eyni hiss və ya eyni istifadəçi adı. Belə ki, biz ola bilər verilənlər bazası ki, həyata ki, indi mənim PHP kodu və ya hər hansı bir dildə, Mən, məsələn, yoxlamaq yoxdur mütləq bu istifadəçi adı yoxdur Mən kimsə qeydiyyatdan imkan əvvəl var? Verilənlər bazası adlı iki adam imkan verəcək David və ya Malans bu halda qeydiyyatdan keçməlisiniz. Və bir kənara kimi, hətta bu olsa menyu yalnız birini seçin imkan verir, unikal index var biridir super sürətli performans üçün dizine, lakin bu da unikallığı tətbiq. Və biz geri gəlmək lazımdır nə yalnız bir anda demək iki. Eyni zamanda, mən getmək əgər mənim ikinci sıra olan istifadəçi adı, mən müəyyən etməlidir Ad benzersiz olmalıdır ki? Xeyr, əlbəttə ki, ola bilər, çünki yaxşıdır iki David var Bu otaqda Malans, çox güman ki,. Amma biz başqa bir ad seçə əgər, biz, şübhəsiz ki toqquşma ola bilər. Masalar və kimi hash geri düşünün. Belə ki, biz, şübhəsiz ki, istəmirik adı sahəsində unikal etmək. Belə ki, biz yalnız tərk etmək olacaq ki tire, tire, tire, heç bir şey kimi. Mən tərk gedirəm tək başqa hər şey. Həqiqətən, bu sahələrdə ən biz qayğı yoxdur. Və mən bu saxlamaq üçün hazır olduğumu, , internet əməkdaşlıq əgər Mən çox, çox, çox Saxla basın və yavaş-yavaş bazası xilas etmir. Və indi bu geri Ben interface olan etiraf, ilk baxışda böyük deyil. Amma gedirəm bütün basın sol üst söz istifadəçi. Mən burada getmək üçün gedirəm basın İstifadəçilər və default, onu bəzi SQL icra, lakin bir an ki, daha çox. Burada nə bir xülasə. Və görmək ki, narahat deyil burada Latın və İsveç qeyd. Bu yalnız default var parametrləri, ilk MySQL, çünki, və ya PHP MyAdmin, iki bir baş Bəzi İsveç insanlar tərəfindən yazdırdı. Lakin burada bizim halda yersiz var. Bütün hüquqlar, belə ki, niyə var Bu bütün maraqlı? Bu çıxır, mən data əlavə edə bilərsiniz kodu yazılı bir bazasında. Mən irəli getmək və alıram burada mənim fayl, mən irəli getmək və kimi iddia gedir Bu verilənlər bazası, simli olan bu anda deyil, lakin o, biz problem almaq yeddi müəyyən zaman ola bilər. Mən irəli getmək üçün gedirəm və , sorğu adlı funksiyası yerinə Hansı problem verəcək ki, yeddi paylama kodu müəyyən ən azı bir mübahisə edir, olan yalnız bir simli edir. SQL kodu A string. Belə ki, necə öyrənmək üzeresiniz Yapılandırılmış Sorğu Dil yazın. Mən yeni bir sıra daxil etmək istəyirsinizsə mənim Verilənlər bazası kimsə təqdim edib, çünki mənim kodu bir forması, Mən sözün ki istifadəçilər daxil aşağıdakı yazmaq sahələri: istifadəçi adı, vergül, adı, dəyərlər, və indi daxil etmək lazımdır Malan, və quote kimi bir şey, dırnağı bağlamaq "David Malan. Və indi hətta SQL ilə tanış olanlar üçün, niyə vahid quotes istifadə edirəm bu yaşıl simli daxilində? Nə səbəb burada ola bilər? Mən ATƏT-qarışaraq iki dildə deyiləm edək. Query bir PHP funksiyası lakin bir mübahisə edir. Və dəlil özü üçün var ola adlı bir dildə yazılmışdır SQL, Yapılandırılmış Query Language. Belə ki, hər şey ki, mən yalnız burada qeyd edib SQL adlanan bu dilidir. Belə ki, bir quotes ilə nə, yalnız bir sürətli ağlı başında olma çek kimi? Davam et. Onlar strings istəyirik. Belə ki, quote, dırnağı bağlamaq Malan və quote, dırnağı bağlamaq David Malan strings var. Və yalnız indi daxilən düşünür C və PHP haqqında nə bilmədən, niyə bunu, Mən adətən etməyib strings üçün istifadə ikiqat quotes? Niyə bunu istəmir? Evet? Auditoriya: [işitilemez] DAVID Malan: Məhz. Mən artıq istifadə edirəm, çünki yolda ikiqat quotes dəlil kənarda PHP funksiyası, Mən yalnız tərcüməçi çaşdırmaq bilər. Bu bilmirəm, bu birlikdə getmək yoxdur? Bu birlikdə getmək edirsiniz? Bu birlikdə getmək edirsiniz? Belə ki, mən əvəzinə alternativ. Və ya bu kimi bir şey ola bilər backslash quote və ya backslash quote. Açığı, yalnız başlayır çox okunmaz və çirkin almaq. Amma ki, nail olmaq olardı həmçinin eyni nəticə. Mən əgər Belə ki, bu icra sorğu İndi nə görmək edək. İndi və daha irəli getmək üçün gedirəm PHP kodu, icra çox olan siz oynamaq lazımdır harada problemi, yeddi müəyyən Mən əvəzinə PHP MyAdmin getmək üçün gedirəm. Mən əl gedirəm SQL nişanı getmək üçün, və mənə interface zoom imkan. Mən yapışdırıb gedirəm Mən yalnız tipli şey. Və rəng kodlaşdırma var İndi bir az dəyişib yalnız proqram format çünki hər şeyi fərqli bir az. Amma mən etdik ki, görürsünüz Mən indi daxil, bildirib etdik. Mən vergül, sonra, belirlediğiniz ayrılmış parenthesized siyahısı iki Mən daxil etmək istəyirəm sahələri və sonra mən sözün bildirib etdik dəyərlər başqa paren izlədi və sonra iki dəyərlər Mən plug-in istəyirəm, və İndi yaxşı tədbir üçün, Mən sonunda nöqtəli vergül qoymaq lazımdır. Belə ki, bu PHP deyil C. deyil. Bu artıq SQL, və mən onu sovuşdurmaq alıram ki, bu web-based interface daxil yalnız mənə imkan gedir, tezliklə mən Go basın kimi, bazasında bu sorğu icra CS50 IDE daxilində çalışır. Belə ki, bu yaxşıdır. Dedi Notice bir sıra daxil, super sürətli getdi 0,0054 saniyə məlumatlar daxil etmək üçün. Belə ki, olduqca sağlam səslənir. Bu, mənim sorğu biçimlendirildikten yalnız görmək üçün mənim üçün rəng kodlu versiyası növ. Amma indi basın İnsanlar, hətta, ki, qeyd clutter bir çox var, baxmayaraq ekran, mənim masa iki satır var. Belə ki, mənə irəli getmək və bir nə edək. Bunun əvəzində, mənə imkan yenidən SQL nişanı getmək. Və bu zaman mən kimi bir şey daxil olacaq Rob və onun adı Rob Bowden olacaq. Bowden. Nin Saxla basın edək. Bağışlayın, daha gedin. Daha Browse basın və indi iki satır var görürsünüz. Belə ki, bu, yalnız bir yol daha mürəkkəbdir açılması Google Spreadsheets yolu və yalnız bir sütun bir sıra yazaraq. Lakin əsas ki, nə var biz indi sintaksis var olan kod yazmaq üçün ki, nəticədə, biz, həqiqətən bilər bir və bunu. Ki, PHP dəstəkləyir Xatırladaq super qlobal dəyişənlər. Dollar daxilində nədir PHP GET underscore imzalamaq? Biz bir nəzər etdi və ya iki sadə nümunələri. Və PSet6, siz salam var geri Bu dəyişən istifadə dot PHP. Nə var gedir? Yoxsa bu nədir? Bir az louder. Auditoriya: [işitilemez] DAVID Malan: Bu bir qar var serialın toxum olan Bir deyərək bir xülya yoldur əsas dəyər cüt var array. Və düymələri rəqəmli deyil. Onlar söz və ya strings istəyirik. Və xüsusi, nə o əsas dəyər cüt var? Onlar haradan gəlirsən? Bağışlayın? Auditoriya: [işitilemez] DAVID Malan: No? Harada o əsas yoxdur dəyər cüt gəlir? Daha demək? Yenə? Mən yalnız bir eşitmə bir şey Am? [Gülüş] Bəli, doğru? Auditoriya: [işitilemez] DAVID Malan: Bəli, onlar sorğu simli gəlir. Belə ki, zaman geri əgər Google ilə ifa etdiyiniz zaman və biz Google.com çizgi getdi etdik Axtarış sual işarəsi q, pişik bərabərdir Mən hit əgər daxil edin və əgər Google, PHP həyata keçirilmişdir Google yazırdı ki, PHP kodu dollar işarəsi etmək imkanı var ki, olan daxilində almaq vurğulamaq əsas adlı Q və dəyəri sonra istifadə edə bilərsiniz ki adlanan cats ilə faktiki axtarış etmək üçün istifadə olunur. Belə ki, əslində, mən nə gedirəm İndi mənim PHP kodu geri yoxdur Siz yenə PSet7 da daha çox lazımdır ki,. Və əvəzinə sayede ağır kodlu dəyərlər olan kimi görünmür çox dinamik haqqinda, Mən sizə bir iltifat vermək gedirəm faktiki code nə edəcəyini. Siz iki qoymaq olardı sual bu kimi olur. Mən istifadəçi adı nə bilmirəm. Mən nə bilmirəm adı, olacaq amma mən bilmirəm dinamik onları almaq. Belə ki, biz indi yazılı etdiyiniz code əgər Google servers çalışan indeksi, və ya bu salam dot əgər PSet6 ilə gəlir PHP, Mən keçir gedirəm sorğu funksiyası yalnız printf kimi, iki dəlilləri. Quote, GET, dırnağı bağlamaq istifadəçi adı, və quote, dırnağı bağlamaq adı almaq. İndi nə hiss ümumi quruluşu burada. Mən sol var zəng tərəfdən, bu funksiya PHP sorğu çağırıb. Mən hələ bir ilk var dəlil, mətn yalnız bir string. Lakin mətnin ki, simli edir SQL adlı dilində yazılmış. Və səmimi, bu böyük bir dil deyil. Biz yalnız danışmaq olacaq Bu rəsmi bu gün həqiqətən. Və sonra problem müəyyən yeddi nisbətən var biz istəyirik neçə xüsusiyyətləri leverage gedir. sual işarələri, baxmayaraq ki, plug demək başqa dəyərində burada dəyəri və plug burada. Və bildiriş, mən çıxarılmışdır nə quote-- lənətləmək ətrafında Kotirovka ətrafında pseudocode Bu dəfə olur. Mən kotirovka çıxarılmışdır sonra sual işarəsi ətrafında işarələri Bağışlayın, bu dəfə ətrafında. Belə ki, nə bu barədə gözəl sual işarəsi xüsusiyyət PHP, Ruby dəstək çalışır və Python və digər dillərdə, bu yalnız bəzi plug deməkdir burada qiymətləndiririk və nə bilirik? Siz istifadə edilməsi anlamaq bir quotes və ya cüt quotes. O məni narahat etməyin intellektual maraqsız ətraflı. Lakin, əmin doğru etmək Mənim code nəticədə ki, əməliyyat və təhlükəsiz olan uzun əvvəl bir mənası var. İndi neçə arqumentlər yalnız, cəmi aydın, sorğu funksiyası alaraq edir? Hər kəs daha iki səs istəyirsiniz? Three? Əlbəttə, niyə? Niyə üç? Auditoriya: [işitilemez] DAVID Malan: Məhz. birinci hissəsi simli edir. İkinci arqument dollar əlamətidir GET istifadəçi adı bracket vurğulayır. Və üçüncü arqument Eyni şey, ancaq adı. İndi, başqa sözlə, belə ki, Mən bir web formu olsa ki, mətn sahələri idi istifadəçi adı üçün bir, onun üçün bir və ya onun adı, yalnız kimi bir veb görmək olardı Siz qeydiyyatdan zaman bir bax, bu qüdrəti geri sonunda kodunu olmaq həqiqətən durub indi yoxdur bazasında. İndi əksinə, sürətli irəli edək. Bir istifadəçi indi düşünək giriş və istədiyiniz olub-olmadığını yoxlayır PHP kodu yazmaq yalnız daxil olan şəxs bir istifadəçi həqiqətən, siz bilər olduqca sadə sintaksis istifadə edin. Siz deyək seçin demək olar star hər şey deməkdir harada, ulduz. Mən nə bilmirəm mən istəyirəm, belə ki, yalnız mənə vermək masa bütün sütunlar users harada adlanır və bu gözəl. Select nə dəstəkləyir olan bir xəbər adlı istədiyiniz seçmə yolu kimi. Harada istifadəçi adı bərabərdir quote, dırnağı bağlamaq Malan. Belə ki, burada da mən əlaqədar sonra dəlil daxili bir PHP funksiyası, SQL kodu bir line. Və SQL kodu bu vaxt sanki gedir quote üçün axtarış, Malan dırnağı bağlamaq. İndi ki, bütün faydalı deyil mən ki keçmək gedirəm və mən üz qoymaq gedirəm Brady bu tip, və getmək və plug-in yerinə Burada bir sual işarəsi. Belə ki, yalnız aydın olmaq üçün nə mənim ikinci dəlil olmalıdır kimsə yalnız və I daxil edir əgər o, həqiqətən, əgər check istədiyiniz Bir istifadəçi? Auditoriya: [işitilemez] DAVID Malan: Bəli. Mən dollar işarəsi vurğulamaq eşitmək Quote, dırnağı bağlamaq istifadəçi adı alın. Və mənə qayıtmalıdırlar Mənim bazasında satır hər hansı ki Malan bir istifadəçi adı var. İndi ümid edirəm ki, mən geri almaq üçün gedirəm sıfır Malan burada heç əgər, və ya bir O varsa. Mən geri almaq lazımdır iki və ya üç və ya dörd. Niyə? Auditoriya: [işitilemez] DAVID MALAN: Mən, unikal dedi? Simple səbəb. Mən dedim, çünki bu var yalnız məntiqi, unikal, Yalnız sıfır və ya bir Malans ola bilər bu verilənlər bazası masa. İndi gördüm kənara, yalnız belə kimi Bu, mən istifadə saxlamaq, baxmayaraq ki GET və PSet6 yalnız istifadə olsa da , Əlbəttə ki, POST ola bilər GET. Və Post başqa Xatırladaq ki, məlumat təqdim texnika bir formada, lakin URL görsənmir. Bu, əlbəttə ki, bir az daha təhlükəsiz istifadəçi adı və parol kimi şeylər, olan PSet7, əslində, iştirak edəcək. Belə ki, PHP bunu edək MyAdmin və nə görmək. Mən MySQL nişanı getmək üçün gedirəm. Və ki, default dəyəri, qeyd PHP MyAdmin, yalnız faydalı olmaq üçün cəhd harada istifadəçilər etibarən ulduz seçməkdir. Yaxşı, bir, belə ki, həmişə doğru bu effektiv silly var yalnız hər şeyi seçin. Amma bir az gedirəm daha xırdaçı və əl istifadəçilər SELECT ulduz yazın. İndi texniki, siz masa adını sitat. Bu lazımdır ki, nadir, lakin bu deyil qeyd ABŞ klaviatura sizin normal quotes. Bu qondarma backtick, olan sol üst tərəfdən ümumiyyətlə klaviatura künc. Ancaq lazımdır ki, nadir var həqiqətən ki, narahat etmək lazımdır, mən yalnız hər halda onları buraxmaq lazımdır. Belə ki, indi mənə irəli getmək və getmək hit imkan. Neçə-neçə satır I almaq lazımdır geri Mən istifadəçilər ulduz seçin? Auditoriya: [işitilemez] DAVID Malan: əmin satır sayı. Amma bu neçə İndi konkret hekayə? Iki, var idi, çünki Mənə və Rob var idi. Mən Go basın Belə ki, mən vizual ki, görəcəksiniz Mən, həqiqətən, geri iki satır kazanılmış etdik. Clutter bir çox var ekran, amma yalnız iki satır oldu. Mən bir daha bunu əgər əksinə, nə Istifadəçilər, harada istifadəçi adı FROM SELECT star quote, dırnağı bağlamaq bərabərdir Malan, indi, Go basın əgər Mən yalnız geri bir sıra almaq üçün gedirəm. Və nəhayət, mən əgər bu kimi bir şey, güman Mən qayğı yoxdur ki, hər şey əldə, indi cür mənasız, yalnız iki sütun var, çünki. Mən seçilməsi alıram kimi deyil məlumatların böyük məbləği. Mən irəli getmək və güman FROM adı seçin yoxdur istifadəçi adı Malan bərabərdir istifadəçilər, nə vicdanla SQL haqqında gözəl, Bu, həqiqətən, yalnız deyil ki, Siz nə demək. Bu olduqca qısa, lakin siz sözün yalnız istədiyiniz nə demək. Istifadəçilər harada seçin adı istifadəçi adı Malan bərabərdir. Və bu, həqiqətən ki açıq deyil. Belə ki, indi mən Go neçə hit əgər satır Mən geri almaq üçün gedirəm? One, yalnız çünki Malan, inşallah. Və ya sıfır o deyil, əgər var, lakin maksimum biridir. Mən geri neçə sütun olacaq? Neçə sütun? Bu dəfə mən yalnız gedirəm Mən çünki bir almaq hər şey olan ulduz seçin. İndi yalnız adını seçilməsi, mən alıram yalnız bir sütun və bir sıra geri almaq. Və bu, müvafiq sort görünür gülünc, yalnız axtarır super bu kimi kiçik. Belə ki, həqiqətən nələr olur? Bir SQL icra zaman sorğu seçin istifadə nə alırıq geri bazası Müvəqqəti masa kimi satır və sütunlar ilə, bəlkə, lakin bir şey buraxmaq ki, həqiqətən, sizin tərəfindən seçilmiş deyil. Belə ki, kimsə böyük bir olsaydı kimi bütün tələbələr tablo bir üçün qeydiyyatdan tələbə qrupu, demək, Mənə var birinci bütün vermək Bizim tələbə qrupu üçün qeydiyyatdan nə sizin həmkarı tələbə qrupu edə bilər onlar yalnız əl edə bilər ki, bütün tablo. Bu seçin ulduz deyən kimi. Və əgər bir az annoying var Yalnız birinci istədi. Və belə ki, əvəzinə, ifadə edərək, verilənlər bazası masa seçin star burada il bərabərdir quote, dırnağı bağlamaq birinci, Bu sizin dost sanki var tələbə qrup sözün qeyd və kopyalanamaz yalnız birinci satır, yeni Google onları yapışdırılır Tablo və ya Excel faylı və geri təhvil yalnız nəticələnən fayl. Ki, gedir ki, bütün var konseptual burada. Belə ki, sonunda, biz nə edə bilər bəzi olduqca fancy şeyi istifadəçi kimi şeylər saxlanılması ilə və parol və s. Lakin, bu çıxır, biz bunu etməliyik fərqli bu bir az. Bu, yalnız ki, smart deyil bir istifadəçi adı və parol saxlamayın. Əvvəllər kimsə, mən hesab edirəm burada, bir ID irəli sürdü. İndi ID kimi ola bilər Harvard ID və ya Yale nin Net ID, lakin hətta sadə ola bilər Bizim verilənlər bazası halda. Şübhəsiz ki, ümumi halda başqa sütun var. Mən getmək üçün gedirəm irəli və masa redaktə. Və ilə ətrafında oynamaq əgər PSet7 bu interface, Siz kontrol edə bilərsiniz ki, görürsünüz Burada bu düyməsini basın və əlavə masa başında sahəsində. Mən Go basın indi əgər, gedir Mənə o formalarından biri vermək Əvvəllər. Mən ID adlı sahəsində əlavə etmək üçün gedirəm. Və mən sayısal type etmək üçün gedirəm. Mən bütün dəstə var bir Numerics üçün qiymətləndirir. Mən yalnız bir int seçmək gedirəm və disparate ölçüləri barədə narahat olmayın. Mən müəyyən etmək yoxdur bir uzunluğu və ya dəyəri, bu olacaq, çünki 32 bit nə olursa olsun. Features, biz əvvəl görmədim. Bu hər hansı bir hər hansı bir maraq menyu variantları bu dəfə? Bir INT üçün? Nə təklif etdi? Yox? Bu hər hansı bir mənada edə bilərəm? Bəli. Sağ, imzasız, evet? Gedirik, əgər Ümumiyyətlə vermək hər kəs bir unikal nömrəsini olan Bu hekayə harada gedir, Mən, həqiqətən, yalnız istəyirəm Bir şəxs sıfır kimi sayı üçün və bir və iki, üç və dörd. Mən məşğul ehtiyac yoxdur mənfi nömrələri ilə. Bu, sadəcə hədsiz mürəkkəb kimi görünür. Mən dörd milyard mümkün dəyərlər istəyirəm, Körpü milyard mümkün dəyərlər, mən yalnız iki dəfə Mənim INT gücü. Bir kənara, siz aid istəyirsinizsə As Facebook kimi bu şey, geri mənim gün zaman növ Facebook ilk çıxdı Mən onlar nə iman onların MySQL verilənlər bazası istifadə bir istifadəçi saxlamaq üçün identifikator, yalnız bir INT idi. Amma əlbəttə, bir çox var Dünyada real insanların. Saxta Facebook bir çox var dünyada düşür. Və belə nəhayət, Facebook daşdı bir INT ölçüsü, dörd milyard dəyəri. Siz niyə baxsaq olan ətrafında və web var ki, siz deyə bilər nə Sizin unikal ID edir. Və siz istifadəçi adı seçdi heç əgər Facebook, sizin unikal ID görəcəksiniz. Mən profile dot PHP hesab sual işarəsi ID bir şey bərabərdir. Ki, indi böyük bir kimi bir şeydir INT, və ya uzun uzun siz bir, 64-bit dəyəri olan və ya müqayisə bir şey. Belə ki, hətta real dünyada bu nə məsələlər nəticədə bəzən əhəmiyyətli. Mən əgər o, burada çıxır mənim istifadəçilər unikal ID hər verilməsi Mən super açıq olmaq istəyirəm və minimal bu sahədə unikal. Bir var həyata Amma bu çıxır nomenklaturası gün parça çox ki, ilkin əsas var. Bir verilənlər bazası dizayn edirsinizsə masa və əvvəlcədən bilmək ki, masa sütun biri ki, və unikal satır müəyyən edəcək lazımdır cədvəldə, istədiyiniz Onu müəyyən və verilənlər bazası demək, Bu mənim əsas açardır. Dublikatları ola bilər digər sahələrdə, amma bu ki, verilənlər bazası deyirəm mənim əsas deyil, ən mühüm sahə, ki, unikal olmaq üçün təmin edir. İndi bu lazımsız görünür. İndi ki, biz təklif edirəm burada Saxla tıklayarak əlavə, sahəsində Çağırış və mən gedirəm irəli getmək və AI basın, biz geri gəlmək lazımdır bir anda edin ki. İndi ki, təklif edirəm mənim masa bu kimi görünür. Mən ID adlı INT sahəsində var İstifadəçi adı adlı CHAR sahəsində, bir VARCHAR adını sahə, lakin ID, Bu əsas və buna görə də unikal varsa, niyə yalnız sərf etdi vaxt nə təqdim səmərəli unikal bir ikinci sahəsində bir INT ID adlanır? Istifadəçi adı, geri idi artıq unikal dedik. Belə ki, yalnız məntiqi, ehtiyac yoxdur səbəbdən hər hansı bir məlumat bazası təcrübə , niyə bu yolu Mən təqdim ola bilər eləcə də mənim unikal identifikator kimi INT? Şeylərdir daha nə demək var? Auditoriya: [işitilemez] DAVID Malan: Random giriş asandır, niyə? Auditoriya: [işitilemez] DAVID Malan: Bəli, bu yalnız nömrələri daxil. Belə ki, əgər siz həqiqətən bu hesab bir masa, bir sıra kimi, indi unikal tanımlayıcıları var Mən ətrafında jump bilər. Və daha yaxşı hələ ki, nə qədər böyük bir INT yenidən olacaq? 32 bit və ya dörd bytes. Necə böyük mənim istifadəçi adı olacaq? Maksimum? 16 bytes. Belə ki, həqiqətən, haqqında qayğı əgər Sizin kodu performans, Siz istərdiniz geri pset5 düşünmək dörd byte dəyəri və ya 16 axtarmaq üçün byte dəyəri, sağ? Bu, həqiqətən kimi sadə deyil. Siz çox iş kimi dörd dəfə etmək lazımdır o, çünki istifadəçi üçün axtarış 16 bytes var. Belə ki, sözün var olmaq üçün bütün 16 bayt müqayisə bəli əmin, mən istəyirəm istifadəçi adı var. Bir INT üçün, siz isə yalnız dörd bayt ilə bunu. Və bir kənara edənlər üçün kimi kompüter hardware maraqlı, bu kimi bir şey uyğun çıxır bir INT və ya bir şey bir 32-bit dəyəri bir kompüter bir register adlı Bu super deməkdir CPU, hətta aşağı, super sürətli kompüter hardware səviyyəsi. Belə ki, bütün ətrafında yalnız üstünlükləri var. Belə ki, bu nə deməkdir? Əslində, zaman dizayn etdiyiniz bir zaman, demək olar ki, bütün verilənlər bazası masa Siz gedir yalnız siz qayğısına məlumatlar kimi, həm də bir şey unikal identifikator Bu, çünki gedir Bizi digər şeylər edək. Və burada bir problem üzərində səfər edək. Istifadəçilər var ki, düşünək yalnız istifadəçi adı və adları, lakin onlar da şəhərləri kimi şeylər var və dövlətlər və poçt kodları, ən azı ABŞ-da burada. Belə ki, mən irəli getmək üçün gedirəm və yalnız tez demək, Mənə daha üç sütun vermək Cədvəlin sonunda. Bu, City olacaq Bu, State olacaq bu Zip olacaq. İndi City, nə məlumat növləri Bu, bəlkə də, olmalıdır? VARCHAR? Mən nə bilmirəm uzun adı şəhərdir. Somewhere Amerikada var yəqin ki, bir ridiculously uzun söz, belə qədər, yalnız 255 ilə gedək tarixən və ya özbaşına. Dövlət, nə etmək istəyirsiniz? Qiyamət zəng, sağ? Nə ən səmərəli bəlkə var? Neçə simvol? Bəlkə yalnız iki, əgər biz yalnız bunu üz almaq, kimi, MA Massaçusets üçün və s. Belə ki, mən iki CHAR dəyəri getmək üçün gedirəm. Poçt indeksi maraqlı biri. Biz ki, 02138-da buradayıq Biz nə istifadə etməlidir təklif? Bu doğru, bir int var? INT, INT, qısa? Qisa iş olardı. Yox? CHAR və ya beş, lakin mən bir int istəyirəm. Nə üçün INT geri itələmək? Bu məni inandırmaq. Hansı bir INT, mənim fikir haqqında axmaq var? Bəli. Auditoriya: Daha çox yaddaş tutur. DAVID Malan: daha çox yaddaş up edin. Dörd bytes, ancaq istəyirik Bir poçt kodu təklif və ya beş bayt kimi kimsə, bir char kimi idi ki, həqiqətən deyil, eh kimi hiss edən halda. Yaxşı, fun hekayə. İllər əvvəl, istifadə üçün istifadə zaman Mənim e-poçt üçün Microsoft Outlook, Mən nəhayət Gmail keçmək istədi. Beləliklə, mən bütün ixrac mənim bir CSV faylı olaraq Outlook əlaqələr. Virgülle ayrılmış dəyərlər, olan yalnız mən demək bütün dostlarım adları var idi və son adları və telefon nömrələri və poçt kodları və ki, bütün. Və sonra mən etdi onu açılış səhv Excel olan bir var elektron tablo proqramı biz gördük kimi CSV faylları anlayır. Amma sonra, mən kimi, hit olmalıdır Bir nöqtədə Command və ya Control S. Və Excel yəqin zamanda Hər hansı bir zamanda qovuşdurmağımız bir xüsusiyyət idi ki, faydalı olmağa çalışdıq, bir sıra gördüm. Və sayı ilə başladı əgər adet sıfır, yalnız onları qurtarmaq olardı. Niyə aparıcı lazımdır edirsiniz integers haqqında adet sıfır? Onlar riyazi, mənasız istəyirik. Onlar mənasız deyilik ABŞ saxlayın sistemində. Belə ki, mən il yaşadım, bu gün, mən hələ də ki, dostları var zaman Mən kimsə lazımdır nadir hal bu gün müraciət, Mən hələ ki, mən görürsünüz , Cambridge bir dost var Massachusetts, 2138. Siz değilseniz bu annoying var program düzmək üçün çalışır zərflərin yaratmaq və ya yalnız aşağı jot. Və, bu səbəbdən var Mən yanlış data type seçdi. Belə ki, mən sizin fikir sevirəm. Bir CHAR sahəsində istifadə edək. Beş simvol, istisna olmaqla, bir künc halda var. Siz hələ mail göndərin varsa, bəzən bu gün kodları zip, Onlar kimi, istəyirik, üstəgəl dörd. Belə ki, biz sonra bir tire və lazımdır biz daha dörd ədəd lazımdır. Belə ki, vicdanlı olmaq, bu ola bilər bir çox müxtəlif yollarla getmək. İndi, mən saxlamaq üçün gedirəm Bu sadə və mən yalnız deyiləm bir ki, demək olacaq Beş CHAR dəyəri və biz istəyirik bütün dash plus dörd keçmək gedir. Lakin bu əvəzetmələr növ var. Və siz hesab edə bilər yaranan eyni problemlər telefon nömrələri və ya digər sahələri ilə. Və indi bu əslində ağılsız yol aşağı getmək üçün. Rob və mən və Hannah həm düşünək və Maria və [? Davon?] Və Andy və heyəti başqaları yaşayır Kembric, Massaçusets, 02138-ci ildə. Bu, həqiqətən, Mən ki, axmaq hiss Mənim users masa əlavə, şəhər, dövlət, və zip. Niyə? Auditoriya: [işitilemez] DAVID Malan: daha demək? Auditoriya: [işitilemez] DAVID Malan: Onlar həmişə istəyirik sağ, birlikdə getmək üçün gedir? Bu çıxır zaman, biz düşünmək üçün istifadə Bu exhaustively biz qədər olduğu bütün ABŞ axtarış və orada çıxır bəzi uyğunsuzluqlar var burada çox şəhərlər var qəribə eyni zip,. Amma indi 02138 bunun üçün müəyyən əgər həmişə Cambridge, Massachusetts niyə dünyada saxlamaq olardı verilənlər bazası Cambridge və MA və 02138 mənim üçün və Hannah və Rob və [üçün? Davon?] Və yaşamaq başqaları üçün burada Cambridge, bu mükəmməl lazımsız. Biz üz almaq lazımdır yalnız nə saxlanılması ilə? Just saxlayın kodu. Amma sonra, biz yalnız saxlamaq əgər poçt indeksi, mən yəqin ki, istəyirəm 02138 harada mənim haqqinda üçün bilmək. Belə ki, mən bir masa lazımdır. Və OK. Və əslində, bu biri dizayn masa dizayn prosesləri Siz həmçinin vasitəsi PSet7 edəcəyik ki, Siz ümumi məlumatların amil istəyirəm. Just biz faktoring olduğunuz kimi ümumi code və faktorinq ümumi Burada CSS üslub Çox bazasında, Mən yalnız benzersiz üçün 02138 lazımdır, əgər , kiminsə məmləkəti müəyyən Cambridge, kütləvi saxlamayın Sizin cədvəldə hər bir darn istifadəçi. Əksinə, adlı ayrı-ayrı masa var Zips var ki, nə sütunlar? Yəqin ki, bir ID sahə, yalnız, çünki prinsipləri biz indi söhbət edirik. 02138 üçün yəqin ki, bir zip sahəsində. Və sonra yəqin ki, nə digər sütunlar? Şəhər və dövlət, lakin yalnız bir var sıra 02138 üçün 02139 üçün bir sıra, 90210 üçün bir sıra. Və sözün Mən bilirəm, bütün poçt kodları. Belə ki, indi siz nə edə bilər? Bu, çünki, problemli indi isə iki masalar var. Belə ki, mənim users əsasən burada var, lakin onların şəhər dövlət informasiya burada. Belə ki, var, SQL ilə çıxır əslində bir yol, informasiya qoşulmaq və pset bu görəcəksiniz. Amma bu siz çıxır bu kimi bir şey. Istifadəçilər SELECT star, ON zips OL users poçt zips zip nöqtə bərabərdir nöqtə. Hansı bir az wordy edir, admittedly, lakin bu yalnız seçin hər şey deməkdir Mənim istifadəçi masa alaraq prosesi və zips masa. Bir onlara qoşul sahəsində Onlar sütun var. Belə ki, sanki bir şey bunu bu kimi və məni geri vermək yeni müvəqqəti masa ki, ki, böyük var, geniş var ki, bütün var Onların həm də sütun. Və, sadəcə, ola bilər bu kimi bir şey etmək üçün syntax. Belə ki, irəlidə bu var lakin olacaq digər dizayn qərarları olmaq üçün lazımdır yalnız göstəriciləri ilə etmək lazımdır həm də problemlər daxil çalışan. Əslində, bir problem var hər hansı bir məlumat bazası dizayn qovuşdurmağımız bəzən iki nəfər istəyirəm verilənlər bazası eyni satır daxil olmaq üçün masa. Belə ki, bu bir şey ki, biz lazımdır deyil həmçinin PSet7 qarşılaşa. Amma mən bir baxmaq istədiyiniz fikir SQL mümkündür hücum. Hansılardır yarana bilər problemlər? Belə ki, PSet7 bu qarşılaşa bilərsiniz. Və biz açıq nə demək Bu problem üçün kodlaşdırma həll edir. Amma yüksək səviyyədə sinif almaq əgər, xüsusilə əməliyyat sistemi, karşılaşacağınız olacaq atomicity bir məsələ, etməyə çalışırıq problemi Çox şeyi bütün bir dəfə fasiləsiz. Və mən bu təqdim istədiyiniz fikir bir məcaz ilə PSet7 üçün fikir Mən Margo özümü olduğu öyrənilən Seltzer nin CS164 əməliyyat sistemləri bundan sinif il. Bu yurt biri Tutaq ki, Sizin yurt otaq və ya ev soyuducu, və süd üçün real meyil var. Belə ki, siz siniflər ev gəlmək bir gün, siz soyuducu açmaq. Oh, lənət olsun. Soyuducuda heç bir süd var. Belə ki, soyuducu yaxın, , qapını bağlamaq yurt kilidi, köşedeki gəzmək CVS üçün, xətti almaq, və bəzi süd üçün həyata yoxlanılması başlayır. Və bu, bir müddət olacaq o lənətləmək özünü checkout çünki counters hər halda istifadə üçün əbədi edir. Belə ki, eyni zamanda, sizin roommate ev gəlir. O, həqiqətən, həmçinin süd bəyənir. Onlar yurt otağa gəlib, soyuducu açmaq, oh, bu darn. Heç bir daha çox süd var. Belə ki, o da köşedeki gedir. Amma indi bu yana iki kimi var və ya üç və ya dörd CVSes yaxın, Onlar biri getmək üçün nə Meydanda fərqli olanlar. Və indi, bir neçə dəqiqə Siz sonra, həm də ev gəlmək və heç uf, ən pis problem. İndi siz də çox süd var Bu turş getmək olacaq, çünki. Və süd istəyirəm, amma siz həqiqətən süd kimi deyil. Belə ki, indi bu bahalı idi səhv Siz də, çünki əsasında qərar qəbul edib bəzi dəyişən dövlət ki, prosesində idi sizin dəyişdirilir, süd almaq üçün gedir təşəbbüskarı. Belə ki, nə bəlkə insan ki, problemin həlli? Auditoriya: [işitilemez] DAVID Malan: sağ, qeyd yaz? Siz əgər həmişə bir qeyd tərk ki, şou ilə tanış. Bəli, bizə iki var. Belə ki, həmişə qeyd tərk, və ya sözün soyuducu kilidi asma kilit bir növ və ya kimi üstündən bir şey. Amma bu həqiqətən olacaq verilənlər bazası dizayn ilə əsas problem, Siz ola bilər, xüsusilə də zaman Çox brauzerlərdə, çox noutbuk, birdən çox istifadəçi bütün çalışır bir dəfə məlumat yeniləmə. Xüsusilə həssas məlumat maliyyə informasiya kimi, qovuşdurmağımız bir fond ticarət Sizin kimi web bina olacaq, Siz nə qədər pul yoxlamaq istəyirsinizsə nə siz və sonra kifayət qədər varsa, bir fond almaq? Amma nə başqası Sizinlə birgə hesabı var eyni zamanda çalışır bir fond almaq üçün necə? Belə ki, o yoxlanılması deyil Siz də hesab balansı, Eyni geri almaq cavab yoxdur süd var. Və ya hər iki cavab geri almaq Siz haqq-hesab $ 100 var. Siz də qərar qəbul etmək üçün cəhd edin bəzi şirkət fond bir pay almaq. İndi nə olar? Siz iki səhmlərin var? Siz heç bir səhmlərin var? Kimi problemlər yarana bilər. Belə ki, biz ki qarşılaşa bilərsiniz. SQL injection hücumların, təşəkkürlə, biz sizə yardım edəcəyik bir şey var, lakin bu xüsusi amansızlıqla var hələ də ümumi bu gün. Belə ki, bu, yalnız bir nümunəsidir. Mən heç bir iddia etmək ki, Harvard PIN sistemi bu hücum həssas. Biz cəhd etdik. Amma bilirsiniz ki, biz bu kimi bir sahə var. Və Yale nin Net ID bənzər var bu gün ekran axtarır. Və bu, çıxır ki, bəlkə PIN sistemi PHP həyata keçirilir. Bu were-- əgər onlar deyilik var bu kimi görünür kod ola bilər. Onlar iki dəyişənlər var. Mənə adınızı və şifrənizi verin post super qlobal dəyişən biz əvvəllər haqqında söhbət edir. Bəlkə Harvard bir sorğu var istifadəçilər SELECT ulduz kimi harada istifadəçi adı ki, bərabərdir və parol ki, bərabərdir. Mən yalnız deyiləm ki, qeyd istifadə edərək onu sayede digər buruq brace notation Yalnız bir dəyər plug deməkdir gün burada. Mən istifadə edirəm sual işarəsi texnika. Mən heç bir ikinci yoxdur və ya üçüncü dəlilləri. Mən yalnız sözün deyiləm simli özümü inşa. problem olsa da, ki, Kimsə bir scroob kimi, əgər, olan film istinad edir, bu kimi bir şey ilə logs, Mən nöqtələr xaric etdik adətən əhatə ki, O nə varsa parol, xüsusilə zərərli və onun parol bəlkə, 12345 edir adlı film başına "Spaceballs" lakin o, tənqidi növ beş sonra bir quote, sonra sözün söz və ya məkanında, sonra quote, dırnağı bağlamaq bir quote bir bərabərdir lakin o, nə çıxarılmışdır bildiriş? O, sağ quote çıxarılmışdır ki, O, sol quote çıxarılmışdır oldu. Çünki əgər bu təcavüzkar scroob nin prezumpsiyası insanlar yazdı ki, Bu PHP kodu, belə parlaq deyil bəlkə onlar yalnız bir tək var interpolation ətrafında quotes qıvrım aşırma dəyişən? Və belə ki, bəlkə, o cür ola bilər onların fikir başa onlar üçün, lakin bir şəkildə gedir Ona PIN sistemi hücumu imkan. Başqa sözlə, güman Bu kodu edir ki, və biz tipli scroob nə yerləşdirin. Bu pis, çünki bu, qırmızı. Və əsas mətn , o tipli nə scroob Harvard server bezemek bilər bir SQL sorğu tikintisi daxil bu kimi görünür string. Şifrə 12345 ya bir bir bərabərdir. Nəticədə olan məntiqi, Bu scroob daxil olacaq ki, onun parol əgər 12345 ya bir bərabər həmişə əlbəttə doğrudur biri, olan scroob həmişə olur deməkdir. Belə ki, yol düzeltmek üçün Bu hallarda bir çox kimi, daha müdafiə yazmaq olardı. Kimi bir şey istifadə etmək üçün bizim Faktiki sorğu funksiyası olan biz plug PSet7, görəcəksiniz sual kimi bir şey burada qeyd olunur. Və gözəllik sorğu funksiyası ki, biz Siz bu qarşı müdafiə vermək Sözdə SQL injection hücumların, Kimsə sizin kodu tricking olunur öz SQL kodu inyeksiya. Nə sorğu funksiyası Çünki Biz, həqiqətən, edəcəyik vermək, Siz sual işarəsi sintaksis istifadə əgər və ikinci və üçüncü dəlil, Bu əlavə nə var istifadəçi təmin giriş? Həmin backslash quotes. Belə ki, hər hansı bir potensial escape təhlükəli simvol. Bu, artıq qəribə görünür lakin bu həssas deyil bu deyil, çünki Artıq məntiq dəyişə ki, bütün parol, çünki İndi deyil bir quote, əslində, scroob parol. Belə ki, bəzi zarafatlar olub il ərzində bu barədə. Belə ki, bu bir fotoşəkili çəkdirdi bir park bəzi turk vasitəsi Siz ki, bəzi şəhərləri bilər və dövlətlər lisenziya scan üçün cəhd nömrəli Siz və ya bilet qanun layihəsi Siz Siz kimi, olmadan vasitəsilə getmək əgər, E-Z Pass şey. Belə ki, bu şəxs bəlkə ehtimal E-Z Pass sistemi yazılı nəfər belə parlaq deyil, və bəlkə onlar yalnız bir simli birlikdə Zəncirləmə, ki, o pis bilmədi yalnız onların fikir tam deyil, ancaq bir pis əmri yerinə, olan biz hələ qeyd etdik lakin yəqin ki, tahmin edə bilərsiniz. Bundan əlavə ki, silmək və daxil edin və yeniləmə və seçin, drop adlı söz də var, olan sözün hər şeyi silir verilənlər bazası, olan xüsusilə pis. Biz bu əgər zoom edə bilərsiniz görmək üçün bir az çətin deyil. Bu, indi məşhur karikatura deyil ki, indi gözəl ağıllı deyil və aydın. [Gülüş] Sərin, Bəli. Kind həyata geeking. Bu, sonra, var SQL injection hücumlar. Onlar istifadə edərək qarşısını almaq üçün belə asan istəyirik sağ code ya sağ kitabxana. Və siz ki PSet7 görəcəksiniz niyə biz sizə sorğu funksiyası verir. Belə ki, oyunlarınız bir neçə Biz istədiyiniz düşündüm ki, burada vermək bizim birlikdə qalan dəqiqələrində. Belə ki, kimi həftə sıfır xatırlayıram, biz Bu iki yüngül ampüller təqdim edən olan gözəl deyil yalnız, çünki Onlar olduqca etdiyiniz və rəngarəng, lakin onlar bir şey dəstək çünki Ərizə, bir API adlı Proqram İnterfeysi Və CS50 günə qədər, biz əsasən alın diqqət və POST, lakin bu çıxır PUT kimi digər HTTP fe'llər var. Və əslində, bu idi Həftə sıfır bir slayd vasitəsi Əgər siz kodu yazmaq əgər göndərir a la PSet6 bir HTTP request ki Bu mətn yığın ilə bu kimi görünür JSON adlanır altındakı, və ya JavaScript Obyekt Notation ki, biz gələn həftə haqqında danışmaq lazımdır, Siz yandırmaq və ya söndürmək və ya dəyişdirmək olar bu kimi işıqlar rəng. CS50 bəzi əlavə var, belə ki, New Haven burada həmin yüngül ampüller Siz borc istəyirsinizsə Onlara final layihələr üçün, bəzi Microsoft Kimi Bands, Siz bilək ətrafında geyinmək ki, Zinət əşyaları və saatlar eyni ki, bir API var ki, onlar üçün öz proqram yaza bilərsiniz. Biz bir haqq-hesab ilə var Apple iOS code belə ki, Apple Watch və ya varsa iPhone və ya iPad və ya iPod, Əgər siz kodu yazmaq olar ki, həqiqətən o çalışır. Biz bütün dəstə var vardır Arduinos, kiçik kiçik kompüter hallarda olmadan, mahiyyətcə, Siz USB vasitəsilə qoşula bilər ki, adətən öz Mac və ya PC, bu fiziki çalışır kodu yazmaq tez-tez onlara sensorlar var cihazlar belə ki, real dünya ilə qarşılıqlı bilər. Biz bütün dəstə var Leap Motion cihazlar, Mac üçün USB cihazları olan və Burada yenə New Haven PC. Və sizin Mac qoşulmaq əgər, Siz, həqiqətən, kompüter nəzarət edə bilərsiniz proqram yazmaqla ki, infraqırmızı şüaları vasitəsilə, insan əlləri olduğu tutulur, hətta klaviatura toxunmadan. Biz tez bölüşmək istədiyiniz fikir Məsələn, bu fikir. [MUSIC PLAYING] Belə ki, biz bir bütün var bunlar dəstə, da Myo qol lentlər adlı siz sizin ön kol üzərində qoymaq və sonra real nəzarət edə bilərsiniz dünya və ya bu kimi virtual dünya. [MUSIC PLAYING] Yoxsa, biz də bəzi Google var Kimi, sözün karton, Siz qoymaq ki, bir karton qutu sizin onu telefonunuzda üz, lakin slide ki, şüşə qoymaq Gözlərinizə həqiqətən yaxın telefon. Və Google Cardboard deyil $ 10 və ya $ 20 olduqca ucuz. Və bu kiçik linzalar var ki, bir az növbədə off Sizin insan üçün ekranda image gözləri dərinliyi hissi vermək belə ki, həqiqətən bir 3D var ki, Siz qarşısında mühit. Biz də bəzi Samsung Gear, olan Bu daha bahalı versiyası lakin eyni bir slide bilər Android telefon və illüziya vermək of-- və ya təcrübə vermək virtual reallıq. Bizim son iki dəqiqə, biz bu etmək üçün cəhd istədiyiniz düşündüm. Mən Colton nə layihə edə bilər, əgər Burada yalnız iştaha itiləmək üçün, Mənə davam və atmaq imkan Burada böyük ekranda up. Mənə işıqlar öldürmək edək. Colton, siz irəlidə getmək istəyirəm və bir an üçün hüceyrə qoymaq və üzərində gəlib mərhələnin orta? Və project-- istəyirsiniz bu Colton görür nə. İndi burada Wi-Fi var Bu cihaz üçün belə güclü deyil Bu super çekici ki, lakin Colton sözün bu sehirli Futuristik yerdə. O, yalnız bir şəkil görür. Siz onun sol və sağ gözünü görürük onun beyin birlikdə stitching ki, üç ölçülü olan onun üz mühit. O, yalnız burada menyu seçimi var. Və yenə də, o, bu qulaqlıq qalıcı bu bir Samsung telefonu ilə ki kabelsiz bizim yerüstü üçün layihələndirilməsi. İndi Mars, mən hesab edirəm ki mi? COLTON: Mən belə düşünürəm. I [işitilemez] əmin deyiləm. [Gülüş] DAVID Malan: çıxır Mars bu menyular var. COLTON: [işitilemez] bəzi sərin yerlərdə biz to-- getmək istəyirsinizsə DAVID Malan: Harada biz getmək istəyirsiniz? COLTON: [işitilemez] DAVID Malan: Və nin görək burada Colton indi bizə alaraq. COLTON: [işitilemez] DAVID Malan: Belə ki, bir çox var müxtəlif yerlərdə özünüz edə bilərsiniz. FAPIs var hansı vasitəsilə edə bilərsiniz oyunlar və ya qarşılıqlı yazmaq telefon, nəticədə, axır. Belə ki, həqiqətən, yalnız mobil telefon app yazılı. Lakin proqram sayəsində və qrafik imkanları, İndi Colton bu deyil kiçik kiçik kottec. Və riski özümüzü böyük, Colton və mən ətrafında qalmaq lazımdır isə burada sinif sonunda bu gün Siz gəlib və oynamaq istəyirsinizsə. Və biz onları gətirmək lazımdır geri gələn həftə həmçinin. Daha olmadan, ado bu gün üçün var. Biz gələn həftə görəcəksiniz. [MUSIC - Ragga TWINS "BAD MAN"]