1 00:00:00,000 --> 00:00:03,493 >> [MUSIC PLAYING] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 Doug LLOYD: Dalam video kami pada topik pengembangan web, 4 00:00:07,100 --> 00:00:10,560 kami telah menyebutkan konsep database beberapa kali, kan? 5 00:00:10,560 --> 00:00:12,700 Jadi database Anda mungkin akrab dengan dari 6 00:00:12,700 --> 00:00:15,780 mengatakan menggunakan Microsoft Excel atau Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Ini benar-benar hanya sebuah terorganisir set meja, baris, dan kolom. 8 00:00:20,650 --> 00:00:23,140 >> Dan database adalah di mana toko website kami 9 00:00:23,140 --> 00:00:26,760 informasi yang penting untuk website kami untuk bekerja dengan baik. 10 00:00:26,760 --> 00:00:30,150 Sekali lagi, contoh yang sangat umum di sini adalah menyimpan username dan password 11 00:00:30,150 --> 00:00:32,824 dalam database, sehingga ketika pengguna log ke situs web kami, 12 00:00:32,824 --> 00:00:36,690 database dapat dilihat untuk melihat jika pengguna yang ada dalam database. 13 00:00:36,690 --> 00:00:39,260 Dan jika mereka, memeriksa bahwa password mereka benar. 14 00:00:39,260 --> 00:00:43,420 Dan jika password mereka benar, maka kita dapat memberi mereka apa pun 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, akrab dengan ide 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 memiliki database, tabel, baris, dan kolom. 19 00:00:52,980 --> 00:00:56,450 Dan itu benar-benar semacam set mendasar 20 00:00:56,450 --> 00:00:58,470 kerusakan hirarkis sini. 21 00:00:58,470 --> 00:00:59,800 Jadi, inilah sebuah 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 bahwa ini di sini adalah rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Ini adalah kolom. 25 00:01:08,760 --> 00:01:11,790 >> Mungkin di sini, meskipun Anda mungkin tidak menggunakan fitur ini sangat much-- 26 00:01:11,790 --> 00:01:15,370 Saya akan tampilannya in-- kita memiliki ide ini dari lembar. 27 00:01:15,370 --> 00:01:17,930 Jadi mungkin lembaran ini, jika Aku bergantian bolak-balik, 28 00:01:17,930 --> 00:01:21,600 adalah tabel yang berbeda yang ada di database saya. 29 00:01:21,600 --> 00:01:25,210 Dan jika kita terus contoh semua cara, nama database ini 30 00:01:25,210 --> 00:01:26,940 adalah Buku 1. 31 00:01:26,940 --> 00:01:28,710 Mungkin aku harus Book 2 dan Buku 3. 32 00:01:28,710 --> 00:01:33,270 Jadi setiap file Excel adalah Database, setiap lembar adalah meja, 33 00:01:33,270 --> 00:01:39,530 dan di dalam masing-masing meja saya harus ide ini dari baris dan kolom. 34 00:01:39,530 --> 00:01:41,900 >> Jadi bagaimana saya bekerja dengan database ini? 35 00:01:41,900 --> 00:01:43,630 Bagaimana cara mendapatkan informasi dari itu? 36 00:01:43,630 --> 00:01:47,540 Nah ada bahasa yang disebut SQL-- yang saya biasanya hanya memanggil Sequel-- 37 00:01:47,540 --> 00:01:50,010 dan berdiri untuk Structured Query Bahasa. 38 00:01:50,010 --> 00:01:52,981 Dan itu adalah bahasa pemrograman, tapi itu pemrograman cukup terbatas 39 00:01:52,981 --> 00:01:53,480 bahasa. 40 00:01:53,480 --> 00:01:56,407 Ini tidak cukup seperti orang lain bahwa kita telah bekerja dengan. 41 00:01:56,407 --> 00:01:58,240 Tetapi tujuan ini bahasa pemrograman 42 00:01:58,240 --> 00:02:01,570 adalah untuk query database, untuk meminta informasi dari database, 43 00:02:01,570 --> 00:02:04,480 menemukan informasi dalam database, dan sebagainya. 44 00:02:04,480 --> 00:02:08,449 >> Kami juga, di CS50-- dan itu sangat platform umum, itu disebut MySQL. 45 00:02:08,449 --> 00:02:10,600 Itulah yang kami gunakan dalam kursus. 46 00:02:10,600 --> 00:02:12,880 Ini adalah open source platform yang menetapkan 47 00:02:12,880 --> 00:02:16,732 yang disebut database-- relasional database, secara efektif. 48 00:02:16,732 --> 00:02:18,440 Kita tidak perlu untuk mendapatkan terlalu banyak detail 49 00:02:18,440 --> 00:02:20,930 pada apa database relasional. 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 lainnya yang sejenis gaya database relasional. 52 00:02:29,760 --> 00:02:34,010 >> Dan banyak instalasi dari MySQL datang dengan sesuatu yang 53 00:02:34,010 --> 00:02:37,760 disebut phpMyAdmin, yang adalah pengguna grafis 54 00:02:37,760 --> 00:02:40,970 interface-- GUI-- yang membuatnya sedikit lebih 55 00:02:40,970 --> 00:02:44,410 user friendly untuk mengeksekusi query database, 56 00:02:44,410 --> 00:02:48,980 karena database tidak hanya digunakan oleh programmer canggih, kan? 57 00:02:48,980 --> 00:02:51,510 Kadang-kadang ada ini usaha kecil, 58 00:02:51,510 --> 00:02:53,900 dan mereka tidak mampu untuk menyewa sebuah tim programmer, 59 00:02:53,900 --> 00:02:56,700 tapi mereka masih perlu untuk menyimpan informasi dalam database. 60 00:02:56,700 --> 00:02:59,300 >> Sesuatu seperti phpMyAdmin membuatnya sangat mudah bagi seseorang 61 00:02:59,300 --> 00:03:03,630 siapa yang tidak pernah diprogram sebelumnya untuk mengambil dan menjadi akrab dengan cara 62 00:03:03,630 --> 00:03:07,710 untuk bekerja dengan database. 63 00:03:07,710 --> 00:03:11,800 Masalahnya adalah, phpMyAdmin, sementara itu adalah alat yang fantastis untuk belajar 64 00:03:11,800 --> 00:03:14,850 tentang database, itu adalah manual. 65 00:03:14,850 --> 00:03:18,050 Anda akan harus login ke dan menjalankan perintah dan jenis 66 00:03:18,050 --> 00:03:19,910 hal di manual. 67 00:03:19,910 --> 00:03:23,160 >> Dan seperti yang kita tahu dari kami Misalnya pada pemrograman web PHP, 68 00:03:23,160 --> 00:03:26,550 harus melakukan secara manual hal di website kami, 69 00:03:26,550 --> 00:03:30,970 jika kita ingin dinamis, aktif responsif website, mungkin bukan pendekatan yang terbaik. 70 00:03:30,970 --> 00:03:33,980 Kami ingin menemukan cara untuk mungkin mengotomatisasi ini entah bagaimana. 71 00:03:33,980 --> 00:03:37,864 Dan SQL akan memungkinkan kita untuk melakukan hal ini. 72 00:03:37,864 --> 00:03:39,780 Jadi ketika kita akan mulai bekerja dengan SQL, 73 00:03:39,780 --> 00:03:41,220 pertama kita harus memiliki database untuk bekerja dengan. 74 00:03:41,220 --> 00:03:42,510 Membuat database adalah sesuatu yang Anda mungkin 75 00:03:42,510 --> 00:03:45,350 akan dilakukan di phpMyAdmin, karena Anda hanya perlu melakukannya sekali, 76 00:03:45,350 --> 00:03:49,690 dan sintaks untuk melakukannya jauh lebih mudah. 77 00:03:49,690 --> 00:03:51,940 Ini jauh lebih mudah untuk melakukannya dalam antarmuka pengguna grafis 78 00:03:51,940 --> 00:03:53,520 daripada mengetik itu sebagai perintah. 79 00:03:53,520 --> 00:03:55,186 Perintah bisa mendapatkan sedikit rumit. 80 00:03:55,186 --> 00:03:58,889 Demikian pula, membuat tabel dapat mendapatkan sedikit rumit juga. 81 00:03:58,889 --> 00:04:01,930 Dan hal-hal seperti membuat database dan menciptakan meja, yang Anda 82 00:04:01,930 --> 00:04:06,270 mungkin hanya akan melakukan once-- sekali per meja, sekali per database-- 83 00:04:06,270 --> 00:04:09,040 itu OK untuk melakukan itu di antarmuka grafis. 84 00:04:09,040 --> 00:04:11,570 Dalam proses membuat tabel, Anda akan 85 00:04:11,570 --> 00:04:14,840 juga harus menentukan semua kolom yang akan di meja itu. 86 00:04:14,840 --> 00:04:18,149 Apa jenis informasi do Anda ingin menyimpan dalam tabel? 87 00:04:18,149 --> 00:04:24,520 Mungkin nama pengguna dan tanggal lahir, password, nomor ID pengguna, dan mungkin 88 00:04:24,520 --> 00:04:26,170 kota dan negara, kan? 89 00:04:26,170 --> 00:04:30,080 >> Dan untuk setiap kali kita ingin menambahkan user ke database, kita ingin mendapatkan semua enam 90 00:04:30,080 --> 00:04:31,890 dari potongan-potongan informasi. 91 00:04:31,890 --> 00:04:34,840 Dan kami melakukannya dengan menambahkan baris ke meja. 92 00:04:34,840 --> 00:04:37,800 Jadi pertama kita membuat database, maka kita membuat tabel. 93 00:04:37,800 --> 00:04:40,100 Sebagai bagian dari menciptakan meja, kita diminta 94 00:04:40,100 --> 00:04:44,280 untuk menentukan setiap kolom yang kami ingin dalam tabel ini. 95 00:04:44,280 --> 00:04:47,247 Dan kemudian sebagai kita mulai menambahkan informasi ke database 96 00:04:47,247 --> 00:04:49,580 dan query database lebih generally-- tidak hanya menambahkan, 97 00:04:49,580 --> 00:04:51,610 tapi segalanya kami do-- kami akan berurusan 98 00:04:51,610 --> 00:04:58,870 dengan deretan meja, yang merupakan salah satu informasi pengguna dari seluruh set. 99 00:04:58,870 --> 00:05:03,210 >> Jadi setiap kolom SQL mampu memegang data dari tipe data tertentu. 100 00:05:03,210 --> 00:05:06,560 Jadi kita semacam ini dihilangkan Ide tipe data di PHP, 101 00:05:06,560 --> 00:05:08,747 tapi mereka kembali ke sini di SQL. 102 00:05:08,747 --> 00:05:10,080 Dan ada banyak jenis data. 103 00:05:10,080 --> 00:05:13,420 Berikut ini hanya 20 dari mereka, tetapi itu bahkan tidak semua dari mereka. 104 00:05:13,420 --> 00:05:16,240 Jadi kita memiliki ide seperti INTs-- Integers-- kita mungkin tahu 105 00:05:16,240 --> 00:05:17,760 bahwa kolom ini dapat terus bilangan bulat. 106 00:05:17,760 --> 00:05:21,077 Dan ada variasi thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Mungkin kita tidak selalu membutuhkan empat gigitan. 108 00:05:22,660 --> 00:05:26,800 Mungkin kita perlu delapan byte, dan jadi kami dapat menggunakan variasi ini pada bilangan bulat 109 00:05:26,800 --> 00:05:28,510 menjadi sedikit lebih banyak ruang efisien. 110 00:05:28,510 --> 00:05:31,899 Kita bisa melakukan angka desimal, kita dapat melakukan floating point. 111 00:05:31,899 --> 00:05:32,940 Ini cukup mirip. 112 00:05:32,940 --> 00:05:34,773 Ada beberapa perbedaan, dan jika Anda akan 113 00:05:34,773 --> 00:05:37,330 ingin mencari yang Semacam SQL dari panduan, Anda 114 00:05:37,330 --> 00:05:40,670 dapat melihat apa yang sedikit perbedaan di antara mereka. 115 00:05:40,670 --> 00:05:43,250 >> Mungkin kita ingin menyimpan informasi tentang tanggal dan waktu. 116 00:05:43,250 --> 00:05:47,047 Mungkin kita melacak ketika pengguna bergabung website kami, 117 00:05:47,047 --> 00:05:48,880 dan jadi mungkin kita ingin memiliki kolom yang 118 00:05:48,880 --> 00:05:52,820 waktu tanggal atau cap yang menunjukkan ketika pengguna benar-benar 119 00:05:52,820 --> 00:05:54,130 mendaftar. 120 00:05:54,130 --> 00:05:56,132 Kita bisa melakukan geometri dan linestrings. 121 00:05:56,132 --> 00:05:57,340 Ini sebenarnya cukup keren. 122 00:05:57,340 --> 00:06:01,410 Kita bisa memetakan wilayah geografis menggunakan 123 00:06:01,410 --> 00:06:05,110 GIS koordinat untuk merencanakan keluar daerah. 124 00:06:05,110 --> 00:06:08,580 Jadi benar-benar dapat menyimpan semacam itu informasi di kolom SQL. 125 00:06:08,580 --> 00:06:11,390 >> TEXT hanya gumpalan raksasa teks, mungkin. 126 00:06:11,390 --> 00:06:12,840 Enum adalah jenis yang menarik. 127 00:06:12,840 --> 00:06:16,080 Mereka benar-benar ada di C. Kami tidak melakukan berbicara tentang mereka karena mereka tidak 128 00:06:16,080 --> 00:06:19,110 sangat umum digunakan, setidaknya CS50. 129 00:06:19,110 --> 00:06:22,680 Tapi itu tipe data enumerasi, yang mampu memegang nilai-nilai terbatas. 130 00:06:22,680 --> 00:06:25,940 >> Sebuah contoh yang benar-benar baik di sini akan untuk membuat enum mana tujuh 131 00:06:25,940 --> 00:06:29,394 nilai yang mungkin adalah hari Minggu, Senin, Selasa, Rabu, Kamis, Jumat, 132 00:06:29,394 --> 00:06:30,060 Sabtu, kan? 133 00:06:30,060 --> 00:06:33,311 Bahwa tipe data Hari Minggu tidak ada, 134 00:06:33,311 --> 00:06:35,310 tapi kita bisa menciptakan disebutkan tipe data seperti 135 00:06:35,310 --> 00:06:39,400 kolom yang hanya pernah memegang salah satu dari tujuh nilai yang mungkin. 136 00:06:39,400 --> 00:06:44,300 Kami telah disebutkan semua dari nilai yang mungkin. 137 00:06:44,300 --> 00:06:47,630 >> Lalu kami memiliki CHAR dan VARCHAR, dan saya sudah warna hijau ini 138 00:06:47,630 --> 00:06:49,505 karena kita benar-benar akan mengambil kedua 139 00:06:49,505 --> 00:06:51,950 untuk berbicara tentang perbedaan antara dua hal. 140 00:06:51,950 --> 00:06:55,780 Jadi CHAR, tidak seperti C di mana CHAR adalah karakter tunggal, 141 00:06:55,780 --> 00:07:00,730 di SQL CHAR mengacu panjang string tetap. 142 00:07:00,730 --> 00:07:02,620 Dan ketika kita membuat ini kolom, kita benar-benar 143 00:07:02,620 --> 00:07:05,070 dapat menentukan panjang string. 144 00:07:05,070 --> 00:07:08,080 >> Jadi, dalam contoh ini, kita bisa mengatakan CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Itu berarti bahwa setiap elemen kolom yang 146 00:07:11,190 --> 00:07:13,910 akan terdiri dari 10 byte informasi. 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 mencoba dan dimasukkan ke dalam 15 bit atau 15 karakter elemen 149 00:07:21,780 --> 00:07:25,340 atau nilai dalam kolom ini, kita hanya mendapatkan 10 pertama. 150 00:07:25,340 --> 00:07:27,290 Jika kita dimasukkan ke dalam dua nilai karakter yang panjang, 151 00:07:27,290 --> 00:07:30,700 kita akan memiliki dua karakter, dan kemudian delapan gigitan null. 152 00:07:30,700 --> 00:07:34,990 Kita tidak akan pernah menjadi lebih efisien dari itu. 153 00:07:34,990 --> 00:07:37,727 >> Sebuah VARCHAR adalah jenis seperti gagasan kita string 154 00:07:37,727 --> 00:07:39,560 bahwa kita akrab dengan dari C atau dari PHP. 155 00:07:39,560 --> 00:07:40,830 Ini adalah panjang variabel string. 156 00:07:40,830 --> 00:07:42,560 Dan ketika Anda membuat kolom ini, Anda hanya 157 00:07:42,560 --> 00:07:44,860 menentukan panjang maksimum yang mungkin. 158 00:07:44,860 --> 00:07:49,065 Jadi mungkin 99, atau biasa 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 jika kita menyimpan 15 karakter string, 161 00:07:52,890 --> 00:07:56,157 kita akan menggunakan 15 byte, mungkin 16 byte untuk null terminator. 162 00:07:56,157 --> 00:07:57,990 Jika kita menyimpan tiga karakter string, 163 00:07:57,990 --> 00:08:01,120 kita akan menggunakan tiga atau empat byte. 164 00:08:01,120 --> 00:08:03,050 Tapi kita tidak akan menggunakan penuh 99. 165 00:08:03,050 --> 00:08:05,190 >> Jadi, mengapa kita memiliki keduanya? 166 00:08:05,190 --> 00:08:08,210 Nah, jika kita perlu mencari tahu bagaimana sesuatu yang panjang adalah dengan VARCHAR sebuah, 167 00:08:08,210 --> 00:08:10,680 kita harus jenis iterate di atasnya sama seperti yang kami lakukan di C 168 00:08:10,680 --> 00:08:12,230 dan mencari tahu di mana berhenti. 169 00:08:12,230 --> 00:08:15,920 Sedangkan jika kita tahu bahwa segala sesuatu dalam kolom ini adalah 10 byte, mungkin 170 00:08:15,920 --> 00:08:19,220 kita tahu informasi itu, kita bisa melompat 10 bytes, 10 byte, 10 byte, 10 byte, 171 00:08:19,220 --> 00:08:21,790 dan selalu menemukan mulai dari string. 172 00:08:21,790 --> 00:08:25,210 >> Jadi kita mungkin memiliki beberapa terbuang ruang dengan CHAR, 173 00:08:25,210 --> 00:08:28,510 tapi mungkin ada perdagangan off memiliki kecepatan yang lebih baik 174 00:08:28,510 --> 00:08:30,160 dalam menavigasi database. 175 00:08:30,160 --> 00:08:32,330 Tapi mungkin kita ingin fleksibilitas dari VARCHAR 176 00:08:32,330 --> 00:08:36,710 bukannya having-- Jika CHAR kami adalah 255, tetapi sebagian besar pengguna kami 177 00:08:36,710 --> 00:08:40,537 hanya memasukkan tiga atau empat byte senilai informasi atau tiga atau empat 178 00:08:40,537 --> 00:08:41,870 karakter senilai informasi. 179 00:08:41,870 --> 00:08:44,324 >> Namun beberapa pengguna menggunakan seluruh 255, mungkin 180 00:08:44,324 --> 00:08:45,990 VARCHAR akan lebih tepat ada. 181 00:08:45,990 --> 00:08:49,840 Ini semacam trade off, dan umumnya untuk keperluan CS50, 182 00:08:49,840 --> 00:08:54,107 Anda tidak perlu khawatir terlalu banyak tentang apakah Anda menggunakan CHAR atau VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Tapi di dunia nyata, hal-hal ini memang penting karena semua kolom ini 184 00:08:57,190 --> 00:08:59,300 mengambil ruang fisik yang sebenarnya. 185 00:08:59,300 --> 00:09:04,150 Dan ruang fisik, dalam dunia nyata, datang pada premi. 186 00:09:04,150 --> 00:09:06,800 >> Jadi salah satu pertimbangan lain ketika Anda sedang membangun sebuah meja 187 00:09:06,800 --> 00:09:09,840 adalah untuk memilih satu kolom menjadi apa yang disebut primary key. 188 00:09:09,840 --> 00:09:14,350 Dan kunci utama adalah kolom di mana setiap nilai tunggal adalah unik. 189 00:09:14,350 --> 00:09:19,980 Dan itu berarti bahwa Anda dapat dengan mudah memilih satu baris hanya dengan melihat 190 00:09:19,980 --> 00:09:22,450 di kunci utama dari baris itu. 191 00:09:22,450 --> 00:09:24,580 Jadi misalnya, Anda umumnya, dengan pengguna, 192 00:09:24,580 --> 00:09:27,210 tidak ingin dua pengguna yang memiliki nomor ID pengguna yang sama. 193 00:09:27,210 --> 00:09:28,960 Dan jadi mungkin Anda memiliki banyak informasi, 194 00:09:28,960 --> 00:09:30,793 dan mungkin dua pengguna dapat memiliki name-- sama 195 00:09:30,793 --> 00:09:32,650 Anda memiliki John Smith dan John Smith. 196 00:09:32,650 --> 00:09:34,520 Itu tidak selalu masalah, karena ada beberapa orang 197 00:09:34,520 --> 00:09:35,830 di dunia bernama John Smith. 198 00:09:35,830 --> 00:09:40,766 Tapi kami hanya memiliki nomor ID satu pengguna 10, salah satu pengguna ID nomor 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Kami tidak memiliki dua pengguna dengan jumlah yang sama, 200 00:09:42,640 --> 00:09:46,010 dan jadi mungkin nomor ID pengguna akan menjadi kunci utama baik. 201 00:09:46,010 --> 00:09:48,610 >> Kami tidak memiliki duplikasi, dan kami sekarang dapat unik 202 00:09:48,610 --> 00:09:52,619 mengidentifikasi setiap baris tunggal hanya dengan melihat kolom tersebut. 203 00:09:52,619 --> 00:09:55,410 Memilih kunci primer dapat benar-benar membuat operasi meja berikutnya 204 00:09:55,410 --> 00:09:59,710 jauh lebih mudah karena Anda dapat memanfaatkan fakta bahwa baris tertentu akan 205 00:09:59,710 --> 00:10:02,720 unik, atau kolom tertentu database atau tabel 206 00:10:02,720 --> 00:10:06,030 akan menjadi unik untuk memilih baris tertentu keluar. 207 00:10:06,030 --> 00:10:08,790 >> Anda juga dapat memiliki utama bersama kunci, yang mungkin Anda menemukan kesempatan 208 00:10:08,790 --> 00:10:11,720 untuk menggunakan, yang hanya Kombinasi dari dua kolom yang 209 00:10:11,720 --> 00:10:13,280 dijamin untuk menjadi unik. 210 00:10:13,280 --> 00:10:16,410 Jadi mungkin Anda memiliki satu Kolom itu As dan B, 211 00:10:16,410 --> 00:10:19,290 satu kolom yang satu, dua, dan tiga, tetapi Anda akan hanya pernah 212 00:10:19,290 --> 00:10:23,660 memiliki A1 tunggal, tunggal A2, dan seterusnya dan seterusnya. 213 00:10:23,660 --> 00:10:28,980 Tapi Anda mungkin memiliki B2, satu C2, atau A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Jadi, Anda mungkin memiliki beberapa Seperti, beberapa B, beberapa orang, beberapa berpasangan, 215 00:10:32,840 --> 00:10:38,567 tapi Anda hanya dapat pernah memiliki tunggal A1, B2, C3, dan sebagainya. 216 00:10:38,567 --> 00:10:40,400 Jadi seperti yang saya katakan, SQL adalah bahasa pemrograman, 217 00:10:40,400 --> 00:10:42,024 tetapi memiliki kosakata yang cukup terbatas. 218 00:10:42,024 --> 00:10:44,880 Ini tidak cukup sebagai luas sebagai C dan PHP dan bahasa lainnya 219 00:10:44,880 --> 00:10:46,350 bahwa kita berbicara dalam kursus. 220 00:10:46,350 --> 00:10:49,960 Hal ini lebih verbose sebuah bahasa daripada apa yang kita 221 00:10:49,960 --> 00:10:52,789 akan berbicara tentang dalam hal ini video, karena dalam video ini 222 00:10:52,789 --> 00:10:54,830 kita akan berbicara tentang empat operasi yang kita 223 00:10:54,830 --> 00:10:55,720 dapat melakukan di atas meja. 224 00:10:55,720 --> 00:10:56,761 >> Ada lebih dari ini. 225 00:10:56,761 --> 00:10:58,730 Kita bisa melakukan lebih dari ini, tetapi untuk tujuan kita, 226 00:10:58,730 --> 00:11:02,250 kita umumnya akan menggunakan hanya empat insert operations--, 227 00:11:02,250 --> 00:11:05,360 pilih, memperbarui, dan menghapus. 228 00:11:05,360 --> 00:11:08,750 Dan Anda mungkin bisa menebak intuitif apa semua empat hal ini lakukan. 229 00:11:08,750 --> 00:11:12,520 Tapi kami akan pergi ke sedikit detail pada masing-masing. 230 00:11:12,520 --> 00:11:15,780 >> Jadi untuk tujuan ini video, mari kita asumsikan 231 00:11:15,780 --> 00:11:18,870 kami telah dua berikut tabel dalam database tunggal. 232 00:11:18,870 --> 00:11:23,460 Kami memiliki tabel yang disebut User yang memiliki empat columns-- nomor ID, nama pengguna, 233 00:11:23,460 --> 00:11:25,350 password, dan nama lengkap. 234 00:11:25,350 --> 00:11:27,430 Dan kami memiliki kedua tabel dalam database yang sama 235 00:11:27,430 --> 00:11:32,129 disebut Moms yang hanya menyimpan informasi tentang username dan ibu. 236 00:11:32,129 --> 00:11:33,920 Jadi untuk semua contoh dalam video ini, kita akan 237 00:11:33,920 --> 00:11:37,945 menggunakan database ini dan update berikutnya untuk itu. 238 00:11:37,945 --> 00:11:40,070 Jadi katakanlah kita ingin menambahkan informasi ke meja. 239 00:11:40,070 --> 00:11:44,460 Itulah yang operasi insert tidak. 240 00:11:44,460 --> 00:11:46,550 Dalam menjelaskan semua perintah ini, aku akan 241 00:11:46,550 --> 00:11:48,860 untuk memberikan kerangka umum untuk digunakan. 242 00:11:48,860 --> 00:11:51,661 Karena pada dasarnya, query akan terlihat sangat mirip, 243 00:11:51,661 --> 00:11:54,660 kami hanya akan mengubah potongan yang sedikit berbeda dari informasi 244 00:11:54,660 --> 00:11:56,750 melakukan hal-hal yang berbeda dengan meja. 245 00:11:56,750 --> 00:11:59,200 >> Jadi untuk INSERT. Kerangka terlihat jenis seperti ini. 246 00:11:59,200 --> 00:12:02,230 Kami ingin masukkan ke dalam meja tertentu. 247 00:12:02,230 --> 00:12:05,290 Kemudian kita memiliki kurung buka dan daftar kolom 248 00:12:05,290 --> 00:12:08,070 bahwa kita ingin menempatkan nilai-nilai ke dalam. 249 00:12:08,070 --> 00:12:10,974 Tutup kurung, yang berikut nilai-nilai, dan kemudian 250 00:12:10,974 --> 00:12:13,390 lagi, kita daftar keluar nilai-nilai kita ingin menempatkan di meja. 251 00:12:13,390 --> 00:12:15,950 >> Jadi contoh ini akan berikut. 252 00:12:15,950 --> 00:12:19,170 Saya ingin memasukkan ke dalam tabel pengguna columns-- berikut 253 00:12:19,170 --> 00:12:21,010 username, password, dan nama lengkap. 254 00:12:21,010 --> 00:12:25,282 Jadi baris baru di mana aku meletakkan di tiga kolom 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 hal ini, aku menempatkan Newman huruf kecil 257 00:12:32,730 --> 00:12:38,710 ke dalam kolom nama pengguna, password USMAIL, dan penuh modal nama N 258 00:12:38,710 --> 00:12:41,940 Newman ke dalam kolom nama lengkap. 259 00:12:41,940 --> 00:12:44,240 >> Jadi, inilah yang database tampak seperti sebelumnya. 260 00:12:44,240 --> 00:12:48,250 Inilah yang tabel pengguna pada atas tampak seperti sebelum kita lakukan ini. 261 00:12:48,250 --> 00:12:50,760 Setelah kita menjalankan ini query, kita mendapatkan ini. 262 00:12:50,760 --> 00:12:54,790 Kami telah menambahkan baris baru ke meja. 263 00:12:54,790 --> 00:12:56,810 Tapi perhatikan hal yang satu ini bahwa saya tidak menentukan, 264 00:12:56,810 --> 00:12:59,880 tapi entah kenapa aku punya nilai untuk yang 12 ini di sini. 265 00:12:59,880 --> 00:13:02,820 Saya tidak mengatakan saya ingin memasukkan nomor ID di sana. 266 00:13:02,820 --> 00:13:04,900 Saya ingin menempatkan nama pengguna, password, nama lengkap. 267 00:13:04,900 --> 00:13:06,440 Dan saya melakukan itu, itu baik-baik saja. 268 00:13:06,440 --> 00:13:07,760 >> Tapi saya juga punya 12 ini. 269 00:13:07,760 --> 00:13:09,490 Mengapa saya mendapatkan 12 ini? 270 00:13:09,490 --> 00:13:12,904 Nah, ternyata bahwa ketika Anda mendefinisikan 271 00:13:12,904 --> 00:13:15,570 kolom yang akan menjadi Anda kunci utama, yang biasanya, 272 00:13:15,570 --> 00:13:16,510 seperti saya katakan, nomor ID. 273 00:13:16,510 --> 00:13:18,718 Ini tidak selalu harus akan menjadi nomor ID, 274 00:13:18,718 --> 00:13:22,380 tapi biasanya ide yang baik untuk menjadi semacam nilai integer. 275 00:13:22,380 --> 00:13:25,950 Anda memiliki pilihan di phpMyAdmin ketika Anda sedang menciptakan database Anda 276 00:13:25,950 --> 00:13:31,130 atau meja Anda untuk mengatur bahwa kolom auto incrementing. 277 00:13:31,130 --> 00:13:34,520 >> Yang adalah ide yang sangat baik ketika Anda bekerja dengan kunci utama, 278 00:13:34,520 --> 00:13:39,330 karena Anda ingin setiap nilai di kolom yang menjadi unik. 279 00:13:39,330 --> 00:13:43,310 Dan jika Anda lupa untuk menentukan untuk lebih dari satu orang, 280 00:13:43,310 --> 00:13:46,240 Anda sekarang memiliki situasi di mana kolom yang tidak lagi unik. 281 00:13:46,240 --> 00:13:50,200 Anda memiliki dua kosong, sehingga Anda dapat ada lagi unik mengidentifikasi column-- 282 00:13:50,200 --> 00:13:54,150 atau Anda tidak bisa lagi unik mengidentifikasi baris berdasarkan kolom tersebut. 283 00:13:54,150 --> 00:13:57,010 Ini kehilangan semua yang nilai sebagai kunci utama. 284 00:13:57,010 --> 00:14:02,010 >> Dan begitu rupanya apa yang telah saya lakukan disini dikonfigurasi ID pengguna 285 00:14:02,010 --> 00:14:07,790 kolom kenaikan otomatis sehingga setiap kali saya menambahkan informasi ke meja, 286 00:14:07,790 --> 00:14:12,220 maka secara otomatis akan memberikan nilai untuk kunci primer. 287 00:14:12,220 --> 00:14:15,570 Jadi saya tidak pernah bisa lupa untuk melakukannya karena database akan melakukannya untuk saya. 288 00:14:15,570 --> 00:14:16,587 Jadi itu jenis yang baik. 289 00:14:16,587 --> 00:14:18,670 Dan jadi itu sebabnya kita mendapatkan 12 di sana, karena saya sudah 290 00:14:18,670 --> 00:14:21,772 mengatur kolom untuk kenaikan otomatis. 291 00:14:21,772 --> 00:14:23,730 Jika saya menambahkan orang lain itu akan 13, jika saya menambahkan 292 00:14:23,730 --> 00:14:27,890 orang lain itu akan menjadi 14, dan seterusnya. 293 00:14:27,890 --> 00:14:30,190 >> Jadi mari kita melakukan satu penyisipan lebih. 294 00:14:30,190 --> 00:14:34,530 Kami akan memasukkan ke dalam tabel ibu, di tertentu, username dan ibu 295 00:14:34,530 --> 00:14:37,390 kolom, nilai-nilai kramer dan Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 Dan jadi kami punya ini sebelumnya. 297 00:14:39,140 --> 00:14:41,800 Setelah kita menjalankan itu SQL query, kita memiliki ini. 298 00:14:41,800 --> 00:14:47,290 Kami telah menambahkan Kramer dan Babs Kramer ke meja ibu. 299 00:14:47,290 --> 00:14:48,350 >> Jadi yang memasukkan. 300 00:14:48,350 --> 00:14:51,850 SELECT adalah apa yang kita gunakan untuk mengekstrak informasi dari meja. 301 00:14:51,850 --> 00:14:54,390 Jadi ini adalah bagaimana kita mendapatkan informasi dari database. 302 00:14:54,390 --> 00:14:59,589 Dan perintah sehingga SELECT akan menjadi sangat sering digunakan dalam pemrograman. 303 00:14:59,589 --> 00:15:02,130 Umum framework-- yang kerangka umum seperti ini. 304 00:15:02,130 --> 00:15:06,550 Pilih satu set kolom dari meja, dan kemudian opsional 305 00:15:06,550 --> 00:15:11,090 Anda dapat menentukan condition-- atau apa yang biasanya kita sebut 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 >> Tapi itu pada dasarnya apa yang baris tertentu Anda ingin mendapatkan. 308 00:15:16,490 --> 00:15:19,100 Jika Anda ingin, bukannya segala sesuatu, mempersempit bawah, 309 00:15:19,100 --> 00:15:20,060 ini adalah di mana Anda akan melakukannya. 310 00:15:20,060 --> 00:15:22,777 Dan kemudian opsional, Anda juga dapat memesan dengan kolom tertentu. 311 00:15:22,777 --> 00:15:25,860 Jadi mungkin Anda ingin memiliki hal-hal diurutkan abjad berdasarkan satu kolom 312 00:15:25,860 --> 00:15:27,540 atau abjad berdasarkan lain. 313 00:15:27,540 --> 00:15:30,610 >> Sekali lagi, MANA dan ORDER BY adalah opsional. 314 00:15:30,610 --> 00:15:32,681 Tapi mereka mungkin akan useful-- khususnya 315 00:15:32,681 --> 00:15:34,680 MANA akan berguna untuk mempersempit sehingga Anda tidak 316 00:15:34,680 --> 00:15:37,460 mendapatkan seluruh database Anda kembali dan harus memprosesnya, Anda hanya mendapatkan 317 00:15:37,460 --> 00:15:39,300 potongan itu bahwa Anda peduli. 318 00:15:39,300 --> 00:15:44,932 Jadi misalnya, saya mungkin ingin memilih Nomor ID dan nama lengkap dari pengguna. 319 00:15:44,932 --> 00:15:46,140 Jadi apa yang mungkin terlihat seperti ini? 320 00:15:46,140 --> 00:15:48,270 Jadi, inilah meja pengguna saya. 321 00:15:48,270 --> 00:15:51,080 Saya ingin memilih idnum dan nama lengkap dari pengguna. 322 00:15:51,080 --> 00:15:52,300 Apa yang akan saya dapatkan? 323 00:15:52,300 --> 00:15:53,580 Aku akan mendapatkan ini. 324 00:15:53,580 --> 00:15:56,930 Saya tidak sempit itu, jadi aku mendapatkan nomor ID untuk setiap baris 325 00:15:56,930 --> 00:16:00,850 dan aku mendapatkan penuh nama dari setiap baris. 326 00:16:00,850 --> 00:16:02,210 >> OKE. 327 00:16:02,210 --> 00:16:05,640 Bagaimana jika saya ingin memilih sandi dari pengguna WHERE-- jadi sekarang 328 00:16:05,640 --> 00:16:10,370 Saya menambahkan kondisi, sebuah predicate-- mana idnum kurang dari 12. 329 00:16:10,370 --> 00:16:13,660 Jadi, inilah database saya lagi, pengguna saya tabel atas. 330 00:16:13,660 --> 00:16:17,030 Apa yang saya akan dapatkan jika saya ingin pilih informasi itu, password, 331 00:16:17,030 --> 00:16:21,550 dimana pengguna ID atau idnum kurang dari 12? 332 00:16:21,550 --> 00:16:24,910 Aku akan mendapatkan ini informasi kembali, kan? 333 00:16:24,910 --> 00:16:29,170 Hal ini terjadi bahwa idnum adalah 10, kurang dari 12, ID nomor 11 kurang dari 12. 334 00:16:29,170 --> 00:16:32,160 Saya mendapatkan password bagi mereka baris. 335 00:16:32,160 --> 00:16:33,914 Itulah yang saya minta. 336 00:16:33,914 --> 00:16:34,580 Bagaimana dengan ini? 337 00:16:34,580 --> 00:16:39,170 Bagaimana jika saya ingin memilih bintang dari meja ibu dimana username sama Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, pilih star adalah khusus semacam wild card disebut 339 00:16:43,780 --> 00:16:45,670 yang kita gunakan untuk mendapatkan segala sesuatu. 340 00:16:45,670 --> 00:16:48,620 Jadi mereka mengatakan pilih nama pengguna ibu koma, yang 341 00:16:48,620 --> 00:16:51,060 kebetulan satu-satunya dua kolom tabel ini, 342 00:16:51,060 --> 00:16:53,260 Aku hanya bisa memilih bintang dan mendapatkan semuanya 343 00:16:53,260 --> 00:16:55,030 di mana username sama Jerry. 344 00:16:55,030 --> 00:16:59,380 Dan itulah yang saya akan mendapatkan jika saya membuat pencarian tertentu. 345 00:16:59,380 --> 00:17:01,810 >> Sekarang, database adalah besar karena mereka memungkinkan 346 00:17:01,810 --> 00:17:06,074 kita untuk mengatur informasi mungkin sedikit lebih efisien daripada kita 347 00:17:06,074 --> 00:17:06,740 mungkin sebaliknya. 348 00:17:06,740 --> 00:17:10,240 Kita tidak perlu untuk menyimpan setiap bagian yang relevan dari informasi 349 00:17:10,240 --> 00:17:12,230 tentang pengguna di meja yang sama. 350 00:17:12,230 --> 00:17:13,730 Kami memiliki dua tabel di sana. 351 00:17:13,730 --> 00:17:15,734 >> Kita perlu untuk menyimpan Nama orang ibu, 352 00:17:15,734 --> 00:17:18,900 dan mungkin kita tidak memiliki jaminan sosial nomor, kita memiliki tanggal lahir mereka. 353 00:17:18,900 --> 00:17:21,819 Itu tidak selalu perlu berada di meja yang sama. 354 00:17:21,819 --> 00:17:25,339 Selama kita dapat mendefinisikan hubungan antara tables-- yang 355 00:17:25,339 --> 00:17:28,440 dan di sanalah relasional yang jangka Database jenis datang 356 00:17:28,440 --> 00:17:32,130 ke play-- selama kita dapat mendefinisikan hubungan antara tabel, 357 00:17:32,130 --> 00:17:35,545 kita bisa semacam milah atau hal-hal abstrak cara, 358 00:17:35,545 --> 00:17:37,670 di mana kita hanya memiliki Informasi sangat penting 359 00:17:37,670 --> 00:17:39,270 kita peduli dalam tabel pengguna. 360 00:17:39,270 --> 00:17:43,220 Dan kemudian kita memiliki informasi tambahan atau informasi tambahan dalam tabel lain 361 00:17:43,220 --> 00:17:48,260 bahwa kita dapat terhubung kembali ke utama tabel dengan cara tertentu pengguna. 362 00:17:48,260 --> 00:17:52,200 >> Jadi di sini kita memiliki dua tabel ini, tapi ada hubungan antara mereka, 363 00:17:52,200 --> 00:17:53,010 kanan? 364 00:17:53,010 --> 00:17:55,070 Sepertinya nama mungkin sesuatu 365 00:17:55,070 --> 00:17:59,909 yang ada di umum antara dua tabel yang berbeda ini. 366 00:17:59,909 --> 00:18:01,700 Jadi bagaimana jika sekarang kita memiliki situasi di mana kita 367 00:18:01,700 --> 00:18:06,046 ingin mendapatkan nama lengkap pengguna dari tabel pengguna, dan ibu mereka 368 00:18:06,046 --> 00:18:07,170 nama dari tabel ibu? 369 00:18:07,170 --> 00:18:10,960 Kami tidak memiliki cara untuk mendapatkan yang seperti berdiri, kan? 370 00:18:10,960 --> 00:18:17,790 Tidak ada meja tunggal yang berisi kedua nama lengkap dan nama ibu. 371 00:18:17,790 --> 00:18:20,400 Kami tidak memiliki pilihan itu dari apa yang telah kita lihat sejauh ini. 372 00:18:20,400 --> 00:18:22,950 >> Dan jadi kita harus memperkenalkan ide JOIN. 373 00:18:22,950 --> 00:18:24,857 Dan bergabung mungkin paling complex-- 374 00:18:24,857 --> 00:18:27,940 itu benar-benar operasi yang paling kompleks kita akan berbicara tentang dalam video. 375 00:18:27,940 --> 00:18:30,040 Mereka sedikit rumit, tetapi sekali Anda mendapatkan menguasainya, 376 00:18:30,040 --> 00:18:31,248 mereka benar-benar tidak terlalu buruk. 377 00:18:31,248 --> 00:18:32,820 Ini hanya kasus khusus dari SELECT. 378 00:18:32,820 --> 00:18:37,120 Kita akan memilih satu set kolom dari tabel bergabung 379 00:18:37,120 --> 00:18:40,650 dalam tabel kedua pada beberapa predikat. 380 00:18:40,650 --> 00:18:45,340 >> Dalam hal ini, berpikir tentang hal ini seperti this-- tabel satu adalah satu lingkaran di sini, 381 00:18:45,340 --> 00:18:47,530 tabel dua adalah lingkaran lain di sini. 382 00:18:47,530 --> 00:18:49,410 Dan bagian predikat di tengah, itu 383 00:18:49,410 --> 00:18:51,701 semacam seperti jika Anda berpikir tentang sebagai diagram Venn, apa 384 00:18:51,701 --> 00:18:52,670 yang mereka memiliki kesamaan? 385 00:18:52,670 --> 00:18:55,960 Kami ingin menghubungkan dua tabel ini berdasarkan apa yang mereka memiliki kesamaan 386 00:18:55,960 --> 00:19:01,230 dan membuat tabel hipotetis ini yang merupakan penggabungan dua bersama-sama. 387 00:19:01,230 --> 00:19:03,480 Jadi kita akan melihat ini dalam sebuah contoh dan mungkin yang akan membantu 388 00:19:03,480 --> 00:19:04,521 jelas itu sedikit. 389 00:19:04,521 --> 00:19:09,260 Jadi mungkin Anda ingin memilih user.fullname dan moms.mother 390 00:19:09,260 --> 00:19:13,220 dari pengguna bergabung di ibu tabel dalam setiap situasi 391 00:19:13,220 --> 00:19:16,790 dimana kolom 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 .. 394 00:19:20,460 --> 00:19:26,697 Jika saya melakukan beberapa tabel bersama-sama, saya dapat menentukan meja. 395 00:19:26,697 --> 00:19:29,530 Saya bisa membedakan di atas tertentu bahwa pada di bagian paling bawah sana. 396 00:19:29,530 --> 00:19:33,220 Aku bisa membedakan username kolom tabel pengguna 397 00:19:33,220 --> 00:19:36,010 dari kolom nama pengguna dari meja ibu, yang otherwise-- 398 00:19:36,010 --> 00:19:38,070 jika kita hanya mengatakan nama sama nama pengguna, yang tidak benar-benar 399 00:19:38,070 --> 00:19:38,970 berarti apa-apa. 400 00:19:38,970 --> 00:19:41,440 Kami ingin melakukannya di mana mereka cocok. 401 00:19:41,440 --> 00:19:46,080 >> Jadi saya dapat menentukan tabel dan Nama kolom dalam kasus situasi 402 00:19:46,080 --> 00:19:48,370 di mana itu akan menjadi tidak jelas apa yang saya bicarakan. 403 00:19:48,370 --> 00:19:51,880 Jadi itu semua yang saya lakukan ada aku mengatakan kolom ini dari tabel ini, 404 00:19:51,880 --> 00:19:54,020 dan menjadi sangat eksplisit. 405 00:19:54,020 --> 00:19:56,810 Jadi sekali lagi, saya memilih nama lengkap dan nama ibu 406 00:19:56,810 --> 00:20:00,950 dari tabel pengguna terkait bersama-sama dengan tabel ibu dalam setiap situasi 407 00:20:00,950 --> 00:20:05,960 di mana mereka berbagi column-- yang mereka berbagi bahwa username gagasan. 408 00:20:05,960 --> 00:20:08,580 >> Jadi di sini adalah tabel yang kita miliki sebelumnya. 409 00:20:08,580 --> 00:20:12,210 Ini adalah keadaan kami Database seperti yang ada sekarang. 410 00:20:12,210 --> 00:20:16,390 Informasi yang kita penggalian adalah ini untuk memulai dengan. 411 00:20:16,390 --> 00:20:19,820 Ini adalah tabel baru kita akan untuk membuat menggabungkan ini bersama-sama. 412 00:20:19,820 --> 00:20:23,585 Dan perhatikan kita tidak menyoroti Baris Newman di meja pengguna, 413 00:20:23,585 --> 00:20:25,960 dan kita tidak menyoroti Baris Kramer dalam tabel ibu 414 00:20:25,960 --> 00:20:31,250 karena salah satu tidak ada di baik sets-- di kedua tabel. 415 00:20:31,250 --> 00:20:36,260 >> Satu-satunya informasi yang sama di antara mereka adalah Jerry adalah di kedua tabel 416 00:20:36,260 --> 00:20:39,100 dan gcostanza di kedua tabel. 417 00:20:39,100 --> 00:20:42,620 Dan ketika kita melakukan SQL JOIN, apa yang kita get-- dan kami melakukan benar-benar mendapatkan ini. 418 00:20:42,620 --> 00:20:44,830 Ini semacam variabel sementara. 419 00:20:44,830 --> 00:20:47,330 Ini seperti hipotetis penggabungan dua tabel. 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 bergabung bersama tabel di informasi bahwa mereka memiliki kesamaan. 422 00:20:54,730 --> 00:20:58,334 >> Jadi melihat users.username yang dan kolom moms.username, 423 00:20:58,334 --> 00:20:59,250 itu persis sama. 424 00:20:59,250 --> 00:21:01,820 Itulah informasi yang konsisten dari pengguna 425 00:21:01,820 --> 00:21:02,890 meja dan meja ibu. 426 00:21:02,890 --> 00:21:04,270 Dan jadi kami bergabung bersama-sama. 427 00:21:04,270 --> 00:21:06,919 Kami dibuang Kramer karena dia tidak ada dalam tabel pengguna, 428 00:21:06,919 --> 00:21:09,710 dan kami dibuang Newman, karena dia tidak ada dalam tabel ibu. 429 00:21:09,710 --> 00:21:16,450 Jadi ini adalah merger hipotetis menggunakan BERGABUNG operasi SELECT. 430 00:21:16,450 --> 00:21:21,250 >> Dan kemudian kami mencari nama lengkap pengguna dan ibu pengguna, 431 00:21:21,250 --> 00:21:24,999 dan jadi ini adalah informasi yang kita akan mendapatkan dari permintaan keseluruhan 432 00:21:24,999 --> 00:21:26,040 yang kami buat dengan SELECT. 433 00:21:26,040 --> 00:21:28,873 Jadi kami bergabung dengan tabel bersama-sama dan kami diekstraksi dua kolom, 434 00:21:28,873 --> 00:21:31,610 dan itulah apa yang akan kita dapatkan. 435 00:21:31,610 --> 00:21:33,370 Tapi SQL bergabung semacam rumit. 436 00:21:33,370 --> 00:21:36,770 Anda mungkin tidak akan melakukannya terlalu banyak, tetapi hanya memiliki beberapa gagasan tentang kerangka 437 00:21:36,770 --> 00:21:41,992 yang dapat Anda gunakan untuk menggabungkan dua tabel bersama-sama jika Anda perlu. 438 00:21:41,992 --> 00:21:43,700 Dua yang terakhir adalah bit sederhana aku janji. 439 00:21:43,700 --> 00:21:48,040 Jadi memperbarui, kita dapat menggunakan UPDATE mengubah informasi dalam sebuah tabel. 440 00:21:48,040 --> 00:21:53,880 Format umum adalah UPDATE beberapa tabel, SET beberapa kolom untuk beberapa nilai 441 00:21:53,880 --> 00:21:55,540 MANA beberapa predikat puas. 442 00:21:55,540 --> 00:21:57,850 Jadi misalnya, kita mungkin ingin untuk memperbarui tabel pengguna 443 00:21:57,850 --> 00:22:04,400 dan mengatur password untuk Yada Yada, dimana jumlah ID adalah 10. 444 00:22:04,400 --> 00:22:06,400 >> Jadi dalam hal ini, kami memperbarui tabel pengguna. 445 00:22:06,400 --> 00:22:08,275 Nomor ID adalah 10 untuk bahwa baris pertama di sana, 446 00:22:08,275 --> 00:22:10,690 dan kami ingin memperbarui password untuk Yada Yada. 447 00:22:10,690 --> 00:22:12,170 Dan itulah yang akan terjadi. 448 00:22:12,170 --> 00:22:13,628 Ini cukup sederhana, bukan? 449 00:22:13,628 --> 00:22:17,990 Ini hanya sangat sederhana modifikasi ke meja. 450 00:22:17,990 --> 00:22:22,250 >> DELETE adalah operasi kita digunakan untuk menghapus informasi dari meja. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM tabel WHERE beberapa predikat puas. 452 00:22:24,817 --> 00:22:26,900 Kami ingin menghapus dari tabel pengguna misalnya 453 00:22:26,900 --> 00:22:28,254 di mana username adalah Newman. 454 00:22:28,254 --> 00:22:31,420 Anda mungkin bisa menebak apa yang akan terjadi di sini setelah kami mengeksekusi SQL yang 455 00:22:31,420 --> 00:22:35,790 query, Newman hilang dari meja. 456 00:22:35,790 --> 00:22:40,460 >> Jadi semua operasi ini, seperti yang saya katakan, sangat mudah dilakukan di phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Ini adalah antarmuka pengguna yang sangat ramah. 458 00:22:43,020 --> 00:22:45,930 Tapi itu membutuhkan usaha manual. 459 00:22:45,930 --> 00:22:47,840 Kami tidak ingin mempekerjakan tenaga manual. 460 00:22:47,840 --> 00:22:51,280 Kami ingin program untuk melakukan ini untuk kita, kan? 461 00:22:51,280 --> 00:22:53,190 Jadi kita mungkin ingin melakukan pemrograman ini. 462 00:22:53,190 --> 00:22:56,410 Kami ingin menggabungkan SQL dan memiliki sesuatu yang lain untuk melakukan hal ini untuk kita. 463 00:22:56,410 --> 00:23:02,710 >> Tapi apa yang telah kita lihat yang memungkinkan kita untuk pemrograman melakukan sesuatu? 464 00:23:02,710 --> 00:23:03,690 Kami telah melihat PHP, kan? 465 00:23:03,690 --> 00:23:05,760 Hal ini memperkenalkan beberapa dinamisme dalam program kami. 466 00:23:05,760 --> 00:23:10,430 Dan untungnya, SQL dan PHP bermain sangat baik bersama-sama. 467 00:23:10,430 --> 00:23:13,230 Ada fungsi di PHP disebut query, yang dapat digunakan. 468 00:23:13,230 --> 00:23:15,870 Dan Anda dapat melewati sebagai parameter atau argumen 469 00:23:15,870 --> 00:23:19,210 untuk query query SQL yang Anda ingin mengeksekusi. 470 00:23:19,210 --> 00:23:23,250 Dan PHP akan melakukannya atas nama Anda. 471 00:23:23,250 --> 00:23:25,564 >> Jadi setelah Anda terhubung ke database Anda dengan PHP, 472 00:23:25,564 --> 00:23:26,980 ada dua primary Anda melakukan hal ini. 473 00:23:26,980 --> 00:23:29,230 Ada sesuatu yang disebut MySQLi dan sesuatu yang disebut PDO. 474 00:23:29,230 --> 00:23:31,063 Kami tidak akan pergi ke besar Jumlah rinci ada. 475 00:23:31,063 --> 00:23:32,957 Dalam CS50 kita menggunakan PDO. 476 00:23:32,957 --> 00:23:34,790 Setelah Anda terhubung ke database Anda, Anda 477 00:23:34,790 --> 00:23:40,980 kemudian dapat membuat query database Anda dengan melewati query sebagai argumen 478 00:23:40,980 --> 00:23:42,730 untuk fungsi PHP. 479 00:23:42,730 --> 00:23:46,460 Dan ketika Anda melakukannya, Anda menyimpan mengatur hasil dalam array asosiatif. 480 00:23:46,460 --> 00:23:50,290 >> Dan kita tahu bagaimana bekerja dengan array asosiatif di PHP. 481 00:23:50,290 --> 00:23:52,630 Jadi saya mungkin mengatakan sesuatu seperti this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 ini di PHP-- sama query. 483 00:23:55,470 --> 00:23:57,660 Dan kemudian bagian dalam fungsi permintaan bahwa argumen 484 00:23:57,660 --> 00:24:00,130 bahwa aku lewat query yang terlihat seperti SQL. 485 00:24:00,130 --> 00:24:01,160 Dan pada kenyataannya yang SQL. 486 00:24:01,160 --> 00:24:05,700 Itu string yang saya akan seperti untuk mengeksekusi pada database saya. 487 00:24:05,700 --> 00:24:09,250 >> Dan merah, ini adalah PHP. 488 00:24:09,250 --> 00:24:11,890 Ini adalah SQL bahwa aku mengintegrasikan ke PHP dengan membuat 489 00:24:11,890 --> 00:24:15,020 itu argumen untuk fungsi permintaan. 490 00:24:15,020 --> 00:24:19,640 Saya ingin memilih nama lengkap dari pengguna di mana nomor ID sama dengan 10. 491 00:24:19,640 --> 00:24:22,560 Dan kemudian mungkin setelah saya sudah melakukan itu, Aku mungkin mengatakan sesuatu seperti ini. 492 00:24:22,560 --> 00:24:25,550 Saya ingin mencetak Terima kasih untuk pesan masuk. 493 00:24:25,550 --> 00:24:32,530 >> Dan saya ingin interpolate-- saya ingin interpolasi $ hasil nama lengkap. 494 00:24:32,530 --> 00:24:36,280 Dan itulah bagaimana saya bekerja dengan itu asosiatif array aku kembali. 495 00:24:36,280 --> 00:24:39,730 $ hasil nama lengkap akan pada dasarnya berakhir mencetak, 496 00:24:39,730 --> 00:24:42,870 terima kasih untuk log in, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Itu adalah nama lengkap mana idnum sama 10. 498 00:24:46,570 --> 00:24:48,850 >> Dan sehingga semua yang saya lakukan adalah aku sekarang-- saya disimpan 499 00:24:48,850 --> 00:24:52,780 pertanyaan saya, hasil query saya dan hasil dalam array asosiatif, 500 00:24:52,780 --> 00:24:56,330 dan nama lengkap adalah nama dari kolom saya mendapatkan untuk. 501 00:24:56,330 --> 00:25:01,010 Jadi itulah kunci saya ke dalam hasil array asosiatif yang saya inginkan. 502 00:25:01,010 --> 00:25:05,930 Jadi Terima kasih untuk log in, $ hasil, nama lengkap akan mencetak, akan menempel 503 00:25:05,930 --> 00:25:08,654 tepat di antara mereka keriting kawat gigi, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 Dan saya akan ingin mencetak pesan Terima kasih untuk login Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Sekarang, kita mungkin tidak ingin keras hal kode seperti itu, kan? 506 00:25:16,652 --> 00:25:19,860 Kita mungkin ingin melakukan sesuatu seperti print f, di mana kita dapat menggantikan dan mungkin 507 00:25:19,860 --> 00:25:22,443 mengumpulkan informasi yang berbeda, atau mungkin memiliki proses query 508 00:25:22,443 --> 00:25:23,370 informasi yang berbeda. 509 00:25:23,370 --> 00:25:27,920 Dan query, fungsi permintaan memiliki Gagasan ini semacam substitusi 510 00:25:27,920 --> 00:25:32,310 sangat mirip dengan mencetak f persen s dan c persen, adalah tanda tanya. 511 00:25:32,310 --> 00:25:34,290 >> Dan kita bisa menggunakan pertanyaan tanda sangat analog 512 00:25:34,290 --> 00:25:38,400 untuk mencetak f untuk variabel pengganti. 513 00:25:38,400 --> 00:25:44,120 Jadi mungkin pengguna Anda login sebelumnya, dan Anda menyimpan nomor ID pengguna mereka 514 00:25:44,120 --> 00:25:51,710 di $ _SESSION PHP yang super global dalam kunci ID. 515 00:25:51,710 --> 00:25:55,947 Jadi mungkin setelah mereka login, Anda menetapkan $ _SESSION ID sama dengan 10, 516 00:25:55,947 --> 00:25:58,280 ekstrapolasi dari contoh kita hanya melihat kedua lalu. 517 00:25:58,280 --> 00:26:01,960 >> Dan ketika kita benar-benar melaksanakan ini query hasil sekarang, 518 00:26:01,960 --> 00:26:08,440 itu akan pasang di 10, atau apa pun $ _SESSION nilai ID adalah. 519 00:26:08,440 --> 00:26:10,790 Dan sehingga memungkinkan kita untuk menjadi sedikit lebih dinamis. 520 00:26:10,790 --> 00:26:12,699 Kami tidak sulit coding hal di lagi. 521 00:26:12,699 --> 00:26:14,490 Kami menyimpan informasi suatu tempat dan kemudian 522 00:26:14,490 --> 00:26:18,924 kita dapat menggunakan informasi itu lagi ke semacam generalisasi apa yang ingin kita lakukan, 523 00:26:18,924 --> 00:26:21,090 dan hanya plug-in dan perubahan perilaku halaman kami 524 00:26:21,090 --> 00:26:26,489 berdasarkan apa nomor ID pengguna sebenarnya setelah mereka login. 525 00:26:26,489 --> 00:26:28,530 Itu juga mungkin, meskipun, bahwa hasil Anda mengatur 526 00:26:28,530 --> 00:26:30,840 mungkin terdiri dari beberapa baris. 527 00:26:30,840 --> 00:26:33,990 Dalam hal ini, Anda memiliki array arrays-- 528 00:26:33,990 --> 00:26:35,334 array array asosiatif. 529 00:26:35,334 --> 00:26:37,000 Dan Anda hanya perlu iterate melalui itu. 530 00:26:37,000 --> 00:26:41,950 Dan kita tahu bagaimana untuk beralih melalui array di PHP, kan? 531 00:26:41,950 --> 00:26:45,600 Jadi di sini adalah mungkin yang paling hal yang kompleks yang telah kita lihat sejauh ini. 532 00:26:45,600 --> 00:26:49,640 Ini benar-benar terintegrasi tiga bahasa bersama-sama. 533 00:26:49,640 --> 00:26:52,920 >> Berikut merah, ini adalah beberapa HTML. 534 00:26:52,920 --> 00:26:56,872 Saya rupanya starting-- ini potongan beberapa HTML yang saya miliki. 535 00:26:56,872 --> 00:26:59,580 Aku mulai paragraf baru yang kata ibu dari TV Seinfeld. 536 00:26:59,580 --> 00:27:02,350 Dan kemudian segera setelah itu Aku mulai meja. 537 00:27:02,350 --> 00:27:06,060 Dan kemudian setelah itu, saya memiliki beberapa PHP, kan? 538 00:27:06,060 --> 00:27:08,229 Saya memiliki semua kode PHP ini di sana. 539 00:27:08,229 --> 00:27:09,645 Saya tampaknya akan membuat query. 540 00:27:09,645 --> 00:27:14,180 Dan untuk membuat query, aku akan akan menggunakan ibu SELECT FROM ibu. 541 00:27:14,180 --> 00:27:15,970 >> Jadi ini getting-- ini SQL. 542 00:27:15,970 --> 00:27:17,300 Jadi biru adalah SQL. 543 00:27:17,300 --> 00:27:19,680 Merah kami melihat 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 aku membuat query ke database saya, saya 546 00:27:23,400 --> 00:27:26,040 memilih semua ibu dalam tabel ibu. 547 00:27:26,040 --> 00:27:30,710 Bukan hanya menyempit ke bawah untuk tertentu baris, saya meminta untuk mereka semua. 548 00:27:30,710 --> 00:27:33,290 >> Lalu aku memeriksa apakah hasil adalah tidak sama dengan sama palsu. 549 00:27:33,290 --> 00:27:37,410 Ini hanya cara saya memeriksa semacam dari hasil jika tidak sama dengan nol, 550 00:27:37,410 --> 00:27:40,260 bahwa kita akan melihat c misalnya. 551 00:27:40,260 --> 00:27:44,000 Pada dasarnya ini hanya memeriksa untuk memastikan yakin bahwa itu benar-benar mendapat data kembali. 552 00:27:44,000 --> 00:27:47,041 Karena saya tidak ingin mulai mencetak keluar data jika saya tidak mendapatkan data apapun. 553 00:27:47,041 --> 00:27:50,690 Kemudian untuk setiap hasil akibatnya sintaks foreach dari PHP, semua yang saya lakukan 554 00:27:50,690 --> 00:27:53,399 adalah mencetak ibu $ hasil. 555 00:27:53,399 --> 00:27:55,940 Dan jadi saya akan mendapatkan satu set dari semua ibu each-- 556 00:27:55,940 --> 00:27:59,980 itu array asosiatif arrays-- dan aku mencetak 557 00:27:59,980 --> 00:28:03,649 masing-masing sebagai baris sendiri meja. 558 00:28:03,649 --> 00:28:05,690 Dan itu benar-benar cantik banyak semua yang ada untuk itu. 559 00:28:05,690 --> 00:28:07,750 Aku tahu ada sedikit bit terjadi di sini 560 00:28:07,750 --> 00:28:13,210 dalam contoh terakhir ini dengan array arrays-- array dari array asosiatif. 561 00:28:13,210 --> 00:28:17,340 Tapi itu benar-benar hanya mendidih turun di SQL untuk membuat query, 562 00:28:17,340 --> 00:28:21,102 biasanya memilih setelah kami sudah sudah menaruh informasi ke dalam tabel, 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 kita akan menariknya dalam kasus ini. 565 00:28:25,710 --> 00:28:31,120 Kami akan mengambil semua individu ibu dari tabel ibu. 566 00:28:31,120 --> 00:28:35,970 Kami mendapat satu set besar mereka, dan kami ingin iterate melalui dan mencetak 567 00:28:35,970 --> 00:28:37,630 setiap. 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 kita lihat karena kita mencampur tiga bahasa yang berbeda bersama-sama, kan? 570 00:28:44,510 --> 00:28:50,100 >> Sekali lagi, kita memiliki HTML sini dalam warna merah, dicampur dengan beberapa SQL di sini dengan warna biru, 571 00:28:50,100 --> 00:28:52,049 dicampur dengan beberapa PHP hijau. 572 00:28:52,049 --> 00:28:53,840 Tapi semua ini memainkan baik bersama-sama, itu 573 00:28:53,840 --> 00:28:57,060 hanya masalah berkembang kebiasaan baik sehingga Anda bisa mendapatkan 574 00:28:57,060 --> 00:28:58,780 mereka untuk bekerja sama seperti yang Anda inginkan. 575 00:28:58,780 --> 00:29:03,790 Dan satu-satunya cara untuk benar-benar melakukan itu adalah berlatih, berlatih, berlatih. 576 00:29:03,790 --> 00:29:06,740 Aku Doug Lloyd, ini CS50. 577 00:29:06,740 --> 00:29:08,647