1 00:00:00,000 --> 00:00:03,493 >> [Muzika] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG Lloyd: Në videot tona mbi tema web zhvillim, 4 00:00:07,100 --> 00:00:10,560 ne kemi përmendur konceptin e një bazë të dhënash disa herë, e drejtë? 5 00:00:10,560 --> 00:00:12,700 Pra, një bazë të dhënash ju jeni ndoshta i njohur me nga 6 00:00:12,700 --> 00:00:15,780 thonë se duke përdorur Microsoft Excel ose Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Është me të vërtetë vetëm një i organizuar vendosur i tabelave, rreshtave dhe kolonave. 8 00:00:20,650 --> 00:00:23,140 >> Dhe një bazë të dhënash është ku dyqanet tona Website 9 00:00:23,140 --> 00:00:26,760 informacion që është i rëndësishëm për faqen tonë të internetit për të punuar si duhet. 10 00:00:26,760 --> 00:00:30,150 Përsëri, një shembull i vërtetë i zakonshëm këtu po ruajtjen dhe fjalëkalimet 11 00:00:30,150 --> 00:00:32,824 në një bazë të dhënash, në mënyrë që kur një përdorues logs në faqen tonë të internetit, 12 00:00:32,824 --> 00:00:36,690 Baza e të dhënave mund të kërkohet për të parë nëse që përdoruesi ekziston në bazën e të dhënave. 13 00:00:36,690 --> 00:00:39,260 Dhe në qoftë se ata janë, duke kontrolluar se fjalëkalimi i tyre është i saktë. 14 00:00:39,260 --> 00:00:43,420 Dhe në qoftë se fjalëkalimi i tyre është i saktë, atëherë ne mund t'u japim atyre çfarëdo faqe 15 00:00:43,420 --> 00:00:45,370 ata janë duke kërkuar. 16 00:00:45,370 --> 00:00:48,590 >> Pra, ju jeni me siguri, përsëri, i njohur me këtë ide nga Excel ose Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets. 18 00:00:49,430 --> 00:00:52,980 Ne kemi bazat e të dhënave, tavolina, rreshta, dhe kolona. 19 00:00:52,980 --> 00:00:56,450 Dhe kjo është me të vërtetë lloj i vendosur themelore 20 00:00:56,450 --> 00:00:58,470 i avari hierarkik këtu. 21 00:00:58,470 --> 00:00:59,800 Kështu që këtu është një spreadsheet Excel. 22 00:00:59,800 --> 00:01:02,640 Dhe në qoftë se ju keni hapur ndonjëherë kjo apo një tjetër program i ngjashëm 23 00:01:02,640 --> 00:01:06,780 ju e dini se këto këtu janë rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Këto janë kolona. 25 00:01:08,760 --> 00:01:11,790 >> Ndoshta këtu poshtë, edhe pse ju mund të nuk e përdorin këtë funksion tmerrësisht much-- 26 00:01:11,790 --> 00:01:15,370 Unë do të zoom in-- ne kemi kjo ideja e një fletë. 27 00:01:15,370 --> 00:01:17,930 Pra, ndoshta këto fletë, në qoftë se Unë alternativ mbrapa dhe me radhë, 28 00:01:17,930 --> 00:01:21,600 tavolina të ndryshme që ekzistojnë në bazën e të dhënave time. 29 00:01:21,600 --> 00:01:25,210 Dhe në qoftë se ne vazhdojmë shembullin gjithë mënyra, emri i kësaj baze të dhënash 30 00:01:25,210 --> 00:01:26,940 është Libri 1. 31 00:01:26,940 --> 00:01:28,710 Ndoshta unë kam Librin 2 dhe 3 Librin. 32 00:01:28,710 --> 00:01:33,270 Pra, çdo skedar Excel është një bazës së të dhënave, çdo fletë është një tabelë, 33 00:01:33,270 --> 00:01:39,530 dhe brenda çdo tavolinë kam kjo ide e rreshtave dhe kolonave. 34 00:01:39,530 --> 00:01:41,900 >> Pra, si mund të punojnë me këtë bazë të dhënash? 35 00:01:41,900 --> 00:01:43,630 Si mund të merrni informacion nga ajo? 36 00:01:43,630 --> 00:01:47,540 E pra nuk është një gjuhë e quajtur SQL-- që unë zakonisht vetëm thirrje Sequel-- 37 00:01:47,540 --> 00:01:50,010 dhe ajo qëndron për Strukturuar Query Language. 38 00:01:50,010 --> 00:01:52,981 Dhe kjo është një gjuhë programimi, por kjo është një programimit mjaft i kufizuar 39 00:01:52,981 --> 00:01:53,480 gjuhë. 40 00:01:53,480 --> 00:01:56,407 Kjo nuk është fare si të tjerët që ne kemi punuar me. 41 00:01:56,407 --> 00:01:58,240 Por qëllimi i këtij gjuhë programimi 42 00:01:58,240 --> 00:02:01,570 është për të query një bazë të dhënash, për të të kërkojë informacion nga një bazë të dhënash, 43 00:02:01,570 --> 00:02:04,480 të gjeni informacion në një bazës së të dhënave, dhe kështu me radhë. 44 00:02:04,480 --> 00:02:08,449 >> Ne gjithashtu, në CS50-- dhe kjo është një shumë platformë të përbashkët, ajo që quhet MySQL. 45 00:02:08,449 --> 00:02:10,600 Kjo është ajo që ne i përdorim në kurs. 46 00:02:10,600 --> 00:02:12,880 Kjo është një burim të hapur platformë që përcakton 47 00:02:12,880 --> 00:02:16,732 një të ashtu-quajtur database-- relacionale një bazë të dhënash, në mënyrë efektive. 48 00:02:16,732 --> 00:02:18,440 Ne nuk kemi nevojë për të marrë në shumë detaje 49 00:02:18,440 --> 00:02:20,930 në atë bazë të dhënash relacionale është një. 50 00:02:20,930 --> 00:02:24,650 Por SQL gjuha është shumë i aftë në pune 51 00:02:24,650 --> 00:02:29,760 me MySQL dhe të tjera të ngjashme stilet e bazave të të dhënave relacionale. 52 00:02:29,760 --> 00:02:34,010 >> Dhe shumë instalimet e MySQL vijnë me diçka 53 00:02:34,010 --> 00:02:37,760 quajtur phpMyAdmin, e cila është një grafik user 54 00:02:37,760 --> 00:02:40,970 interface-- një GUI-- që e bën atë një pak më shumë 55 00:02:40,970 --> 00:02:44,410 përdorues miqësore për të ekzekutuar pyetje bazës së të dhënave, 56 00:02:44,410 --> 00:02:48,980 sepse bazat e të dhënave nuk janë përdorur vetëm nga programuesit e avancuar, e drejtë? 57 00:02:48,980 --> 00:02:51,510 Ndonjëherë ka këto biznese të vogla, 58 00:02:51,510 --> 00:02:53,900 dhe ata nuk mund të përballojë për të punësojë një ekip i programuesve, 59 00:02:53,900 --> 00:02:56,700 por ata ende kanë nevojë për të ruajtur informacion në një bazë të dhënash. 60 00:02:56,700 --> 00:02:59,300 >> Diçka si phpMyAdmin bën shumë të lehtë për dikë 61 00:02:59,300 --> 00:03:03,630 i cili është programuar kurrë më parë për të marr dhe të bëhen të njohur me atë se si 62 00:03:03,630 --> 00:03:07,710 për të punuar me një bazë të dhënash. 63 00:03:07,710 --> 00:03:11,800 Problemi është, phpMyAdmin, ndërsa kjo është një mjet i shkëlqyer për të mësuar 64 00:03:11,800 --> 00:03:14,850 në lidhje me bazat e të dhënave, ajo është manual. 65 00:03:14,850 --> 00:03:18,050 Ju jeni do të duhet të hyni në ajo dhe të ekzekutojë komandat dhe llojin 66 00:03:18,050 --> 00:03:19,910 gjërat në dorë. 67 00:03:19,910 --> 00:03:23,160 >> Dhe, siç e dimë nga tonë Shembulli në programimin PHP web, 68 00:03:23,160 --> 00:03:26,550 që ka të bëjë me dorë gjëra në faqen tonë të internetit, 69 00:03:26,550 --> 00:03:30,970 në qoftë se ne duam një dinamike, të përgjegjshëm aktiv Faqja e internetit, ndoshta jo qasja më e mirë. 70 00:03:30,970 --> 00:03:33,980 Ne do të doja të gjetur një mënyrë për ndoshta Automate këtë disi. 71 00:03:33,980 --> 00:03:37,864 Dhe SQL do të na mundësojë për të bërë këtë. 72 00:03:37,864 --> 00:03:39,780 Pra, kur ne jemi duke shkuar për të fillojë të punojë me SQL, 73 00:03:39,780 --> 00:03:41,220 ne së pari duhet të ketë një bazës së të dhënave për të punuar me të. 74 00:03:41,220 --> 00:03:42,510 Krijimi i një bazë të dhënash është diçka që ju ndoshta 75 00:03:42,510 --> 00:03:45,350 do të bëni në phpMyAdmin, sepse ju do të duhet vetëm për të bërë atë një herë, 76 00:03:45,350 --> 00:03:49,690 dhe sintaksë për të bërë kështu është shumë më i thjeshtë. 77 00:03:49,690 --> 00:03:51,940 Kjo është një shumë më e lehtë për të bërë atë në një ndërfaqen e përdoruesit grafik 78 00:03:51,940 --> 00:03:53,520 se të shtypni atë si një komandë. 79 00:03:53,520 --> 00:03:55,186 Komanda mund të merrni pak i rëndë. 80 00:03:55,186 --> 00:03:58,889 Në mënyrë të ngjashme, duke krijuar një tabelë mund të merrni mjaft rëndë si. 81 00:03:58,889 --> 00:04:01,930 Dhe kështu gjëra të tilla si krijimin e një bazë të dhënash dhe duke krijuar një tabelë, të cilat ju jeni 82 00:04:01,930 --> 00:04:06,270 ndoshta vetëm do të bëjë once-- një herë në tryezë, një herë në database-- 83 00:04:06,270 --> 00:04:09,040 është në rregull për të bërë këtë në një ndërfaqe grafike. 84 00:04:09,040 --> 00:04:11,570 Në procesin e duke krijuar një tabelë, ju do të 85 00:04:11,570 --> 00:04:14,840 gjithashtu duhet të specifikojë të gjitha të shtyllat që do të jenë në atë tavolinë. 86 00:04:14,840 --> 00:04:18,149 Çfarë lloj informacioni të bëjë ju doni të ruajtur në tryezë? 87 00:04:18,149 --> 00:04:24,520 Ndoshta emri i një përdorues dhe data e lindjes, fjalëkalimin, numri përdorues ID, dhe ndoshta 88 00:04:24,520 --> 00:04:26,170 qytet dhe shtet, e drejtë? 89 00:04:26,170 --> 00:04:30,080 >> Dhe për çdo kohë doni të shtoni një përdorues në bazën e të dhënave, ne duam të merrni të gjithë gjashtë 90 00:04:30,080 --> 00:04:31,890 e atyre pjesëve të informacionit. 91 00:04:31,890 --> 00:04:34,840 Dhe ne bëjmë këtë duke shtuar rreshtave në tryezë. 92 00:04:34,840 --> 00:04:37,800 Pra, ne së pari të krijojë një bazë të dhënash, pastaj ne të krijuar një tabelë. 93 00:04:37,800 --> 00:04:40,100 Si pjesë e krijimit të një tavolinë, ne jemi pyetur 94 00:04:40,100 --> 00:04:44,280 të specifikojë çdo kolonë që ne do të dëshironim në këtë tabelë. 95 00:04:44,280 --> 00:04:47,247 Dhe pastaj si ne të fillojë për të shtuar informacioni në bazën e të dhënave 96 00:04:47,247 --> 00:04:49,580 dhe baza e të dhënave më query generally-- jo vetëm duke shtuar, 97 00:04:49,580 --> 00:04:51,610 por çdo gjë tjetër ne do-- ne do të jemi që kanë të bëjnë 98 00:04:51,610 --> 00:04:58,870 me rreshtave të tabelës, e cila është një informacion përdoruesit nga grup të tërë. 99 00:04:58,870 --> 00:05:03,210 >> Në mënyrë që çdo kolonë SQL është i aftë mbajtjen e të dhënave të një lloji të veçantë të të dhënave. 100 00:05:03,210 --> 00:05:06,560 Pra, ne lloj eliminuar këtë Ideja e llojeve të të dhënave në PHP, 101 00:05:06,560 --> 00:05:08,747 por ata janë kthyer këtu në SQL. 102 00:05:08,747 --> 00:05:10,080 Dhe ka shumë lloje të të dhënave. 103 00:05:10,080 --> 00:05:13,420 Këtu është vetëm 20 prej tyre, por kjo nuk është edhe të gjithë prej tyre. 104 00:05:13,420 --> 00:05:16,240 Pra, ne kemi ide si INTs-- Integers-- ne ndoshta e dini 105 00:05:16,240 --> 00:05:17,760 që kjo kolonë mund të mbajë integers. 106 00:05:17,760 --> 00:05:21,077 Dhe ka variacione thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Ndoshta ne nuk kemi gjithmonë nevojë për katër kafshon. 108 00:05:22,660 --> 00:05:26,800 Ndoshta ne duhet tetë bytes, dhe kështu që ne mund të përdorni këto variacione në integers 109 00:05:26,800 --> 00:05:28,510 të jetë pak më shumë hapësirë ​​të efektshme. 110 00:05:28,510 --> 00:05:31,899 Ne mund të bëjmë shifra dhjetore, ne mund të bëjë lundrues numra pikë. 111 00:05:31,899 --> 00:05:32,940 Këto janë mjaft të ngjashme. 112 00:05:32,940 --> 00:05:34,773 Ka disa dallime, dhe në qoftë se ju do 113 00:05:34,773 --> 00:05:37,330 si për të parë deri Lloj SQL e udhëzues, ju 114 00:05:37,330 --> 00:05:40,670 mund të shihni se çfarë i lehtë janë dallimet në mes tyre. 115 00:05:40,670 --> 00:05:43,250 >> Ndoshta ne duam të ruajtur informacion në lidhje me datën dhe kohën. 116 00:05:43,250 --> 00:05:47,047 Ndoshta ne jemi mbajtja e kur përdoruesi bashkua me faqen tonë të internetit, 117 00:05:47,047 --> 00:05:48,880 dhe kështu që ndoshta ne duam të ketë një kolonë që është 118 00:05:48,880 --> 00:05:52,820 një herë datë ose një timestamp që tregon kur përdoruesi në fakt 119 00:05:52,820 --> 00:05:54,130 nënshkruar. 120 00:05:54,130 --> 00:05:56,132 Ne mund të bëjmë geometries dhe linestrings. 121 00:05:56,132 --> 00:05:57,340 Kjo është në fakt shumë i ftohtë. 122 00:05:57,340 --> 00:06:01,410 Ne mund të ndajë një zonë gjeografike duke përdorur 123 00:06:01,410 --> 00:06:05,110 GIS koordinon për komplot nga një zonë. 124 00:06:05,110 --> 00:06:08,580 Pra, në fakt mund të ruajë atë lloj e informacionit në një kolonë SQL. 125 00:06:08,580 --> 00:06:11,390 >> TEXT është vetëm blobs gjigant të tekstit, ndoshta. 126 00:06:11,390 --> 00:06:12,840 ENUMs janë lloj i interesante. 127 00:06:12,840 --> 00:06:16,080 Ata në fakt ekzistojnë në C. Ne nuk bëjmë flasin për ta, sepse ata nuk janë të 128 00:06:16,080 --> 00:06:19,110 tmerrësisht përdoret zakonisht, të paktën CS50. 129 00:06:19,110 --> 00:06:22,680 Por kjo është një lloj i regjistruar të dhënave, e cila është e aftë për mbajtjen e vlerave limituar. 130 00:06:22,680 --> 00:06:25,940 >> Një shembull të vërtetë të mirë këtu do të jetë për të krijuar një enum ku shtatë 131 00:06:25,940 --> 00:06:29,394 Vlerat e mundëshme janë diel, e hënë, Martë, e mërkurë, e enjte, e premte, 132 00:06:29,394 --> 00:06:30,060 E shtunë, e drejtë? 133 00:06:30,060 --> 00:06:33,311 Atë ditë lloji i të dhënave Javën nuk ekziston, 134 00:06:33,311 --> 00:06:35,310 por ne mund të krijojë një renditura lloj të dhëna të tilla 135 00:06:35,310 --> 00:06:39,400 që kjo kolonë mund vetëm ndonjëherë të mbajnë një nga ato shtatë vlerave të mundshme. 136 00:06:39,400 --> 00:06:44,300 Ne kemi renditur të gjithë e vlerave të mundshme. 137 00:06:44,300 --> 00:06:47,630 >> Pastaj ne kemi CHAR dhe VARCHAR, dhe unë kam ngjyra këto gjelbër 138 00:06:47,630 --> 00:06:49,505 sepse ne jemi në fakt do të marrë një të dytë 139 00:06:49,505 --> 00:06:51,950 të flasin për ndryshim ndërmjet këtyre dy gjërave. 140 00:06:51,950 --> 00:06:55,780 Pra CHAR, ndryshe nga C ku CHAR ishte një karakter të vetëm, 141 00:06:55,780 --> 00:07:00,730 në SQL një CHAR referohet një varg gjatësi fikse. 142 00:07:00,730 --> 00:07:02,620 Dhe kur ne të krijuar këtë kolona, ​​ne fakt 143 00:07:02,620 --> 00:07:05,070 mund të specifikojë gjatësinë e vargut. 144 00:07:05,070 --> 00:07:08,080 >> Pra, në këtë shembull, mund të themi CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Kjo do të thotë se çdo element i këtij kolonë 146 00:07:11,190 --> 00:07:13,910 do të përbëhet nga 10 bytes të informacionit. 147 00:07:13,910 --> 00:07:15,770 Jo më shumë, jo më pak. 148 00:07:15,770 --> 00:07:21,780 Pra, nëse ne përpiqemi dhe të vënë në një 15 bit ose një element 15 karakter 149 00:07:21,780 --> 00:07:25,340 ose vlera në këtë kolonë, ne jemi vetëm të marrë 10 e parë. 150 00:07:25,340 --> 00:07:27,290 Në qoftë se ne kemi vënë në dy Vlera karakter të gjatë, 151 00:07:27,290 --> 00:07:30,700 ne do të kemi dy karaktere, dhe pastaj tetë kafshon null. 152 00:07:30,700 --> 00:07:34,990 Ne kurrë nuk do të jetë më efikas se kaq. 153 00:07:34,990 --> 00:07:37,727 >> Një VARCHAR është lloj i si nocioni ynë i një varg 154 00:07:37,727 --> 00:07:39,560 se ne jemi të njohur me nga C ose nga PHP. 155 00:07:39,560 --> 00:07:40,830 Është një varg gjatësi variabël. 156 00:07:40,830 --> 00:07:42,560 Dhe kur ju krijoni kjo kolonë, ju vetëm 157 00:07:42,560 --> 00:07:44,860 specifikojë gjatesite maksimale të mundshme. 158 00:07:44,860 --> 00:07:49,065 Pra, ndoshta 99, ose zakonisht 255. 159 00:07:49,065 --> 00:07:50,440 Kjo do të jetë gjatësia maksimale. 160 00:07:50,440 --> 00:07:52,890 Dhe kështu që në qoftë se ne kemi qenë magazinimin e 15 varg karakter, 161 00:07:52,890 --> 00:07:56,157 ne do të përdorim 15 bytes, ndoshta 16 bytes për terminator null. 162 00:07:56,157 --> 00:07:57,990 Në qoftë se ne u ruajtjen një tre varg karakter, 163 00:07:57,990 --> 00:08:01,120 ne do të përdorim tre ose katër bytes. 164 00:08:01,120 --> 00:08:03,050 Por ne nuk do të përdorim të plotë 99. 165 00:08:03,050 --> 00:08:05,190 >> Pra, pse do të kemi të dy? 166 00:08:05,190 --> 00:08:08,210 E pra, në qoftë se ne duhet të kuptoj se si diçka gjatë është me një VARCHAR, 167 00:08:08,210 --> 00:08:10,680 ne duhet të llojit të iterate gjithë ajo ashtu si ne e bëmë në C 168 00:08:10,680 --> 00:08:12,230 dhe kuptoj se ku ndalet. 169 00:08:12,230 --> 00:08:15,920 Ndërsa në qoftë se ne e dimë se gjithçka në këtë kolonë është 10 bytes, ndoshta 170 00:08:15,920 --> 00:08:19,220 ne e dimë këtë informacion, ne mund të kërcejnë 10 bytes, 10 bytes, 10 bytes, 10 bytes, 171 00:08:19,220 --> 00:08:21,790 dhe gjithmonë gjeni fillimi i vargut. 172 00:08:21,790 --> 00:08:25,210 >> Pra, ne mund të ketë disa tretur hapësirë ​​me një char, 173 00:08:25,210 --> 00:08:28,510 por ndoshta ka një tregti off e të pasurit shpejtësi më të mirë 174 00:08:28,510 --> 00:08:30,160 në lundrimit bazën e të dhënave. 175 00:08:30,160 --> 00:08:32,330 Por ndoshta ne dëshironi fleksibiliteti i një VARCHAR 176 00:08:32,330 --> 00:08:36,710 në vend të having-- Nëse CHAR ynë ishte 255, por shumica e përdoruesve tonë 177 00:08:36,710 --> 00:08:40,537 ishin vetëm inputting tre ose katër bytes vlerë e informacionit ose tre ose katër 178 00:08:40,537 --> 00:08:41,870 karaktere vlerë e informacionit. 179 00:08:41,870 --> 00:08:44,324 >> Por disa përdorues janë duke përdorur të gjithë 255, ndoshta 180 00:08:44,324 --> 00:08:45,990 VARCHAR do të jetë më e përshtatshme atje. 181 00:08:45,990 --> 00:08:49,840 Kjo është lloj i një tregti off, dhe përgjithësisht për qëllime të CS50, 182 00:08:49,840 --> 00:08:54,107 ju nuk duhet të shqetësohen shumë për nëse ju përdorni një char apo një VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Por në botën reale, këto gjëra kanë rëndësi, sepse të gjitha këto kolona 184 00:08:57,190 --> 00:08:59,300 marrë hapësirë ​​aktuale fizike. 185 00:08:59,300 --> 00:09:04,150 Dhe hapësirë ​​fizike, në bota e vërtetë, vjen në një premium. 186 00:09:04,150 --> 00:09:06,800 >> Pra, një konsideratë tjetër kur ju jeni ndërtimin e një tryezë të 187 00:09:06,800 --> 00:09:09,840 është që të marr një kolonë të jetë atë që quhet një kyç primar. 188 00:09:09,840 --> 00:09:14,350 Dhe një kyç primar është një kolonë ku çdo vlerë e vetme është unik. 189 00:09:14,350 --> 00:09:19,980 Dhe kjo do të thotë që ju mund të lehtë marr nga një rresht të vetëm vetëm duke shikuar 190 00:09:19,980 --> 00:09:22,450 në kyç primar të atij rresht. 191 00:09:22,450 --> 00:09:24,580 Kështu për shembull, ju në përgjithësi, me përdoruesit, 192 00:09:24,580 --> 00:09:27,210 nuk duan dy përdoruesit të cilët kanë të njëjtin numër përdorues ID. 193 00:09:27,210 --> 00:09:28,960 Dhe kështu që ndoshta ju keni shumë e informacionit, 194 00:09:28,960 --> 00:09:30,793 dhe ndoshta dy përdoruesit mund kanë të njëjtën name-- 195 00:09:30,793 --> 00:09:32,650 ju keni John Smith dhe John Smith. 196 00:09:32,650 --> 00:09:34,520 Kjo nuk është domosdoshmërisht një problem, sepse ka njerëz të shumta 197 00:09:34,520 --> 00:09:35,830 në botë me emrin John Smith. 198 00:09:35,830 --> 00:09:40,766 Por ne kemi vetëm një përdorues numrin ID 10, një përdorues numër 11, 12, 13 ID. 199 00:09:40,766 --> 00:09:42,640 Ne nuk kemi dy përdoruesit me numër të njëjtë, 200 00:09:42,640 --> 00:09:46,010 dhe kështu ndoshta numrat përdorues ID do të jetë një çelës i mirë primar. 201 00:09:46,010 --> 00:09:48,610 >> Ne nuk kemi asnjë dyfishimin, dhe ne tani mund unike 202 00:09:48,610 --> 00:09:52,619 të identifikojë çdo rresht të vetëm vetëm duke shikuar në atë kolonë. 203 00:09:52,619 --> 00:09:55,410 Zgjedhja çelësat primar në fakt mund të të bëjë operacionet e mëvonshme tryezë 204 00:09:55,410 --> 00:09:59,710 shumë më e lehtë për shkak se ju mund të levave fakti që rreshtat e caktuara do të 205 00:09:59,710 --> 00:10:02,720 të jetë unike, ose një kolonë të caktuar e bazës së të dhënave ose tabelë 206 00:10:02,720 --> 00:10:06,030 do të jetë unik për të marr Rreshtave jashtë veçanta. 207 00:10:06,030 --> 00:10:08,790 >> Ju gjithashtu mund të ketë një primar të përbashkët kyçe, të cilat ju mund të gjenin një pretekst 208 00:10:08,790 --> 00:10:11,720 për t'u përdorur, e cila është vetëm një kombinimi i dy kolonave që 209 00:10:11,720 --> 00:10:13,280 është e garantuar të jetë unike. 210 00:10:13,280 --> 00:10:16,410 Pra, ndoshta ju keni një të tillë Kolona se si dhe BS, 211 00:10:16,410 --> 00:10:19,290 një kolonë që është një, dy, dhe tre, por ju do të vetëm ndonjëherë 212 00:10:19,290 --> 00:10:23,660 kanë një A1 të vetme, një single A2, dhe kështu me radhë e kështu me radhë. 213 00:10:23,660 --> 00:10:28,980 Por ju mund të keni një B2, një C2, ose një A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Kështu që ju mund të keni sa të shumta, të shumta BS, ato të shumta, twos të shumta, 215 00:10:32,840 --> 00:10:38,567 por ju mund vetëm ndonjëherë të ketë një single A1, B2, C3, etj. 216 00:10:38,567 --> 00:10:40,400 Pra, siç thashë, SQL është një gjuhë programimi, 217 00:10:40,400 --> 00:10:42,024 por ajo ka një fjalor të kufizuar në mënyrë të drejtë. 218 00:10:42,024 --> 00:10:44,880 Kjo nuk është mjaft aq i shtrirë sa C dhe PHP dhe gjuhë të tjera 219 00:10:44,880 --> 00:10:46,350 që ne flasim në kurs. 220 00:10:46,350 --> 00:10:49,960 Kjo është më shumë një fjalëshumë gjuha sesa ajo që ne jemi 221 00:10:49,960 --> 00:10:52,789 do të flasim për këtë në Video, sepse në këtë video 222 00:10:52,789 --> 00:10:54,830 ne do të flasim për katër operacionet që ne 223 00:10:54,830 --> 00:10:55,720 mund të kryejnë në një tryezë. 224 00:10:55,720 --> 00:10:56,761 >> Ka më shumë se kjo. 225 00:10:56,761 --> 00:10:58,730 Ne mund të bëjmë më shumë se kjo, por për qëllimet tona, 226 00:10:58,730 --> 00:11:02,250 ne jemi në përgjithësi do të jetë duke përdorur vetëm katër insert operations--, 227 00:11:02,250 --> 00:11:05,360 zgjidhni, të rinovuar, dhe fshini. 228 00:11:05,360 --> 00:11:08,750 Dhe ju mund ndoshta me mend intuitive çfarë të katër këto gjëra bëjnë. 229 00:11:08,750 --> 00:11:12,520 Por ne do të shkojnë në një grimë i detajuar për secilën prej tyre. 230 00:11:12,520 --> 00:11:15,780 >> Pra, për qëllime të këtij Video, le të supozojmë 231 00:11:15,780 --> 00:11:18,870 ne kemi në vijim dy tavolina në një bazë të dhënash të vetme. 232 00:11:18,870 --> 00:11:23,460 Ne kemi një tabelë të quajtur Përdoruesit që ka katër columns-- numrin ID, emrin, 233 00:11:23,460 --> 00:11:25,350 fjalëkalimin, dhe emrin e plotë. 234 00:11:25,350 --> 00:11:27,430 Dhe ne kemi një sekondë tabela në të njëjtin dhënave 235 00:11:27,430 --> 00:11:32,129 quajtur moms që vetëm ruan informacion rreth një username dhe një nënë. 236 00:11:32,129 --> 00:11:33,920 Pra, për të gjithë shembujt në këtë video, ne do të 237 00:11:33,920 --> 00:11:37,945 të përdorin këtë bazë të dhënash dhe Përditësimet e mëvonshme për të. 238 00:11:37,945 --> 00:11:40,070 Pra, le të thonë se ne duam të shtoni informacion në një tryezë. 239 00:11:40,070 --> 00:11:44,460 Kjo është ajo që bën futur operacion. 240 00:11:44,460 --> 00:11:46,550 Në shpjegimin të gjithë këto komanda, unë jam duke shkuar 241 00:11:46,550 --> 00:11:48,860 për të ju jap një skelet të përgjithshme për të përdorur. 242 00:11:48,860 --> 00:11:51,661 Sepse në thelb, pyetje do duken mjaft të ngjashme, 243 00:11:51,661 --> 00:11:54,660 ne jemi vetëm duke shkuar për të ndryshuar pjesë pak më të ndryshme të informacionit 244 00:11:54,660 --> 00:11:56,750 për të bërë gjëra të ndryshme me tryezë. 245 00:11:56,750 --> 00:11:59,200 >> Pra, për INSERT, skeletit duket lloj i si kjo. 246 00:11:59,200 --> 00:12:02,230 Ne duam të futur në një tabelë të veçantë. 247 00:12:02,230 --> 00:12:05,290 Pastaj ne kemi një kllapë të hapur dhe një listë e shtyllave 248 00:12:05,290 --> 00:12:08,070 që ne duam të vënë vlerat në. 249 00:12:08,070 --> 00:12:10,974 Mbylle kllapa, pas vlerat, dhe pastaj 250 00:12:10,974 --> 00:12:13,390 përsëri, ne lista nga vlerat ne duam të vënë në tryezë. 251 00:12:13,390 --> 00:12:15,950 >> Pra, një shembull i kësaj do të jetë në vijim. 252 00:12:15,950 --> 00:12:19,170 Unë dua të futur në tryezë Përdoruesit columns-- vijim 253 00:12:19,170 --> 00:12:21,010 emrin, fjalekalimin dhe fullname. 254 00:12:21,010 --> 00:12:25,282 Pra, një rresht të ri, ku unë jam vënë në këto tri kolona dhe ne jemi 255 00:12:25,282 --> 00:12:30,030 do të vënë në vlerat Newman, USMAIL, dhe Newman. 256 00:12:30,030 --> 00:12:32,730 Pra, në këtë rast, unë jam vënë Newman vogle 257 00:12:32,730 --> 00:12:38,710 në kolonën emrin, fjalëkalimin USMAIL, dhe kryeqyteti i plotë emri N 258 00:12:38,710 --> 00:12:41,940 Newman në kolonën fullname. 259 00:12:41,940 --> 00:12:44,240 >> Kështu që këtu është ajo që baza e të dhënave dukej si më parë. 260 00:12:44,240 --> 00:12:48,250 Ja se çfarë tryeza përdoruesve në Top dukej si më parë ne e bëmë këtë. 261 00:12:48,250 --> 00:12:50,760 Pasi ne ekzekutojë këtë pyetje, ne të merrni këtë. 262 00:12:50,760 --> 00:12:54,790 Ne kemi shtuar një rresht të ri në tryezë. 263 00:12:54,790 --> 00:12:56,810 Por vini re këtë gjë që unë nuk përcaktoi, 264 00:12:56,810 --> 00:12:59,880 por disi kam një vlerë për të, e cila është ky 12 e drejtë këtu. 265 00:12:59,880 --> 00:13:02,820 Unë nuk them kam kërkuar për të vënë numrin e ID në atje. 266 00:13:02,820 --> 00:13:04,900 Unë të kërkuar për të vënë emrin, fjalëkalimin, fullname. 267 00:13:04,900 --> 00:13:06,440 Dhe unë e bëri atë, kjo është në rregull. 268 00:13:06,440 --> 00:13:07,760 >> Por unë gjithashtu mori këtë 12. 269 00:13:07,760 --> 00:13:09,490 Pse nuk kam marrë këtë 12? 270 00:13:09,490 --> 00:13:12,904 E pra, ajo rezulton se kur ju jeni të definimit 271 00:13:12,904 --> 00:13:15,570 një kolonë që do të jetë tuaj kyç primar, e cila është zakonisht, 272 00:13:15,570 --> 00:13:16,510 si i tha, një numër ID. 273 00:13:16,510 --> 00:13:18,718 Kjo nuk është gjithmonë domosdoshmërisht do të jetë një numër ID, 274 00:13:18,718 --> 00:13:22,380 por kjo është zakonisht një ide e mirë për të të jetë një lloj vlere integer. 275 00:13:22,380 --> 00:13:25,950 Ju keni një mundësi në phpMyAdmin kur ju jeni duke krijuar bazën e të dhënave tuaja 276 00:13:25,950 --> 00:13:31,130 ose tavolina juaj për të vendosur se kolona si bën rritjen auto. 277 00:13:31,130 --> 00:13:34,520 >> E cila është një ide me të vërtetë e mirë, kur ju jeni duke punuar me një kyç primar, 278 00:13:34,520 --> 00:13:39,330 sepse ju doni çdo vlerë në atë kolonë të jetë unike. 279 00:13:39,330 --> 00:13:43,310 Dhe në qoftë se ju harroni të specifikoni ajo për më shumë se një person, 280 00:13:43,310 --> 00:13:46,240 ju tani keni një situatë ku se kolona nuk është më unike. 281 00:13:46,240 --> 00:13:50,200 Ju keni dy bosh, kështu që ju nuk mund të më unike të identifikuar një column-- 282 00:13:50,200 --> 00:13:54,150 ose ju nuk mund në mënyrë unike identifikojnë një rresht të bazuar në atë kolonë. 283 00:13:54,150 --> 00:13:57,010 Ajo ka humbur të gjitha të saj Vlera si një kyç primar. 284 00:13:57,010 --> 00:14:02,010 >> Dhe kështu me sa duket atë që kam bërë këtu është konfiguruar ID e përdoruesit 285 00:14:02,010 --> 00:14:07,790 kolonë të rritjes auto në mënyrë që çdo herë që unë të shtoni informacion në tryezë, 286 00:14:07,790 --> 00:14:12,220 kjo automatikisht do të më jepni një vlerë për kyç primar. 287 00:14:12,220 --> 00:14:15,570 Kështu që unë kurrë nuk mund të harrojmë për të bërë atë, sepse baza e të dhënave do të bëjë atë për mua. 288 00:14:15,570 --> 00:14:16,587 Pra, kjo është lloj i bukur. 289 00:14:16,587 --> 00:14:18,670 Dhe kështu kjo është arsyeja pse ne kemi marrë 12 në atje, sepse unë kam 290 00:14:18,670 --> 00:14:21,772 vendosur atë kolonë deri në rritjes auto. 291 00:14:21,772 --> 00:14:23,730 Në qoftë se kam shtuar dikë tjetër ajo do të jetë 13, në qoftë se kam shtuar 292 00:14:23,730 --> 00:14:27,890 dikush tjetër ajo do të jetë 14, dhe kështu me radhë. 293 00:14:27,890 --> 00:14:30,190 >> Pra, le të vetëm të bëjë një futje më shumë. 294 00:14:30,190 --> 00:14:34,530 Ne do të futur në tryezë moms, në Veçanërisht, emri i përdoruesit dhe nëna 295 00:14:34,530 --> 00:14:37,390 kolona, ​​vlerat Kramer dhe Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 Dhe kështu që ne kishim këtë para. 297 00:14:39,140 --> 00:14:41,800 Pasi kemi ekzekutuar se SQL query, ne kemi këtë. 298 00:14:41,800 --> 00:14:47,290 Ne kemi shtuar Kramer dhe Babs Kramer në tryezë moms. 299 00:14:47,290 --> 00:14:48,350 >> Kështu që është futur. 300 00:14:48,350 --> 00:14:51,850 SELECT është ajo që ne përdorim për nxjerrjen informacion nga tabela. 301 00:14:51,850 --> 00:14:54,390 Pra, kjo është se si ne të merrni informacion nga bazën e të dhënave. 302 00:14:54,390 --> 00:14:59,589 Dhe komandat kështu që zgjidhni do të jetë përdorur shumë shpesh në programimin. 303 00:14:59,589 --> 00:15:02,130 Gjenerali framework-- skelet i përgjithshëm duket si ky. 304 00:15:02,130 --> 00:15:06,550 Zgjidh një sërë kolona nga një tavolinë, dhe pastaj opsionale 305 00:15:06,550 --> 00:15:11,090 ju mund të specifikoni një condition-- ose ajo që ne zakonisht e quajmë një kallëzues, 306 00:15:11,090 --> 00:15:13,010 zakonisht është termi që përdorim në SQL. 307 00:15:13,010 --> 00:15:16,490 >> Por kjo është në thelb ajo që rreshtave të veçantë ju doni të merrni. 308 00:15:16,490 --> 00:15:19,100 Nëse ju doni të, në vend të gjetjes së çdo gjë, ngushtuar atë poshtë, 309 00:15:19,100 --> 00:15:20,060 kjo është ajo ku ju do të bëni atë. 310 00:15:20,060 --> 00:15:22,777 Dhe pastaj opsionale, ju gjithashtu mund të porositur nga një kolonë të veçantë. 311 00:15:22,777 --> 00:15:25,860 Pra, ndoshta ju dëshironi të keni gjërat e renditura alfabetike bazuar në një kolonë 312 00:15:25,860 --> 00:15:27,540 ose alfabetike bazuar në një tjetër. 313 00:15:27,540 --> 00:15:30,610 >> Përsëri, KU dhe ORDER BY janë fakultative. 314 00:15:30,610 --> 00:15:32,681 Por ata ndoshta do të jetë useful-- veçanërisht 315 00:15:32,681 --> 00:15:34,680 KU do të jenë të dobishme për kufizoni kështu që ju nuk e bëni 316 00:15:34,680 --> 00:15:37,460 të marrë të gjithë bazës së të dhënave tuaj mbrapa dhe duhet ta përpunojë atë, ju vetëm merrni 317 00:15:37,460 --> 00:15:39,300 copat e tij që ju intereson. 318 00:15:39,300 --> 00:15:44,932 Kështu për shembull, unë mund të dëshironi të zgjidhni Numri i ID dhe fullname nga përdoruesit. 319 00:15:44,932 --> 00:15:46,140 Pra, çfarë mund të duket kjo si? 320 00:15:46,140 --> 00:15:48,270 Kështu që këtu është tabela përdoruesit ime. 321 00:15:48,270 --> 00:15:51,080 Unë dua për të zgjedhur idnum dhe fullname nga përdoruesit. 322 00:15:51,080 --> 00:15:52,300 Çfarë jam unë do të merrni? 323 00:15:52,300 --> 00:15:53,580 Unë jam duke shkuar për të marrë këtë. 324 00:15:53,580 --> 00:15:56,930 Unë nuk e kam ngushtuar atë poshtë, kështu që unë jam duke marrë numrin e ID për çdo rresht 325 00:15:56,930 --> 00:16:00,850 dhe unë jam marrë të plotë emrin nga çdo rresht. 326 00:16:00,850 --> 00:16:02,210 >> NE RREGULL. 327 00:16:02,210 --> 00:16:05,640 Çka nëse unë dua të zgjidhni fjalëkalimin nga përdoruesit WHERE-- kështu tani 328 00:16:05,640 --> 00:16:10,370 Unë jam duke shtuar një gjendje, një predicate-- ku idnum është më pak se 12. 329 00:16:10,370 --> 00:16:13,660 Kështu që këtu është baza e të dhënave e mia përsëri, Përdoruesit tryezën time të lartë. 330 00:16:13,660 --> 00:16:17,030 Çfarë jam unë do të marrë në qoftë se unë dua të zgjidhni këtë informacion, fjalëkalimi, 331 00:16:17,030 --> 00:16:21,550 ku ID e përdoruesit ose idnum është më pak se 12? 332 00:16:21,550 --> 00:16:24,910 Unë jam duke shkuar për të marrë këtë informacion prapa, e drejtë? 333 00:16:24,910 --> 00:16:29,170 Kjo ndodh se idnum është 10, më pak se 12, numri i ID 11 më pak se 12. 334 00:16:29,170 --> 00:16:32,160 Unë jam marrë fjalëkalimin për këto rreshta. 335 00:16:32,160 --> 00:16:33,914 Kjo është ajo që kam kërkuar. 336 00:16:33,914 --> 00:16:34,580 Po në lidhje me këtë? 337 00:16:34,580 --> 00:16:39,170 Çka nëse unë dua të zgjidhni yll nga moms tabelë ku emri i përdoruesit është e barabartë me Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, zgjidhni yll është i veçantë lloj kartë të egra ashtuquajtura 339 00:16:43,780 --> 00:16:45,670 që ne përdorim për të marrë gjithçka. 340 00:16:45,670 --> 00:16:48,620 Pra, ata janë duke thënë, përzgjidhni emri përdorues nënën presje, e cila 341 00:16:48,620 --> 00:16:51,060 ka ndodhur të jetë e vetmja Dy kolonat e kësaj tryeze, 342 00:16:51,060 --> 00:16:53,260 Unë vetëm mund të zgjidhni yll dhe të marrë çdo gjë 343 00:16:53,260 --> 00:16:55,030 ku emrin e barabartë Jerry. 344 00:16:55,030 --> 00:16:59,380 Dhe kështu kjo është ajo që unë do të merrni në qoftë se unë e bëra atë pyetje të veçantë. 345 00:16:59,380 --> 00:17:01,810 >> Tani, Bazat e të dhënave janë e madhe, sepse ato lejojnë 346 00:17:01,810 --> 00:17:06,074 na për të organizuar informacione mbase pak më efikase se ne 347 00:17:06,074 --> 00:17:06,740 mund të ndryshe. 348 00:17:06,740 --> 00:17:10,240 Ne nuk domosdoshmërisht për të ruajtur çdo pjesë e rëndësishme e informacionit 349 00:17:10,240 --> 00:17:12,230 në lidhje me një përdorues në të njëjtën tryezë. 350 00:17:12,230 --> 00:17:13,730 Ne kishim dy tavolina atje. 351 00:17:13,730 --> 00:17:15,734 >> Ne kemi nevojë për të ruajtur emri i nënës gjithëve së, 352 00:17:15,734 --> 00:17:18,900 dhe ndoshta ne nuk kemi sigurimet shoqërore numër, ne kemi datën e tyre të lindjes. 353 00:17:18,900 --> 00:17:21,819 Që nuk ka gjithmonë nevojë që të jetë në të njëjtin tabelës. 354 00:17:21,819 --> 00:17:25,339 Për sa kohë që ne mund të përcaktojë marrëdhëniet midis tables-- 355 00:17:25,339 --> 00:17:28,440 dhe kjo është ajo ku ajo relacionale Termi bazës së të dhënave lloj i vjen 356 00:17:28,440 --> 00:17:32,130 në play-- aq kohë sa ne mund të përcaktojë marrëdhëniet në mes të tabelave, 357 00:17:32,130 --> 00:17:35,545 ne mund të lloj compartmentalize ose gjëra abstrakte një mënyrë, 358 00:17:35,545 --> 00:17:37,670 ku ne vetëm kemi informacion të vërtetë e rëndësishme 359 00:17:37,670 --> 00:17:39,270 kemi kujdes për në tabelën e përdoruesit. 360 00:17:39,270 --> 00:17:43,220 Dhe pastaj kemi informacione ndihmëse ose informacion shtesë në tabela të tjera 361 00:17:43,220 --> 00:17:48,260 që ne mund të lidheni përsëri në kryesore Përdoruesit tavolinë në një mënyrë të veçantë. 362 00:17:48,260 --> 00:17:52,200 >> Pra, këtu ne kemi këto dy tavolina, por ka një marrëdhënie mes tyre, 363 00:17:52,200 --> 00:17:53,010 e drejtë? 364 00:17:53,010 --> 00:17:55,070 Duket sikur emrin e përdoruesit mund të jetë diçka 365 00:17:55,070 --> 00:17:59,909 që ekziston në mes të përbashkëta këto dy tavolina të ndryshme. 366 00:17:59,909 --> 00:18:01,700 Pra, çfarë nëse ne tani kemi një situatë ku ne 367 00:18:01,700 --> 00:18:06,046 doni të merrni emrin e plotë të një përdoruesi nga Tabela e përdoruesit, dhe nënës së tyre 368 00:18:06,046 --> 00:18:07,170 emrin nga tabela e nënës? 369 00:18:07,170 --> 00:18:10,960 Ne nuk kemi një mënyrë për të marrë se si ajo qëndron, e drejtë? 370 00:18:10,960 --> 00:18:17,790 Nuk ka asnjë tabelë e vetme që përmban si emri i plotë dhe emri i nënës. 371 00:18:17,790 --> 00:18:20,400 Ne nuk e kemi atë mundësi nga ajo që kemi parë deri tani. 372 00:18:20,400 --> 00:18:22,950 >> Dhe kështu që ne kemi për të futur ideja e një JOIN. 373 00:18:22,950 --> 00:18:24,857 Dhe bashkohet ndoshta Më të complex-- 374 00:18:24,857 --> 00:18:27,940 është e vërtetë operacioni më komplekse ne jemi duke shkuar për të folur në lidhje në video. 375 00:18:27,940 --> 00:18:30,040 Ata janë pak e komplikuar, por një herë ju merrni ul receptorin e telefonit të tij, 376 00:18:30,040 --> 00:18:31,248 ata në të vërtetë nuk janë shumë të këqija. 377 00:18:31,248 --> 00:18:32,820 Kjo është vetëm një rast i veçantë i një SELECT. 378 00:18:32,820 --> 00:18:37,120 Ne jemi duke shkuar për të zgjedhur një sërë kolona nga një tryezë të bashkuar 379 00:18:37,120 --> 00:18:40,650 në një tryezë të dytë në një kallëzues. 380 00:18:40,650 --> 00:18:45,340 >> Në këtë rast, të mendojnë për atë si this-- Tabela e një është një rreth mbi këtu, 381 00:18:45,340 --> 00:18:47,530 Tabela e dy është një tjetër rreth këtu. 382 00:18:47,530 --> 00:18:49,410 Dhe kjo pjesë kallëzues në mes, është 383 00:18:49,410 --> 00:18:51,701 lloj si në qoftë se ju mendoni se rreth si një diagram venn, çfarë 384 00:18:51,701 --> 00:18:52,670 ata kanë të përbashkët? 385 00:18:52,670 --> 00:18:55,960 Ne duam të lidhin këto dy tavolina bazuar në atë që ata kanë të përbashkët 386 00:18:55,960 --> 00:19:01,230 dhe për të krijuar këtë tabelë hipotetike që është bashkimi i të dy së ​​bashku. 387 00:19:01,230 --> 00:19:03,480 Pra, ne do të shohim këtë në një shembull dhe ndoshta kjo do të ndihmojë 388 00:19:03,480 --> 00:19:04,521 qartë atë pak. 389 00:19:04,521 --> 00:19:09,260 Pra, ndoshta ju doni të zgjidhni user.fullname dhe moms.mother 390 00:19:09,260 --> 00:19:13,220 nga përdoruesit e bashkuar në moms tavolinë në çdo situatë 391 00:19:13,220 --> 00:19:16,790 ku kolona emrin është e njëjtë mes tyre. 392 00:19:16,790 --> 00:19:19,240 Dhe kjo është një e re sintaksës këtu, këtë përdorues. 393 00:19:19,240 --> 00:19:20,460 dhe moms .. 394 00:19:20,460 --> 00:19:26,697 Në qoftë se unë jam duke bërë tavolina të shumta së bashku, unë mund të specifikoni një tryezë. 395 00:19:26,697 --> 00:19:29,530 Unë mund të dallojë në On veçantë që më në fund të fund atje. 396 00:19:29,530 --> 00:19:33,220 Unë mund të dallojë emrin e përdoruesit kolona e tabelës përdoruesve 397 00:19:33,220 --> 00:19:36,010 nga kolona emrin e tavolinë moms, të cilat janë otherwise-- 398 00:19:36,010 --> 00:19:38,070 në qoftë se ne vetëm tha emrin e barabartë me emrin, që nuk ka të vërtetë 399 00:19:38,070 --> 00:19:38,970 do të thotë asgjë. 400 00:19:38,970 --> 00:19:41,440 Ne duam të bëjmë atë ku ata përputhen. 401 00:19:41,440 --> 00:19:46,080 >> Kështu që unë mund të specifikoni në tryezë dhe Emri kolona në rast të një situate 402 00:19:46,080 --> 00:19:48,370 ku ajo do të jetë e paqartë çfarë jam duke folur rreth. 403 00:19:48,370 --> 00:19:51,880 Pra, kjo është e gjitha unë jam duke bërë është unë jam duke thënë se këtë kolonë nga kjo tabelë, 404 00:19:51,880 --> 00:19:54,020 dhe duke qenë shumë i qartë. 405 00:19:54,020 --> 00:19:56,810 Pra, përsëri, unë jam duke zgjedhjen e emrin e plotë dhe emrin e nënës 406 00:19:56,810 --> 00:20:00,950 nga tabela e përdoruesve të lidhura së bashku me tabela moms në çdo situatë 407 00:20:00,950 --> 00:20:05,960 ku ata ndajnë këtë column-- ata ndajnë këtë nocion emrin e përdoruesit. 408 00:20:05,960 --> 00:20:08,580 >> Kështu që këtu janë tabelat e kemi pasur më parë. 409 00:20:08,580 --> 00:20:12,210 Kjo është gjendja e tona bazës së të dhënave siç ekziston tani. 410 00:20:12,210 --> 00:20:16,390 Informacioni ne jemi nxjerrjen është kjo për të filluar me. 411 00:20:16,390 --> 00:20:19,820 Kjo është tryeza e re ne jemi duke shkuar për të krijuar kombinuar këto së bashku. 412 00:20:19,820 --> 00:20:23,585 Dhe vini re ne nuk jemi duke theksuar Rresht Newman në tryezën e përdoruesit, 413 00:20:23,585 --> 00:20:25,960 dhe ne nuk jemi duke theksuar Rresht kramer në tabelën moms 414 00:20:25,960 --> 00:20:31,250 sepse as njëra ekziston në si sets-- në të dy tabelat. 415 00:20:31,250 --> 00:20:36,260 >> I vetmi informacion që është e përbashkët në mes tyre është Jerry është në të dy tabelat 416 00:20:36,260 --> 00:20:39,100 dhe gcostanza është në të dy tabelat. 417 00:20:39,100 --> 00:20:42,620 Dhe kështu, kur ne bëjmë të SQL të bashkohen, ajo që ne get-- dhe ne bëjmë në fakt të marrë këtë. 418 00:20:42,620 --> 00:20:44,830 Kjo është lloj i një ndryshore të përkohshme. 419 00:20:44,830 --> 00:20:47,330 Është si një hipotetike bashkimi i dy tabelave. 420 00:20:47,330 --> 00:20:49,930 Ne fakt të marrë diçka si kjo, ku 421 00:20:49,930 --> 00:20:54,730 ne kemi shkrirë së bashku tabelat në informacioni që ata kanë të përbashkët. 422 00:20:54,730 --> 00:20:58,334 >> Pra, vini re se users.username dhe kolona moms.username, 423 00:20:58,334 --> 00:20:59,250 kjo është saktësisht e njëjtë. 424 00:20:59,250 --> 00:21:01,820 Kjo ishte informacioni që ishte në përputhje nga përdoruesit 425 00:21:01,820 --> 00:21:02,890 tryezë dhe tabela moms. 426 00:21:02,890 --> 00:21:04,270 Dhe kështu që ne shkrirë ato së bashku. 427 00:21:04,270 --> 00:21:06,919 Ne fshi Kramer, sepse ai nuk ekzistonte në tabelën e përdoruesit, 428 00:21:06,919 --> 00:21:09,710 dhe ne fshi Newman, sepse ai nuk ka ekzistuar në tabelë moms. 429 00:21:09,710 --> 00:21:16,450 Pra, kjo është bashkim hipotetike duke përdorur të bashkohet me funksionimin e SELECT. 430 00:21:16,450 --> 00:21:21,250 >> Dhe pastaj ne kemi qenë duke kërkuar për Emri i plotë përdoruesit dhe nëna e përdoruesit, 431 00:21:21,250 --> 00:21:24,999 dhe kështu ky është informacioni që ne do të merrni nga pyetje të përgjithshme 432 00:21:24,999 --> 00:21:26,040 që kemi bërë me SELECT. 433 00:21:26,040 --> 00:21:28,873 Pra, ne u bashkua me tavolina së bashku dhe ne nxjerrë këto dy kolona, 434 00:21:28,873 --> 00:21:31,610 dhe kështu që kjo është ajo që ne do të merrni. 435 00:21:31,610 --> 00:21:33,370 Por SQL bashkohet me një lloj të komplikuar. 436 00:21:33,370 --> 00:21:36,770 Ju ndoshta nuk do t'u bëjë shumë, por vetëm kanë disa ide të skeletit 437 00:21:36,770 --> 00:21:41,992 që ju mund të përdorni të bashkojë dy tavolina së bashku, nëse ju nevojitet për të. 438 00:21:41,992 --> 00:21:43,700 Dy të fundit janë një bit thjeshtë unë premtoj. 439 00:21:43,700 --> 00:21:48,040 Pra përditësimin, ne mund të përdorim UPDATE të ndryshojë informacionin në një tavolinë. 440 00:21:48,040 --> 00:21:53,880 Formati i përgjithshëm është UPDATE disa tavolinë, vendosur disa kolonë për disa vlera 441 00:21:53,880 --> 00:21:55,540 Ku disa kallëzues është i kënaqur. 442 00:21:55,540 --> 00:21:57,850 Kështu për shembull, ne mund të dëshironi për të rinovuar tabela e përdoruesve 443 00:21:57,850 --> 00:22:04,400 dhe të vendosur fjalëkalim për yada yada, ku numri ID është 10. 444 00:22:04,400 --> 00:22:06,400 >> Pra, në këtë rast, ne jemi përditësimin tabela e përdoruesve. 445 00:22:06,400 --> 00:22:08,275 Numri ID është 10 për se radhën e parë atje, 446 00:22:08,275 --> 00:22:10,690 dhe ne duam për të rinovuar Fjalëkalimi për yada yada. 447 00:22:10,690 --> 00:22:12,170 Dhe kështu kjo është ajo që do të ndodhë. 448 00:22:12,170 --> 00:22:13,628 Është shumë e thjeshtë, apo jo? 449 00:22:13,628 --> 00:22:17,990 Është vetëm një shumë e thjeshtë modifikim në tryezë. 450 00:22:17,990 --> 00:22:22,250 >> DELETE është operacioni kemi përdorur për të hiqni informacion nga një tavolinë. 451 00:22:22,250 --> 00:22:24,817 Fshini nga tabelë ku disa kallëzues është i kënaqur. 452 00:22:24,817 --> 00:22:26,900 Ne duam të fshini nga Përdoruesit tavolinë për shembull, 453 00:22:26,900 --> 00:22:28,254 ku emri i përdoruesit është Newman. 454 00:22:28,254 --> 00:22:31,420 Ju ndoshta mund të me mend se çfarë do të ndodh këtu pasi ne të ekzekutuar atë SQL 455 00:22:31,420 --> 00:22:35,790 pyetje, Newman është zhdukur nga tabela. 456 00:22:35,790 --> 00:22:40,460 >> Pra, të gjitha këto operacione, siç kam thënë, janë shumë të lehtë për të bërë në phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Kjo është një ndërfaqe shumë përdorues miqësore. 458 00:22:43,020 --> 00:22:45,930 Por kjo kërkon përpjekje të manual. 459 00:22:45,930 --> 00:22:47,840 Ne nuk duam të punësojnë përpjekje manual. 460 00:22:47,840 --> 00:22:51,280 Ne duam që programet tona për bëni këtë për ne, apo jo? 461 00:22:51,280 --> 00:22:53,190 Pra, ne mund të dëshironi të bëni kjo programuar. 462 00:22:53,190 --> 00:22:56,410 Ne duam të përfshijnë SQL dhe kanë diçka tjetër për të bërë këtë për ne. 463 00:22:56,410 --> 00:23:02,710 >> Por ajo që kemi parë që lejon ne të programuar të bërë diçka? 464 00:23:02,710 --> 00:23:03,690 Ne kemi parë PHP, e drejtë? 465 00:23:03,690 --> 00:23:05,760 Ai fut disa Dinamizmi në programet tona. 466 00:23:05,760 --> 00:23:10,430 Dhe kështu për fat të mirë, SQL dhe PHP luajnë shumë mirë së bashku. 467 00:23:10,430 --> 00:23:13,230 Ka një funksion në PHP quajtur pyetje, të cilat mund të përdoret. 468 00:23:13,230 --> 00:23:15,870 Dhe ju mund të kalojë si parametër apo argumenti 469 00:23:15,870 --> 00:23:19,210 për të query një query SQL që ju do të donte për të ekzekutuar. 470 00:23:19,210 --> 00:23:23,250 Dhe PHP do të bëjë atë në emër tuaj. 471 00:23:23,250 --> 00:23:25,564 >> Pra, pasi ju keni lidhur në bazën e të dhënave tuaja me PHP, 472 00:23:25,564 --> 00:23:26,980 ka dy paraprake ju bëni këtë. 473 00:23:26,980 --> 00:23:29,230 Ka diçka të quajtur MySQLi dhe diçka që quhet PDO. 474 00:23:29,230 --> 00:23:31,063 Ne nuk do të shkojë në një të madhe Shuma detaje atje. 475 00:23:31,063 --> 00:23:32,957 Në CS50 ne përdorim PDO. 476 00:23:32,957 --> 00:23:34,790 Pasi ta keni lidhur në bazën e të dhënave tuaj, ju 477 00:23:34,790 --> 00:23:40,980 atëherë mund të bëjë pyetje bazës së të dhënave tuaj duke kaluar pyetje si argumente 478 00:23:40,980 --> 00:23:42,730 me funksionet PHP. 479 00:23:42,730 --> 00:23:46,460 Dhe kur ju bëni këtë, ju ruani rezultojnë të vendosur në një grup associative. 480 00:23:46,460 --> 00:23:50,290 >> Dhe ne e dimë se si të punojnë me vargjeve associative në PHP. 481 00:23:50,290 --> 00:23:52,630 Kështu që unë mund të them diçka si this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 kjo është në PHP-- barabartë pyetje. 483 00:23:55,470 --> 00:23:57,660 Dhe pastaj brenda e Funksioni pyetje se argumenti 484 00:23:57,660 --> 00:24:00,130 që unë jam duke kaluar në query që duket si SQL. 485 00:24:00,130 --> 00:24:01,160 Dhe në fakt kjo është SQL. 486 00:24:01,160 --> 00:24:05,700 Kjo është string query që unë do të si për të ekzekutuar në bazën e të dhënave tim. 487 00:24:05,700 --> 00:24:09,250 >> Dhe kështu në të kuqe, kjo është PHP. 488 00:24:09,250 --> 00:24:11,890 Kjo është SQL që unë jam integruar në PHP duke 489 00:24:11,890 --> 00:24:15,020 ajo argumenti me funksionin pyetje. 490 00:24:15,020 --> 00:24:19,640 Unë dua për të zgjedhur fullname nga Përdoruesit ku numri i ID i barabartë me 10. 491 00:24:19,640 --> 00:24:22,560 Dhe atëherë ndoshta pasi kam bërë atë, Unë mund të them diçka si kjo. 492 00:24:22,560 --> 00:24:25,550 Unë dua të shtypura jashtë mesazh Faleminderit për prerjet në. 493 00:24:25,550 --> 00:24:32,530 >> Dhe unë dua atë interpolate-- unë dua të fut rezultatet $ fullname. 494 00:24:32,530 --> 00:24:36,280 Dhe kështu kjo është se si kam punuar me atë array associative që u ktheva. 495 00:24:36,280 --> 00:24:39,730 $ Rezultatet fullname do në thelb përfundojnë shtypjen jashtë, 496 00:24:39,730 --> 00:24:42,870 Faleminderit për prerjet në, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Ky ishte emri i plotë ku idnum barabartë me 10. 498 00:24:46,570 --> 00:24:48,850 >> Dhe kështu të gjitha unë jam duke bërë po unë jam now-- I ruajtur 499 00:24:48,850 --> 00:24:52,780 query im, rezultatet e pyetjes sime dhe rezulton në një rrjet asociative, 500 00:24:52,780 --> 00:24:56,330 dhe fullname është emri i kolona I was getting për. 501 00:24:56,330 --> 00:25:01,010 Pra, kjo është çelësi im në rezultatet array associative që unë dua. 502 00:25:01,010 --> 00:25:05,930 Pra, Faleminderit për prerjet në, $ rezultatet, fullname do të shtypura jashtë, do të rrinë 503 00:25:05,930 --> 00:25:08,654 të drejtë në mes të këtyre kaçurrel formatimin e teksteve, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 Dhe unë do të doja të shtypura jashtë mesazhit Faleminderit për prerjet në Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Tani, ne ndoshta nuk duan të vështirë Kodi gjëra të tilla në, e drejtë? 506 00:25:16,652 --> 00:25:19,860 Ne mund të dëshironi të bëni diçka si të shtypura f, ku ne mund të zëvendësojë dhe ndoshta 507 00:25:19,860 --> 00:25:22,443 mbledhin informacione të ndryshme, ose ndoshta kanë procesin pyetje 508 00:25:22,443 --> 00:25:23,370 informacione të ndryshme. 509 00:25:23,370 --> 00:25:27,920 Dhe kështu query, funksioni pyetje ka Ky nocion i lloj zëvendësime 510 00:25:27,920 --> 00:25:32,310 shumë të ngjashme për të shtypur f qind s dhe c qind, është pikëpyetje. 511 00:25:32,310 --> 00:25:34,290 >> Dhe ne mund të përdorim pyetje shënon shumë analoge 512 00:25:34,290 --> 00:25:38,400 për të shtypur dh të variablave zëvendësues. 513 00:25:38,400 --> 00:25:44,120 Pra, ndoshta përdorues juaj identifikuar më herët, dhe ju shpëtuam përdoruesit numrin e tyre ID 514 00:25:44,120 --> 00:25:51,710 në $ _session e PHP super global në ID kyç. 515 00:25:51,710 --> 00:25:55,947 Pra, ndoshta pasi keni hyrë në, keni vendosur $ _session ID e barabartë me 10, 516 00:25:55,947 --> 00:25:58,280 nxjerrjen nga shembulli ne vetëm e pa një të dytë më parë. 517 00:25:58,280 --> 00:26:01,960 >> Dhe kështu, kur ne fakt ekzekutuar ky query rezultatet tani, 518 00:26:01,960 --> 00:26:08,440 kjo do të vihet në prizë 10, apo çfarëdo vlera $ _session ID është. 519 00:26:08,440 --> 00:26:10,790 Dhe kështu që na lejon të të jetë pak më dinamike. 520 00:26:10,790 --> 00:26:12,699 Ne nuk jemi të vështirë kodim gjërat në më. 521 00:26:12,699 --> 00:26:14,490 Ne jemi duke kursyer informacion diku dhe pastaj 522 00:26:14,490 --> 00:26:18,924 ne mund të përdorin këtë informacion për të përsëri lloj i përgjithësuar atë që ne duam të bëjmë, 523 00:26:18,924 --> 00:26:21,090 dhe vetëm plug-in dhe ndryshimi sjellja e faqes tonë 524 00:26:21,090 --> 00:26:26,489 në bazë të çfarë numri ID e përdoruesit të vërtetë është pasi ata kanë hyrë në. 525 00:26:26,489 --> 00:26:28,530 Është gjithashtu e mundur, edhe pse, se rezultatet e tu i vunë 526 00:26:28,530 --> 00:26:30,840 mund të përbëhet nga disa rreshta. 527 00:26:30,840 --> 00:26:33,990 Në të cilin rast, ju keni një grup i arrays-- 528 00:26:33,990 --> 00:26:35,334 një grup prej vargjeve associative. 529 00:26:35,334 --> 00:26:37,000 Dhe ju vetëm duhet të iterate nëpërmjet saj. 530 00:26:37,000 --> 00:26:41,950 Dhe ne e dimë se si për të iterate përmes një grup në PHP, e drejtë? 531 00:26:41,950 --> 00:26:45,600 Kështu që këtu është ndoshta më gjë komplekse ne kemi parë deri tani. 532 00:26:45,600 --> 00:26:49,640 Ajo në fakt integron tri gjuhë së bashku. 533 00:26:49,640 --> 00:26:52,920 >> Këtu në të kuqe, kjo është një HTML. 534 00:26:52,920 --> 00:26:56,872 Unë jam me sa duket starting-- kjo është një copë e disa HTML që kam. 535 00:26:56,872 --> 00:26:59,580 Unë jam duke filluar një paragraf të ri që thotë se moms të TV-së Seinfeld. 536 00:26:59,580 --> 00:27:02,350 Dhe pastaj menjëherë më pas Unë jam duke filluar një tabelë. 537 00:27:02,350 --> 00:27:06,060 Dhe pastaj pas kësaj, unë kanë disa PHP, apo jo? 538 00:27:06,060 --> 00:27:08,229 Unë kam të gjithë të këtij kodi PHP në atje. 539 00:27:08,229 --> 00:27:09,645 Unë jam me sa duket duke shkuar për të bërë një pyetje. 540 00:27:09,645 --> 00:27:14,180 Dhe për të bërë pyetje, unë jam duke shkuar për të jetë duke përdorur nëna Zgjidh nga moms. 541 00:27:14,180 --> 00:27:15,970 >> Pra, kjo është getting-- kjo është SQL. 542 00:27:15,970 --> 00:27:17,300 Pra blu është SQL. 543 00:27:17,300 --> 00:27:19,680 E kuqe ne pamë një të dytë më parë ishte HTML. 544 00:27:19,680 --> 00:27:21,360 Dhe gjelbër këtu është PHP. 545 00:27:21,360 --> 00:27:23,400 Kështu që unë jam duke e bërë një pyetje në bazën e të dhënave tim, unë jam 546 00:27:23,400 --> 00:27:26,040 përzgjedhur gjithë e nënat në tabelë Moms. 547 00:27:26,040 --> 00:27:30,710 Jo vetëm ngushtuar atë poshtë për të veçantë rresht, unë jam duke kërkuar për të gjithë ata. 548 00:27:30,710 --> 00:27:33,290 >> Pastaj unë kontrolloj nëse rezultati është jo të barabartë barabartë rreme. 549 00:27:33,290 --> 00:27:37,410 Kjo është vetëm mënyra ime e kontrolluar lloj e nëse rezultatet nuk është e barabartë me null, 550 00:27:37,410 --> 00:27:40,260 se ne do të shohim c për shembull. 551 00:27:40,260 --> 00:27:44,000 Në thelb kjo është vetëm duke kontrolluar për të bërë i sigurt se ai në fakt mori të dhënat e mbrapa. 552 00:27:44,000 --> 00:27:47,041 Sepse unë nuk dua të filluar shtypjen nga të dhënat e nëse unë nuk e kam marrë asnjë të dhënë. 553 00:27:47,041 --> 00:27:50,690 Pastaj për çdo rezulton si rezultat Sintaksa foreach nga PHP, të gjitha unë jam duke bërë 554 00:27:50,690 --> 00:27:53,399 është shtypje nga nënat rezultat $. 555 00:27:53,399 --> 00:27:55,940 Dhe kështu që unë jam duke shkuar për të marrë një sërë të gjitha nënat e each-- 556 00:27:55,940 --> 00:27:59,980 është një grup i associative arrays-- dhe unë jam shtypje nga 557 00:27:59,980 --> 00:28:03,649 secili si rresht e vet të një tryezë. 558 00:28:03,649 --> 00:28:05,690 Dhe kjo është me të vërtetë mjaft sa e gjitha nuk është për atë. 559 00:28:05,690 --> 00:28:07,750 Unë e di se ka pak bit ndodh këtu 560 00:28:07,750 --> 00:28:13,210 në këtë shembull të fundit me vargjeve të arrays-- vargjeve të vargjeve associative. 561 00:28:13,210 --> 00:28:17,340 Por me të vërtetë ka vetëm të valoj poshtë në SQL për të bërë një pyetje, 562 00:28:17,340 --> 00:28:21,102 zakonisht zgjedhur pasi ne kemi tashmë vënë informacion në tryezë, 563 00:28:21,102 --> 00:28:22,310 dhe pastaj vetëm të tërhequr atë jashtë. 564 00:28:22,310 --> 00:28:25,710 >> Dhe kjo është që ne do të tërheqë atë në këtë rast të veçantë. 565 00:28:25,710 --> 00:28:31,120 Ne do të ekstrakt gjithë e individit Nënat nga tabela Moms. 566 00:28:31,120 --> 00:28:35,970 Ne morëm një seri e tërë e tyre, dhe ne duan të iterate nëpër dhe të shtypura nga 567 00:28:35,970 --> 00:28:37,630 cdo njeri. 568 00:28:37,630 --> 00:28:40,510 Pra, përsëri, kjo është ndoshta shembulli më i komplikuar 569 00:28:40,510 --> 00:28:44,510 ne kemi parë, sepse ne jemi përzierjen tre gjuhë të ndryshme së bashku, apo jo? 570 00:28:44,510 --> 00:28:50,100 >> Përsëri, ne kemi HTML këtu në të kuqe, të përziera me disa SQL këtu në blu, 571 00:28:50,100 --> 00:28:52,049 të përziera me disa PHP në të gjelbër. 572 00:28:52,049 --> 00:28:53,840 Por të gjitha këto luajnë bukur së bashku, është e 573 00:28:53,840 --> 00:28:57,060 vetëm një çështje e zhvillimit të zakonet e mira në mënyrë që ju mund të merrni 574 00:28:57,060 --> 00:28:58,780 ata që të punojnë së bashku në mënyrë që ju dëshironi. 575 00:28:58,780 --> 00:29:03,790 Dhe e vetmja mënyrë për të vërtetë të bëjë atë është praktikë, praktikë, praktikë. 576 00:29:03,790 --> 00:29:06,740 Unë jam Doug Lloyd, kjo është CS50. 577 00:29:06,740 --> 00:29:08,647