[MUSIC PLAYING] Doug LLOYD: Dalam video kami pada topik pengembangan web, kami telah menyebutkan konsep database beberapa kali, kan? Jadi database Anda mungkin akrab dengan dari mengatakan menggunakan Microsoft Excel atau Google Spreadsheets. Ini benar-benar hanya sebuah terorganisir set meja, baris, dan kolom. Dan database adalah di mana toko website kami informasi yang penting untuk website kami untuk bekerja dengan baik. Sekali lagi, contoh yang sangat umum di sini adalah menyimpan username dan password dalam database, sehingga ketika pengguna log ke situs web kami, database dapat dilihat untuk melihat jika pengguna yang ada dalam database. Dan jika mereka, memeriksa bahwa password mereka benar. Dan jika password mereka benar, maka kita dapat memberi mereka apa pun halaman mereka meminta. Jadi Anda mungkin, sekali lagi, akrab dengan ide ini dari Excel atau Google Spreadsheet. Kami memiliki database, tabel, baris, dan kolom. Dan itu benar-benar semacam set mendasar kerusakan hirarkis sini. Jadi, inilah sebuah spreadsheet Excel. Dan jika Anda pernah dibuka ini atau program lain yang serupa Anda tahu bahwa ini di sini adalah rows-- 1, 2, 3, 4, 5, 6, 7. Ini adalah kolom. Mungkin di sini, meskipun Anda mungkin tidak menggunakan fitur ini sangat much-- Saya akan tampilannya in-- kita memiliki ide ini dari lembar. Jadi mungkin lembaran ini, jika Aku bergantian bolak-balik, adalah tabel yang berbeda yang ada di database saya. Dan jika kita terus contoh semua cara, nama database ini adalah Buku 1. Mungkin aku harus Book 2 dan Buku 3. Jadi setiap file Excel adalah Database, setiap lembar adalah meja, dan di dalam masing-masing meja saya harus ide ini dari baris dan kolom. Jadi bagaimana saya bekerja dengan database ini? Bagaimana cara mendapatkan informasi dari itu? Nah ada bahasa yang disebut SQL-- yang saya biasanya hanya memanggil Sequel-- dan berdiri untuk Structured Query Bahasa. Dan itu adalah bahasa pemrograman, tapi itu pemrograman cukup terbatas bahasa. Ini tidak cukup seperti orang lain bahwa kita telah bekerja dengan. Tetapi tujuan ini bahasa pemrograman adalah untuk query database, untuk meminta informasi dari database, menemukan informasi dalam database, dan sebagainya. Kami juga, di CS50-- dan itu sangat platform umum, itu disebut MySQL. Itulah yang kami gunakan dalam kursus. Ini adalah open source platform yang menetapkan yang disebut database-- relasional database, secara efektif. Kita tidak perlu untuk mendapatkan terlalu banyak detail pada apa database relasional. Tetapi bahasa SQL adalah sangat mahir bekerja dengan MySQL dan lainnya yang sejenis gaya database relasional. Dan banyak instalasi dari MySQL datang dengan sesuatu yang disebut phpMyAdmin, yang adalah pengguna grafis interface-- GUI-- yang membuatnya sedikit lebih user friendly untuk mengeksekusi query database, karena database tidak hanya digunakan oleh programmer canggih, kan? Kadang-kadang ada ini usaha kecil, dan mereka tidak mampu untuk menyewa sebuah tim programmer, tapi mereka masih perlu untuk menyimpan informasi dalam database. Sesuatu seperti phpMyAdmin membuatnya sangat mudah bagi seseorang siapa yang tidak pernah diprogram sebelumnya untuk mengambil dan menjadi akrab dengan cara untuk bekerja dengan database. Masalahnya adalah, phpMyAdmin, sementara itu adalah alat yang fantastis untuk belajar tentang database, itu adalah manual. Anda akan harus login ke dan menjalankan perintah dan jenis hal di manual. Dan seperti yang kita tahu dari kami Misalnya pada pemrograman web PHP, harus melakukan secara manual hal di website kami, jika kita ingin dinamis, aktif responsif website, mungkin bukan pendekatan yang terbaik. Kami ingin menemukan cara untuk mungkin mengotomatisasi ini entah bagaimana. Dan SQL akan memungkinkan kita untuk melakukan hal ini. Jadi ketika kita akan mulai bekerja dengan SQL, pertama kita harus memiliki database untuk bekerja dengan. Membuat database adalah sesuatu yang Anda mungkin akan dilakukan di phpMyAdmin, karena Anda hanya perlu melakukannya sekali, dan sintaks untuk melakukannya jauh lebih mudah. Ini jauh lebih mudah untuk melakukannya dalam antarmuka pengguna grafis daripada mengetik itu sebagai perintah. Perintah bisa mendapatkan sedikit rumit. Demikian pula, membuat tabel dapat mendapatkan sedikit rumit juga. Dan hal-hal seperti membuat database dan menciptakan meja, yang Anda mungkin hanya akan melakukan once-- sekali per meja, sekali per database-- itu OK untuk melakukan itu di antarmuka grafis. Dalam proses membuat tabel, Anda akan juga harus menentukan semua kolom yang akan di meja itu. Apa jenis informasi do Anda ingin menyimpan dalam tabel? Mungkin nama pengguna dan tanggal lahir, password, nomor ID pengguna, dan mungkin kota dan negara, kan? Dan untuk setiap kali kita ingin menambahkan user ke database, kita ingin mendapatkan semua enam dari potongan-potongan informasi. Dan kami melakukannya dengan menambahkan baris ke meja. Jadi pertama kita membuat database, maka kita membuat tabel. Sebagai bagian dari menciptakan meja, kita diminta untuk menentukan setiap kolom yang kami ingin dalam tabel ini. Dan kemudian sebagai kita mulai menambahkan informasi ke database dan query database lebih generally-- tidak hanya menambahkan, tapi segalanya kami do-- kami akan berurusan dengan deretan meja, yang merupakan salah satu informasi pengguna dari seluruh set. Jadi setiap kolom SQL mampu memegang data dari tipe data tertentu. Jadi kita semacam ini dihilangkan Ide tipe data di PHP, tapi mereka kembali ke sini di SQL. Dan ada banyak jenis data. Berikut ini hanya 20 dari mereka, tetapi itu bahkan tidak semua dari mereka. Jadi kita memiliki ide seperti INTs-- Integers-- kita mungkin tahu bahwa kolom ini dapat terus bilangan bulat. Dan ada variasi thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Mungkin kita tidak selalu membutuhkan empat gigitan. Mungkin kita perlu delapan byte, dan jadi kami dapat menggunakan variasi ini pada bilangan bulat menjadi sedikit lebih banyak ruang efisien. Kita bisa melakukan angka desimal, kita dapat melakukan floating point. Ini cukup mirip. Ada beberapa perbedaan, dan jika Anda akan ingin mencari yang Semacam SQL dari panduan, Anda dapat melihat apa yang sedikit perbedaan di antara mereka. Mungkin kita ingin menyimpan informasi tentang tanggal dan waktu. Mungkin kita melacak ketika pengguna bergabung website kami, dan jadi mungkin kita ingin memiliki kolom yang waktu tanggal atau cap yang menunjukkan ketika pengguna benar-benar mendaftar. Kita bisa melakukan geometri dan linestrings. Ini sebenarnya cukup keren. Kita bisa memetakan wilayah geografis menggunakan GIS koordinat untuk merencanakan keluar daerah. Jadi benar-benar dapat menyimpan semacam itu informasi di kolom SQL. TEXT hanya gumpalan raksasa teks, mungkin. Enum adalah jenis yang menarik. Mereka benar-benar ada di C. Kami tidak melakukan berbicara tentang mereka karena mereka tidak sangat umum digunakan, setidaknya CS50. Tapi itu tipe data enumerasi, yang mampu memegang nilai-nilai terbatas. Sebuah contoh yang benar-benar baik di sini akan untuk membuat enum mana tujuh nilai yang mungkin adalah hari Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, kan? Bahwa tipe data Hari Minggu tidak ada, tapi kita bisa menciptakan disebutkan tipe data seperti kolom yang hanya pernah memegang salah satu dari tujuh nilai yang mungkin. Kami telah disebutkan semua dari nilai yang mungkin. Lalu kami memiliki CHAR dan VARCHAR, dan saya sudah warna hijau ini karena kita benar-benar akan mengambil kedua untuk berbicara tentang perbedaan antara dua hal. Jadi CHAR, tidak seperti C di mana CHAR adalah karakter tunggal, di SQL CHAR mengacu panjang string tetap. Dan ketika kita membuat ini kolom, kita benar-benar dapat menentukan panjang string. Jadi, dalam contoh ini, kita bisa mengatakan CHAR (10). Itu berarti bahwa setiap elemen kolom yang akan terdiri dari 10 byte informasi. Tidak lebih, tidak kurang. Jadi jika kita mencoba dan dimasukkan ke dalam 15 bit atau 15 karakter elemen atau nilai dalam kolom ini, kita hanya mendapatkan 10 pertama. Jika kita dimasukkan ke dalam dua nilai karakter yang panjang, kita akan memiliki dua karakter, dan kemudian delapan gigitan null. Kita tidak akan pernah menjadi lebih efisien dari itu. Sebuah VARCHAR adalah jenis seperti gagasan kita string bahwa kita akrab dengan dari C atau dari PHP. Ini adalah panjang variabel string. Dan ketika Anda membuat kolom ini, Anda hanya menentukan panjang maksimum yang mungkin. Jadi mungkin 99, atau biasa 255. Itu akan menjadi panjang maksimum. Dan jika kita menyimpan 15 karakter string, kita akan menggunakan 15 byte, mungkin 16 byte untuk null terminator. Jika kita menyimpan tiga karakter string, kita akan menggunakan tiga atau empat byte. Tapi kita tidak akan menggunakan penuh 99. Jadi, mengapa kita memiliki keduanya? Nah, jika kita perlu mencari tahu bagaimana sesuatu yang panjang adalah dengan VARCHAR sebuah, kita harus jenis iterate di atasnya sama seperti yang kami lakukan di C dan mencari tahu di mana berhenti. Sedangkan jika kita tahu bahwa segala sesuatu dalam kolom ini adalah 10 byte, mungkin kita tahu informasi itu, kita bisa melompat 10 bytes, 10 byte, 10 byte, 10 byte, dan selalu menemukan mulai dari string. Jadi kita mungkin memiliki beberapa terbuang ruang dengan CHAR, tapi mungkin ada perdagangan off memiliki kecepatan yang lebih baik dalam menavigasi database. Tapi mungkin kita ingin fleksibilitas dari VARCHAR bukannya having-- Jika CHAR kami adalah 255, tetapi sebagian besar pengguna kami hanya memasukkan tiga atau empat byte senilai informasi atau tiga atau empat karakter senilai informasi. Namun beberapa pengguna menggunakan seluruh 255, mungkin VARCHAR akan lebih tepat ada. Ini semacam trade off, dan umumnya untuk keperluan CS50, Anda tidak perlu khawatir terlalu banyak tentang apakah Anda menggunakan CHAR atau VARCHAR. Tapi di dunia nyata, hal-hal ini memang penting karena semua kolom ini mengambil ruang fisik yang sebenarnya. Dan ruang fisik, dalam dunia nyata, datang pada premi. Jadi salah satu pertimbangan lain ketika Anda sedang membangun sebuah meja adalah untuk memilih satu kolom menjadi apa yang disebut primary key. Dan kunci utama adalah kolom di mana setiap nilai tunggal adalah unik. Dan itu berarti bahwa Anda dapat dengan mudah memilih satu baris hanya dengan melihat di kunci utama dari baris itu. Jadi misalnya, Anda umumnya, dengan pengguna, tidak ingin dua pengguna yang memiliki nomor ID pengguna yang sama. Dan jadi mungkin Anda memiliki banyak informasi, dan mungkin dua pengguna dapat memiliki name-- sama Anda memiliki John Smith dan John Smith. Itu tidak selalu masalah, karena ada beberapa orang di dunia bernama John Smith. Tapi kami hanya memiliki nomor ID satu pengguna 10, salah satu pengguna ID nomor 11, 12, 13. Kami tidak memiliki dua pengguna dengan jumlah yang sama, dan jadi mungkin nomor ID pengguna akan menjadi kunci utama baik. Kami tidak memiliki duplikasi, dan kami sekarang dapat unik mengidentifikasi setiap baris tunggal hanya dengan melihat kolom tersebut. Memilih kunci primer dapat benar-benar membuat operasi meja berikutnya jauh lebih mudah karena Anda dapat memanfaatkan fakta bahwa baris tertentu akan unik, atau kolom tertentu database atau tabel akan menjadi unik untuk memilih baris tertentu keluar. Anda juga dapat memiliki utama bersama kunci, yang mungkin Anda menemukan kesempatan untuk menggunakan, yang hanya Kombinasi dari dua kolom yang dijamin untuk menjadi unik. Jadi mungkin Anda memiliki satu Kolom itu As dan B, satu kolom yang satu, dua, dan tiga, tetapi Anda akan hanya pernah memiliki A1 tunggal, tunggal A2, dan seterusnya dan seterusnya. Tapi Anda mungkin memiliki B2, satu C2, atau A1, A2, A3, A4. Jadi, Anda mungkin memiliki beberapa Seperti, beberapa B, beberapa orang, beberapa berpasangan, tapi Anda hanya dapat pernah memiliki tunggal A1, B2, C3, dan sebagainya. Jadi seperti yang saya katakan, SQL adalah bahasa pemrograman, tetapi memiliki kosakata yang cukup terbatas. Ini tidak cukup sebagai luas sebagai C dan PHP dan bahasa lainnya bahwa kita berbicara dalam kursus. Hal ini lebih verbose sebuah bahasa daripada apa yang kita akan berbicara tentang dalam hal ini video, karena dalam video ini kita akan berbicara tentang empat operasi yang kita dapat melakukan di atas meja. Ada lebih dari ini. Kita bisa melakukan lebih dari ini, tetapi untuk tujuan kita, kita umumnya akan menggunakan hanya empat insert operations--, pilih, memperbarui, dan menghapus. Dan Anda mungkin bisa menebak intuitif apa semua empat hal ini lakukan. Tapi kami akan pergi ke sedikit detail pada masing-masing. Jadi untuk tujuan ini video, mari kita asumsikan kami telah dua berikut tabel dalam database tunggal. Kami memiliki tabel yang disebut User yang memiliki empat columns-- nomor ID, nama pengguna, password, dan nama lengkap. Dan kami memiliki kedua tabel dalam database yang sama disebut Moms yang hanya menyimpan informasi tentang username dan ibu. Jadi untuk semua contoh dalam video ini, kita akan menggunakan database ini dan update berikutnya untuk itu. Jadi katakanlah kita ingin menambahkan informasi ke meja. Itulah yang operasi insert tidak. Dalam menjelaskan semua perintah ini, aku akan untuk memberikan kerangka umum untuk digunakan. Karena pada dasarnya, query akan terlihat sangat mirip, kami hanya akan mengubah potongan yang sedikit berbeda dari informasi melakukan hal-hal yang berbeda dengan meja. Jadi untuk INSERT. Kerangka terlihat jenis seperti ini. Kami ingin masukkan ke dalam meja tertentu. Kemudian kita memiliki kurung buka dan daftar kolom bahwa kita ingin menempatkan nilai-nilai ke dalam. Tutup kurung, yang berikut nilai-nilai, dan kemudian lagi, kita daftar keluar nilai-nilai kita ingin menempatkan di meja. Jadi contoh ini akan berikut. Saya ingin memasukkan ke dalam tabel pengguna columns-- berikut username, password, dan nama lengkap. Jadi baris baru di mana aku meletakkan di tiga kolom dan kami akan dimasukkan ke dalam nilai-nilai Newman, USMAIL, dan Newman. Jadi dalam hal ini, aku menempatkan Newman huruf kecil ke dalam kolom nama pengguna, password USMAIL, dan penuh modal nama N Newman ke dalam kolom nama lengkap. Jadi, inilah yang database tampak seperti sebelumnya. Inilah yang tabel pengguna pada atas tampak seperti sebelum kita lakukan ini. Setelah kita menjalankan ini query, kita mendapatkan ini. Kami telah menambahkan baris baru ke meja. Tapi perhatikan hal yang satu ini bahwa saya tidak menentukan, tapi entah kenapa aku punya nilai untuk yang 12 ini di sini. Saya tidak mengatakan saya ingin memasukkan nomor ID di sana. Saya ingin menempatkan nama pengguna, password, nama lengkap. Dan saya melakukan itu, itu baik-baik saja. Tapi saya juga punya 12 ini. Mengapa saya mendapatkan 12 ini? Nah, ternyata bahwa ketika Anda mendefinisikan kolom yang akan menjadi Anda kunci utama, yang biasanya, seperti saya katakan, nomor ID. Ini tidak selalu harus akan menjadi nomor ID, tapi biasanya ide yang baik untuk menjadi semacam nilai integer. Anda memiliki pilihan di phpMyAdmin ketika Anda sedang menciptakan database Anda atau meja Anda untuk mengatur bahwa kolom auto incrementing. Yang adalah ide yang sangat baik ketika Anda bekerja dengan kunci utama, karena Anda ingin setiap nilai di kolom yang menjadi unik. Dan jika Anda lupa untuk menentukan untuk lebih dari satu orang, Anda sekarang memiliki situasi di mana kolom yang tidak lagi unik. Anda memiliki dua kosong, sehingga Anda dapat ada lagi unik mengidentifikasi column-- atau Anda tidak bisa lagi unik mengidentifikasi baris berdasarkan kolom tersebut. Ini kehilangan semua yang nilai sebagai kunci utama. Dan begitu rupanya apa yang telah saya lakukan disini dikonfigurasi ID pengguna kolom kenaikan otomatis sehingga setiap kali saya menambahkan informasi ke meja, maka secara otomatis akan memberikan nilai untuk kunci primer. Jadi saya tidak pernah bisa lupa untuk melakukannya karena database akan melakukannya untuk saya. Jadi itu jenis yang baik. Dan jadi itu sebabnya kita mendapatkan 12 di sana, karena saya sudah mengatur kolom untuk kenaikan otomatis. Jika saya menambahkan orang lain itu akan 13, jika saya menambahkan orang lain itu akan menjadi 14, dan seterusnya. Jadi mari kita melakukan satu penyisipan lebih. Kami akan memasukkan ke dalam tabel ibu, di tertentu, username dan ibu kolom, nilai-nilai kramer dan Babs Kramer. Dan jadi kami punya ini sebelumnya. Setelah kita menjalankan itu SQL query, kita memiliki ini. Kami telah menambahkan Kramer dan Babs Kramer ke meja ibu. Jadi yang memasukkan. SELECT adalah apa yang kita gunakan untuk mengekstrak informasi dari meja. Jadi ini adalah bagaimana kita mendapatkan informasi dari database. Dan perintah sehingga SELECT akan menjadi sangat sering digunakan dalam pemrograman. Umum framework-- yang kerangka umum seperti ini. Pilih satu set kolom dari meja, dan kemudian opsional Anda dapat menentukan condition-- atau apa yang biasanya kita sebut predikat, biasanya istilah yang kita gunakan dalam SQL. Tapi itu pada dasarnya apa yang baris tertentu Anda ingin mendapatkan. Jika Anda ingin, bukannya segala sesuatu, mempersempit bawah, ini adalah di mana Anda akan melakukannya. Dan kemudian opsional, Anda juga dapat memesan dengan kolom tertentu. Jadi mungkin Anda ingin memiliki hal-hal diurutkan abjad berdasarkan satu kolom atau abjad berdasarkan lain. Sekali lagi, MANA dan ORDER BY adalah opsional. Tapi mereka mungkin akan useful-- khususnya MANA akan berguna untuk mempersempit sehingga Anda tidak mendapatkan seluruh database Anda kembali dan harus memprosesnya, Anda hanya mendapatkan potongan itu bahwa Anda peduli. Jadi misalnya, saya mungkin ingin memilih Nomor ID dan nama lengkap dari pengguna. Jadi apa yang mungkin terlihat seperti ini? Jadi, inilah meja pengguna saya. Saya ingin memilih idnum dan nama lengkap dari pengguna. Apa yang akan saya dapatkan? Aku akan mendapatkan ini. Saya tidak sempit itu, jadi aku mendapatkan nomor ID untuk setiap baris dan aku mendapatkan penuh nama dari setiap baris. OKE. Bagaimana jika saya ingin memilih sandi dari pengguna WHERE-- jadi sekarang Saya menambahkan kondisi, sebuah predicate-- mana idnum kurang dari 12. Jadi, inilah database saya lagi, pengguna saya tabel atas. Apa yang saya akan dapatkan jika saya ingin pilih informasi itu, password, dimana pengguna ID atau idnum kurang dari 12? Aku akan mendapatkan ini informasi kembali, kan? Hal ini terjadi bahwa idnum adalah 10, kurang dari 12, ID nomor 11 kurang dari 12. Saya mendapatkan password bagi mereka baris. Itulah yang saya minta. Bagaimana dengan ini? Bagaimana jika saya ingin memilih bintang dari meja ibu dimana username sama Jerry? OK, pilih star adalah khusus semacam wild card disebut yang kita gunakan untuk mendapatkan segala sesuatu. Jadi mereka mengatakan pilih nama pengguna ibu koma, yang kebetulan satu-satunya dua kolom tabel ini, Aku hanya bisa memilih bintang dan mendapatkan semuanya di mana username sama Jerry. Dan itulah yang saya akan mendapatkan jika saya membuat pencarian tertentu. Sekarang, database adalah besar karena mereka memungkinkan kita untuk mengatur informasi mungkin sedikit lebih efisien daripada kita mungkin sebaliknya. Kita tidak perlu untuk menyimpan setiap bagian yang relevan dari informasi tentang pengguna di meja yang sama. Kami memiliki dua tabel di sana. Kita perlu untuk menyimpan Nama orang ibu, dan mungkin kita tidak memiliki jaminan sosial nomor, kita memiliki tanggal lahir mereka. Itu tidak selalu perlu berada di meja yang sama. Selama kita dapat mendefinisikan hubungan antara tables-- yang dan di sanalah relasional yang jangka Database jenis datang ke play-- selama kita dapat mendefinisikan hubungan antara tabel, kita bisa semacam milah atau hal-hal abstrak cara, di mana kita hanya memiliki Informasi sangat penting kita peduli dalam tabel pengguna. Dan kemudian kita memiliki informasi tambahan atau informasi tambahan dalam tabel lain bahwa kita dapat terhubung kembali ke utama tabel dengan cara tertentu pengguna. Jadi di sini kita memiliki dua tabel ini, tapi ada hubungan antara mereka, kanan? Sepertinya nama mungkin sesuatu yang ada di umum antara dua tabel yang berbeda ini. Jadi bagaimana jika sekarang kita memiliki situasi di mana kita ingin mendapatkan nama lengkap pengguna dari tabel pengguna, dan ibu mereka nama dari tabel ibu? Kami tidak memiliki cara untuk mendapatkan yang seperti berdiri, kan? Tidak ada meja tunggal yang berisi kedua nama lengkap dan nama ibu. Kami tidak memiliki pilihan itu dari apa yang telah kita lihat sejauh ini. Dan jadi kita harus memperkenalkan ide JOIN. Dan bergabung mungkin paling complex-- itu benar-benar operasi yang paling kompleks kita akan berbicara tentang dalam video. Mereka sedikit rumit, tetapi sekali Anda mendapatkan menguasainya, mereka benar-benar tidak terlalu buruk. Ini hanya kasus khusus dari SELECT. Kita akan memilih satu set kolom dari tabel bergabung dalam tabel kedua pada beberapa predikat. Dalam hal ini, berpikir tentang hal ini seperti this-- tabel satu adalah satu lingkaran di sini, tabel dua adalah lingkaran lain di sini. Dan bagian predikat di tengah, itu semacam seperti jika Anda berpikir tentang sebagai diagram Venn, apa yang mereka memiliki kesamaan? Kami ingin menghubungkan dua tabel ini berdasarkan apa yang mereka memiliki kesamaan dan membuat tabel hipotetis ini yang merupakan penggabungan dua bersama-sama. Jadi kita akan melihat ini dalam sebuah contoh dan mungkin yang akan membantu jelas itu sedikit. Jadi mungkin Anda ingin memilih user.fullname dan moms.mother dari pengguna bergabung di ibu tabel dalam setiap situasi dimana kolom nama pengguna adalah sama di antara mereka. Dan ini adalah baru sintaks sini, pengguna ini. dan ibu .. Jika saya melakukan beberapa tabel bersama-sama, saya dapat menentukan meja. Saya bisa membedakan di atas tertentu bahwa pada di bagian paling bawah sana. Aku bisa membedakan username kolom tabel pengguna dari kolom nama pengguna dari meja ibu, yang otherwise-- jika kita hanya mengatakan nama sama nama pengguna, yang tidak benar-benar berarti apa-apa. Kami ingin melakukannya di mana mereka cocok. Jadi saya dapat menentukan tabel dan Nama kolom dalam kasus situasi di mana itu akan menjadi tidak jelas apa yang saya bicarakan. Jadi itu semua yang saya lakukan ada aku mengatakan kolom ini dari tabel ini, dan menjadi sangat eksplisit. Jadi sekali lagi, saya memilih nama lengkap dan nama ibu dari tabel pengguna terkait bersama-sama dengan tabel ibu dalam setiap situasi di mana mereka berbagi column-- yang mereka berbagi bahwa username gagasan. Jadi di sini adalah tabel yang kita miliki sebelumnya. Ini adalah keadaan kami Database seperti yang ada sekarang. Informasi yang kita penggalian adalah ini untuk memulai dengan. Ini adalah tabel baru kita akan untuk membuat menggabungkan ini bersama-sama. Dan perhatikan kita tidak menyoroti Baris Newman di meja pengguna, dan kita tidak menyoroti Baris Kramer dalam tabel ibu karena salah satu tidak ada di baik sets-- di kedua tabel. Satu-satunya informasi yang sama di antara mereka adalah Jerry adalah di kedua tabel dan gcostanza di kedua tabel. Dan ketika kita melakukan SQL JOIN, apa yang kita get-- dan kami melakukan benar-benar mendapatkan ini. Ini semacam variabel sementara. Ini seperti hipotetis penggabungan dua tabel. Kami benar-benar mendapatkan sesuatu seperti ini, di mana kami telah bergabung bersama tabel di informasi bahwa mereka memiliki kesamaan. Jadi melihat users.username yang dan kolom moms.username, itu persis sama. Itulah informasi yang konsisten dari pengguna meja dan meja ibu. Dan jadi kami bergabung bersama-sama. Kami dibuang Kramer karena dia tidak ada dalam tabel pengguna, dan kami dibuang Newman, karena dia tidak ada dalam tabel ibu. Jadi ini adalah merger hipotetis menggunakan BERGABUNG operasi SELECT. Dan kemudian kami mencari nama lengkap pengguna dan ibu pengguna, dan jadi ini adalah informasi yang kita akan mendapatkan dari permintaan keseluruhan yang kami buat dengan SELECT. Jadi kami bergabung dengan tabel bersama-sama dan kami diekstraksi dua kolom, dan itulah apa yang akan kita dapatkan. Tapi SQL bergabung semacam rumit. Anda mungkin tidak akan melakukannya terlalu banyak, tetapi hanya memiliki beberapa gagasan tentang kerangka yang dapat Anda gunakan untuk menggabungkan dua tabel bersama-sama jika Anda perlu. Dua yang terakhir adalah bit sederhana aku janji. Jadi memperbarui, kita dapat menggunakan UPDATE mengubah informasi dalam sebuah tabel. Format umum adalah UPDATE beberapa tabel, SET beberapa kolom untuk beberapa nilai MANA beberapa predikat puas. Jadi misalnya, kita mungkin ingin untuk memperbarui tabel pengguna dan mengatur password untuk Yada Yada, dimana jumlah ID adalah 10. Jadi dalam hal ini, kami memperbarui tabel pengguna. Nomor ID adalah 10 untuk bahwa baris pertama di sana, dan kami ingin memperbarui password untuk Yada Yada. Dan itulah yang akan terjadi. Ini cukup sederhana, bukan? Ini hanya sangat sederhana modifikasi ke meja. DELETE adalah operasi kita digunakan untuk menghapus informasi dari meja. DELETE FROM tabel WHERE beberapa predikat puas. Kami ingin menghapus dari tabel pengguna misalnya di mana username adalah Newman. Anda mungkin bisa menebak apa yang akan terjadi di sini setelah kami mengeksekusi SQL yang query, Newman hilang dari meja. Jadi semua operasi ini, seperti yang saya katakan, sangat mudah dilakukan di phpMyAdmin. Ini adalah antarmuka pengguna yang sangat ramah. Tapi itu membutuhkan usaha manual. Kami tidak ingin mempekerjakan tenaga manual. Kami ingin program untuk melakukan ini untuk kita, kan? Jadi kita mungkin ingin melakukan pemrograman ini. Kami ingin menggabungkan SQL dan memiliki sesuatu yang lain untuk melakukan hal ini untuk kita. Tapi apa yang telah kita lihat yang memungkinkan kita untuk pemrograman melakukan sesuatu? Kami telah melihat PHP, kan? Hal ini memperkenalkan beberapa dinamisme dalam program kami. Dan untungnya, SQL dan PHP bermain sangat baik bersama-sama. Ada fungsi di PHP disebut query, yang dapat digunakan. Dan Anda dapat melewati sebagai parameter atau argumen untuk query query SQL yang Anda ingin mengeksekusi. Dan PHP akan melakukannya atas nama Anda. Jadi setelah Anda terhubung ke database Anda dengan PHP, ada dua primary Anda melakukan hal ini. Ada sesuatu yang disebut MySQLi dan sesuatu yang disebut PDO. Kami tidak akan pergi ke besar Jumlah rinci ada. Dalam CS50 kita menggunakan PDO. Setelah Anda terhubung ke database Anda, Anda kemudian dapat membuat query database Anda dengan melewati query sebagai argumen untuk fungsi PHP. Dan ketika Anda melakukannya, Anda menyimpan mengatur hasil dalam array asosiatif. Dan kita tahu bagaimana bekerja dengan array asosiatif di PHP. Jadi saya mungkin mengatakan sesuatu seperti this-- $ results-- ini di PHP-- sama query. Dan kemudian bagian dalam fungsi permintaan bahwa argumen bahwa aku lewat query yang terlihat seperti SQL. Dan pada kenyataannya yang SQL. Itu string yang saya akan seperti untuk mengeksekusi pada database saya. Dan merah, ini adalah PHP. Ini adalah SQL bahwa aku mengintegrasikan ke PHP dengan membuat itu argumen untuk fungsi permintaan. Saya ingin memilih nama lengkap dari pengguna di mana nomor ID sama dengan 10. Dan kemudian mungkin setelah saya sudah melakukan itu, Aku mungkin mengatakan sesuatu seperti ini. Saya ingin mencetak Terima kasih untuk pesan masuk. Dan saya ingin interpolate-- saya ingin interpolasi $ hasil nama lengkap. Dan itulah bagaimana saya bekerja dengan itu asosiatif array aku kembali. $ hasil nama lengkap akan pada dasarnya berakhir mencetak, terima kasih untuk log in, Jerry Seinfeld. Itu adalah nama lengkap mana idnum sama 10. Dan sehingga semua yang saya lakukan adalah aku sekarang-- saya disimpan pertanyaan saya, hasil query saya dan hasil dalam array asosiatif, dan nama lengkap adalah nama dari kolom saya mendapatkan untuk. Jadi itulah kunci saya ke dalam hasil array asosiatif yang saya inginkan. Jadi Terima kasih untuk log in, $ hasil, nama lengkap akan mencetak, akan menempel tepat di antara mereka keriting kawat gigi, Jerry Seinfeld. Dan saya akan ingin mencetak pesan Terima kasih untuk login Jerry Seinfeld. Sekarang, kita mungkin tidak ingin keras hal kode seperti itu, kan? Kita mungkin ingin melakukan sesuatu seperti print f, di mana kita dapat menggantikan dan mungkin mengumpulkan informasi yang berbeda, atau mungkin memiliki proses query informasi yang berbeda. Dan query, fungsi permintaan memiliki Gagasan ini semacam substitusi sangat mirip dengan mencetak f persen s dan c persen, adalah tanda tanya. Dan kita bisa menggunakan pertanyaan tanda sangat analog untuk mencetak f untuk variabel pengganti. Jadi mungkin pengguna Anda login sebelumnya, dan Anda menyimpan nomor ID pengguna mereka di $ _SESSION PHP yang super global dalam kunci ID. Jadi mungkin setelah mereka login, Anda menetapkan $ _SESSION ID sama dengan 10, ekstrapolasi dari contoh kita hanya melihat kedua lalu. Dan ketika kita benar-benar melaksanakan ini query hasil sekarang, itu akan pasang di 10, atau apa pun $ _SESSION nilai ID adalah. Dan sehingga memungkinkan kita untuk menjadi sedikit lebih dinamis. Kami tidak sulit coding hal di lagi. Kami menyimpan informasi suatu tempat dan kemudian kita dapat menggunakan informasi itu lagi ke semacam generalisasi apa yang ingin kita lakukan, dan hanya plug-in dan perubahan perilaku halaman kami berdasarkan apa nomor ID pengguna sebenarnya setelah mereka login. Itu juga mungkin, meskipun, bahwa hasil Anda mengatur mungkin terdiri dari beberapa baris. Dalam hal ini, Anda memiliki array arrays-- array array asosiatif. Dan Anda hanya perlu iterate melalui itu. Dan kita tahu bagaimana untuk beralih melalui array di PHP, kan? Jadi di sini adalah mungkin yang paling hal yang kompleks yang telah kita lihat sejauh ini. Ini benar-benar terintegrasi tiga bahasa bersama-sama. Berikut merah, ini adalah beberapa HTML. Saya rupanya starting-- ini potongan beberapa HTML yang saya miliki. Aku mulai paragraf baru yang kata ibu dari TV Seinfeld. Dan kemudian segera setelah itu Aku mulai meja. Dan kemudian setelah itu, saya memiliki beberapa PHP, kan? Saya memiliki semua kode PHP ini di sana. Saya tampaknya akan membuat query. Dan untuk membuat query, aku akan akan menggunakan ibu SELECT FROM ibu. Jadi ini getting-- ini SQL. Jadi biru adalah SQL. Merah kami melihat kedua lalu adalah HTML. Dan hijau di sini adalah PHP. Jadi aku membuat query ke database saya, saya memilih semua ibu dalam tabel ibu. Bukan hanya menyempit ke bawah untuk tertentu baris, saya meminta untuk mereka semua. Lalu aku memeriksa apakah hasil adalah tidak sama dengan sama palsu. Ini hanya cara saya memeriksa semacam dari hasil jika tidak sama dengan nol, bahwa kita akan melihat c misalnya. Pada dasarnya ini hanya memeriksa untuk memastikan yakin bahwa itu benar-benar mendapat data kembali. Karena saya tidak ingin mulai mencetak keluar data jika saya tidak mendapatkan data apapun. Kemudian untuk setiap hasil akibatnya sintaks foreach dari PHP, semua yang saya lakukan adalah mencetak ibu $ hasil. Dan jadi saya akan mendapatkan satu set dari semua ibu each-- itu array asosiatif arrays-- dan aku mencetak masing-masing sebagai baris sendiri meja. Dan itu benar-benar cantik banyak semua yang ada untuk itu. Aku tahu ada sedikit bit terjadi di sini dalam contoh terakhir ini dengan array arrays-- array dari array asosiatif. Tapi itu benar-benar hanya mendidih turun di SQL untuk membuat query, biasanya memilih setelah kami sudah sudah menaruh informasi ke dalam tabel, dan kemudian hanya menariknya keluar. Dan ini kita akan menariknya dalam kasus ini. Kami akan mengambil semua individu ibu dari tabel ibu. Kami mendapat satu set besar mereka, dan kami ingin iterate melalui dan mencetak setiap. Jadi sekali lagi, ini mungkin contoh yang paling rumit kita lihat karena kita mencampur tiga bahasa yang berbeda bersama-sama, kan? Sekali lagi, kita memiliki HTML sini dalam warna merah, dicampur dengan beberapa SQL di sini dengan warna biru, dicampur dengan beberapa PHP hijau. Tapi semua ini memainkan baik bersama-sama, itu hanya masalah berkembang kebiasaan baik sehingga Anda bisa mendapatkan mereka untuk bekerja sama seperti yang Anda inginkan. Dan satu-satunya cara untuk benar-benar melakukan itu adalah berlatih, berlatih, berlatih. Aku Doug Lloyd, ini CS50.