1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [CHRISTOPHER Bartholomæos] [Harvard University] 3 00:00:04,000 --> 00:00:06,000 [DETTE ER CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Så programmører bruger databaser som et værktøj til at gemme og organisere 5 00:00:11,620 --> 00:00:13,620 vores vedholdende data i tabeller. 6 00:00:13,620 --> 00:00:18,960 Det betyder, at dine data er gemt på ikke-flygtige medianer såsom en harddisk, 7 00:00:18,960 --> 00:00:22,940 og selv når computeren er slukket, dataene er stadig intakt. 8 00:00:22,940 --> 00:00:29,530 Og som programmører, udnytte vores programmer databaser for scenarier såsom opbevaring 9 00:00:29,530 --> 00:00:32,890 brugeroplysninger fra webformularer, kigge op opgørelse, 10 00:00:32,890 --> 00:00:36,210 eller opdatering af oplysninger om, hvilke websteder vise. 11 00:00:37,150 --> 00:00:40,070 Men hvordan får vi faktisk interagerer med vores database, 12 00:00:40,070 --> 00:00:43,150 eller hvad kan vi bruge til at læse, gemme, slette, 13 00:00:43,150 --> 00:00:46,070 og opdatere vores data inden for disse databasetabeller? 14 00:00:47,280 --> 00:00:49,700 Tja, svaret er, at vi bruger en speciel type database sprog 15 00:00:49,700 --> 00:00:53,400 som interagerer direkte med vores database tabeller. 16 00:00:53,400 --> 00:00:56,740 Det navn er Structured Query Language, 17 00:00:56,740 --> 00:00:58,740 [Structured Query Language] 18 00:00:58,740 --> 00:01:00,740 eller hvad jeg kalder SQL. 19 00:01:00,740 --> 00:01:05,100 >> Nu [Se-quel] eller SQL, er ikke et programmeringssprog, 20 00:01:05,100 --> 00:01:08,580 men i stedet, det er et sprog, der giver et standard sæt af kommandoer 21 00:01:08,580 --> 00:01:13,520 at hente og manipulere data fra en lang række database management systemer. 22 00:01:13,520 --> 00:01:17,630 I forbindelse med CS50, vil vi gå over fire grundlæggende kommandoer: 23 00:01:17,630 --> 00:01:21,210 vælge, indsætte, opdatere og slette. 24 00:01:21,210 --> 00:01:26,230 Derudover vil vi benytte en database web interface kaldet phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 som er installeret på apparatet til at skrive vores SQL-sætninger. 26 00:01:30,830 --> 00:01:33,050 Så for at hjælpe dig at huske disse kommandoer, 27 00:01:33,050 --> 00:01:37,080 Jeg har bragt nogle cupcakes i et skab til at hjælpe med vores scenarier. 28 00:01:39,650 --> 00:01:42,210 Sige, at du har en cupcake database, 29 00:01:42,210 --> 00:01:44,490 hvor du gemmer alle oplysninger om dine cupcakes. 30 00:01:44,490 --> 00:01:48,220 Nu kan databaser indeholder mange tabeller 31 00:01:48,220 --> 00:01:50,950 og tabellerne selv kan indeholde mange kolonner. 32 00:01:50,950 --> 00:01:57,020 Inde vores cupcake database, har vi en tabel kaldet cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Denne tabel vil blive brugt til at gemme alle oplysninger om cupcakes 34 00:02:00,500 --> 00:02:02,990 der er godt i dit skab. 35 00:02:02,990 --> 00:02:07,770 De kolonner, der er inde i din tabel, viser attributterne for en cupcake. 36 00:02:07,770 --> 00:02:14,560 For eksempel er det cupcake_cupboard kolonner 37 00:02:14,560 --> 00:02:15,920 Kage ID, CakeType, CakeColor, og CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Denne boolean-typebestemmes kolonne anvendes til at afgøre, om kagen er rart eller ikke rart. 39 00:02:23,040 --> 00:02:26,560 Vi vil starte med at skrive en SELECT-sætning. 40 00:02:26,560 --> 00:02:32,160 Vælg udsagn bruges til at hente data fra en bestemt database tabel. 41 00:02:32,160 --> 00:02:34,890 I dette scenario vil vi vide alt 42 00:02:34,890 --> 00:02:39,080 om alle cupcakes der eksisterer i vores skab. 43 00:02:39,080 --> 00:02:48,670 Syntaksen at gøre dette er "Select" Space Star, eller *, plads fra rummet vores tabel, 44 00:02:48,670 --> 00:02:52,050 som er cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Lad os gå videre og gennemføre det. 46 00:02:56,670 --> 00:03:00,140 >> Som vi kan se, disse er alle cupcakes i vores skab. 47 00:03:00,140 --> 00:03:05,110 Det er vigtigt at bemærke, at *, eller en stjerne, er et wild card karakter 48 00:03:05,110 --> 00:03:08,830 der betegner indsamling af alle kolonnerne i nogle tabel. 49 00:03:08,830 --> 00:03:13,650 Normalt kan vi få adgang til en bestemt kolonne eller kolonner 50 00:03:13,650 --> 00:03:16,950 ved at erstatte * med det faktiske kolonnenavn. 51 00:03:16,950 --> 00:03:21,220 Hvis vi ønsker flere kolonner, men ikke alle, kan vi opnå dette 52 00:03:21,220 --> 00:03:25,620 ved at skrive kolonnenavnene afgrænser hver kolonne med et komma. 53 00:03:25,620 --> 00:03:28,620 For eksempel, lad os kun hente den CakeId og CakeType i cupcake_cupboard tabellen. 54 00:03:28,620 --> 00:03:38,370 Syntaksen at gøre dette er: SELECT plads CakeID komma 55 00:03:38,370 --> 00:03:44,370 CakeType plads fra vores bord, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Lad os gå videre og udføre dette. 57 00:03:49,340 --> 00:03:52,670 Og her har vi nu kun har de to kolonner vi specificeret 58 00:03:52,670 --> 00:03:54,670 for hver cupcake i vores skab. 59 00:03:54,670 --> 00:03:57,710 Vi kan også forfine vores forespørgselsresultater ved at angive 60 00:03:57,710 --> 00:04:00,910 "Hvor" klausul lige efter tabelnavnet. 61 00:04:02,000 --> 00:04:05,410 For eksempel synes der at være en cupcake i vores skab 62 00:04:05,410 --> 00:04:08,660 det er, ja, ikke så nice leder. 63 00:04:08,660 --> 00:04:13,950 Lad os finde ud af alle de cupcakes i vores skab, der er, tja, ikke så nice leder 64 00:04:13,950 --> 00:04:16,110 bruge "Hvor" klausul. 65 00:04:16,110 --> 00:04:26,390 Syntaksen at gøre dette er: SELECT space * plads fra rummet cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 rum, hvor pladsen vores betinget kolonne, i dette tilfælde CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 og den booleske værdi False. 68 00:04:36,900 --> 00:04:42,750 Det er vigtigt at bemærke, at hvis du bruger strenge, skal du vedlægge det i enkelte anførselstegn. 69 00:04:42,750 --> 00:04:49,620 Dette gælder for alle strenge i SQL, eller, i SQL-database vilkår, variant tegn 70 00:04:49,620 --> 00:04:51,620 kendt som Varchar datatype. 71 00:04:51,620 --> 00:04:57,660 I dette tilfælde bruger vi Sandt eller falsk, hvilket er en boolesk værdi og ikke en streng. 72 00:04:59,120 --> 00:05:00,660 Lad os gå videre og udføre denne kommando. 73 00:05:00,660 --> 00:05:05,340 >> Lo og se, det er sådan, at vi har 1 chokolade 74 00:05:05,340 --> 00:05:07,920 ikke så rart cupcake i vores skab. 75 00:05:09,620 --> 00:05:11,460 Dernæst vil vi skrive et indstik erklæring. 76 00:05:11,460 --> 00:05:15,560 Indsæt udsagn bruges til at indsætte eller tilføje 77 00:05:15,560 --> 00:05:17,770 yderligere rækker af data i din database tabel. 78 00:05:17,770 --> 00:05:23,160 Revurdering vores scenarie, lad os antage, at vi lige har lavet en helt ny cupcake. 79 00:05:25,910 --> 00:05:30,080 Da vi er meget organiseret cupcake spise, vil vi nødt til at indsætte denne nye cupcake 80 00:05:30,080 --> 00:05:32,330 i vores cupcake_cupboard tabel. 81 00:05:32,330 --> 00:05:40,690 Syntaksen til at gøre dette, er dette: Indsæt mellemrum i rummet vores tabel, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, space (, 83 00:05:46,830 --> 00:05:51,060 og her er vi angiver kolonnerne navne, afgrænset af et komma, 84 00:05:51,060 --> 00:05:59,790 CakeType komma CakeColor komma CakeIsNice) plads. 85 00:05:59,790 --> 00:06:06,540 Efter dette, skriver vi ordet VÆRDIER plads (og her 86 00:06:06,540 --> 00:06:12,170 vi angive værdien for hver kolonne henholdsvis også afgrænset af et komma. 87 00:06:12,170 --> 00:06:17,830 Single citat, fordi de er alle Varchar værdier vi vil omgive dem i anførselstegn, 88 00:06:17,830 --> 00:06:26,780 JORDNØDDESMØR 'komma' Light Brown 'komma True. 89 00:06:26,780 --> 00:06:30,480 Nu er det vigtigt at give hver række et unikt nummer til at identificere sig selv. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing en kolonne giver dette som 91 00:06:33,660 --> 00:06:37,410  "Ikke to af de samme ID'er nogensinde kan eksistere i denne tabel." 92 00:06:37,410 --> 00:06:39,480 Lad os gå videre og udføre. 93 00:06:39,480 --> 00:06:45,380 Der vi går, al organiseret. 94 00:06:49,720 --> 00:06:52,100 >> Den næste SQL-sætning, at vi vil skrive er en opdatering erklæring. 95 00:06:52,100 --> 00:06:55,650 Opdateringen erklæring kan bruges til at ændre data i en kolonne 96 00:06:55,650 --> 00:06:58,440 for enhver eksisterende række i din database tabel. 97 00:06:59,670 --> 00:07:03,420 Tidligere i vores scenarie, ved hjælp af en SELECT-sætning, vi identificeret en cupcake 98 00:07:03,420 --> 00:07:08,300 inden for vores cupcake_cupboard bord, hvis CakeIsNice værdi var False. 99 00:07:08,300 --> 00:07:12,050 Lad os antage, at mens vores jordnøddesmør cupcake var i ovnen, 100 00:07:12,050 --> 00:07:15,790 Vi gjorde vores ikke-så-flot cupcake meget rart. 101 00:07:18,020 --> 00:07:22,240 Bliver så usædvanligt organiseret, vi ønsker, at vores cupcake at afspejle denne værdi 102 00:07:22,240 --> 00:07:24,240 i vores cupcake_cupboard tabel. 103 00:07:24,240 --> 00:07:28,710 Derfor, lad os opdatere vores chokolade cupcake i databasen for at afspejle dette. 104 00:07:28,710 --> 00:07:39,720 Syntaksen er: UPDATE plads vores bord, cupcake_cupboard, space SET plads 105 00:07:39,720 --> 00:07:44,240 søjlen, som vi ønsker at ændre, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Så her er vi placere vores nye værdien Sand plads. 107 00:07:49,210 --> 00:07:54,290 Nu, da vi ikke ønsker at opdatere alle rækker med denne værdi, 108 00:07:54,290 --> 00:07:57,400 vi ønsker at give en "Hvor" klausul, der vil lokalisere os 109 00:07:57,400 --> 00:07:59,830 til den nøjagtige række, vi ønsker at ændre. 110 00:07:59,830 --> 00:08:03,690 I dette tilfælde, ved vi, at der kun er en cupcake 111 00:08:03,690 --> 00:08:06,670 der har en CakeIsNice værdi False. 112 00:08:06,670 --> 00:08:11,030 Desuden vil vi også sikre, at vi er ved at opdatere den rigtige række 113 00:08:11,030 --> 00:08:13,030 ved at bruge "Og"-klausul. 114 00:08:14,340 --> 00:08:17,270 Vi bruger "Og"-klausul til at forfine vores forespørgsel videre. 115 00:08:17,270 --> 00:08:20,380 I dette tilfælde har vi da ved, at cupcake er chokolade, 116 00:08:20,380 --> 00:08:23,160 Vi vil bruge denne CakeType kolonne. 117 00:08:23,160 --> 00:08:31,500 Hvor pladsen vores betinget spalteplads CakeIsNice space = False, 118 00:08:31,500 --> 00:08:38,330 og rum CakeType = "chokolade". 119 00:08:38,330 --> 00:08:41,880 Så sætte det hele sammen, denne opdatering erklæring siger 120 00:08:41,880 --> 00:08:44,670 finde alle de cupcakes i vores cupcake skab, 121 00:08:44,670 --> 00:08:50,520 og hvis der er en cupcake hvis spalte CakeIsNice indeholder værdien False 122 00:08:50,520 --> 00:08:54,130 og CakeType indeholder værdien CHOCOLATE, 123 00:08:54,130 --> 00:08:58,240 vi ønsker at opdatere de specifikke rækker CakeIsNice værdi til True. 124 00:08:58,240 --> 00:09:01,140 Så lad os gå videre og udføre redegørelsen. 125 00:09:03,860 --> 00:09:05,860 Og nu er vi organiseret. 126 00:09:06,650 --> 00:09:09,220 >> Al den snak om cupcakes har gjort mig en smule sulten. 127 00:09:09,220 --> 00:09:11,360 Jeg tror jeg skal hjælpe mig til én. 128 00:09:11,360 --> 00:09:17,670 Men hvis jeg rent faktisk spiser denne cupcake, vil jeg i det mindste også fjerne dens eksistens 129 00:09:17,670 --> 00:09:19,670  fra vores cupcake_cupboard tabel. 130 00:09:20,650 --> 00:09:22,590 For at gøre dette, vil vi bruge "Slet" erklæring. 131 00:09:22,590 --> 00:09:27,400 "Slet" sætning kan bruges til at fjerne alle eller nogle rækker fra tabellen. 132 00:09:27,400 --> 00:09:29,920 Hvis du ønsker at fjerne nogle specifikke række fra tabellen, 133 00:09:29,920 --> 00:09:34,360 så skal du give en "Hvor" klausul, således specificere en kolonne 134 00:09:34,360 --> 00:09:37,660 der bør være unikke for den række, du vil fjerne. 135 00:09:37,660 --> 00:09:47,370 Dette er syntaksen: DELETE plads fra rummet vores bord, cupcake_cupboard, plads. 136 00:09:47,370 --> 00:09:51,760 Nu, på dette punkt, når du er så langt i din delete erklæring 137 00:09:51,760 --> 00:09:54,240 du ønsker at være meget forsigtig. 138 00:09:54,240 --> 00:09:59,970 For eksempel, som om jeg vil køre denne forespørgsel er uden at give nogle "Hvor" klausul 139 00:09:59,970 --> 00:10:04,500 Jeg ville miste alle data i denne cupcake_cupboard tabel, 140 00:10:04,500 --> 00:10:09,590 men fordi jeg ved allerede, at min kage ID'er er unikke, vil jeg bruge 141 00:10:09,590 --> 00:10:12,410 Red Velvet kage ID for min "Hvor" klausul. 142 00:10:14,550 --> 00:10:20,670 Hvor pladsen vores kolonne, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Da dette er en heltalsværdi er der ingen grund til at omgive det i enkelte anførselstegn. 144 00:10:25,010 --> 00:10:27,020 Så lad os udføre redegørelsen. 145 00:10:33,560 --> 00:10:35,990 Nå, nu hvor vi har udslettet eksistensen af ​​denne cupcake 146 00:10:35,990 --> 00:10:40,360 fra vores cupcake_cupboard tabel har vi kun én ting tilbage: 147 00:10:41,680 --> 00:10:43,680 Gør det forsvinde. 148 00:10:43,680 --> 00:10:46,990 Jeg er Christopher Bartholomew. Det er CS50.