1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [Christopher BARTHOLOMEW] [HARVARD UNIVERSITY] 3 00:00:04,000 --> 00:00:06,000 [KJO ËSHTË CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Pra, programuesit përdorin bazat e të dhënave, si një mjet për të ruajtur dhe të organizojë 5 00:00:11,620 --> 00:00:13,620 të dhënat tona të vazhdueshme brenda tavolina. 6 00:00:13,620 --> 00:00:18,960 Kjo do të thotë se të dhënat e juaj është ruajtur në jo-paqëndrueshme medians të tilla si një hard drive, 7 00:00:18,960 --> 00:00:22,940 dhe madje edhe kur kompjuteri është jashtë, të dhënat është ende i paprekur. 8 00:00:22,940 --> 00:00:29,530 Dhe, si programuesit, programet tona të shfrytëzojë të dhënave për skenarë të tilla si ruajtjen 9 00:00:29,530 --> 00:00:32,890 Informacioni përdoruesit nga format web, duke kërkuar deri inventarit, 10 00:00:32,890 --> 00:00:36,210 ose përditësimin e informacionit në lidhje me atë që faqet të shfaqin. 11 00:00:37,150 --> 00:00:40,070 Por si nuk kemi në fakt ndërveprojnë me database tonë, 12 00:00:40,070 --> 00:00:43,150 apo çfarë ne përdorim për të lexuar, dyqan, fshini, 13 00:00:43,150 --> 00:00:46,070 dhe përditësimin e të dhënave tona në kuadër të këtyre tabelave bazës së të dhënave? 14 00:00:47,280 --> 00:00:49,700 Well, përgjigja është që ne përdorim një lloj të veçantë të gjuhës bazës së të dhënave 15 00:00:49,700 --> 00:00:53,400 e cila bashkëvepron direkt me tavolina bazës së të dhënave tona. 16 00:00:53,400 --> 00:00:56,740 Është emri është strukturuar Query Language, 17 00:00:56,740 --> 00:00:58,740 [Strukturuar Query Language] 18 00:00:58,740 --> 00:01:00,740 apo atë që unë i referohen si SQL. 19 00:01:00,740 --> 00:01:05,100 >> Tani, [Se-Quel], apo SQL, nuk është një gjuhë programimi, 20 00:01:05,100 --> 00:01:08,580 por në vend të kësaj, ajo është një gjuhë që ofron një sërë standarde e komandave 21 00:01:08,580 --> 00:01:13,520 për të tërhequr dhe të manipuluar të dhënat nga një shumëllojshmëri e sistemeve të menaxhimit të bazës së të dhënave. 22 00:01:13,520 --> 00:01:17,630 Për qëllimin e CS50, ne do të shkojnë mbi katër komandat themelore: 23 00:01:17,630 --> 00:01:21,210 zgjedhur, insert, update, dhe fshini. 24 00:01:21,210 --> 00:01:26,230 Për më tepër, ne do të shfrytëzojë një ndërfaqe web bazës së të dhënave të quajtur phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 cilat instaluar në aplikim për të shkruar deklaratat tona SQL. 26 00:01:30,830 --> 00:01:33,050 Pra, për të ndihmuar ju kujtohet këto komanda, 27 00:01:33,050 --> 00:01:37,080 Unë kam sjellë disa cupcakes në një dollap rrobash për të ndihmuar me skenare tona. 28 00:01:39,650 --> 00:01:42,210 Thonë se ju keni një bazë të dhënash Cupcake-së, 29 00:01:42,210 --> 00:01:44,490 ku keni ruajtur të gjitha informatat në lidhje me cupcakes tuaj. 30 00:01:44,490 --> 00:01:48,220 Tani, bazat e të dhënave mund të përmbajnë tabela shumë 31 00:01:48,220 --> 00:01:50,950 dhe tabelat vetë mund të përmbajnë kolona të shumta. 32 00:01:50,950 --> 00:01:57,020 Brenda database Cupcake sonë, ne kemi një tabelë të quajtur cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Kjo tabelë do të përdoret për të ruajtur të gjitha informatat në lidhje me cupcakes 34 00:02:00,500 --> 00:02:02,990 që janë, mirë, në bufe tuaj. 35 00:02:02,990 --> 00:02:07,770 Shtyllat që janë brenda tryezën tuaj përfaqësojnë atributet e një kek i vockël. 36 00:02:07,770 --> 00:02:14,560 Për shembull, kolona e cupcake_cupboard janë 37 00:02:14,560 --> 00:02:15,920 Tortë ID, CakeType, CakeColor, dhe CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Kjo boolean-typed kolonë është përdorur për të përcaktuar nëse tortë është e bukur apo jo e bukur. 39 00:02:23,040 --> 00:02:26,560 Ne jemi duke shkuar për të filluar me shkrim një deklaratë të zgjedhur. 40 00:02:26,560 --> 00:02:32,160 Deklaratat zgjidhni janë përdorur për të rifitoj të dhënat e bazës së të dhënave një tabelë të veçantë. 41 00:02:32,160 --> 00:02:34,890 Në këtë skenar, ne duam të dimë gjithçka 42 00:02:34,890 --> 00:02:39,080 cupcakes për të gjitha që ekzistojnë në dollap tonë. 43 00:02:39,080 --> 00:02:48,670 Sintaksa për të bërë këtë është "Select" yll hapësirë, ose *, hapësirë ​​nga hapësira tryezë tonë, 44 00:02:48,670 --> 00:02:52,050 cila është cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Le të shkojnë përpara dhe ekzekutuar atë. 46 00:02:56,670 --> 00:03:00,140 >> Siç mund të shohim, këto janë të gjitha cupcakes në bufe tonë. 47 00:03:00,140 --> 00:03:05,110 Është e rëndësishme të theksohet se *, ose Asterisk, është një karakter të egër kartë 48 00:03:05,110 --> 00:03:08,830 që nënkupton mbledhjen e të gjitha shtyllat e disa tryezë. 49 00:03:08,830 --> 00:03:13,650 Normalisht, ne mund të hyni në një kolonë të veçantë ose kolona 50 00:03:13,650 --> 00:03:16,950 duke zëvendësuar * me emrin kolonën aktuale. 51 00:03:16,950 --> 00:03:21,220 Nëse duam kolona të shumta, por jo të gjitha, ne mund të arrijmë këtë 52 00:03:21,220 --> 00:03:25,620 duke shkruar emrat e kollonave delimiting çdo kolonë nga një presje. 53 00:03:25,620 --> 00:03:28,620 Për shembull, le të vetëm të rifitoj CakeId dhe CakeType në tabelën cupcake_cupboard. 54 00:03:28,620 --> 00:03:38,370 Sintaksa për të bërë këtë është: SELECT hapësirë ​​CakeID presje 55 00:03:38,370 --> 00:03:44,370 Hapësira CakeType nga cupcake_cupboard tonë, tryezë. 56 00:03:44,370 --> 00:03:46,370 Le të shkojnë përpara dhe të ekzekutuar këtë. 57 00:03:49,340 --> 00:03:52,670 Dhe këtu, ne tani vetëm dy kolona ne specifikuara 58 00:03:52,670 --> 00:03:54,670 për çdo kek i vockël në dollap tonë. 59 00:03:54,670 --> 00:03:57,710 Ne gjithashtu mund të përmirësojmë rezultatet tona query duke specifikuar 60 00:03:57,710 --> 00:04:00,910 "Ku" klauzolë vetëm pas emrin tryezë. 61 00:04:02,000 --> 00:04:05,410 Për shembull, nuk duket të jetë një kek i vockël në bufe tonë 62 00:04:05,410 --> 00:04:08,660 që është, edhe nuk është, kështu nice looking. 63 00:04:08,660 --> 00:04:13,950 Le të kuptoj se të gjithë cupcakes në bufe tonë që janë, edhe jo aq e bukur në kërkim 64 00:04:13,950 --> 00:04:16,110 duke përdorur "Ku" klauzolë. 65 00:04:16,110 --> 00:04:26,390 Sintaksa për të bërë këtë është: SELECT * NGA cupcake_cupboard hapësirë ​​kozmike 66 00:04:26,390 --> 00:04:34,080 Hapësira ku hapësira kolonën tonë të kushtëzuar, në këtë rast CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 dhe vlera boolean e rreme. 68 00:04:36,900 --> 00:04:42,750 Është e rëndësishme të theksohet se në qoftë se ju jeni duke përdorur vargjet, ju duhet të mbyllni atë në thonjëza të vetme. 69 00:04:42,750 --> 00:04:49,620 Kjo është e vërtetë për të gjitha vargjet në SQL, ose, në bazën e të dhënave SQL drejtim, variant karaktere 70 00:04:49,620 --> 00:04:51,620 njohur si VARCHAR tipi. 71 00:04:51,620 --> 00:04:57,660 Në këtë rast, ne jemi duke përdorur Vërtetë ose False, e cila është një vlerë Boolean dhe jo një string. 72 00:04:59,120 --> 00:05:00,660 Le të shkojnë përpara dhe të ekzekutuar këtë komandë. 73 00:05:00,660 --> 00:05:05,340 >> Ja dhe ja, ajo është e vërtetë se ne kemi 1 çokollatë 74 00:05:05,340 --> 00:05:07,920 jo aq e bukur kek i vockël në dollap tonë. 75 00:05:09,620 --> 00:05:11,460 Tjetra, ne jemi duke shkuar për të shkruar një deklaratë insert. 76 00:05:11,460 --> 00:05:15,560 Deklaratat insert janë përdorur për të futur apo shtuar 77 00:05:15,560 --> 00:05:17,770 rreshtave shtesë të të dhënave në tryezën tuaj bazës së të dhënave. 78 00:05:17,770 --> 00:05:23,160 Revisiting skenarin tonë, le të supozojmë që ne kemi bërë vetëm një kek i vockël i ri fringo. 79 00:05:25,910 --> 00:05:30,080 Që ne jemi shumë të organizuar ngrënësit Cupcake, ne do të kemi për të futur këtë kek i vockël ri 80 00:05:30,080 --> 00:05:32,330 në tabelën tonë cupcake_cupboard. 81 00:05:32,330 --> 00:05:40,690 Sintaksa për të bërë këtë është kjo: Vendos hapësirë ​​në hapësirë ​​tryezë tonë, 82 00:05:40,690 --> 00:05:46,830 , cupcake_cupboard hapësirë ​​( 83 00:05:46,830 --> 00:05:51,060 dhe këtu ne të përcaktojë emrat kolona, ​​kufizuar nga një presje, 84 00:05:51,060 --> 00:05:59,790 CakeType CakeColor presje presje CakeIsNice) hapësirë. 85 00:05:59,790 --> 00:06:06,540 Pas kësaj, kemi shkruar hapësirë ​​Vlerat fjalën (dhe këtu 86 00:06:06,540 --> 00:06:12,170 kemi hyrë në vlera për çdo kolonë, përkatësisht, edhe kufizuar me presje. 87 00:06:12,170 --> 00:06:17,830 Quote vetme, sepse ata janë të gjitha vlerat VARCHAR ne do të rrethojnë ato në thonjëza të vetme, 88 00:06:17,830 --> 00:06:26,780 Presje Brown Light 'presje' gjalpë badiava 'Vërtetë. 89 00:06:26,780 --> 00:06:30,480 Tani, është e rëndësishme për t'i dhënë çdo rresht një numër unik për të identifikuar veten. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing një kolonë siguron këtë si 91 00:06:33,660 --> 00:06:37,410  "Nuk ka dy kartat e identitetit të njëjta mund të ekzistojnë ndonjëherë në këtë tabelë." 92 00:06:37,410 --> 00:06:39,480 Le të shkojnë përpara dhe ekzekutuar. 93 00:06:39,480 --> 00:06:45,380 Nuk shkojmë, të gjitha të organizuar. 94 00:06:49,720 --> 00:06:52,100 >> Tjetër deklaratë SQL që ne do të shkruaj një deklaratë update. 95 00:06:52,100 --> 00:06:55,650 Deklarata azhornimi mund të përdoret për të ndryshuar të dhënat në një kolonë 96 00:06:55,650 --> 00:06:58,440 për çdo rresht ekzistues në tryezën tuaj bazës së të dhënave. 97 00:06:59,670 --> 00:07:03,420 Më herët në skenarin tonë, duke përdorur një deklaratë të zgjedhur, ne kemi identifikuar një kek i vockël 98 00:07:03,420 --> 00:07:08,300 brenda tryezën cupcake_cupboard sonë vlera CakeIsNice cilit ishte e rreme. 99 00:07:08,300 --> 00:07:12,050 Le të supozojmë se ndërsa gjalpë badiava tona kek i vockël ishte në furrë, 100 00:07:12,050 --> 00:07:15,790 kemi bërë kek i vockël tonë jo-aq-e bukur very nice. 101 00:07:18,020 --> 00:07:22,240 Duke qenë kështu organizuar jashtëzakonisht, ne duam Cupcake tonë për të pasqyruar këtë vlerë 102 00:07:22,240 --> 00:07:24,240 në tabelën tonë cupcake_cupboard. 103 00:07:24,240 --> 00:07:28,710 Prandaj, le të rinovuar kek i vockël çokollatë tonë në bazën e të dhënave për të pasqyruar këtë. 104 00:07:28,710 --> 00:07:39,720 Sintaksa është: hapësira UPDATE tabela tonë, cupcake_cupboard, SET hapësirë 105 00:07:39,720 --> 00:07:44,240 kolona që ne dëshirojmë të ndryshojmë, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Atëherë këtu ne vend të ri hapësirën tonë vlerën e vërtetë. 107 00:07:49,210 --> 00:07:54,290 Tani, sepse ne nuk duam të rinovuar të gjitha rreshtave me këtë vlerë, 108 00:07:54,290 --> 00:07:57,400 ne duam që të sigurojë një "ku" klauzolë që do të na imët 109 00:07:57,400 --> 00:07:59,830 në radhën e saktë që ne duam të modifikuar. 110 00:07:59,830 --> 00:08:03,690 Në këtë rast, ne e dimë se nuk është vetëm një kek i vockël 111 00:08:03,690 --> 00:08:06,670 që ka një vlerë CakeIsNice të rreme. 112 00:08:06,670 --> 00:08:11,030 Për më tepër, ne gjithashtu do të sigurojë se ne jemi përditësimin rresht correct 113 00:08:11,030 --> 00:08:13,030 duke përdorur "dhe" klauzolë. 114 00:08:14,340 --> 00:08:17,270 Ne përdorim "dhe" klauzolë për të përsosin më tej query tonë. 115 00:08:17,270 --> 00:08:20,380 Në këtë rast, sepse ne e dimë se është kek i vockël çokollatë, 116 00:08:20,380 --> 00:08:23,160 ne do të përdorni këtë kolonë CakeType. 117 00:08:23,160 --> 00:08:31,500 KU hapësirë ​​kushtëzuar tonë hapësira kolona hapësirë ​​CakeIsNice = False, 118 00:08:31,500 --> 00:08:38,330 dhe hapësirë ​​CakeType = 'CHOCOLATE'. 119 00:08:38,330 --> 00:08:41,880 Pra, duke e vënë atë të gjithë së bashku, kjo deklaratë freskimin e thotë 120 00:08:41,880 --> 00:08:44,670 të gjeni të gjitha cupcakes në bufe tonë kek i vockël, 121 00:08:44,670 --> 00:08:50,520 dhe në qoftë se ka një kek i vockël e të cilit kolonë CakeIsNice përmban vlerën False 122 00:08:50,520 --> 00:08:54,130 dhe CakeType përmban çokollatë vlerë, 123 00:08:54,130 --> 00:08:58,240 ne duam të rinovuar vlera specifike rreshtave CakeIsNice të vërtetë. 124 00:08:58,240 --> 00:09:01,140 Pra, le të shkojnë përpara dhe të ekzekutuar deklaratën. 125 00:09:03,860 --> 00:09:05,860 Dhe tani, ne jemi të organizuar. 126 00:09:06,650 --> 00:09:09,220 >> E gjithë kjo të flasim për cupcakes ka bërë më pak të uritur. 127 00:09:09,220 --> 00:09:11,360 Unë mendoj se unë duhet të ndihmojë veten për një të tillë. 128 00:09:11,360 --> 00:09:17,670 Por në qoftë se unë në fakt ha këtë kek i vockël, unë duhet të paktën të hiqni ekzistencën e saj 129 00:09:17,670 --> 00:09:19,670  nga tabela tonë cupcake_cupboard. 130 00:09:20,650 --> 00:09:22,590 Për ta bërë këtë, ne do të përdorim "Delete" deklaratë. 131 00:09:22,590 --> 00:09:27,400 "Delete" deklarata mund të përdoret për të hequr të gjitha ose disa rreshtave nga tabela. 132 00:09:27,400 --> 00:09:29,920 Në qoftë se ju dëshironi të hiqni një rresht të veçantë nga tabela, 133 00:09:29,920 --> 00:09:34,360 atëherë ju duhet të sigurojë një "ku" klauzolë, duke specifikuar një kolonë 134 00:09:34,360 --> 00:09:37,660 që duhet të jetë unike për rresht që ju dëshironi të hiqni. 135 00:09:37,660 --> 00:09:47,370 Kjo është sintaksa: DELETE NGA hapësirë ​​hapësirë ​​tonë, tavolinë cupcake_cupboard, hapësira. 136 00:09:47,370 --> 00:09:51,760 Tani, në këtë pikë, sa herë që ju jeni deri tani në deklaratën tuaj fshini 137 00:09:51,760 --> 00:09:54,240 ju doni të jenë shumë të kujdesshëm. 138 00:09:54,240 --> 00:09:59,970 Për shembull, në qoftë se unë dua të drejtuar këtë pyetje siç është pa ofruar disa "ku" klauzolë 139 00:09:59,970 --> 00:10:04,500 Unë do të humbasin të gjitha të dhënat në këtë tabelë cupcake_cupboard, 140 00:10:04,500 --> 00:10:09,590 por për shkak se unë tashmë e di se letërnjoftimet e mia tortë janë unike, unë do të përdorin 141 00:10:09,590 --> 00:10:12,410 Red Velvet cake ID për klauzolën time "ku". 142 00:10:14,550 --> 00:10:20,670 KU hapësirë ​​kolona jonë, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Për shkak se kjo është një vlerë e plotë nuk ka nevojë që të rrethojnë atë në thonjëza të vetme. 144 00:10:25,010 --> 00:10:27,020 Pra, le të ekzekutuar deklaratën. 145 00:10:33,560 --> 00:10:35,990 E pra, tani që ne kemi fshihen ekzistencën e këtij kek i vockël 146 00:10:35,990 --> 00:10:40,360 nga tabela tonë cupcake_cupboard, ne kemi vetëm një gjë të majtë: 147 00:10:41,680 --> 00:10:43,680 Bëni atë të zhduket. 148 00:10:43,680 --> 00:10:46,990 Unë jam Christopher Bartolomeu. Kjo është CS50.