1 00:00:00,000 --> 00:00:03,493 >> [Bermain muzik] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: Dalam video kami mengenai topik-topik pembangunan web, 4 00:00:07,100 --> 00:00:10,560 kami telah menyebut tentang konsep pangkalan data beberapa kali, bukan? 5 00:00:10,560 --> 00:00:12,700 Jadi pangkalan data anda mungkin biasa dengan dari 6 00:00:12,700 --> 00:00:15,780 mengatakan menggunakan Microsoft Excel atau Hamparan Google. 7 00:00:15,780 --> 00:00:20,650 Ia benar-benar hanya satu yang dianjurkan set meja, baris dan lajur. 8 00:00:20,650 --> 00:00:23,140 >> Dan pangkalan data adalah di mana laman web kedai-kedai kami 9 00:00:23,140 --> 00:00:26,760 maklumat yang penting untuk laman web kami untuk berfungsi dengan baik. 10 00:00:26,760 --> 00:00:30,150 Sekali lagi, satu contoh yang benar-benar biasa di sini yang menyimpan nama pengguna dan kata laluan 11 00:00:30,150 --> 00:00:32,824 dalam pangkalan data, supaya apabila pengguna log ke dalam laman web kami, 12 00:00:32,824 --> 00:00:36,690 pangkalan data boleh disoal untuk melihat jika pengguna yang wujud dalam pangkalan data. 13 00:00:36,690 --> 00:00:39,260 Dan jika mereka, memeriksa bahawa kata laluan mereka adalah betul. 14 00:00:39,260 --> 00:00:43,420 Dan jika kata laluan mereka adalah betul, maka kita boleh memberi mereka apa sahaja halaman 15 00:00:43,420 --> 00:00:45,370 mereka meminta. 16 00:00:45,370 --> 00:00:48,590 >> Jadi anda mungkin, sekali lagi, biasa dengan idea ini dari Excel atau Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheet. 18 00:00:49,430 --> 00:00:52,980 Kami mempunyai pangkalan data, meja, baris dan lajur. 19 00:00:52,980 --> 00:00:56,450 Dan itu benar-benar jenis set asas 20 00:00:56,450 --> 00:00:58,470 pecahan hierarki di sini. 21 00:00:58,470 --> 00:00:59,800 Jadi di sini adalah spreadsheet Excel. 22 00:00:59,800 --> 00:01:02,640 Dan jika anda pernah dibuka ini atau program lain yang serupa 23 00:01:02,640 --> 00:01:06,780 anda tahu bahawa di sini adalah rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Ini adalah lajur. 25 00:01:08,760 --> 00:01:11,790 >> Mungkin turun di sini, walaupun anda boleh tidak menggunakan ciri-ciri ini sangat much-- 26 00:01:11,790 --> 00:01:15,370 Saya akan zum dalam- kita ada idea ini sheet. 27 00:01:15,370 --> 00:01:17,930 Jadi mungkin helaian ini, jika Saya ganti belakang dan sebagainya, 28 00:01:17,930 --> 00:01:21,600 adalah jadual yang berbeza yang wujud di dalam pangkalan data saya. 29 00:01:21,600 --> 00:01:25,210 Dan jika kita terus contoh di semua cara, nama pangkalan data ini 30 00:01:25,210 --> 00:01:26,940 adalah Book 1. 31 00:01:26,940 --> 00:01:28,710 Mungkin saya mempunyai Book 2 dan Buku 3. 32 00:01:28,710 --> 00:01:33,270 Jadi setiap fail Excel ialah pangkalan data, setiap lembaran adalah meja, 33 00:01:33,270 --> 00:01:39,530 dan di dalam setiap jadual Saya mempunyai idea ini baris dan lajur. 34 00:01:39,530 --> 00:01:41,900 >> Jadi bagaimana saya bekerja dengan pangkalan data ini? 35 00:01:41,900 --> 00:01:43,630 Bagaimana saya boleh mendapatkan maklumat daripada itu? 36 00:01:43,630 --> 00:01:47,540 Nah ada bahasa yang dipanggil SQL-- yang saya biasanya hanya memanggil Sequel-- 37 00:01:47,540 --> 00:01:50,010 dan ia bermaksud Bahasa Pertanyaan Berstruktur. 38 00:01:50,010 --> 00:01:52,981 Dan ia adalah satu bahasa pengaturcaraan, tetapi ia adalah program yang agak terhad 39 00:01:52,981 --> 00:01:53,480 bahasa. 40 00:01:53,480 --> 00:01:56,407 Ia tidak cukup seperti yang lain yang kita telah bekerja dengan. 41 00:01:56,407 --> 00:01:58,240 Tetapi maksud ini bahasa pengaturcaraan 42 00:01:58,240 --> 00:02:01,570 adalah untuk query pangkalan data, untuk meminta maklumat daripada pangkalan data, 43 00:02:01,570 --> 00:02:04,480 mencari maklumat dalam pangkalan data, dan sebagainya. 44 00:02:04,480 --> 00:02:08,449 >> Kami juga, dalam CS50-- dan ia adalah sangat platform yang sama, ia dipanggil MySQL. 45 00:02:08,449 --> 00:02:10,600 Itulah yang kita gunakan dalam kursus ini. 46 00:02:10,600 --> 00:02:12,880 Ia merupakan satu sumber terbuka platform yang menetapkan 47 00:02:12,880 --> 00:02:16,732 apa yang dipanggil database-- hubungan pangkalan data, berkesan. 48 00:02:16,732 --> 00:02:18,440 Kita tidak perlu untuk mendapatkan ke detail terlalu banyak 49 00:02:18,440 --> 00:02:20,930 kepada apa pangkalan data hubungan adalah. 50 00:02:20,930 --> 00:02:24,650 Tetapi bahasa SQL adalah sangat mahir bekerja 51 00:02:24,650 --> 00:02:29,760 dengan MySQL dan lain-lain yang serupa gaya pangkalan data hubungan. 52 00:02:29,760 --> 00:02:34,010 >> Dan banyak pemasangan MySQL datang dengan sesuatu 53 00:02:34,010 --> 00:02:37,760 dipanggil phpMyAdmin, yang adalah pengguna grafik 54 00:02:37,760 --> 00:02:40,970 interface-- GUI-- yang menjadikan ia lebih sedikit 55 00:02:40,970 --> 00:02:44,410 mesra untuk melaksanakan pengguna pertanyaan pangkalan data, 56 00:02:44,410 --> 00:02:48,980 kerana pangkalan data yang tidak hanya digunakan oleh pengaturcara maju, bukan? 57 00:02:48,980 --> 00:02:51,510 Kadang-kadang ada perniagaan kecil ini, 58 00:02:51,510 --> 00:02:53,900 dan mereka tidak mampu untuk mengupah satu pasukan pengaturcara, 59 00:02:53,900 --> 00:02:56,700 tetapi mereka masih perlu menyimpan maklumat di dalam sistem database. 60 00:02:56,700 --> 00:02:59,300 >> Sesuatu seperti phpMyAdmin menjadikan ia sangat mudah untuk seseorang 61 00:02:59,300 --> 00:03:03,630 yang tidak pernah diprogramkan sebelum ke mengambil dan menjadi biasa dengan bagaimana 62 00:03:03,630 --> 00:03:07,710 untuk bekerja dengan database. 63 00:03:07,710 --> 00:03:11,800 Masalahnya ialah, phpMyAdmin, manakala ia adalah alat yang hebat untuk pembelajaran 64 00:03:11,800 --> 00:03:14,850 mengenai pangkalan data, adalah manual. 65 00:03:14,850 --> 00:03:18,050 Anda akan perlu untuk log masuk ke dan melaksanakan arahan dan jenis 66 00:03:18,050 --> 00:03:19,910 perkara-perkara dalam manual. 67 00:03:19,910 --> 00:03:23,160 >> Dan seperti yang kita tahu daripada kami contoh pada PHP pengaturcaraan web, 68 00:03:23,160 --> 00:03:26,550 yang mempunyai kaitan secara manual perkara di laman web kami, 69 00:03:26,550 --> 00:03:30,970 jika kita mahu yang dinamik, responsif aktif laman web, mungkin tidak pendekatan yang terbaik. 70 00:03:30,970 --> 00:03:33,980 Kami ingin mencari jalan untuk mungkin mengautomasikan ini entah bagaimana. 71 00:03:33,980 --> 00:03:37,864 Dan SQL akan membolehkan kami untuk melakukan ini. 72 00:03:37,864 --> 00:03:39,780 Oleh itu, apabila kita akan mula bekerja dengan SQL, 73 00:03:39,780 --> 00:03:41,220 kita perlu mempunyai pangkalan data untuk bekerja dengan. 74 00:03:41,220 --> 00:03:42,510 Mewujudkan pangkalan data yang sesuatu yang anda mungkin 75 00:03:42,510 --> 00:03:45,350 akan lakukan di phpMyAdmin, kerana anda hanya perlu melakukannya sekali, 76 00:03:45,350 --> 00:03:49,690 dan sintaks untuk berbuat demikian adalah lebih mudah. 77 00:03:49,690 --> 00:03:51,940 Ia adalah lebih mudah untuk melakukannya dalam antara muka pengguna grafik 78 00:03:51,940 --> 00:03:53,520 daripada menaip sebagai perintah. 79 00:03:53,520 --> 00:03:55,186 Arahan ini boleh mendapatkan rumit sedikit. 80 00:03:55,186 --> 00:03:58,889 Begitu juga, mewujudkan jadual boleh mendapatkan cukup agak rumit juga. 81 00:03:58,889 --> 00:04:01,930 Dan supaya perkara seperti mewujudkan pangkalan data dan mewujudkan carta, yang anda berada 82 00:04:01,930 --> 00:04:06,270 mungkin hanya akan melakukan once-- sekali dalam jadual, sekali setiap database-- 83 00:04:06,270 --> 00:04:09,040 ia OK untuk melakukannya dalam antara muka grafik. 84 00:04:09,040 --> 00:04:11,570 Dalam proses mewujudkan jadual, anda akan 85 00:04:11,570 --> 00:04:14,840 juga perlu menentukan semua ruangan yang akan berada di meja itu. 86 00:04:14,840 --> 00:04:18,149 Apakah jenis maklumat yang sering Anda ingin simpan dalam jadual? 87 00:04:18,149 --> 00:04:24,520 Mungkin nama dan tarikh lahir pengguna, kata laluan, nombor ID pengguna, dan mungkin 88 00:04:24,520 --> 00:04:26,170 bandar dan negeri, bukan? 89 00:04:26,170 --> 00:04:30,080 >> Dan bagi tiap-tiap kali kita mahu menambah pengguna kepada pangkalan data, kita mahu untuk mendapatkan semua enam 90 00:04:30,080 --> 00:04:31,890 orang-orang keping maklumat. 91 00:04:31,890 --> 00:04:34,840 Dan kami melakukannya dengan menambah baris ke meja. 92 00:04:34,840 --> 00:04:37,800 Oleh itu, kita mula-mula buat pangkalan data, maka kita mencipta jadual. 93 00:04:37,800 --> 00:04:40,100 Sebagai sebahagian daripada mewujudkan jadual, kita diminta 94 00:04:40,100 --> 00:04:44,280 untuk menentukan setiap kolum yang kami ingin dalam jadual ini. 95 00:04:44,280 --> 00:04:47,247 Dan kemudian seperti yang kita mula menambah maklumat kepada pangkalan data 96 00:04:47,247 --> 00:04:49,580 dan pertanyaan pangkalan data yang lebih generally-- bukan sahaja menambah, 97 00:04:49,580 --> 00:04:51,610 tetapi segala-galanya kita do-- kami akan berurusan 98 00:04:51,610 --> 00:04:58,870 dengan deretan meja, yang merupakan salah satu maklumat pengguna daripada keseluruhan set. 99 00:04:58,870 --> 00:05:03,210 >> Jadi setiap kolum SQL mampu memegang data jenis data tertentu. 100 00:05:03,210 --> 00:05:06,560 Oleh itu, kita semacam ini dihapuskan idea jenis data dalam PHP, 101 00:05:06,560 --> 00:05:08,747 tetapi ia kembali ke sini dalam SQL. 102 00:05:08,747 --> 00:05:10,080 Dan ada banyak jenis data. 103 00:05:10,080 --> 00:05:13,420 Di sini hanya 20 daripada mereka, tetapi ia tidak walaupun semua daripada mereka. 104 00:05:13,420 --> 00:05:16,240 Oleh itu, kita mempunyai idea-idea seperti INTs-- Integers-- kita mungkin tahu 105 00:05:16,240 --> 00:05:17,760 bahawa ruangan ini boleh memegang integer. 106 00:05:17,760 --> 00:05:21,077 Dan terdapat variasi thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Mungkin kita tidak sentiasa memerlukan empat gigitan. 108 00:05:22,660 --> 00:05:26,800 Mungkin kita memerlukan lapan bait, dan dengan itu kita boleh menggunakan variasi pada bilangan bulat 109 00:05:26,800 --> 00:05:28,510 untuk menjadi sedikit lebih banyak ruang cekap. 110 00:05:28,510 --> 00:05:31,899 Kita boleh melakukan nombor perpuluhan, kita boleh lakukan nombor titik terapung. 111 00:05:31,899 --> 00:05:32,940 Ini adalah agak sama. 112 00:05:32,940 --> 00:05:34,773 Terdapat beberapa perbezaan, dan jika anda lakukan 113 00:05:34,773 --> 00:05:37,330 suka melihat sehingga Jenis SQL panduan, anda 114 00:05:37,330 --> 00:05:40,670 boleh melihat apa yang sedikit perbezaan antara mereka. 115 00:05:40,670 --> 00:05:43,250 >> Mungkin kita mahu menyimpan maklumat mengenai tarikh dan masa. 116 00:05:43,250 --> 00:05:47,047 Mungkin kita mengesan apabila pengguna menyertai laman web kami, 117 00:05:47,047 --> 00:05:48,880 dan jadi mungkin kita mahu mempunyai ruangan itu 118 00:05:48,880 --> 00:05:52,820 masa tarikh atau tanda waktu yang menunjukkan apabila pengguna sebenarnya 119 00:05:52,820 --> 00:05:54,130 mendaftar. 120 00:05:54,130 --> 00:05:56,132 Kita boleh melakukan geometri dan linestrings. 121 00:05:56,132 --> 00:05:57,340 Ini sebenarnya agak sejuk. 122 00:05:57,340 --> 00:06:01,410 Kita boleh memetakan kawasan geografi menggunakan 123 00:06:01,410 --> 00:06:05,110 Koordinat GIS untuk merancang keluar kawasan. 124 00:06:05,110 --> 00:06:08,580 Jadi sebenarnya boleh menyimpan seperti itu maklumat dalam lajur SQL. 125 00:06:08,580 --> 00:06:11,390 >> TEKS hanyalah gumpalan gergasi teks, mungkin. 126 00:06:11,390 --> 00:06:12,840 ENUMs adalah jenis yang menarik. 127 00:06:12,840 --> 00:06:16,080 Mereka benar-benar wujud dalam C. Kami tidak bercakap tentang mereka kerana mereka tidak 128 00:06:16,080 --> 00:06:19,110 terlalu biasa digunakan, sekurang-kurangnya CS50. 129 00:06:19,110 --> 00:06:22,680 Tetapi ia adalah satu jenis data yang disebut satu persatu, yang mampu memegang nilai-nilai yang terhad. 130 00:06:22,680 --> 00:06:25,940 >> Satu contoh yang benar-benar baik di sini akan menjadi untuk mewujudkan enum di mana tujuh 131 00:06:25,940 --> 00:06:29,394 nilai yang mungkin adalah Ahad, Isnin, Selasa, Rabu, Khamis, Jumaat, 132 00:06:29,394 --> 00:06:30,060 Sabtu, bukan? 133 00:06:30,060 --> 00:06:33,311 Pada hari itu jenis data Minggu tidak wujud, 134 00:06:33,311 --> 00:06:35,310 tetapi kita dapat membuat jenis data yang disebut satu persatu seperti 135 00:06:35,310 --> 00:06:39,400 bahawa ruang yang hanya pernah boleh memegang salah satu tujuh nilai yang mungkin. 136 00:06:39,400 --> 00:06:44,300 Kami telah disebut satu persatu semua daripada nilai yang mungkin. 137 00:06:44,300 --> 00:06:47,630 >> Kemudian kita mempunyai CHAR dan VARCHAR, dan saya telah mewarnakan ini hijau 138 00:06:47,630 --> 00:06:49,505 kerana kami benar-benar akan mengambil kedua 139 00:06:49,505 --> 00:06:51,950 untuk bercakap tentang perbezaan antara kedua-dua perkara. 140 00:06:51,950 --> 00:06:55,780 Jadi CHAR, tidak seperti mana C CHAR adalah seorang watak yang tunggal, 141 00:06:55,780 --> 00:07:00,730 dalam SQL CHAR merujuk kepada rentetan panjang tetap. 142 00:07:00,730 --> 00:07:02,620 Dan apabila kita mewujudkan ini lajur, kita benar-benar 143 00:07:02,620 --> 00:07:05,070 boleh menentukan panjang tali. 144 00:07:05,070 --> 00:07:08,080 >> Jadi, dalam contoh ini, kita mungkin berkata CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Ini bermakna bahawa setiap unsur lajur tersebut 146 00:07:11,190 --> 00:07:13,910 akan terdiri daripada 10 bait maklumat. 147 00:07:13,910 --> 00:07:15,770 Tidak lebih, tidak kurang. 148 00:07:15,770 --> 00:07:21,780 Jadi, jika kita cuba dan dimasukkan ke dalam 15 bit atau elemen 15 watak 149 00:07:21,780 --> 00:07:25,340 atau nilai ke dalam ruangan ini, kita hanya mendapatkan 10 pertama. 150 00:07:25,340 --> 00:07:27,290 Jika kita masukkan ke dalam kedua-dua Nilai watak panjang, 151 00:07:27,290 --> 00:07:30,700 kita akan mempunyai dua watak-watak, dan kemudian lapan gigitan null. 152 00:07:30,700 --> 00:07:34,990 Kami tidak akan menjadi lebih cekap daripada itu. 153 00:07:34,990 --> 00:07:37,727 >> A VARCHAR jenis seperti tanggapan kita rentetan 154 00:07:37,727 --> 00:07:39,560 yang kita sudah biasa dengan daripada C atau dari PHP. 155 00:07:39,560 --> 00:07:40,830 Ia rentetan panjang berubah-ubah. 156 00:07:40,830 --> 00:07:42,560 Dan apabila anda membuat ruangan ini, anda hanya 157 00:07:42,560 --> 00:07:44,860 menentukan panjang maksimum. 158 00:07:44,860 --> 00:07:49,065 Jadi mungkin 99, atau lebih 255. 159 00:07:49,065 --> 00:07:50,440 Itu akan menjadi panjang maksimum. 160 00:07:50,440 --> 00:07:52,890 Dan jadi jika kita menyimpan 15 rentetan aksara, 161 00:07:52,890 --> 00:07:56,157 kita akan menggunakan 15 bait, mungkin 16 bait untuk terminator nol. 162 00:07:56,157 --> 00:07:57,990 Jika kita telah menyimpan satu tiga rentetan aksara, 163 00:07:57,990 --> 00:08:01,120 kita akan menggunakan tiga atau empat bait. 164 00:08:01,120 --> 00:08:03,050 Tetapi kita tidak akan menggunakan sepenuhnya 99. 165 00:08:03,050 --> 00:08:05,190 >> Jadi mengapa kita perlu kedua-duanya? 166 00:08:05,190 --> 00:08:08,210 Nah, jika kita perlu memikirkan bagaimana sesuatu yang panjang adalah dengan VARCHAR yang, 167 00:08:08,210 --> 00:08:10,680 kita perlu jenis Itekadar merentasinya sama seperti yang kami lakukan pada C 168 00:08:10,680 --> 00:08:12,230 dan memikirkan di mana ia berhenti. 169 00:08:12,230 --> 00:08:15,920 Manakala jika kita tahu bahawa segala-galanya dalam ruangan ini adalah 10 bait, mungkin 170 00:08:15,920 --> 00:08:19,220 kita tahu maklumat itu, kita boleh melompat 10 bait, 10 bait, 10 bait, 10 bait, 171 00:08:19,220 --> 00:08:21,790 dan sentiasa mencari bermula tali. 172 00:08:21,790 --> 00:08:25,210 >> Oleh itu, kita mungkin mempunyai beberapa ruang dibazirkan dengan CHAR yang, 173 00:08:25,210 --> 00:08:28,510 tetapi mungkin ada perdagangan kira yang mempunyai kelajuan yang lebih baik 174 00:08:28,510 --> 00:08:30,160 dalam mengemudi pangkalan data. 175 00:08:30,160 --> 00:08:32,330 Tetapi mungkin kita mahu fleksibiliti yang VARCHAR 176 00:08:32,330 --> 00:08:36,710 bukannya having-- Jika CHAR kami adalah 255, tetapi kebanyakan pengguna kami 177 00:08:36,710 --> 00:08:40,537 hanya memasukkan tiga atau empat bait bernilai maklumat atau tiga atau empat 178 00:08:40,537 --> 00:08:41,870 Watak bernilai maklumat. 179 00:08:41,870 --> 00:08:44,324 >> Tetapi sesetengah pengguna telah menggunakan keseluruhan 255, mungkin 180 00:08:44,324 --> 00:08:45,990 VARCHAR lebih sesuai di sana. 181 00:08:45,990 --> 00:08:49,840 Ia semacam perdagangan luar, dan secara am bagi maksud CS50, 182 00:08:49,840 --> 00:08:54,107 anda tidak perlu bimbang terlalu banyak tentang sama ada anda menggunakan CHAR atau VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Tetapi dalam dunia sebenar, perkara-perkara memang penting kerana semua ruangan ini 184 00:08:57,190 --> 00:08:59,300 mengambil ruang fizikal yang sebenar. 185 00:08:59,300 --> 00:09:04,150 Dan ruang fizikal, dalam dunia sebenar, datang pada premium. 186 00:09:04,150 --> 00:09:06,800 >> Jadi, satu balasan lain apabila anda membina jadual 187 00:09:06,800 --> 00:09:09,840 adalah untuk memilih satu lajur untuk menjadi apa yang dipanggil kunci utama. 188 00:09:09,840 --> 00:09:14,350 Dan kunci utama adalah lajur di mana setiap nilai tunggal adalah unik. 189 00:09:14,350 --> 00:09:19,980 Dan itu bererti bahawa anda boleh dengan mudah memilih satu baris hanya dengan melihat 190 00:09:19,980 --> 00:09:22,450 di kunci primer baris itu. 191 00:09:22,450 --> 00:09:24,580 Jadi, sebagai contoh, anda secara amnya, dengan pengguna, 192 00:09:24,580 --> 00:09:27,210 tidak mahu dua pengguna yang mempunyai nombor ID pengguna yang sama. 193 00:09:27,210 --> 00:09:28,960 Dan sebagainya mungkin anda mempunyai banyak maklumat, 194 00:09:28,960 --> 00:09:30,793 dan mungkin dua pengguna boleh mempunyai name-- yang sama 195 00:09:30,793 --> 00:09:32,650 anda mempunyai John Smith dan John Smith. 196 00:09:32,650 --> 00:09:34,520 Itu bukan semestinya masalah, kerana terdapat beberapa orang 197 00:09:34,520 --> 00:09:35,830 di dunia yang bernama John Smith. 198 00:09:35,830 --> 00:09:40,766 Tetapi kami hanya mempunyai nombor ID seorang pengguna 10, seorang pengguna ID nombor 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Kami tidak mempunyai dua pengguna dengan nombor yang sama, 200 00:09:42,640 --> 00:09:46,010 dan jadi mungkin nombor ID pengguna akan menjadi kunci utama yang baik. 201 00:09:46,010 --> 00:09:48,610 >> Kami tidak mempunyai apa-apa pertindihan, dan kami kini boleh unik 202 00:09:48,610 --> 00:09:52,619 mengenal pasti setiap baris tunggal hanya dengan melihat lajur tersebut. 203 00:09:52,619 --> 00:09:55,410 Memilih kunci primer boleh sebenarnya membuat operasi meja berikutnya 204 00:09:55,410 --> 00:09:59,710 lebih mudah kerana anda boleh memanfaatkan hakikat bahawa baris tertentu akan 205 00:09:59,710 --> 00:10:02,720 menjadi unik, atau lajur tertentu daripada pangkalan data atau meja anda 206 00:10:02,720 --> 00:10:06,030 akan menjadi unik untuk mengambil baris tertentu keluar. 207 00:10:06,030 --> 00:10:08,790 >> Anda juga boleh mempunyai utama bersama utama, yang anda boleh mencari alasan 208 00:10:08,790 --> 00:10:11,720 untuk digunakan, yang hanya gabungan dua lajur yang 209 00:10:11,720 --> 00:10:13,280 dijamin unik. 210 00:10:13,280 --> 00:10:16,410 Jadi mungkin anda mempunyai satu ruangan itulah As dan B, 211 00:10:16,410 --> 00:10:19,290 satu lajur itulah satu, dua, dan tiga, tetapi anda akan hanya pernah 212 00:10:19,290 --> 00:10:23,660 mempunyai A1 tunggal, tunggal A2, dan sebagainya dan sebagainya. 213 00:10:23,660 --> 00:10:28,980 Tetapi anda mungkin mempunyai B2, satu C2, atau A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Jadi, anda mungkin mempunyai beberapa As, pelbagai B, orang-orang yang pelbagai, pelbagai berdua-dua, 215 00:10:32,840 --> 00:10:38,567 tetapi anda boleh hanya pernah mempunyai tunggal A1, B2, C3, dan sebagainya. 216 00:10:38,567 --> 00:10:40,400 Jadi seperti yang saya katakan, SQL ialah bahasa pengaturcaraan, 217 00:10:40,400 --> 00:10:42,024 tetapi ia mempunyai perbendaharaan kata yang agak terhad. 218 00:10:42,024 --> 00:10:44,880 Ia tidak cukup sebagai luas sebagai C dan PHP dan bahasa lain 219 00:10:44,880 --> 00:10:46,350 bahawa kita bercakap dalam kursus ini. 220 00:10:46,350 --> 00:10:49,960 Ia adalah lebih lantung bahasa daripada apa yang kita 221 00:10:49,960 --> 00:10:52,789 akan bercakap tentang dalam hal ini video, kerana dalam video ini 222 00:10:52,789 --> 00:10:54,830 kita akan bercakap tentang empat operasi yang kita 223 00:10:54,830 --> 00:10:55,720 boleh melakukan di atas meja. 224 00:10:55,720 --> 00:10:56,761 >> Terdapat lebih daripada ini. 225 00:10:56,761 --> 00:10:58,730 Kita boleh melakukan lebih daripada ini, tetapi untuk tujuan kita, 226 00:10:58,730 --> 00:11:02,250 kita biasanya akan menggunakan hanya empat memasukkan operations--, 227 00:11:02,250 --> 00:11:05,360 memilih, mengemaskini, dan memadam. 228 00:11:05,360 --> 00:11:08,750 Dan anda mungkin boleh meneka intuitif apa keempat-empat perkara-perkara ini dilakukan. 229 00:11:08,750 --> 00:11:12,520 Tetapi kita akan pergi ke dalam sedikit terperinci pada masing-masing. 230 00:11:12,520 --> 00:11:15,780 >> Jadi untuk tujuan ini video, mari kita andaikan 231 00:11:15,780 --> 00:11:18,870 kami telah berikut dua jadual dalam pangkalan data tunggal. 232 00:11:18,870 --> 00:11:23,460 Kami mempunyai jadual dipanggil Pengguna yang mempunyai empat columns-- nombor ID, nama pengguna, 233 00:11:23,460 --> 00:11:25,350 kata laluan, dan nama penuh. 234 00:11:25,350 --> 00:11:27,430 Dan kita mempunyai kedua jadual dalam pangkalan data yang sama 235 00:11:27,430 --> 00:11:32,129 dipanggil Moms yang hanya menyimpan maklumat kira-kira satu nama pengguna dan seorang ibu. 236 00:11:32,129 --> 00:11:33,920 Jadi untuk semua contoh-contoh dalam video ini, kita akan 237 00:11:33,920 --> 00:11:37,945 menggunakan pangkalan data ini dan kemas kini selepas itu. 238 00:11:37,945 --> 00:11:40,070 Jadi mari kita mengatakan bahawa kita mahu menambah maklumat ke meja. 239 00:11:40,070 --> 00:11:44,460 Itulah yang operasi memasukkan kepadamu. 240 00:11:44,460 --> 00:11:46,550 Dalam menjelaskan semua arahan ini, saya akan 241 00:11:46,550 --> 00:11:48,860 untuk memberikan anda rangka umum untuk digunakan. 242 00:11:48,860 --> 00:11:51,661 Kerana pada dasarnya, pertanyaan akan kelihatan agak serupa, 243 00:11:51,661 --> 00:11:54,660 kami hanya akan berubah keping sedikit maklumat yang berbeza 244 00:11:54,660 --> 00:11:56,750 melakukan perkara-perkara yang berbeza dengan meja. 245 00:11:56,750 --> 00:11:59,200 >> Jadi untuk INSERT, rangka kelihatan jenis seperti ini. 246 00:11:59,200 --> 00:12:02,230 Kami mahu masukkan ke dalam jadual tertentu. 247 00:12:02,230 --> 00:12:05,290 Kemudian kita mempunyai kurungan terbuka dan senarai ruangan 248 00:12:05,290 --> 00:12:08,070 yang kita mahu meletakkan nilai-nilai ke dalam. 249 00:12:08,070 --> 00:12:10,974 Tutup kurungan, yang nilai-nilai berikut, dan kemudian 250 00:12:10,974 --> 00:12:13,390 sekali lagi, kita senaraikan nilai-nilai kita mahu meletakkan dalam jadual. 251 00:12:13,390 --> 00:12:15,950 >> Jadi contoh ini akan menjadi yang berikut. 252 00:12:15,950 --> 00:12:19,170 Saya mahu memasukkan ke dalam jadual pengguna columns-- berikut 253 00:12:19,170 --> 00:12:21,010 nama pengguna, kata laluan dan nama penuh. 254 00:12:21,010 --> 00:12:25,282 Jadi baris baru di mana saya meletakkan dalam ketiga-tiga tiang dan kami 255 00:12:25,282 --> 00:12:30,030 akan dimasukkan ke dalam nilai-nilai Newman, USMAIL dan Newman. 256 00:12:30,030 --> 00:12:32,730 Jadi dalam kes ini, saya meletakkan newman yang kecil 257 00:12:32,730 --> 00:12:38,710 ke dalam ruang nama pengguna, kata laluan USMAIL, dan nama penuh modal N 258 00:12:38,710 --> 00:12:41,940 Newman ke dalam ruang nama penuh itu. 259 00:12:41,940 --> 00:12:44,240 >> Jadi, inilah yang pangkalan data kelihatan seperti sebelum ini. 260 00:12:44,240 --> 00:12:48,250 Berikut adalah apa yang jadual pengguna pada bahagian kelihatan seperti sebelum kita lakukan ini. 261 00:12:48,250 --> 00:12:50,760 Selepas kita melaksanakan ini Pertanyaan, kita akan mendapat ini. 262 00:12:50,760 --> 00:12:54,790 Kami telah menambah baris baru ke meja. 263 00:12:54,790 --> 00:12:56,810 Tetapi perhatikan dalam perkara yang berikut bahawa saya tidak menyatakan, 264 00:12:56,810 --> 00:12:59,880 tetapi entah bagaimana saya telah mendapat nilai yang untuk, yang ini 12 di sini. 265 00:12:59,880 --> 00:13:02,820 Saya tidak mengatakan saya mahu meletakkan nombor ID di sana. 266 00:13:02,820 --> 00:13:04,900 Saya mahu meletakkan nama pengguna, kata laluan, nama penuh. 267 00:13:04,900 --> 00:13:06,440 Dan saya berbuat demikian, itulah denda. 268 00:13:06,440 --> 00:13:07,760 >> Tetapi saya juga mendapat ini 12. 269 00:13:07,760 --> 00:13:09,490 Kenapa saya mendapat ini 12? 270 00:13:09,490 --> 00:13:12,904 Nah, ternyata bahawa apabila anda menentukan 271 00:13:12,904 --> 00:13:15,570 lajur yang akan menjadi anda kunci utama, yang biasanya, 272 00:13:15,570 --> 00:13:16,510 seperti yang saya katakan, nombor ID. 273 00:13:16,510 --> 00:13:18,718 Ia tidak selalunya semestinya akan menjadi satu nombor ID, 274 00:13:18,718 --> 00:13:22,380 tetapi ia biasanya idea yang baik untuk beberapa jenis nilai integer. 275 00:13:22,380 --> 00:13:25,950 Anda mempunyai pilihan dalam phpMyAdmin apabila anda mewujudkan pangkalan data anda 276 00:13:25,950 --> 00:13:31,130 atau meja anda untuk menetapkan bahawa ruangan sebagai menokok automatik. 277 00:13:31,130 --> 00:13:34,520 >> Yang merupakan satu idea yang benar-benar baik apabila anda bekerja dengan kunci utama, 278 00:13:34,520 --> 00:13:39,330 kerana anda mahu setiap nilai dalam ruang yang menjadi unik. 279 00:13:39,330 --> 00:13:43,310 Dan jika anda lupa untuk menentukan untuk lebih daripada satu orang, 280 00:13:43,310 --> 00:13:46,240 anda kini mempunyai situasi di mana ruangan yang tidak lagi unik. 281 00:13:46,240 --> 00:13:50,200 Anda mempunyai dua kosong, jadi anda boleh tidak lagi secara unik mengenal pasti yang column-- 282 00:13:50,200 --> 00:13:54,150 atau anda tidak lagi unik mengenalpasti berturut-turut berdasarkan lajur tersebut. 283 00:13:54,150 --> 00:13:57,010 Ia kehilangan semua itu nilai sebagai kunci utama. 284 00:13:57,010 --> 00:14:02,010 >> Dan sebagainya nampaknya apa yang saya lakukan di sini dikonfigurasi ID pengguna 285 00:14:02,010 --> 00:14:07,790 lajur untuk auto kenaikan supaya setiap kali saya menambah maklumat ke meja, 286 00:14:07,790 --> 00:14:12,220 ia secara automatik akan memberikan saya dalam ruangan kunci utama. 287 00:14:12,220 --> 00:14:15,570 Jadi saya tidak boleh lupa untuk melakukannya kerana pangkalan data akan melakukannya untuk saya. 288 00:14:15,570 --> 00:14:16,587 Jadi itu jenis yang bagus. 289 00:14:16,587 --> 00:14:18,670 Dan sebab itulah kita akan mendapat 12 di sana, kerana saya telah 290 00:14:18,670 --> 00:14:21,772 menetapkan bahawa ruang sehingga kenaikan automatik. 291 00:14:21,772 --> 00:14:23,730 Jika saya menambah orang lain ia akan menjadi 13, jika saya menambah 292 00:14:23,730 --> 00:14:27,890 orang lain ia akan menjadi 14, dan sebagainya. 293 00:14:27,890 --> 00:14:30,190 >> Jadi mari kita hanya melakukan satu iklan lagi. 294 00:14:30,190 --> 00:14:34,530 Kami akan memasukkan ke dalam jadual ibu-ibu, di Khususnya, nama pengguna dan ibu 295 00:14:34,530 --> 00:14:37,390 lajur, nilai-nilai kramer dan Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 Dan dengan itu kita mempunyai ini sebelum ini. 297 00:14:39,140 --> 00:14:41,800 Selepas kita melaksanakan yang SQL, kita mempunyai ini. 298 00:14:41,800 --> 00:14:47,290 Kami telah menambah Kramer dan Babs Kramer ke meja ibu-ibu itu. 299 00:14:47,290 --> 00:14:48,350 >> Jadi yang yang memasukkan. 300 00:14:48,350 --> 00:14:51,850 SELECT adalah apa yang kita gunakan untuk mengeluarkan maklumat dari jadual. 301 00:14:51,850 --> 00:14:54,390 Jadi ini adalah bagaimana kita dapat maklumat daripada pangkalan data. 302 00:14:54,390 --> 00:14:59,589 Dan arahan supaya SELECT akan menjadi sangat kerap digunakan dalam pengaturcaraan. 303 00:14:59,589 --> 00:15:02,130 Umum framework-- yang rangka umum kelihatan seperti ini. 304 00:15:02,130 --> 00:15:06,550 Pilih satu set lajur daripada meja, dan kemudian secara pilihan 305 00:15:06,550 --> 00:15:11,090 anda boleh menentukan condition-- atau apa yang kita biasanya memanggil predikat, 306 00:15:11,090 --> 00:15:13,010 biasanya istilah yang kita gunakan dalam SQL. 307 00:15:13,010 --> 00:15:16,490 >> Tetapi ia adalah pada dasarnya apa baris tertentu yang anda mahu untuk mendapatkan. 308 00:15:16,490 --> 00:15:19,100 Jika anda mahu, bukannya mendapat segala-galanya, sempit ke bawah, 309 00:15:19,100 --> 00:15:20,060 ini adalah di mana anda akan berbuat demikian. 310 00:15:20,060 --> 00:15:22,777 Dan kemudian secara pilihan, anda juga boleh memerintahkan oleh lajur tertentu. 311 00:15:22,777 --> 00:15:25,860 Jadi mungkin anda ingin mempunyai perkara disusun mengikut abjad berdasarkan satu lajur 312 00:15:25,860 --> 00:15:27,540 atau mengikut abjad berdasarkan lain. 313 00:15:27,540 --> 00:15:30,610 >> Sekali lagi, di mana dan PERINTAH OLEH adalah pilihan. 314 00:15:30,610 --> 00:15:32,681 Tetapi mereka mungkin akan useful-- terutamanya 315 00:15:32,681 --> 00:15:34,680 MANA akan menjadi berguna kepada menyempitkan supaya anda tidak 316 00:15:34,680 --> 00:15:37,460 mendapatkan pangkalan data keseluruhan anda kembali dan perlu memproses, anda hanya mendapat 317 00:15:37,460 --> 00:15:39,300 keping bahawa anda hargai. 318 00:15:39,300 --> 00:15:44,932 Jadi, sebagai contoh, saya mungkin mahu untuk memilih Nombor ID dan nama penuh daripada pengguna. 319 00:15:44,932 --> 00:15:46,140 Jadi apa yang mungkin ini kelihatan seperti? 320 00:15:46,140 --> 00:15:48,270 Jadi di sini adalah jadual pengguna saya. 321 00:15:48,270 --> 00:15:51,080 Saya mahu untuk memilih idnum dan nama penuh daripada pengguna. 322 00:15:51,080 --> 00:15:52,300 Apa yang saya akan dapat? 323 00:15:52,300 --> 00:15:53,580 Saya akan mendapatkan ini. 324 00:15:53,580 --> 00:15:56,930 Saya tidak sempit ke bawah, jadi saya mendapat nombor ID untuk setiap baris 325 00:15:56,930 --> 00:16:00,850 dan saya mendapat penuh menamakan dari setiap baris. 326 00:16:00,850 --> 00:16:02,210 >> OKAY. 327 00:16:02,210 --> 00:16:05,640 Bagaimana jika saya mahu untuk memilih kata laluan daripada pengguna jika- jadi sekarang 328 00:16:05,640 --> 00:16:10,370 Saya menambah keadaan, yang predicate-- mana idnum adalah kurang daripada 12. 329 00:16:10,370 --> 00:16:13,660 Jadi di sini adalah pangkalan data saya sekali lagi, saya jadual pengguna atas. 330 00:16:13,660 --> 00:16:17,030 Apa yang saya akan mendapat jika saya mahu memilih maklumat itu, kata laluan, 331 00:16:17,030 --> 00:16:21,550 di mana ID pengguna atau idnum adalah kurang daripada 12? 332 00:16:21,550 --> 00:16:24,910 Saya akan mendapatkan ini maklumat kembali, kan? 333 00:16:24,910 --> 00:16:29,170 Ia berlaku bahawa idnum adalah 10 kurang, daripada 12, nombor ID 11 kurang daripada 12. 334 00:16:29,170 --> 00:16:32,160 Saya mendapat kata laluan untuk mereka yang baris. 335 00:16:32,160 --> 00:16:33,914 Itulah apa yang saya minta. 336 00:16:33,914 --> 00:16:34,580 Apa tentang perkara ini? 337 00:16:34,580 --> 00:16:39,170 Bagaimana jika saya mahu untuk memilih bintang dari ibu meja di mana nama pengguna sama Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, pilih bintang ini khas banyak kad liar yang dipanggil 339 00:16:43,780 --> 00:16:45,670 yang kita gunakan untuk mendapatkan segala-galanya. 340 00:16:45,670 --> 00:16:48,620 Jadi mereka katakan pilih nama pengguna ibu koma, yang 341 00:16:48,620 --> 00:16:51,060 yang berlaku sebagai satu-satunya dua tiang jadual ini, 342 00:16:51,060 --> 00:16:53,260 Saya hanya boleh pilih bintang dan mendapatkan semua 343 00:16:53,260 --> 00:16:55,030 mana nama pengguna yang sama Jerry. 344 00:16:55,030 --> 00:16:59,380 Dan sebagainya itulah yang saya akan mendapat jika saya membuat pertanyaan yang tertentu. 345 00:16:59,380 --> 00:17:01,810 >> Sekarang, pangkalan data adalah besar kerana mereka membenarkan 346 00:17:01,810 --> 00:17:06,074 kita untuk menyusun maklumat mungkin sedikit lebih cekap daripada kita 347 00:17:06,074 --> 00:17:06,740 mungkin sebaliknya. 348 00:17:06,740 --> 00:17:10,240 Kita tidak semestinya untuk menyimpan setiap bahagian berkaitan maklumat 349 00:17:10,240 --> 00:17:12,230 mengenai pengguna dalam jadual yang sama. 350 00:17:12,230 --> 00:17:13,730 Kami mempunyai dua jadual di sana. 351 00:17:13,730 --> 00:17:15,734 >> Kami perlu menyimpan Nama ibunya semua orang itu, 352 00:17:15,734 --> 00:17:18,900 dan mungkin kita tidak mempunyai keselamatan sosial nombor, kita ada tarikh lahir mereka. 353 00:17:18,900 --> 00:17:21,819 Yang tidak selalu perlu berada dalam jadual yang sama. 354 00:17:21,819 --> 00:17:25,339 Selagi kita boleh menentukan hubungan antara tables-- yang 355 00:17:25,339 --> 00:17:28,440 dan di mana hubungan yang jangka pangkalan data jenis datang 356 00:17:28,440 --> 00:17:32,130 ke dalam play-- selagi kita boleh menentukan hubungan antara jadual, 357 00:17:32,130 --> 00:17:35,545 kita boleh menyusun compartmentalize atau perkara-perkara abstrak cara, 358 00:17:35,545 --> 00:17:37,670 di mana kita hanya mempunyai maklumat yang benar-benar penting 359 00:17:37,670 --> 00:17:39,270 kita mengambil berat tentang dalam jadual pengguna. 360 00:17:39,270 --> 00:17:43,220 Dan kemudian kita mempunyai maklumat sampingan atau maklumat tambahan dalam jadual lain 361 00:17:43,220 --> 00:17:48,260 yang kita boleh menyambung semula ke utama jadual pengguna dengan cara yang tertentu. 362 00:17:48,260 --> 00:17:52,200 >> Jadi di sini kita mempunyai dua jadual, tetapi ada hubungan di antara mereka, 363 00:17:52,200 --> 00:17:53,010 bukan? 364 00:17:53,010 --> 00:17:55,070 Ia seolah-olah seperti nama pengguna mungkin sesuatu 365 00:17:55,070 --> 00:17:59,909 yang wujud persamaan antara kedua-dua jadual yang berbeza. 366 00:17:59,909 --> 00:18:01,700 Jadi apa jika kita kini mempunyai keadaan di mana kita 367 00:18:01,700 --> 00:18:06,046 ingin mendapatkan nama penuh pengguna dari meja pengguna, dan ibu mereka 368 00:18:06,046 --> 00:18:07,170 menamakan dari meja ibu? 369 00:18:07,170 --> 00:18:10,960 Kami tidak mempunyai cara untuk mendapatkan yang seperti yang ada, bukan? 370 00:18:10,960 --> 00:18:17,790 Tidak ada jadual tunggal yang mengandungi nama penuh dan nama ibu. 371 00:18:17,790 --> 00:18:20,400 Kami tidak mempunyai pilihan itu dari apa yang kita lihat setakat ini. 372 00:18:20,400 --> 00:18:22,950 >> Dan dengan itu kita perlu memperkenalkan idea JOIN a. 373 00:18:22,950 --> 00:18:24,857 Dan menyertai mungkin complex-- paling 374 00:18:24,857 --> 00:18:27,940 ia benar-benar operasi paling kompleks kita akan bercakap tentang dalam video. 375 00:18:27,940 --> 00:18:30,040 Mereka sedikit rumit, tetapi sebaik sahaja anda biasa itu, 376 00:18:30,040 --> 00:18:31,248 mereka sebenarnya tidak terlalu buruk. 377 00:18:31,248 --> 00:18:32,820 Ia hanya satu kes khas yang SELECT. 378 00:18:32,820 --> 00:18:37,120 Kita akan memilih satu set lajur daripada jadual yang menyertai 379 00:18:37,120 --> 00:18:40,650 dalam jadual kedua pada beberapa predikat. 380 00:18:40,650 --> 00:18:45,340 >> Dalam kes ini, berfikir tentang hal itu suka this-- meja satu adalah satu bulatan di sini, 381 00:18:45,340 --> 00:18:47,530 membentangkan dua adalah satu lagi bulatan di sini. 382 00:18:47,530 --> 00:18:49,410 Dan bahawa sebahagian predikat di tengah-tengah, ia 383 00:18:49,410 --> 00:18:51,701 jenis seperti jika anda berfikir kira-kira seperti gambar rajah Venn, apa 384 00:18:51,701 --> 00:18:52,670 yang mereka mempunyai persamaan? 385 00:18:52,670 --> 00:18:55,960 Kami mahu untuk menghubungkan kedua-dua jadual berdasarkan apa yang mereka mempunyai persamaan 386 00:18:55,960 --> 00:19:01,230 dan buat jadual andaian ini iaitu penggabungan kedua-dua bersama-sama. 387 00:19:01,230 --> 00:19:03,480 Oleh itu, kita akan melihat ini dalam contoh dan mungkin itu akan membantu 388 00:19:03,480 --> 00:19:04,521 membersihkan ia sedikit. 389 00:19:04,521 --> 00:19:09,260 Jadi mungkin anda mahu untuk memilih user.fullname dan moms.mother 390 00:19:09,260 --> 00:19:13,220 daripada pengguna menyertai dalam ibu meja dalam setiap keadaan 391 00:19:13,220 --> 00:19:16,790 di mana ruang nama pengguna adalah sama di antara mereka. 392 00:19:16,790 --> 00:19:19,240 Dan ini adalah baru Sintaks sini, pengguna ini. 393 00:19:19,240 --> 00:19:20,460 dan ibu-ibu .. 394 00:19:20,460 --> 00:19:26,697 Jika saya lakukan berbilang jadual bersama-sama, saya boleh menentukan jadual. 395 00:19:26,697 --> 00:19:29,530 Saya dapat membezakan di ketika yang bahawa pada sekurang-bawah sana. 396 00:19:29,530 --> 00:19:33,220 Saya dapat membezakan nama pengguna lajur jadual pengguna yang 397 00:19:33,220 --> 00:19:36,010 dari ruangan nama pengguna daripada ibu meja, yang otherwise-- 398 00:19:36,010 --> 00:19:38,070 jika kita hanya berkata nama pengguna sama nama pengguna, yang tidak benar-benar 399 00:19:38,070 --> 00:19:38,970 bermakna apa-apa. 400 00:19:38,970 --> 00:19:41,440 Kami mahu melakukannya di mana mereka sepadan. 401 00:19:41,440 --> 00:19:46,080 >> Jadi saya boleh menentukan jadual dan nama lajur dalam hal keadaan yang 402 00:19:46,080 --> 00:19:48,370 di mana ia akan menjadi tidak jelas apa yang saya bercakap tentang. 403 00:19:48,370 --> 00:19:51,880 Jadi itu sahaja yang saya lakukan terdapat Saya mengatakan ruangan ini dari jadual ini, 404 00:19:51,880 --> 00:19:54,020 dan sangat jelas. 405 00:19:54,020 --> 00:19:56,810 Jadi sekali lagi, saya memilih nama penuh dan nama ibu 406 00:19:56,810 --> 00:20:00,950 dari meja pengguna yang dihubungkan bersama-sama dengan meja ibu-ibu di dalam setiap keadaan 407 00:20:00,950 --> 00:20:05,960 di mana mereka berkongsi column-- yang mereka berkongsi bahawa nama pengguna tanggapan. 408 00:20:05,960 --> 00:20:08,580 >> Jadi di sini adalah jadual kami sebelum ini. 409 00:20:08,580 --> 00:20:12,210 Ini adalah keadaan kami pangkalan data yang wujud sekarang. 410 00:20:12,210 --> 00:20:16,390 Maklumat yang kami mengekstrak adakah ini untuk memulakan dengan. 411 00:20:16,390 --> 00:20:19,820 Ini adalah jadual baru kita akan untuk mewujudkan menggabungkan ini bersama-sama. 412 00:20:19,820 --> 00:20:23,585 Dan perhatikan kita tidak menonjolkan Berturut-turut Newman dalam jadual pengguna, 413 00:20:23,585 --> 00:20:25,960 dan kami tidak menonjolkan Berturut-turut Kramer ini dalam jadual ibu-ibu yang 414 00:20:25,960 --> 00:20:31,250 kerana satu tidak wujud dalam kedua-dua sets-- dalam kedua-dua jadual. 415 00:20:31,250 --> 00:20:36,260 >> Satu-satunya maklumat yang bersama-sama antara mereka adalah Jerry di kedua-dua jadual 416 00:20:36,260 --> 00:20:39,100 dan gcostanza di kedua-dua jadual. 417 00:20:39,100 --> 00:20:42,620 Dan supaya apabila kita melakukan SQL JOIN, apa yang kita get-- dan kami lakukan benar-benar mendapatkan ini. 418 00:20:42,620 --> 00:20:44,830 Ia adalah jenis pembolehubah sementara. 419 00:20:44,830 --> 00:20:47,330 Ia seperti yang dibayangkan penggabungan kedua-dua jadual. 420 00:20:47,330 --> 00:20:49,930 Kami benar-benar mendapatkan sesuatu seperti ini, di mana 421 00:20:49,930 --> 00:20:54,730 kami telah digabungkan bersama-sama jadual di maklumat yang mereka mempunyai persamaan. 422 00:20:54,730 --> 00:20:58,334 >> Jadi notis users.username yang dan lajur moms.username, 423 00:20:58,334 --> 00:20:59,250 ia betul-betul sama. 424 00:20:59,250 --> 00:21:01,820 Itu adalah maklumat yang adalah konsisten daripada pengguna 425 00:21:01,820 --> 00:21:02,890 meja dan meja ibu-ibu itu. 426 00:21:02,890 --> 00:21:04,270 Dan supaya kita bergabung bersama-sama. 427 00:21:04,270 --> 00:21:06,919 Kami dibuang Kramer kerana dia tidak wujud dalam jadual pengguna itu, 428 00:21:06,919 --> 00:21:09,710 dan kami dibuang Newman, kerana dia tidak wujud dalam jadual ibu-ibu itu. 429 00:21:09,710 --> 00:21:16,450 Jadi ini adalah penggabungan yang dibayangkan menggunakan operasi JOIN daripada SELECT. 430 00:21:16,450 --> 00:21:21,250 >> Dan kemudian kita cari yang nama penuh pengguna dan ibu pengguna, 431 00:21:21,250 --> 00:21:24,999 dan sebagainya ini adalah maklumat yang kita akan mendapat daripada pertanyaan keseluruhan 432 00:21:24,999 --> 00:21:26,040 yang kami dibuat dengan SELECT. 433 00:21:26,040 --> 00:21:28,873 Oleh itu, kita menyertai jadual bersama-sama dan kami diekstrak kedua-dua tiang, 434 00:21:28,873 --> 00:21:31,610 dan sebagainya itulah yang kita akan dapat. 435 00:21:31,610 --> 00:21:33,370 Tetapi SQL SERTAI sejenis rumit. 436 00:21:33,370 --> 00:21:36,770 Anda mungkin tidak akan melakukannya terlalu banyak, tetapi hanya mempunyai beberapa idea tentang rangka 437 00:21:36,770 --> 00:21:41,992 yang anda boleh gunakan untuk menggabungkan dua jadual bersama-sama jika anda diperlukan untuk. 438 00:21:41,992 --> 00:21:43,700 Dua yang terakhir adalah sedikit lebih mudah saya janji. 439 00:21:43,700 --> 00:21:48,040 Jadi mengemas kini, kita boleh menggunakan UPDATE untuk menukar maklumat dalam jadual. 440 00:21:48,040 --> 00:21:53,880 Format umum adalah UPDATE beberapa meja, SET beberapa lajur untuk beberapa nilai 441 00:21:53,880 --> 00:21:55,540 MANA beberapa predikat berpuas hati. 442 00:21:55,540 --> 00:21:57,850 Jadi, sebagai contoh, kita mungkin mahu untuk mengemas kini jadual pengguna yang 443 00:21:57,850 --> 00:22:04,400 dan menetapkan kata laluan untuk yada yada, di mana nombor ID adalah 10. 444 00:22:04,400 --> 00:22:06,400 >> Jadi dalam kes ini, kami mengemas meja pengguna. 445 00:22:06,400 --> 00:22:08,275 Bilangan ID adalah 10 untuk bahawa barisan pertama di sana, 446 00:22:08,275 --> 00:22:10,690 dan kami mahu mengemas kini kata laluan untuk yada yada. 447 00:22:10,690 --> 00:22:12,170 Dan sebagainya itulah yang akan berlaku. 448 00:22:12,170 --> 00:22:13,628 Ia agak mudah, betul? 449 00:22:13,628 --> 00:22:17,990 Ia hanya satu yang sangat mudah pengubahsuaian ke meja. 450 00:22:17,990 --> 00:22:22,250 >> DELETE adalah operasi kita digunakan untuk mengeluarkan maklumat dari jadual. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM meja MANA beberapa predikat berpuas hati. 452 00:22:24,817 --> 00:22:26,900 Kami mahu memadam daripada jadual pengguna sebagai contoh 453 00:22:26,900 --> 00:22:28,254 mana nama pengguna adalah Newman. 454 00:22:28,254 --> 00:22:31,420 Anda mungkin boleh meneka apa yang akan berlaku di sini selepas kami melaksanakan SQL yang 455 00:22:31,420 --> 00:22:35,790 Pertanyaan, Newman hilang dari meja. 456 00:22:35,790 --> 00:22:40,460 >> Jadi semua operasi ini, seperti yang saya katakan, sangat mudah untuk dilakukan di phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Ia antara muka yang sangat mesra pengguna. 458 00:22:43,020 --> 00:22:45,930 Tetapi ia memerlukan usaha manual. 459 00:22:45,930 --> 00:22:47,840 Kita tidak mahu untuk mengambil usaha manual. 460 00:22:47,840 --> 00:22:51,280 Kami mahu program kami untuk melakukan ini untuk kita, bukan? 461 00:22:51,280 --> 00:22:53,190 Oleh itu, kita mungkin mahu lakukan ini pengaturcaraan. 462 00:22:53,190 --> 00:22:56,410 Kami mahu menggabungkan SQL dan mempunyai sesuatu yang lain untuk melakukannya untuk kita. 463 00:22:56,410 --> 00:23:02,710 >> Tetapi apa yang kita lihat yang membolehkan kita untuk pengaturcaraan melakukan sesuatu? 464 00:23:02,710 --> 00:23:03,690 Kami telah melihat PHP, bukan? 465 00:23:03,690 --> 00:23:05,760 Ia memperkenalkan beberapa dinamisme ke dalam program kami. 466 00:23:05,760 --> 00:23:10,430 Dan supaya nasib baik, SQL dan PHP bermain sangat baik bersama-sama. 467 00:23:10,430 --> 00:23:13,230 Ada fungsi dalam PHP dipanggil Pertanyaan, yang boleh digunakan. 468 00:23:13,230 --> 00:23:15,870 Dan anda boleh lulus sebagai parameter atau hujah 469 00:23:15,870 --> 00:23:19,210 untuk pertanyaan pertanyaan SQL yang anda mahu untuk melaksanakan. 470 00:23:19,210 --> 00:23:23,250 Dan PHP akan melakukannya bagi pihak anda. 471 00:23:23,250 --> 00:23:25,564 >> Jadi, selepas anda telah menyambungkan kepada pangkalan data anda dengan PHP, 472 00:23:25,564 --> 00:23:26,980 ada dua pendahuluan anda melakukan ini. 473 00:23:26,980 --> 00:23:29,230 Ada sesuatu yang dinamakan MySQLi dan sesuatu yang dinamakan PDO. 474 00:23:29,230 --> 00:23:31,063 Kami tidak akan pergi ke besar jumlah detail sana. 475 00:23:31,063 --> 00:23:32,957 Dalam CS50 kita menggunakan PDO. 476 00:23:32,957 --> 00:23:34,790 Selepas anda telah menyambungkan kepada pangkalan data anda, anda 477 00:23:34,790 --> 00:23:40,980 kemudian boleh membuat pertanyaan pangkalan data anda dengan melepaskan pertanyaan sebagai hujah 478 00:23:40,980 --> 00:23:42,730 dengan fungsi PHP. 479 00:23:42,730 --> 00:23:46,460 Apabila anda berbuat demikian, anda menyimpan set keputusan dalam pelbagai bersekutu. 480 00:23:46,460 --> 00:23:50,290 >> Dan kita tahu bagaimana untuk bekerja dengan array bersekutu dalam PHP. 481 00:23:50,290 --> 00:23:52,630 Jadi saya boleh berkata sesuatu seperti this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 ini adalah dalam PHP-- sama dengan pertanyaan. 483 00:23:55,470 --> 00:23:57,660 Dan kemudian di dalam satu fungsi query bahawa hujah 484 00:23:57,660 --> 00:24:00,130 yang saya lulus untuk query yang kelihatan seperti SQL. 485 00:24:00,130 --> 00:24:01,160 Dan sebenarnya yang SQL. 486 00:24:01,160 --> 00:24:05,700 Itulah rentetan pertanyaan yang saya akan suka untuk melaksanakan pada pangkalan data saya. 487 00:24:05,700 --> 00:24:09,250 >> Dan sebagainya dalam merah, ini adalah PHP. 488 00:24:09,250 --> 00:24:11,890 Ini adalah SQL bahawa saya mengintegrasikan ke dalam PHP dengan membuat 489 00:24:11,890 --> 00:24:15,020 hujah untuk fungsi pertanyaan. 490 00:24:15,020 --> 00:24:19,640 Saya mahu untuk memilih nama penuh daripada pengguna di mana nombor ID sama dengan 10. 491 00:24:19,640 --> 00:24:22,560 Dan kemudian mungkin selepas saya telah melakukan itu, Saya mungkin berkata sesuatu seperti ini. 492 00:24:22,560 --> 00:24:25,550 Saya hendak mencetak mesej Terima kasih untuk log masuk. 493 00:24:25,550 --> 00:24:32,530 >> Dan saya mahu ia interpolate-- Saya hendak untuk membuat interpolasi $ keputusan nama penuh. 494 00:24:32,530 --> 00:24:36,280 Dan jadi itulah bagaimana saya bekerja dengan yang pelbagai bersekutu yang saya dapatkan kembali. 495 00:24:36,280 --> 00:24:39,730 $ nama penuh keputusan akan pada dasarnya berakhir mencetak, 496 00:24:39,730 --> 00:24:42,870 terima kasih untuk log masuk, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Itu adalah nama penuh mana idnum sama 10. 498 00:24:46,570 --> 00:24:48,850 >> Dan supaya semua yang saya lakukan adalah saya sekarang-- Saya disimpan 499 00:24:48,850 --> 00:24:52,780 pertanyaan saya, hasil pertanyaan saya dan keputusan dalam pelbagai bersekutu, 500 00:24:52,780 --> 00:24:56,330 dan nama penuh adalah nama ruangan yang saya mendapat untuk. 501 00:24:56,330 --> 00:25:01,010 Jadi itulah kekunci saya ke dalam keputusan pelbagai bersekutu yang saya mahu. 502 00:25:01,010 --> 00:25:05,930 Jadi Terima kasih kerana login, $ keputusan, nama penuh akan mencetak, akan melekat 503 00:25:05,930 --> 00:25:08,654 betul-betul di antara orang-orang kerinting kawat gigi, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 Dan saya akan suka untuk mencetak mesej Terima kasih kerana pembalakan di Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Sekarang, kita mungkin tidak mahu untuk keras perkara kod seperti itu dalam, bukan? 506 00:25:16,652 --> 00:25:19,860 Kita mungkin mahu melakukan sesuatu seperti cetak f, di mana kita boleh menggantikan dan mungkin 507 00:25:19,860 --> 00:25:22,443 mengumpul maklumat yang berbeza, atau mungkin mempunyai proses pertanyaan 508 00:25:22,443 --> 00:25:23,370 maklumat yang berbeza. 509 00:25:23,370 --> 00:25:27,920 Dan sebagainya Pertanyaan, fungsi pertanyaan mempunyai idea ini daripada jenis penggantian 510 00:25:27,920 --> 00:25:32,310 hampir sama dengan mencetak f peratus s dan peratus c, adalah tanda tanya. 511 00:25:32,310 --> 00:25:34,290 >> Dan kita boleh menggunakan soalan tanda sangat tamsilan 512 00:25:34,290 --> 00:25:38,400 untuk mencetak f kepada pembolehubah pengganti. 513 00:25:38,400 --> 00:25:44,120 Jadi mungkin pengguna anda log masuk sebelum ini, dan anda menyimpan nombor ID pengguna mereka 514 00:25:44,120 --> 00:25:51,710 dalam $ _session PHP super global dalam ID utama. 515 00:25:51,710 --> 00:25:55,947 Jadi mungkin selepas mereka log masuk, anda menetapkan $ _session ID sama dengan 10, 516 00:25:55,947 --> 00:25:58,280 menentuluar dari contoh di kita hanya melihat kedua yang lalu. 517 00:25:58,280 --> 00:26:01,960 >> Dan lagi apabila kita benar-benar melaksanakan ini mempersoalkan keputusan sekarang, 518 00:26:01,960 --> 00:26:08,440 ia akan pasangkan 10, atau apa sahaja yang $ _session nilai ID adalah. 519 00:26:08,440 --> 00:26:10,790 Dan sebagainya yang membolehkan kita untuk menjadi sedikit lebih dinamik. 520 00:26:10,790 --> 00:26:12,699 Kami tidak keras pengekodan perkara dalam lagi. 521 00:26:12,699 --> 00:26:14,490 Kami menyimpan maklumat di suatu tempat dan kemudian 522 00:26:14,490 --> 00:26:18,924 kita boleh menggunakan maklumat tersebut sekali lagi untuk jenis umum apa yang kita mahu lakukan, 523 00:26:18,924 --> 00:26:21,090 dan hanya plug-in dan perubahan tingkah laku halaman kami 524 00:26:21,090 --> 00:26:26,489 berdasarkan apa nombor ID pengguna sebenarnya selepas mereka log masuk. 525 00:26:26,489 --> 00:26:28,530 Ia juga mungkin, walaupun, bahawa keputusan anda ditetapkan 526 00:26:28,530 --> 00:26:30,840 mungkin terdiri daripada beberapa baris. 527 00:26:30,840 --> 00:26:33,990 Di mana, anda perlu pelbagai arrays-- 528 00:26:33,990 --> 00:26:35,334 pelbagai tatasusunan bersekutu. 529 00:26:35,334 --> 00:26:37,000 Dan anda hanya perlu untuk melelar melaluinya. 530 00:26:37,000 --> 00:26:41,950 Dan kita tahu bagaimana untuk melelar melalui pelbagai dalam PHP, bukan? 531 00:26:41,950 --> 00:26:45,600 Jadi di sini adalah mungkin yang paling perkara yang kompleks yang kita lihat setakat ini. 532 00:26:45,600 --> 00:26:49,640 Ia sebenarnya mengintegrasikan tiga bahasa bersama-sama. 533 00:26:49,640 --> 00:26:52,920 >> Di sini dalam merah, ini adalah beberapa HTML. 534 00:26:52,920 --> 00:26:56,872 Saya nampaknya starting-- ini coretan HTML yang saya ada. 535 00:26:56,872 --> 00:26:59,580 Saya memulakan perenggan baru yang kata ibu Seinfeld TV. 536 00:26:59,580 --> 00:27:02,350 Dan kemudian dengan segera selepas itu Saya mula meja. 537 00:27:02,350 --> 00:27:06,060 Dan kemudian selepas itu, saya mempunyai beberapa PHP, bukan? 538 00:27:06,060 --> 00:27:08,229 Saya mempunyai semua kod PHP ini di sana. 539 00:27:08,229 --> 00:27:09,645 Saya nampaknya akan membuat pertanyaan. 540 00:27:09,645 --> 00:27:14,180 Dan untuk membuat pertanyaan tersebut, saya akan akan menggunakan ibu SELECT FROM ibu. 541 00:27:14,180 --> 00:27:15,970 >> Jadi ini getting-- ini adalah SQL. 542 00:27:15,970 --> 00:27:17,300 Jadi biru adalah SQL. 543 00:27:17,300 --> 00:27:19,680 Merah yang kita lihat kedua lalu adalah HTML. 544 00:27:19,680 --> 00:27:21,360 Dan hijau di sini adalah PHP. 545 00:27:21,360 --> 00:27:23,400 Jadi, saya membuat pertanyaan kepada pangkalan data saya, saya 546 00:27:23,400 --> 00:27:26,040 memilih semua ibu-ibu dalam jadual ibu-ibu itu. 547 00:27:26,040 --> 00:27:30,710 Bukan hanya merapatkan ke bawah untuk tertentu berturut-turut, saya meminta untuk mereka semua. 548 00:27:30,710 --> 00:27:33,290 >> Kemudian saya memeriksa jika hasilnya adalah tidak sama sama palsu. 549 00:27:33,290 --> 00:27:37,410 Ini hanyalah cara saya memeriksa jenis daripada jika keputusan tidak sama dengan nol, 550 00:27:37,410 --> 00:27:40,260 bahawa kita akan melihat c sebagai contoh. 551 00:27:40,260 --> 00:27:44,000 Pada asasnya ini hanya memeriksa untuk memastikan bahawa ia benar-benar mendapat data kembali. 552 00:27:44,000 --> 00:27:47,041 Kerana saya tidak mahu memulakan percetakan daripada data jika saya tidak mendapat apa-apa data. 553 00:27:47,041 --> 00:27:50,690 Kemudian bagi setiap keputusan hasilnya foreach sintaks dari PHP, semua yang saya lakukan 554 00:27:50,690 --> 00:27:53,399 adalah mencetak ibu $ keputusan. 555 00:27:53,399 --> 00:27:55,940 Dan supaya saya akan mendapat satu set semua ibu-ibu each-- 556 00:27:55,940 --> 00:27:59,980 ia adalah pelbagai bersekutu arrays-- dan saya mencetak 557 00:27:59,980 --> 00:28:03,649 masing-masing sebagai barisan sendiri jadual. 558 00:28:03,649 --> 00:28:05,690 Dan itu benar-benar cantik banyak semua ada padanya. 559 00:28:05,690 --> 00:28:07,750 Saya tahu ada sedikit sedikit berlaku di sini 560 00:28:07,750 --> 00:28:13,210 dalam contoh ini lalu dengan tatasusunan arrays-- tatasusunan array bersekutu. 561 00:28:13,210 --> 00:28:17,340 Tetapi ia benar-benar hanya mendidih turun dalam SQL untuk membuat pertanyaan, 562 00:28:17,340 --> 00:28:21,102 biasanya memilih selepas kami telah pun meletakkan maklumat ke dalam jadual, 563 00:28:21,102 --> 00:28:22,310 dan kemudian hanya menariknya keluar. 564 00:28:22,310 --> 00:28:25,710 >> Dan ini adalah kita akan tarik di dalam kes ini. 565 00:28:25,710 --> 00:28:31,120 Kami akan mengeluarkan semua individu ibu-ibu dari meja ibu-ibu itu. 566 00:28:31,120 --> 00:28:35,970 Kami mendapat satu set keseluruhan mereka, dan kami mahu melelar melalui dan mencetak 567 00:28:35,970 --> 00:28:37,630 setiap satu. 568 00:28:37,630 --> 00:28:40,510 Jadi sekali lagi, ini mungkin contoh yang paling rumit 569 00:28:40,510 --> 00:28:44,510 yang kami telah lihat kerana kita mencampurkan tiga bahasa yang berbeza bersama-sama, bukan? 570 00:28:44,510 --> 00:28:50,100 >> Sekali lagi, kita mempunyai HTML di sini dengan warna merah, dicampur dengan beberapa SQL di sini di biru, 571 00:28:50,100 --> 00:28:52,049 dicampur dengan beberapa PHP dengan warna hijau. 572 00:28:52,049 --> 00:28:53,840 Tetapi semua ini bermain baik bersama-sama, ia 573 00:28:53,840 --> 00:28:57,060 hanya menunggu untuk membangunkan tabiat yang baik supaya anda boleh mendapatkan 574 00:28:57,060 --> 00:28:58,780 mereka untuk bekerja bersama-sama dengan cara yang anda mahu. 575 00:28:58,780 --> 00:29:03,790 Dan satu-satunya cara untuk benar-benar berbuat demikian adalah untuk amalan, amalan, amalan. 576 00:29:03,790 --> 00:29:06,740 Saya Doug Lloyd, ini adalah CS50. 577 00:29:06,740 --> 00:29:08,647