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 [INI ADALAH CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Jadi, pengaturcara menggunakan pangkalan data sebagai alat untuk menyimpan dan menyusun 5 00:00:11,620 --> 00:00:13,620 kami data berterusan dalam jadual. 6 00:00:13,620 --> 00:00:18,960 Ini bermakna bahawa data anda disimpan pada median bukan menentu seperti cakera keras, 7 00:00:18,960 --> 00:00:22,940 dan walaupun komputer dimatikan, data masih utuh. 8 00:00:22,940 --> 00:00:29,530 Dan, sebagai pengaturcara, program kami menggunakan pangkalan data untuk senario seperti menyimpan 9 00:00:29,530 --> 00:00:32,890 maklumat pengguna dari borang web, mencari inventori, 10 00:00:32,890 --> 00:00:36,210 atau mengemaskini maklumat tentang apakah laman web yang memaparkan. 11 00:00:37,150 --> 00:00:40,070 Tetapi bagaimana kita sebenarnya berinteraksi dengan pangkalan data kami, 12 00:00:40,070 --> 00:00:43,150 atau apa yang kita gunakan untuk membaca, menyimpan, memadam, 13 00:00:43,150 --> 00:00:46,070 dan mengemaskini data kami dalam jadual pangkalan data? 14 00:00:47,280 --> 00:00:49,700 Nah, jawapannya adalah kita menggunakan jenis khas bahasa pangkalan data 15 00:00:49,700 --> 00:00:53,400 yang berinteraksi secara langsung dengan jadual pangkalan data kami. 16 00:00:53,400 --> 00:00:56,740 Nama ia Berstruktur Query Language, 17 00:00:56,740 --> 00:00:58,740 [Bahasa Pertanyaan Berstruktur] 18 00:00:58,740 --> 00:01:00,740 atau apa yang saya rujuk sebagai SQL. 19 00:01:00,740 --> 00:01:05,100 >> Sekarang, [Se-Quel], atau SQL, tidak adalah bahasa pengaturcaraan, 20 00:01:05,100 --> 00:01:08,580 tetapi sebaliknya, ia adalah satu bahasa yang menyediakan satu set standard arahan 21 00:01:08,580 --> 00:01:13,520 untuk mendapatkan semula dan memanipulasi data dari pelbagai sistem pengurusan pangkalan data. 22 00:01:13,520 --> 00:01:17,630 Untuk tujuan CS50, kita akan pergi ke empat arahan asas: 23 00:01:17,630 --> 00:01:21,210 pilih, memasukkan, mengemaskini, dan memadam. 24 00:01:21,210 --> 00:01:26,230 Tambahan pula, kami akan menggunakan antara muka pangkalan data web yang dipanggil phpMyAdmin, 25 00:01:26,230 --> 00:01:29,890 yang dipasang pada perkakas untuk menulis kenyataan SQL kami. 26 00:01:30,830 --> 00:01:33,050 Jadi, untuk membantu anda ingat arahan ini, 27 00:01:33,050 --> 00:01:37,080 Saya telah membawa beberapa cupcakes di dalam almari untuk membantu dengan senario kami. 28 00:01:39,650 --> 00:01:42,210 Katakanlah anda mempunyai pangkalan data cupcake, 29 00:01:42,210 --> 00:01:44,490 di mana anda menyimpan semua maklumat tentang cupcakes anda. 30 00:01:44,490 --> 00:01:48,220 Sekarang, pangkalan data boleh mengandungi banyak jadual 31 00:01:48,220 --> 00:01:50,950 dan jadual sendiri boleh mengandungi lajur banyak. 32 00:01:50,950 --> 00:01:57,020 Di dalam pangkalan data cupcake kita, kita mempunyai jadual yang dipanggil cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Jadual ini akan digunakan untuk menyimpan semua maklumat tentang cupcakes 34 00:02:00,500 --> 00:02:02,990 yang, baik, di dalam almari anda. 35 00:02:02,990 --> 00:02:07,770 Tiang-tiang yang berada di dalam jadual anda mewakili sifat cupcake satu. 36 00:02:07,770 --> 00:02:14,560 Sebagai contoh, ruangan yang cupcake_cupboard 37 00:02:14,560 --> 00:02:15,920 Kek ID, CakeType, CakeColor, dan CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Ruangan ini boolean menaip digunakan untuk menentukan jika kek adalah baik atau tidak baik. 39 00:02:23,040 --> 00:02:26,560 Kami akan bermula dengan menulis kenyataan pilih. 40 00:02:26,560 --> 00:02:32,160 Pilih kenyataan yang digunakan untuk mendapatkan data jadual pangkalan data tertentu. 41 00:02:32,160 --> 00:02:34,890 Dalam senario ini, kita mahu tahu segala-galanya 42 00:02:34,890 --> 00:02:39,080 tentang semua cupcakes yang wujud di dalam almari kami. 43 00:02:39,080 --> 00:02:48,670 Syntax untuk melakukan ini adalah "Select" ruang bintang, atau *, ruang dari ruang meja kami, 44 00:02:48,670 --> 00:02:52,050 yang cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Mari kita pergi ke hadapan dan melaksanakan bahawa. 46 00:02:56,670 --> 00:03:00,140 >> Seperti yang kita boleh lihat, semua ini adalah cupcakes dalam almari kami. 47 00:03:00,140 --> 00:03:05,110 Adalah penting untuk ambil perhatian bahawa *, atau asterisk, adalah watak kad liar 48 00:03:05,110 --> 00:03:08,830 yang menandakan perhimpunan semua ruangan jadual tertentu. 49 00:03:08,830 --> 00:03:13,650 Biasanya, kita boleh mengakses lajur tertentu atau lajur 50 00:03:13,650 --> 00:03:16,950 dengan menggantikan * dengan nama ruang sebenar. 51 00:03:16,950 --> 00:03:21,220 Jika kita mahu berbilang lajur, tetapi tidak semua, kita boleh mencapai matlamat ini 52 00:03:21,220 --> 00:03:25,620 dengan menulis nama lajur delimiting setiap lajur oleh koma. 53 00:03:25,620 --> 00:03:28,620 Sebagai contoh, mari kita hanya mengambil CakeId dan CakeType dalam jadual cupcake_cupboard. 54 00:03:28,620 --> 00:03:38,370 Sintaks untuk melakukan ini ialah: SELECT ruang CakeID koma 55 00:03:38,370 --> 00:03:44,370 Ruang CakeType dari jadual kami, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Mari kita pergi ke hadapan dan melaksanakan ini. 57 00:03:49,340 --> 00:03:52,670 Dan di sini, kini kita hanya mempunyai dua tiang kita dinyatakan 58 00:03:52,670 --> 00:03:54,670 untuk setiap cupcake dalam almari kami. 59 00:03:54,670 --> 00:03:57,710 Kita juga boleh memperbaiki keputusan query kami dengan menyatakan 60 00:03:57,710 --> 00:04:00,910 "Di mana" fasal hanya selepas nama table. 61 00:04:02,000 --> 00:04:05,410 Sebagai contoh, terdapat muncul untuk menjadi cupcake dalam almari kami 62 00:04:05,410 --> 00:04:08,660 yang, baik, tidak begitu baik cari. 63 00:04:08,660 --> 00:04:13,950 Mari kita memikirkan semua cupcakes dalam almari kami yang baik, tidak begitu baik mencari 64 00:04:13,950 --> 00:04:16,110 menggunakan "Di mana" fasal. 65 00:04:16,110 --> 00:04:26,390 Sintaks untuk melakukan ini ialah: ruang ruang SELECT * DARI cupcake_cupboard ruang 66 00:04:26,390 --> 00:04:34,080 angkasa MANA kolum ruang bersyarat, dalam kes ini CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 dan nilai boolean palsu. 68 00:04:36,900 --> 00:04:42,750 Adalah penting untuk ambil perhatian bahawa jika anda menggunakan tali, anda mesti sertakan dalam petikan tunggal. 69 00:04:42,750 --> 00:04:49,620 Ini adalah benar bagi semua rentetan dalam SQL, atau, dari segi pangkalan data SQL, watak-watak varian 70 00:04:49,620 --> 00:04:51,620 dikenali sebagai VARCHAR jenisdata. 71 00:04:51,620 --> 00:04:57,660 Dalam kes ini, kita menggunakan Benar atau Palsu, yang merupakan nilai boolean dan tidak rentetan. 72 00:04:59,120 --> 00:05:00,660 Mari kita pergi ke hadapan dan melaksanakan arahan ini. 73 00:05:00,660 --> 00:05:05,340 >> Nah, lihatlah, ia adalah kes bahawa kita mempunyai 1 coklat 74 00:05:05,340 --> 00:05:07,920 tidak begitu baik cupcake dalam almari kami. 75 00:05:09,620 --> 00:05:11,460 Seterusnya, kita pergi untuk menulis kenyataan memasukkan. 76 00:05:11,460 --> 00:05:15,560 Penyata Sisipan digunakan untuk memasukkan atau menambah 77 00:05:15,560 --> 00:05:17,770 baris tambahan data ke dalam jadual pangkalan data anda. 78 00:05:17,770 --> 00:05:23,160 Melawati senario kita, mari kita andaikan bahawa kita baru sahaja membuat jenama baru cupcake. 79 00:05:25,910 --> 00:05:30,080 Sejak kita sangat dianjurkan pemakan cupcake, kita akan perlu untuk memasukkan ini cupcake baru 80 00:05:30,080 --> 00:05:32,330 dalam jadual cupcake_cupboard kami. 81 00:05:32,330 --> 00:05:40,690 Syntax untuk melakukan ini adalah ini: Masukkan ruang ke ruang meja kami, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, ruang (, 83 00:05:46,830 --> 00:05:51,060 dan di sini kita nyatakan nama kolum, dihalang oleh koma, 84 00:05:51,060 --> 00:05:59,790 CakeType koma CakeColor koma CakeIsNice) ruang. 85 00:05:59,790 --> 00:06:06,540 Berikutan ini, kita menulis ruang NILAI perkataan (, dan di sini 86 00:06:06,540 --> 00:06:12,170 kita masukkan nilai bagi setiap lajur masing-masing, juga dipisahkan oleh koma. 87 00:06:12,170 --> 00:06:17,830 Quote Single, kerana mereka semua nilai VARCHAR kita akan mengelilingi mereka dalam petikan tunggal, 88 00:06:17,830 --> 00:06:26,780 BROWN LIGHT 'koma' MENTEGA KACANG 'Benar koma. 89 00:06:26,780 --> 00:06:30,480 Kini, ia adalah penting untuk memberi setiap baris nombor unik untuk mengenal pasti dirinya. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing lajur menyediakan ini sebagai 91 00:06:33,660 --> 00:06:37,410  "Tiada dua ID yang sama pernah boleh wujud dalam jadual ini." 92 00:06:37,410 --> 00:06:39,480 Mari kita pergi ke hadapan dan melaksanakan. 93 00:06:39,480 --> 00:06:45,380 Kita pergi, semua tersusun. 94 00:06:49,720 --> 00:06:52,100 >> Pernyataan SQL seterusnya bahawa kita akan menulis adalah satu kenyataan update. 95 00:06:52,100 --> 00:06:55,650 Kenyataan kemas kini boleh digunakan untuk mengubah data dalam lajur 96 00:06:55,650 --> 00:06:58,440 bagi barisan yang sedia ada dalam jadual pangkalan data anda. 97 00:06:59,670 --> 00:07:03,420 Terdahulu, dalam senario kami, menggunakan kenyataan pilih, kami telah mengenal pasti cupcake 98 00:07:03,420 --> 00:07:08,300 dalam jadual cupcake_cupboard kita nilai CakeIsNice yang adalah palsu. 99 00:07:08,300 --> 00:07:12,050 Mari kita andaikan bahawa sementara cupcake mentega kacang kami adalah di dalam oven, 100 00:07:12,050 --> 00:07:15,790 kami membuat cupcake kami tidak-begitu-baik sangat bagus. 101 00:07:18,020 --> 00:07:22,240 Yang begitu sangat dianjurkan, kita mahu cupcake kami untuk mencerminkan nilai ini 102 00:07:22,240 --> 00:07:24,240 dalam jadual cupcake_cupboard kami. 103 00:07:24,240 --> 00:07:28,710 Oleh itu, mari kita mengemaskini cupcake coklat dalam pangkalan data kami untuk mencerminkan ini. 104 00:07:28,710 --> 00:07:39,720 Sintaks adalah: UPDATE ruang meja kami, cupcake_cupboard, ruang ruang SET 105 00:07:39,720 --> 00:07:44,240 lajur bahawa kita ingin berubah, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Kemudian di sini kita meletakkan ruang nilai baru kami Benar. 107 00:07:49,210 --> 00:07:54,290 Sekarang, kerana kita tidak mahu untuk mengemaskini semua baris dengan nilai ini, 108 00:07:54,290 --> 00:07:57,400 kami ingin memberikan "Jika" klausa yang akan menentukan kita 109 00:07:57,400 --> 00:07:59,830 kepada barisan yang tepat yang kita mahu untuk mengubah suai. 110 00:07:59,830 --> 00:08:03,690 Dalam kes ini, kita tahu bahawa hanya ada satu cupcake 111 00:08:03,690 --> 00:08:06,670 yang mempunyai nilai CakeIsNice atau Palsu. 112 00:08:06,670 --> 00:08:11,030 Selain itu, kami juga akan memastikan bahawa kami sedang mengemaskini barisan yang betul 113 00:08:11,030 --> 00:08:13,030 dengan menggunakan "Dan" fasal. 114 00:08:14,340 --> 00:08:17,270 Kami menggunakan "Dan" fasal untuk memperbaiki query kami. 115 00:08:17,270 --> 00:08:20,380 Dalam kes ini, kerana kita tahu bahawa cupcake coklat, 116 00:08:20,380 --> 00:08:23,160 kita akan menggunakan ruangan ini CakeType. 117 00:08:23,160 --> 00:08:31,500 MANA ruang kolum ruang bersyarat CakeIsNice ruang = False, 118 00:08:31,500 --> 00:08:38,330 dan ruang CakeType = 'COKLAT'. 119 00:08:38,330 --> 00:08:41,880 Jadi, meletakkan semua bersama-sama, kenyataan ini kemas kini mengatakan 120 00:08:41,880 --> 00:08:44,670 mencari semua cupcakes dalam almari cupcake kami, 121 00:08:44,670 --> 00:08:50,520 dan jika ada adalah cupcake yang kolum CakeIsNice mengandungi nilai Palsu 122 00:08:50,520 --> 00:08:54,130 dan CakeType mengandungi COKLAT nilai, 123 00:08:54,130 --> 00:08:58,240 kita mahu untuk mengemaskini baris tertentu CakeIsNice nilai kepada Benar. 124 00:08:58,240 --> 00:09:01,140 Jadi, mari kita pergi ke hadapan dan melaksanakan kenyataan itu. 125 00:09:03,860 --> 00:09:05,860 Dan sekarang, kita dianjurkan. 126 00:09:06,650 --> 00:09:09,220 >> Semua ini bercakap cupcakes telah membuat saya sedikit lapar. 127 00:09:09,220 --> 00:09:11,360 Saya rasa saya perlu membantu diri saya kepada satu. 128 00:09:11,360 --> 00:09:17,670 Tetapi jika saya benar-benar makan cupcake ini, saya perlu sekurang-kurangnya juga mengeluarkan kewujudannya 129 00:09:17,670 --> 00:09:19,670  dari jadual cupcake_cupboard kami. 130 00:09:20,650 --> 00:09:22,590 Untuk melakukan ini, kita akan menggunakan kenyataan "Delete". 131 00:09:22,590 --> 00:09:27,400 "Delete" kata kenyataan boleh digunakan untuk membuang semua atau beberapa baris dari jadual. 132 00:09:27,400 --> 00:09:29,920 Jika anda ingin mengeluarkan beberapa baris tertentu dari jadual, 133 00:09:29,920 --> 00:09:34,360 maka anda mesti menyediakan "Di mana" fasal, lantas menyatakan lajur 134 00:09:34,360 --> 00:09:37,660 yang harus unik untuk berturut-turut bahawa anda ingin membuang. 135 00:09:37,660 --> 00:09:47,370 Ini adalah sintaks: DELETE ruang DARIPADA ruang meja kami, cupcake_cupboard, ruang. 136 00:09:47,370 --> 00:09:51,760 Kini, pada ketika ini, apabila anda ini jauh dalam penyata anda padam 137 00:09:51,760 --> 00:09:54,240 anda mahu menjadi sangat berhati-hati. 138 00:09:54,240 --> 00:09:59,970 Sebagai contoh, jika saya mahu menjalankan pertanyaan ini adalah tanpa menyediakan beberapa "Di mana" fasal 139 00:09:59,970 --> 00:10:04,500 Saya akan kehilangan semua data dalam jadual cupcake_cupboard ini, 140 00:10:04,500 --> 00:10:09,590 tetapi kerana saya sudah tahu bahawa ID kek saya adalah unik, saya akan menggunakan 141 00:10:09,590 --> 00:10:12,410 ID untuk kek Velvet Merah fasal "Di manakah" saya. 142 00:10:14,550 --> 00:10:20,670 MANA ruang lajur kami, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Kerana ini adalah satu nilai integer tidak ada keperluan mengelilinginya dalam petikan tunggal. 144 00:10:25,010 --> 00:10:27,020 Jadi, mari kita melaksanakan kenyataan itu. 145 00:10:33,560 --> 00:10:35,990 Nah, sekarang kita telah menyapu kewujudan cupcake ini 146 00:10:35,990 --> 00:10:40,360 dari jadual cupcake_cupboard kita, kita hanya mempunyai satu perkara kiri: 147 00:10:41,680 --> 00:10:43,680 Jadikan ia hilang. 148 00:10:43,680 --> 00:10:46,990 Saya Christopher Bartholomew. Ini adalah CS50.