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] [Harvardi Ülikool] 3 00:00:04,000 --> 00:00:06,000 [See on CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Nii, programmeerijad kasutavad andmebaase vahend säilitada ja korrastada 5 00:00:11,620 --> 00:00:13,620 meie püsivad andmed tabelite sees. 6 00:00:13,620 --> 00:00:18,960 See tähendab, et teie andmed on salvestatud mittelenduvad mediaani nagu kõvaketas, 7 00:00:18,960 --> 00:00:22,940 ja isegi kui arvuti on välja lülitatud, andmed on veel puutumata. 8 00:00:22,940 --> 00:00:29,530 Ja nagu programmeerijad, meie programmid kasutavad andmebaase stsenaariumid nagu ladustamine 9 00:00:29,530 --> 00:00:32,890 kasutaja infot veebivormide soojaks inventari, 10 00:00:32,890 --> 00:00:36,210 või ajakohastada teavet selle kohta, mida saite kuvada. 11 00:00:37,150 --> 00:00:40,070 Aga kuidas me tegelikult suhelda meie andmebaasi, 12 00:00:40,070 --> 00:00:43,150 või mida me kasutame lugeda, salvestada, kustutada, 13 00:00:43,150 --> 00:00:46,070 ja uuendada meie andmed nendes andmebaasi tabeleid? 14 00:00:47,280 --> 00:00:49,700 Noh, vastus on, et me kasutame spetsiaalset tüüpi andmebaasi keel 15 00:00:49,700 --> 00:00:53,400 mis suhtleb otse meie andmebaasi tabelid. 16 00:00:53,400 --> 00:00:56,740 See nimi on Structured Query Language, 17 00:00:56,740 --> 00:00:58,740 [Structured Query Language] 18 00:00:58,740 --> 00:01:00,740 või mida ma viidata kui SQL. 19 00:01:00,740 --> 00:01:05,100 >> Nüüd, [SE-quel] või SQL, ei ole programmeerimiskeel, 20 00:01:05,100 --> 00:01:08,580 kuid selle asemel, et see on keel, mis annab standardse käsukomplekti 21 00:01:08,580 --> 00:01:13,520 hankida ja töödelda andmeid erinevatest andmebaasi juhtimissüsteeme. 22 00:01:13,520 --> 00:01:17,630 Selleks, CS50, läheme üle nelja põhilised käsud: 23 00:01:17,630 --> 00:01:21,210 valida, lisada, uuendada ja kustutada. 24 00:01:21,210 --> 00:01:26,230 Lisaks me kasutada andmebaasi veebiliidese nimetatakse phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 mis paigaldatakse seadme kirjutada meie SQL avaldused. 26 00:01:30,830 --> 00:01:33,050 Nii, et aitab teil meeles pidada neid käske, 27 00:01:33,050 --> 00:01:37,080 Ma tõin mõned koogikesi kappi aidata meie stsenaariume. 28 00:01:39,650 --> 00:01:42,210 Oletame, et teil on cupcake andmebaasi, 29 00:01:42,210 --> 00:01:44,490 kuhu salvestada kõik infot oma koogikesi. 30 00:01:44,490 --> 00:01:48,220 Nüüd andmebaasid võivad sisaldada palju tabeleid 31 00:01:48,220 --> 00:01:50,950 ja tabelid ise võib sisaldada palju veerge. 32 00:01:50,950 --> 00:01:57,020 Toas meie cupcake andmebaasi, meil on tabel nimega cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 See tabel on kasutada säilitada kogu teavet koogikesi 34 00:02:00,500 --> 00:02:02,990 mis on, noh, oma kapp. 35 00:02:02,990 --> 00:02:07,770 Veerud, mis on sees oma laua esindama atribuutide cupcake. 36 00:02:07,770 --> 00:02:14,560 Näiteks cupcake_cupboard on veerud on 37 00:02:14,560 --> 00:02:15,920 Kook ID, CakeType, CakeColor ja CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 See tõeväärtus-tipitud veerus kasutatakse, et määrata, kui kook on tore või mitte tore. 39 00:02:23,040 --> 00:02:26,560 Me läheme alustada kirjalikult valige avaldus. 40 00:02:26,560 --> 00:02:32,160 Vali avaldusi kasutatakse andmete toomiseks konkreetse andmebaasi tabeli. 41 00:02:32,160 --> 00:02:34,890 Selle stsenaariumi, me tahame teada kõike 42 00:02:34,890 --> 00:02:39,080 umbes kõik koogikesi, mis eksisteerivad meie kapp. 43 00:02:39,080 --> 00:02:48,670 Süntaks seda teha on "Vali" Space Star, või *, ruumi kosmosest meie lauda 44 00:02:48,670 --> 00:02:52,050 mis on cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Lähme edasi ja täita selle. 46 00:02:56,670 --> 00:03:00,140 >> Nagu näeme, on need kõik koogikesi meie kapp. 47 00:03:00,140 --> 00:03:05,110 See on oluline märkida, et *, või tärn, on jokker iseloomu 48 00:03:05,110 --> 00:03:08,830 mis tähistab kogumine kõigi veergude mõned tabel. 49 00:03:08,830 --> 00:03:13,650 Tavaliselt saame juurdepääsu konkreetsele veerg või veerud 50 00:03:13,650 --> 00:03:16,950 asendades * koos tegeliku veeru nime. 51 00:03:16,950 --> 00:03:21,220 Kui me tahame mitut veergu, kuid mitte kõik, me suudame seda saavutada 52 00:03:21,220 --> 00:03:25,620 kirjutades veerunimesid piiritlemiseks iga veeru komaga. 53 00:03:25,620 --> 00:03:28,620 Näiteks, lähme alla laadida ainult CakeId ja CakeType sisse cupcake_cupboard tabelis. 54 00:03:28,620 --> 00:03:38,370 Süntaks seda teha on: SELECT ruumi CakeID koma 55 00:03:38,370 --> 00:03:44,370 CakeType ruumi meie lauda cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Lähme edasi ja täidab seda. 57 00:03:49,340 --> 00:03:52,670 Ja siin me nüüd ainult kaks veergu me täpsustada 58 00:03:52,670 --> 00:03:54,670 iga cupcake meie kapp. 59 00:03:54,670 --> 00:03:57,710 Saame Samuti täpsustada meie päringu tulemusi, määrates 60 00:03:57,710 --> 00:04:00,910 "where" tingimust vahetult pärast tabeli nimi. 61 00:04:02,000 --> 00:04:05,410 Näiteks tundub, et cupcake meie kapp 62 00:04:05,410 --> 00:04:08,660 et, noh, mitte nii kena vaadata. 63 00:04:08,660 --> 00:04:13,950 Olgem nuputada kõik koogikesi meie kapp, mis on, noh, mitte nii kena vaadata 64 00:04:13,950 --> 00:04:16,110 kasutades "where" tingimust. 65 00:04:16,110 --> 00:04:26,390 Süntaks seda teha on: SELECT ruumi * ruumi kosmosest cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 ruumi, kus ruumi meie tingimisi veerus, antud juhul CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 ja tõeväärtuse False. 68 00:04:36,900 --> 00:04:42,750 On oluline märkida, et kui te kasutate stringe, siis peab lisama seda ülakoma. 69 00:04:42,750 --> 00:04:49,620 See kehtib kõigi stringid SQL või SQL andmebaas mõttes variant tähemärki 70 00:04:49,620 --> 00:04:51,620 tuntud varchar andmetüüp. 71 00:04:51,620 --> 00:04:57,660 Sellisel juhul me kasutame Õige või vale, mis on tõeväärtuse ja mitte stringi. 72 00:04:59,120 --> 00:05:00,660 Lähme edasi ja seda käsklust. 73 00:05:00,660 --> 00:05:05,340 >> Ennäe imet, see on tõsi, et meil on 1 šokolaad 74 00:05:05,340 --> 00:05:07,920 ole nii kena cupcake meie kapp. 75 00:05:09,620 --> 00:05:11,460 Edasi me läheme kirjutada lisada avaldus. 76 00:05:11,460 --> 00:05:15,560 INSERT avalduste kasutatakse sisestada või lisada 77 00:05:15,560 --> 00:05:17,770 täiendavaid ridu andmeid oma andmebaasi tabelisse. 78 00:05:17,770 --> 00:05:23,160 Ülevaatamine meie stsenaariumi Oletame, et oleme just uhiuue cupcake. 79 00:05:25,910 --> 00:05:30,080 Kuna meil on väga korraldatud cupcake sööjad, me lähed on lisada uue cupcake 80 00:05:30,080 --> 00:05:32,330 meie cupcake_cupboard tabelis. 81 00:05:32,330 --> 00:05:40,690 Süntaks seda teha on selline: Sisesta kosmoses ruumi meie lauda 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, tühik (, 83 00:05:46,830 --> 00:05:51,060 ja siin me täpsustada veergude nimed, komaga eraldatud, 84 00:05:51,060 --> 00:05:59,790 CakeType eralda CakeColor eralda CakeIsNice) ruumi. 85 00:05:59,790 --> 00:06:06,540 Pärast seda me kirjutame sõna VALUES ruumi (ja siin 86 00:06:06,540 --> 00:06:12,170 me sisestama väärtuse iga veeru vastavalt ka komaga eraldatud. 87 00:06:12,170 --> 00:06:17,830 Üks tsitaat, sest nad on kõik varchar väärtusi me ümbritsevad neid ülakoma, 88 00:06:17,830 --> 00:06:26,780 MAAPÄHKLIVÕI "koma" helepruun "koma True. 89 00:06:26,780 --> 00:06:30,480 Nüüd on oluline anda igale reale identifitseerimiseks kasutataks kordumatut numbrit ise. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing veerg annab seda 91 00:06:33,660 --> 00:06:37,410  "Ei ole olemas kahte sama ID-d ei saa kunagi eksisteerida tabelis." 92 00:06:37,410 --> 00:06:39,480 Lähme edasi ja täita. 93 00:06:39,480 --> 00:06:45,380 Vot nii, kõik organiseeritud. 94 00:06:49,720 --> 00:06:52,100 >> Järgmine SQL et me kirjutame on ajakohastatud aruanne. 95 00:06:52,100 --> 00:06:55,650 Uuendus avaldust saab muuta andmeid jooksul veerg 96 00:06:55,650 --> 00:06:58,440 mõne muu olemasoleva rea ​​oma andmebaasi tabelisse. 97 00:06:59,670 --> 00:07:03,420 Varem meie stsenaariumi, kasutades valige avaldus, me kindlaks cupcake 98 00:07:03,420 --> 00:07:08,300 jooksul meie cupcake_cupboard lauale kelle CakeIsNice väärtus oli vale. 99 00:07:08,300 --> 00:07:12,050 Oletame, et samal ajal kui meie maapähklivõi cupcake oli ahjus, 100 00:07:12,050 --> 00:07:15,790 tegime meie mitte-nii-kena cupcake väga kena. 101 00:07:18,020 --> 00:07:22,240 Olles nii erakordselt korraldatud, me tahame, et meie cupcake kajastada seda väärtuse 102 00:07:22,240 --> 00:07:24,240 meie cupcake_cupboard tabelis. 103 00:07:24,240 --> 00:07:28,710 Seega, olgem uuendada meie šokolaadi cupcake andmebaasis kajastama. 104 00:07:28,710 --> 00:07:39,720 Süntaks on: UPDATE ruumi meie lauda cupcake_cupboard, ruumi ruum 105 00:07:39,720 --> 00:07:44,240 veerus, et me ei soovi muuta, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Siis siin me paneme oma uue väärtuse True ruumi. 107 00:07:49,210 --> 00:07:54,290 Nüüd, kuna me ei taha uuendada kõik read selle väärtusega, 108 00:07:54,290 --> 00:07:57,400 soovime pakkuda "where" tingimust, mis täpselt meid 109 00:07:57,400 --> 00:07:59,830 täpse rida, et me tahame muuta. 110 00:07:59,830 --> 00:08:03,690 Sel juhul me teame, et on olemas ainult üks cupcake 111 00:08:03,690 --> 00:08:06,670 mis on CakeIsNice väärtuse False. 112 00:08:06,670 --> 00:08:11,030 Lisaks me ka tagama, et me oleme ajakohastamine õige rida 113 00:08:11,030 --> 00:08:13,030 kasutades "Ja" klausel. 114 00:08:14,340 --> 00:08:17,270 Me kasutame "Ja" klausel täiustame oma päringu edasi. 115 00:08:17,270 --> 00:08:20,380 Sel juhul, sest me teame, et cupcake on šokolaad, 116 00:08:20,380 --> 00:08:23,160 me kasutame seda CakeType veerus. 117 00:08:23,160 --> 00:08:31,500 Kui ruumi meie tingimisi veeru ruumi CakeIsNice ruumi = False, 118 00:08:31,500 --> 00:08:38,330 ja ruumi CakeType = "šokolaad". 119 00:08:38,330 --> 00:08:41,880 Niisiis, paneb ta kõik koos, selle värskenduse kinnitus ütleb 120 00:08:41,880 --> 00:08:44,670 Kõik koogikesi meie cupcake kapp, 121 00:08:44,670 --> 00:08:50,520 ja kui on cupcake kelle veerg CakeIsNice sisaldab väärtust False 122 00:08:50,520 --> 00:08:54,130 ja CakeType sisaldab väärtust CHOCOLATE, 123 00:08:54,130 --> 00:08:58,240 me tahame uuendada konkreetne rida CakeIsNice väärtuseks true. 124 00:08:58,240 --> 00:09:01,140 Nii, lähme edasi ja täitma avalduse. 125 00:09:03,860 --> 00:09:05,860 Ja nüüd, me korraldada. 126 00:09:06,650 --> 00:09:09,220 >> Kõik see jutt koogikesi on mind natuke näljane. 127 00:09:09,220 --> 00:09:11,360 Ma arvan, et ma peaks sinna midagi parata, et üks. 128 00:09:11,360 --> 00:09:17,670 Aga kui ma tegelikult süüa seda cupcake, ma vähemalt eemaldada ka selle olemasolu 129 00:09:17,670 --> 00:09:19,670  meie cupcake_cupboard tabelis. 130 00:09:20,650 --> 00:09:22,590 Selleks me kasutame "Kustuta" avaldusega. 131 00:09:22,590 --> 00:09:27,400 "Kustuta" avaldust saab eemaldada kõik või mõned read tabelis. 132 00:09:27,400 --> 00:09:29,920 Kui soovite eemaldada mõne konkreetse rea tabelist, 133 00:09:29,920 --> 00:09:34,360 peate andma "where" tingimust, seega täpsustades veerg 134 00:09:34,360 --> 00:09:37,660 et peaks olema unikaalne rida, mida soovite eemaldada. 135 00:09:37,660 --> 00:09:47,370 See on süntaks: kriipsutage kosmosest meie lauda cupcake_cupboard, ruumi. 136 00:09:47,370 --> 00:09:51,760 Nüüd, sel hetkel, kui sa oled nii kaugele oma DELETE avaldus 137 00:09:51,760 --> 00:09:54,240 sa tahad olla väga ettevaatlik. 138 00:09:54,240 --> 00:09:59,970 Näiteks, kui ma tahan teha selle päringu on esitamata mõned "where" tingimust 139 00:09:59,970 --> 00:10:04,500 Ma kaotaks kõik andmed selles cupcake_cupboard tabel, 140 00:10:04,500 --> 00:10:09,590 aga kuna ma juba tean, et minu kook ID on unikaalne, ma kasutan 141 00:10:09,590 --> 00:10:12,410 Red Velvet kook ID minu "where" tingimust. 142 00:10:14,550 --> 00:10:20,670 Kui ruumi meie kolonn, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Sest see on täisarvuline väärtus ei ole vaja ümbritseda see ülakoma. 144 00:10:25,010 --> 00:10:27,020 Niisiis, oletame, täita avaldus. 145 00:10:33,560 --> 00:10:35,990 Noh, nüüd, et oleme pühkida olemasolu seda cupcake 146 00:10:35,990 --> 00:10:40,360 meie cupcake_cupboard tabel, meil on ainult üks asi jäänud: 147 00:10:41,680 --> 00:10:43,680 Tee kaovad. 148 00:10:43,680 --> 00:10:46,990 Ma olen Christopher Bartholomew. See on CS50.