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 [ITO AY CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Kaya, ang mga programmer gamitin na database bilang isang tool upang mag-imbak at ayusin ang 5 00:00:11,620 --> 00:00:13,620 aming mga paulit-ulit na data sa loob ng talahanayan. 6 00:00:13,620 --> 00:00:18,960 Nangangahulugan ito na ang iyong data ay naka-imbak sa mga di-madaling matuyo medians tulad ng isang hard drive, 7 00:00:18,960 --> 00:00:22,940 at kahit na ang computer ay off, ang data ay buo pa rin. 8 00:00:22,940 --> 00:00:29,530 At, bilang programmer, ang aming mga programa gamitin database para sa mga sitwasyon tulad ng pag-iimbak 9 00:00:29,530 --> 00:00:32,890 impormasyon ng user mula sa mga web form, hinahanap imbentaryo, 10 00:00:32,890 --> 00:00:36,210 o ina-update ang impormasyon tungkol sa kung ano ang mga site ipakita. 11 00:00:37,150 --> 00:00:40,070 Ngunit kung paano namin talaga makipag-ugnayan sa aming database, 12 00:00:40,070 --> 00:00:43,150 o ano ang gagawin naming gamitin upang basahin, mag-imbak, tanggalin, 13 00:00:43,150 --> 00:00:46,070 at i-update ang aming data sa loob ng mga talahanayan ng database? 14 00:00:47,280 --> 00:00:49,700 Well, ang sagot ay na ginagamit namin ang isang espesyal na uri ng database wika 15 00:00:49,700 --> 00:00:53,400 kung saan nakikipag-ugnayan nang direkta sa aming mga talahanayan sa database. 16 00:00:53,400 --> 00:00:56,740 Pangalan ng Structured Query sa Wika, 17 00:00:56,740 --> 00:00:58,740 [Structured Query sa Wika] 18 00:00:58,740 --> 00:01:00,740 o kung ano ang sumangguni ko sa bilang SQL. 19 00:01:00,740 --> 00:01:05,100 >> Ngayon, [Se-QueL], o SQL, ay hindi isang programming language, 20 00:01:05,100 --> 00:01:08,580 ngunit sa halip, ang isang wika na nagbibigay ng isang standard na hanay ng mga utos 21 00:01:08,580 --> 00:01:13,520 upang mabawi at manipulahin ang mga data mula sa isang iba't-ibang ng mga system ng pamamahala ng database. 22 00:01:13,520 --> 00:01:17,630 Para sa layunin ng CS50, ipagpapatuloy namin sa paglipas ng apat na pangunahing utos: 23 00:01:17,630 --> 00:01:21,210 piliin, ipasok, i-update, at tanggalin. 24 00:01:21,210 --> 00:01:26,230 Bukod dito, makikita namin ayusin ang isang database web interface na tinatawag na phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 kung saan naka-install sa ang appliance upang isulat ang aming mga SQL na pahayag. 26 00:01:30,830 --> 00:01:33,050 Kaya, upang makatulong sa iyo na tandaan ang mga utos, 27 00:01:33,050 --> 00:01:37,080 Ko na nagdala ng ilang mga cupcake sa isang paminggalan upang makatulong sa aming mga sitwasyon. 28 00:01:39,650 --> 00:01:42,210 Sabihin nating mayroon kang database ng cupcake, 29 00:01:42,210 --> 00:01:44,490 kung saan iimbak mo ang lahat ng impormasyon tungkol sa iyong cupcake. 30 00:01:44,490 --> 00:01:48,220 Ngayon, ang mga database ay maaaring maglaman ng maraming mga talahanayan 31 00:01:48,220 --> 00:01:50,950 at ng mga talahanayan ang kanilang mga sarili ay maaaring maglaman ng maraming mga haligi. 32 00:01:50,950 --> 00:01:57,020 Inside database ng aming cupcake, mayroon kaming isang talahanayan na tinatawag cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Ang table na ito ay ginagamit upang mag-imbak ang lahat ng impormasyon tungkol sa cupcake 34 00:02:00,500 --> 00:02:02,990 na, mahusay, sa iyong aparador. 35 00:02:02,990 --> 00:02:07,770 Ang mga hanay na ay sa loob ng iyong talahanayan ay kumakatawan sa mga katangian ng isang cupcake. 36 00:02:07,770 --> 00:02:14,560 Halimbawa, ang mga haligi sa cupcake_cupboard 37 00:02:14,560 --> 00:02:15,920 Cake ng ID, CakeType, CakeColor, at CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Ang boolean-type na haligi ay ginamit upang matukoy kung maganda o hindi maganda ang ang cake. 39 00:02:23,040 --> 00:02:26,560 Kami ay pagpunta sa magsimula sa pagsusulat ng mga piling pahayag. 40 00:02:26,560 --> 00:02:32,160 Piliin ang mga pahayag ay ginamit upang makuha ang mga data ng isang partikular na database talahanayan. 41 00:02:32,160 --> 00:02:34,890 Sa sitwasyong ito, gusto naming malaman ang lahat 42 00:02:34,890 --> 00:02:39,080 tungkol sa lahat ng mga cupcake na umiiral sa aming aparador. 43 00:02:39,080 --> 00:02:48,670 Ang syntax upang gawin ito ay espasyo "Piliin ang" star, o *, espasyo mula sa kalawakan ng aming mga talahanayan, 44 00:02:48,670 --> 00:02:52,050 na cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Natin sige at isakatuparan na. 46 00:02:56,670 --> 00:03:00,140 >> Tulad ng maaari naming makita, ito ay ang lahat ng mga cupcake sa aming aparador. 47 00:03:00,140 --> 00:03:05,110 Mahalaga na tandaan na ang *, o asterisk, isang ligaw na card na character 48 00:03:05,110 --> 00:03:08,830 na Nagpapahiwatig ang pagtitipon ng lahat ng mga hanay ng ilang mga talahanayan. 49 00:03:08,830 --> 00:03:13,650 Karaniwan, maaari naming ma-access ang isang partikular na hanay o haligi 50 00:03:13,650 --> 00:03:16,950 sa pamamagitan ng pagpapalit ng * na ang aktwal na pangalan ng haligi. 51 00:03:16,950 --> 00:03:21,220 Kung gusto namin ang maramihang mga hanay, ngunit hindi lahat, maaari naming makamit ito 52 00:03:21,220 --> 00:03:25,620 sa pamamagitan ng pagsusulat ang mga pangalan ng haligi delimiting bawat haligi sa pamamagitan ng isang kuwit. 53 00:03:25,620 --> 00:03:28,620 Halimbawa, sabihin lamang makuha ang CakeId at CakeType sa talahanayan cupcake_cupboard. 54 00:03:28,620 --> 00:03:38,370 Ang syntax upang gawin ito ay: Piliin ang espasyo ng kuwit CakeID 55 00:03:38,370 --> 00:03:44,370 CakeType espasyo mula sa aming mga talahanayan, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Natin sige at isakatuparan ito. 57 00:03:49,340 --> 00:03:52,670 At dito, kami na lamang ngayon ang dalawang haligi na namin tinukoy 58 00:03:52,670 --> 00:03:54,670 para sa bawat cupcake sa aming aparador. 59 00:03:54,670 --> 00:03:57,710 Maaari din namin pinuhin ang aming mga query resulta sa pamamagitan ng pagtukoy 60 00:03:57,710 --> 00:04:00,910 ang "Saan" sugnay lamang pagkatapos ng pangalan ng talahanayan. 61 00:04:02,000 --> 00:04:05,410 Halimbawa, may lumilitaw na isang cupcake sa aming paminggalan 62 00:04:05,410 --> 00:04:08,660 iyon ay, well, hindi Nice hinahanap. 63 00:04:08,660 --> 00:04:13,950 Natin malaman ang lahat ng mga cupcake sa aming aparador na, well, hindi Nice hinahanap 64 00:04:13,950 --> 00:04:16,110 gamit ang "Saan" sugnay. 65 00:04:16,110 --> 00:04:26,390 Ang syntax upang gawin ito ay: Piliin espasyo espasyo * MULA SA espasyo cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 espasyo SAAN espasyo ang aming kondisyon hanay, sa kasong ito CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 at ang boolean na halaga ng Maling. 68 00:04:36,900 --> 00:04:42,750 Ito ay mahalaga na tandaan na kung ikaw ay gumagamit ng mga string, kailangan mong ilakip ito sa mga single quote. 69 00:04:42,750 --> 00:04:49,620 Ito ay totoo para sa lahat ng mga string sa SQL, o, sa SQL database ng mga tuntunin, variant character 70 00:04:49,620 --> 00:04:51,620 kilala bilang Varchar datatype. 71 00:04:51,620 --> 00:04:57,660 Sa kasong ito, kami ay gamit True o Maling, na kung saan ay isang boolean na halaga at hindi isang string. 72 00:04:59,120 --> 00:05:00,660 Natin sige at execute ang command na ito. 73 00:05:00,660 --> 00:05:05,340 >> Lo at Narito, ang kaso na mayroon kaming 1 tsokolate 74 00:05:05,340 --> 00:05:07,920 hindi Nice cupcake sa aming aparador. 75 00:05:09,620 --> 00:05:11,460 Susunod, kami ay pagpunta sa sumulat ng insert statement. 76 00:05:11,460 --> 00:05:15,560 Ipasok pahayag ay ginagamit upang ipasok o magdagdag 77 00:05:15,560 --> 00:05:17,770 karagdagang mga hilera ng data sa iyong talahanayan ng database. 78 00:05:17,770 --> 00:05:23,160 Revisiting aming sitwasyon, sabihin ipinapalagay na lang gumawa kami ng isang bagong tatak ng cupcake. 79 00:05:25,910 --> 00:05:30,080 Dahil napaka namin ay isinaayos mga eaters cupcake, kami ay pagpunta sa may upang ipasok ang bagong cupcake 80 00:05:30,080 --> 00:05:32,330 sa aming mga talahanayan ng cupcake_cupboard. 81 00:05:32,330 --> 00:05:40,690 Ang syntax upang gawin ito ay ito: Ipasok ang espasyo sa espasyo ng aming mga talahanayan, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, espasyo (, 83 00:05:46,830 --> 00:05:51,060 at dito namin tukuyin ang mga pangalan ng haligi, delimited ng kuwit, 84 00:05:51,060 --> 00:05:59,790 Ang CakeType kuwit CakeColor kuwit CakeIsNice) space. 85 00:05:59,790 --> 00:06:06,540 Pagsunod sa, isulat namin ang salitang halaga ng espasyo (at dito 86 00:06:06,540 --> 00:06:12,170 ipasok namin ang halaga para sa bawat haligi ayon sa pagkakasunud-sunod, din delimited sa pamamagitan ng isang kuwit. 87 00:06:12,170 --> 00:06:17,830 Single quote, dahil ang mga ito ang lahat ng mga Varchar halaga makikita palibutan namin ang mga ito sa single quote, 88 00:06:17,830 --> 00:06:26,780 Matingkad na kayumanggi 'comma' peanut butter 'kuwit True. 89 00:06:26,780 --> 00:06:30,480 Ngayon, ito ay mahalaga upang bigyan ang bawat hilera sa isang natatanging numero upang makilala ang sarili nito. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing isang haligi ay nagbibigay ito bilang 91 00:06:33,660 --> 00:06:37,410  "Walang dalawang sa parehong ID ay maaaring kailanman umiiral sa talahanayan na ito." 92 00:06:37,410 --> 00:06:39,480 Natin sige at execute. 93 00:06:39,480 --> 00:06:45,380 Doon kami, lahat ng organisadong. 94 00:06:49,720 --> 00:06:52,100 >> Ang susunod na statement sa SQL na namin magsulat ng isang update statement. 95 00:06:52,100 --> 00:06:55,650 Ang update pahayag ay maaaring gamitin upang baguhin ang data sa loob ng isang haligi 96 00:06:55,650 --> 00:06:58,440 para sa anumang umiiral na hanay sa iyong talahanayan ng database. 97 00:06:59,670 --> 00:07:03,420 Mas maaga sa aming sitwasyon, gamit ang isang piliin ang pahayag, nakilala namin ang isang cupcake 98 00:07:03,420 --> 00:07:08,300 sa loob ng talahanayan ng aming cupcake_cupboard na CakeIsNice halaga ay Maling. 99 00:07:08,300 --> 00:07:12,050 Ipagpalagay nating na habang ang aming peanut butter cupcake sa oven, 100 00:07:12,050 --> 00:07:15,790 ginawa namin ang aming hindi-kaya-magaling cupcake napakabuti. 101 00:07:18,020 --> 00:07:22,240 Na kaya iba isinaayos, nais namin na ang aming cupcake upang ipakita ang halaga 102 00:07:22,240 --> 00:07:24,240 sa aming mga talahanayan ng cupcake_cupboard. 103 00:07:24,240 --> 00:07:28,710 Samakatuwid, sabihin i-update ang aming tsokolate cupcake sa database upang ipakita ang. 104 00:07:28,710 --> 00:07:39,720 Syntax ay: i-update ang espasyo ng aming table, cupcake_cupboard, space Itakda ang espasyo 105 00:07:39,720 --> 00:07:44,240 ang haligi na nais naming baguhin, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Pagkatapos namin dito ilagay ang aming bagong halaga True espasyo. 107 00:07:49,210 --> 00:07:54,290 Ngayon, dahil hindi namin nais na i-update ang lahat ng mga hilera na may halaga na ito, 108 00:07:54,290 --> 00:07:57,400 gusto naming magbigay ng "Saan" sugnay na ituro sa amin 109 00:07:57,400 --> 00:07:59,830 sa ang eksaktong hilera na gusto naming baguhin. 110 00:07:59,830 --> 00:08:03,690 Sa kasong ito, alam namin na mayroon lamang isang cupcake 111 00:08:03,690 --> 00:08:06,670 na may ng CakeIsNice halaga ng Maling. 112 00:08:06,670 --> 00:08:11,030 Bukod dito, kami din masiguro na kami ay nag-a-update ng ang tamang hilera 113 00:08:11,030 --> 00:08:13,030 sa pamamagitan ng gamit ang "At" sugnay. 114 00:08:14,340 --> 00:08:17,270 Ginagamit namin ang "At" sugnay upang pinuhin ang aming query pa. 115 00:08:17,270 --> 00:08:20,380 Sa kasong ito, dahil alam namin na ang cupcake ang tsokolate, 116 00:08:20,380 --> 00:08:23,160 gagamitin namin ito CakeType haligi. 117 00:08:23,160 --> 00:08:31,500 SAAN na espasyo aming kondisyon haligi CakeIsNice espasyo espasyo = Maling, 118 00:08:31,500 --> 00:08:38,330 at espasyo CakeType = 'tsokolate.' 119 00:08:38,330 --> 00:08:41,880 Kaya, paglalagay ng mga ito sa lahat ng sama-sama, sabi ng pahayag ang update na ito 120 00:08:41,880 --> 00:08:44,670 mahanap ang lahat ng mga cupcake sa aming cupcake aparador, 121 00:08:44,670 --> 00:08:50,520 at kung may isang cupcake na ang haligi na naglalaman ng CakeIsNice ang halaga Maling 122 00:08:50,520 --> 00:08:54,130 at CakeType naglalaman ang halaga ng tsokolate, 123 00:08:54,130 --> 00:08:58,240 gusto naming i-update ang tiyak na mga hilera sa halaga ng CakeIsNice sa True. 124 00:08:58,240 --> 00:09:01,140 Kaya, sabihin sige at isagawa ang statement. 125 00:09:03,860 --> 00:09:05,860 At ngayon, kami ay nakaayos. 126 00:09:06,650 --> 00:09:09,220 >> Ang lahat ng ito talk ng cupcake ako ng isang bit gutom. 127 00:09:09,220 --> 00:09:11,360 Tingin ko dapat ko ng tulong sa aking sarili sa isa. 128 00:09:11,360 --> 00:09:17,670 Ngunit kung ako aktwal kumain ito cupcake, dapat ko ng hindi bababa sa ring alisin ang nito pagkakaroon 129 00:09:17,670 --> 00:09:19,670  mula sa aming mga talahanayan ng cupcake_cupboard. 130 00:09:20,650 --> 00:09:22,590 Upang gawin ito, gagamitin namin ang "Tanggalin" na statement. 131 00:09:22,590 --> 00:09:27,400 Ang "Tanggalin" na statement ay maaaring gamitin upang alisin ang lahat o ilang mga hilera mula sa talahanayan. 132 00:09:27,400 --> 00:09:29,920 Kung nais mong alisin ang ilang mga tukoy na hanay mula sa talahanayan, 133 00:09:29,920 --> 00:09:34,360 at pagkatapos dapat kang magbigay ng "Saan" sugnay, kaya tumutukoy ng isang haligi 134 00:09:34,360 --> 00:09:37,660 na dapat na natatangi sa hilera na nais mong alisin. 135 00:09:37,660 --> 00:09:47,370 Ito ang syntax: ALISIN puwang MULA espasyo aming table, cupcake_cupboard, space. 136 00:09:47,370 --> 00:09:51,760 Ngayon, sa puntong ito, sa tuwing ikaw ay ito malayo sa iyong tanggalin pahayag 137 00:09:51,760 --> 00:09:54,240 Gusto mong maging maingat. 138 00:09:54,240 --> 00:09:59,970 Halimbawa, kung gusto kong patakbuhin ang query na hindi pagbibigay ng ilang "Saan" sugnay 139 00:09:59,970 --> 00:10:04,500 Gusto ko mawala ang lahat ng mga data sa table na ito ng cupcake_cupboard, 140 00:10:04,500 --> 00:10:09,590 ngunit dahil alam ko na na ang aking mga cake ID ay natatanging, makikita ko bang gamitin ang 141 00:10:09,590 --> 00:10:12,410 Red ID ng velvet cake para sa aking sugnay na "Saan". 142 00:10:14,550 --> 00:10:20,670 SAAN espasyo ang aming hanay, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Dahil ito ay isang integer value ay hindi na kailangang palibutan ito ng single quote. 144 00:10:25,010 --> 00:10:27,020 Kaya, sabihin magsagawa ng pahayag. 145 00:10:33,560 --> 00:10:35,990 Well, ngayon na kami wiped ang pagkakaroon ng cupcake na ito 146 00:10:35,990 --> 00:10:40,360 mula sa aming mga talahanayan ng cupcake_cupboard, lamang namin ay may isang bagay kaliwa: 147 00:10:41,680 --> 00:10:43,680 Gawin itong mawala. 148 00:10:43,680 --> 00:10:46,990 Ako Christopher Bartholomew. Ito ay CS50.