>> [MÜZİK OYUN]
Doug LLOYD: Bizim videolarda Web geliştirme konularında,
Biz kavramı söz ettik Sağ veritabanı birkaç kez,?
Yani, bir veritabanı sen dan muhtemelen tanıdık
Microsoft Excel kullanarak söylemek veya Google E-Tablolar.
Gerçekten sadece bir organize var tablolar, satır ve sütun ayarlayın.
>> Ve bir veri tabanı nerede Web sitemizi mağazaları
önemli olan bilgiler sitemizde düzgün çalışması için.
Yine, gerçekten yaygın bir örnek burada kullanıcı adlarını ve şifrelerini depolamak
bir veritabanında, bu nedenle zaman o Web sitemizde içine bir kullanıcı oturum açtığında,
Veritabanı görmek için sorgulanabilir kullanıcı veritabanında varsa.
Onlar Ve eğer, bu kontrol Onların şifre doğrudur.
Ve onların şifre doğru ise, o zaman biz ne olursa olsun sayfayı onlara verebilir
Onlar isteyerek ediyoruz.
>> Yani yine muhtemelen aşina Excel veya Google bu fikir
Tablolar.
Biz veritabanları var, tablolar, satırlar, sütunlar ve.
Ve bu gerçekten çeşit Temel kümesinin
Burada hiyerarşik arıza.
Yani burada bir Excel var.
Ve hiç bu açtığınız takdirde ya da başka bir benzer bir program
Bu burada olduğunu biliyorum rows-- 1, 2, 3, 4, 5, 6, 7.
Bu sütunlar bulunmaktadır.
>> Belki buraya, sen olabilir, ancak korkunç much-- bu özelliği kullanmak
Sanırım var açmayız Büyütmek olacak Bir tabakanın bu fikir.
Yani belki bu levhalar, eğer Ben, ileri geri alternatif
farklı tablolar olduğunu Benim veritabanında var.
Ve biz örnek tüm devam ederse yol, bu veritabanının adı
Kitap 1'dir.
Belki Kitap 2 ve Kitap 3 var.
Yani her Excel dosyası olan bir Veritabanı, her tabaka bir tablodur,
ve her tablonun içinde ben Satır ve sütun bu fikir.
>> Peki nasıl bu veritabanı ile çalışır?
Nasıl ondan bilgi alabilirim?
Peki adında bir dil var SQL-- Ben genellikle sadece Sequel-- diyoruz
ve onun için duruyor Yapılandırılmış sorgu dili.
Ve bir programlama dilidir, ama oldukça sınırlı programlama var
dil.
Oldukça diğerleri gibi değil biz beraber çalıştık.
Ama bu amacı Programlama dili
için, bir veritabanını sorgulamak için Bir veritabanı bilgi isteyin
Bir de bilgi bulabilirsiniz Veritabanı, vb.
>> Ayrıca, CS50-- ve çok var: ortak bir platform, MySQL denir.
Yani biz derste kullanmak budur.
Bu bir açık kaynak var kurar platformu
adlandırılan ilişkisel database-- Bir veritabanı, etkili bir şekilde.
Biz almak gerekmez çok fazla detaya
ne bir ilişkisel veritabanı olduğunu.
Ama SQL dili çalışma çok usta
MySQL ve benzeri diğer İlişkisel veritabanlarının stilleri.
>> Ve birçok tesisler Şeyle MySQL gel
adı phpMyAdmin'in, burada grafiksel kullanıcı
Bir GUI-- arabirimini, bu Biraz daha yapar
yürütmek için kullanıcı dostu Veritabanı sorguları,
veritabanları sadece kullanılmaz çünkü ileri düzey programcılar tarafından, değil mi?
Bazen orada Bu küçük işletmeler,
ve onlar göze alamaz programcı bir ekip kiralama,
ama yine de saklamak için ihtiyacınız bir veritabanında bilgi.
>> PhpMyAdmin gibi bir şey biri için çok kolay hale getirir
kim daha önce programlanmış hiç pick up ve nasıl aşina olmak
Bir veritabanı ile çalışmak.
Sorun ise phpMyAdmin'in olduğu bu öğrenme için harika bir araçtır
veritabanları hakkında, manuel olduğunu.
Sen oturum zorunda gidiyoruz o ve komutlar ve türünü yürütmek
elle şeyler.
>> Ve biz bildiğimiz gibi bizim PHP web programlama üzerine örnek
elle yapmak zorunda Web sitemizde şeyler
Biz dinamik, aktif duyarlı isterseniz Web sitesi, belki de en iyi yaklaşım.
Biz bir yol bulmak istiyorum belki bir şekilde bu otomatikleştirmek.
Ve SQL bunu bize sağlayacak.
Peki biz ne zaman gidiyoruz SQL ile çalışmaya başlamak,
Biz ilk bir olması gerekir Veritabanı ile çalışmak için.
Bir veritabanı olduğunu oluşturma bir şey muhtemelen
Çünkü, phpMyAdmin yapacak Eğer sadece bir kez yapmak gerekir
ve bunun için sözdizimi çok daha basittir.
Bunu yapmak için çok daha kolay Bir grafik kullanıcı arayüzü
Bir komut olarak dışarı yazarak daha.
Komut biraz hantal alabilirsiniz.
Benzer şekilde, bir tablo oluşturarak yapabilirsiniz hem de hantal biraz olsun.
Bir veritabanı oluşturma gibi Ve böylece şeyler ve sen bir tablo oluşturma
muhtemelen sadece once-- yapacak masanın başına bir kez, bir kez database-- başına
o bu yapmak Tamam bir grafik arayüz.
Sürecinde Bir tablo size edeceğiz oluşturma
Ayrıca tüm belirtmek zorunda bu tablodaki olacaktır sütunlar.
Bilgi ne tür do Tabloda saklamak ister misin?
Belki bir kullanıcının adını ve doğum tarihi, şifre, kullanıcı kimlik numarası ve belki
şehir ve devlet, değil mi?
>> Ve her zaman bir kullanıcı eklemek istediğiniz veritabanına, hepimiz altı almak istiyorum
bilginin bu parçalar arasında.
Ve biz ekleyerek bunu tablo satır.
Bu yüzden öncelikle bir veritabanı oluşturmak, o zaman biz bir tablo oluşturun.
Oluşturmanın bir parçası olarak Bir tablo, biz sorulur
Her sütun belirtmek için bu Bu tabloda istiyorum.
Ve sonra biz başlatmak olarak eklemek veritabanına bilgiler
ve veritabanı daha sorgulamak generally-- sadece ekleyerek değil,
ama her şey biz sanıyor- biz uğraşan olacak
biri olan tablonun, satırlar ile Tüm kümesinden kullanıcının bilgileri.
>> Böylece her SQL sütun yeteneğine sahiptir Belirli bir veri türünde veri tutan.
Yani biz bir çeşit bu ortadan PHP veri türleri fikri,
ama onlar SQL geri buradayız.
Ve veri türlerinin bir çok şey var.
İşte bunlardan sadece 20 ama hatta hepsi değil.
Yani biz INTs-- gibi fikirlerimiz var Muhtemelen biliyoruz Integers--
bu sütun tamsayılar tutabilir.
Ve farklılıklar bulunmaktadır thereon-- SMALLINT, tinyint, MEDIUMINT, BIGINT.
Belki her zaman dört sokması gerekmez.
Belki sekiz bayt ihtiyacımız var ve bu yüzden tamsayılar bu varyasyonlar kullanabilirsiniz
biraz daha fazla yer etkili olması için.
Biz, ondalık sayılar yapabilirsiniz biz kayan nokta sayıları yapabilirsiniz.
Bunlar oldukça benzerdir.
Bazı farklar vardır, ve eğer isterseniz
bakmak istiyorum Kılavuzun SQL sıralama, sen
ne görebilirsiniz hafif aralarında farklılıklar vardır.
>> Belki saklamak istediğiniz tarih ve saat hakkında bilgi.
Belki takip ediyoruz Kullanıcı sitemizi katıldı,
ve belki biz istiyoruz var bir sütun var
Bir tarih zaman ya da bir zaman damgası olduğunu ne zaman kullanıcı aslında gösterir
kaydoldum.
Biz geometrileri ve LineStrings yapabilirsiniz.
Bu aslında oldukça serin.
Biz haritasını olabilir kullanarak coğrafi alan
CBS bir bölgeyi çizmek için koordinatları.
Yani aslında bu tür saklayabilirsiniz SQL sütundaki bilginin.
>> METİN belki metnin sadece dev lekeler olduğunu.
Enums tür ilginç.
Onlar aslında C var biz do not onlar değil çünkü onlar hakkında konuşmak
korkunç sık en azından CS50 kullanılır.
Ama numaralandırılmış veri türü, var olan sınırlı değerleri tutma kapasitesine sahiptir.
>> Gerçekten iyi bir örnek burada olurdu bir enum oluşturmak için nereye yedi
Olası değerler, Pazar, Pazartesi Salı, Çarşamba, Perşembe, Cuma,
Cumartesi, değil mi?
Ve o veri tipi Günü Hafta, yok
ama biz yaratabilir numaralandırılmış veri tipi gibi
Bu sütun sadece hiç tutabilir Bu yedi olası değerlerden biri.
Bütün numaralandırılmış ettik olası değerler.
>> Sonra CHAR ve VARCHAR var, ve ben bu yeşil renk ettik
biz aslında çünkü Bir saniye alacak
fark hakkında konuşmak Bu iki şey arasındaki.
Yani CHAR, aksine C nerede CHAR tek bir karakter oldu,
SQL bir CHAR ifade eder Bir sabit uzunlukta bir dize.
Ve biz bu oluşturduğunuzda Sütun, biz aslında
dizenin uzunluğu belirleyebilirsiniz.
>> Bu örnekte Yani Biz CHAR (10) diyebilirsiniz.
Yani her demektir Bu sütunun eleman
bilgilerin 10 bayt oluşacaktır.
Ne fazla ne az.
Biz denemek ve bir 15 koymak Yani eğer bit veya 15 karakter elemanı
veya bu sütuna değer, biz sadece ilk 10 olsun ediyoruz.
Biz iki koyarsanız karakter uzunluğunda bir değer,
biz iki zorunda gidiyoruz karakterler ve ardından sekiz boş sokması.
Biz daha verimli asla.
>> Bir VARCHAR tür gibi bir dize bizim kavramı
Biz tanıdık olduğumuzu C veya PHP'den ile.
Bu değişken uzunluklu bir dize var.
Ve oluşturduğunuzda Bu sütun, sadece
mümkün olan maksimum uzunlukları belirtin.
Yani belki 99 veya sık 255.
Bu maksimum uzunluğu olacaktır.
Ve eğer öyleyse biz saklamak edildi 15 karakter dizesi,
belki 15, 16 byte kullanmak istiyorsunuz null Terminatör için bayt.
Biz saklamak olsaydı bir Üç karakter dizesi,
Biz üç ya da dört bayt kullanmak istiyorsunuz.
Ama biz tam 99 kullanmak olmaz.
>> Peki neden biz de olurdu?
Peki, biz nasıl anlamaya gerekiyorsa Uzun bir şey VARCHAR ile,
Biz yineleme tür var Sadece gibi karşısında biz C yaptığımız
nerede durur ve anlamaya.
Biz her şeyi biliyoruz, eğer Oysa Bu sütunda, belki 10 bayt
biz bu bilgiyi biliyoruz, biz atlayabilir 10 byte, 10 byte, 10 byte, 10 byte,
ve her zaman bulmak dizenin başında.
>> Bu yüzden bazı olabilir Bir CHAR ile uzay israf,
ama belki bir ticaret var daha yüksek hız olan kapalı
veritabanı navigasyon.
Ama belki bizim istediğimiz Bir VARCHAR esnekliği
Bunun yerine having-- Bizim CHAR Varsa 255, ama bizim kullanıcıların çoğu
sadece üç ya da dört bayt giren edildi bilgi veya üç ya da dört değerinde
bilgi değerinde karakterleri.
>> Ancak bazı kullanıcılar kullanıyorlardı Bütün 255, belki
VARCHAR orada daha uygun olurdu.
Bu kapalı bir ticaret çeşit ve Genellikle CS50 amacına uygun olarak,
hakkında çok fazla endişelenmenize gerek yoktur Bir CHAR veya VARCHAR kullanın ister.
Ama gerçek dünyada, bunlar Bu sütunların tamamı çünkü önemi var
gerçek fiziksel yer kaplar.
Ve fiziksel alan, Gerçek dünya, prim geliyor.
>> Bir başka göz Yani ne zaman bir tablo bina konum
olmak bir sütun seçmek için ne birincil anahtar denir.
Ve bir birincil anahtar bir sütun her yerde tek bir değer benzersizdir.
Ve o kolayca yapabilirsiniz anlamına gelir Sadece bakarak tek bir satır seçmek
bu satırın birincil anahtar olarak.
Örneğin Yani, Genellikle, kullanıcılar,
İki kullanıcıları istemeyen Aynı kullanıcı kimliği numarasına sahip.
Ve böylece belki var çok sayıda bilgi,
ve belki iki kullanıcıları Aynı aşkına-- sahip
John Smith ve John Smith var.
Yani, illa bir sorun değil Birden insanlar var çünkü
John Smith adlı dünyanın.
Ama biz sadece bir kullanıcı kimliği numarası 10, bir kullanıcı kimlik numarası 11, 12, 13.
Biz iki kullanıcımız var yok Aynı numara ile,
ve belki kullanıcı kimlik numaraları İyi bir birincil anahtar olacaktır.
>> Biz herhangi bir tekrarını yok ve şimdi benzersiz can
Sadece her satırı tanımlamak o sütun bakarak.
Aslında birincil anahtarları edebilirsiniz Seçimi sonraki tablo işlemleri yapmak
Eğer kaldıraç çünkü çok daha kolay Gerçek şu ki bazı satırlar olacak
Eşsiz, ya da belli bir sütun olacak veritabanı veya tablo
almak için benzersiz olacak dışarı belirli satırları.
>> Ayrıca ortak birincil olabilir Eğer fırsat bulabilirsiniz, hangi anahtar
sadece olan, kullanımı iki sütun kombinasyonu olduğu
benzersiz olması sağlanır.
Yani belki bir tane var As ve Bs var sütun,
İki, biri bir sütun, ve üç, ama sadece hiç edeceğiz
Tek A1, tek bir var Ve benzerleri ve benzeri A2.
Ama bir B2 olabilir, bir C2, veya A1, A2, A3, A4.
Yani birden fazla olduğu gibi, birden çok olabilir İşletmeleri, birden fazla olanlar, birden fazla ikişer ikişer,
ama sadece hiç sahip olabilir Tek A1, B2 C3, ve benzerleri.
Yani dediğim gibi, SQL bir Programlama dili,
ama oldukça sınırlı kelime dağarcığı vardır.
Bu oldukça gibi geniş değil C ve PHP ve Diğer Diller
Biz ders konuşmak.
Daha ayrıntılı bir olduğunu Biz ne konum daha dil
Bu hakkında konuşacak video nedeniyle bu video
Biz hakkında konuşmak için gidiyoruz Dört işlem biz o
Bir masaya gerçekleştirebilirsiniz.
>> Bu daha vardır.
Biz, bu daha fazlasını yapabilir ama bizim için,
genelde kullanarak gidiyoruz Sadece dört operations-- eklemek,
seçmek güncelleme ve silme.
Ve muhtemelen sezgisel tahmin edebilirsiniz Bütün bunlar dört ne.
Ama biz biraz içine gidersiniz Her biri ayrıntı.
>> Bu amaçları için çok video kullanıcısının varsayalım
Biz iki şu var tek bir veritabanında tablolar.
Biz sahip bir tablo olarak adlandırılan Kullanıcıları var Dört columns-- kimlik numarası, adı,
parola ve tam adı.
Ve biz bir saniye var aynı veritabanında tablo
sadece bilgi depolayan Moms denilen Bir kullanıcı adı ve bir anne hakkında.
Örnekler bütün Yani bu video, yaparız
Bu veritabanını kullanarak ve buna müteakip güncellemeler.
Yani biz istiyoruz diyelim Bir tabloya bilgi eklemek.
Bu ekleme işlemi ne var.
Tüm açıklarken Bu komutlar, ben gidiyorum
Size kullanmak için genel bir iskelet vermek.
Temelde, sorgular Çünkü bakmak oldukça benzer olacak,
Biz sadece değişen gidiyoruz bilgi biraz farklı parçalar
tablo ile farklı şeyler yapmak.
>> INSERT için, iskelet Yani tür, bu gibi görünüyor.
Biz içine eklemek istediğiniz Belirli bir tablo.
Sonra açık parantez olan ve sütunlar listesi
biz içine değerleri koymak istiyorum.
Yakın parantez, değerleri aşağıdaki ve daha sonra
Yine, biz değerlerini listelemek Biz masaya koymak istiyorum.
>> Bu Yani bir örnek Aşağıdaki olacaktır.
Ben tabloya eklemek istediğiniz Kullanıcılar şu columns--
kullanıcı adı, parola ve tamadı.
Ben atıyorum yeni bir satır Yani Biz konum ve bu üç sütun
değerleri koymak olacak Newman USMAIL ve Newman.
Yani bu durumda, ben küçük Newman koyarak
Kullanıcı adınızı sütuna, şifre USMAIL ve tam adı başkent N
Tamadı sütuna Newman.
>> Yani burada ne veritabanı var daha önce benziyordu.
İşte neler kullanıcıların masa üzerinde bulunuyor Üst biz bunu daha önce benziyordu.
Bu yürüttükten sonra Sorgu, biz bu olsun.
Biz masaya yeni bir satır ekledik.
Ama bu bir şey fark Ben belirtmek etmedi
ama nedense ben bir değer var için, burada bu 12 hangi.
Ben istedim demedim Orada kimlik numarasını koymak.
Ben, adını koymak istedim şifre, tamadı.
Ve ben o güzel, o yaptı.
>> Ama aynı zamanda bu 12 var.
Neden bu 12 aldın?
Peki, bu çıkıyor ne zaman tanımlıyoruz
olacak bir sütun senin genellikle birincil anahtar,
gibi bir kimlik numarası, dedi.
Her zaman ille değil Kimlik numarası olacak,
ama genellikle iyi bir fikirdir tamsayı değeri çeşit.
Siz phpMyAdmin bir seçenek var ne zaman veritabanı oluştururken
ya da tablo bu ayarlamak için Otomatik artmasını sütun.
>> Hangi gerçekten iyi bir fikir olduğunu ne zaman Eğer birincil anahtarla çalışıyoruz,
Her değer istiyorum çünkü o sütundaki benzersiz olmak.
Ve belirtmek unutursanız birden fazla kişi için,
Şimdi bir durum nerede var O sütun artık benzersiz.
İki boşlukları var, bu yüzden hiçbir can daha benzersiz column-- tespit
ya artık benzersiz can o sütun satır tabanlı tanımlamak.
Bu tüm kaybetti onun birincil anahtar olarak değer.
>> Ve böylece görünüşte ben ne yaptım Burada kullanıcı kimliği yapılandırıldı
otomatik artış sütun, her şekilde zaman, masaya bilgi eklemek
otomatik bana verecek birincil anahtar için bir değer.
Yani çünkü bunu yapmak için asla unutamam Veritabanı benim için bunu yapacağız.
Yani bu tür güzel.
Aldığımız yüzden bu yüzden var Orada 12, ben ettik çünkü
otomatik artış bu sütun ayarladı.
Ben başka birini eklediyseniz Ben ekledi eğer, 13 olurdu
başkası bunu 14 olacak ve istiyorum.
>> O yüzden bir tane daha ekleme yapalım.
Biz, anneler tabloya eklemek edeceğiz Özellikle, kullanıcı adı ve anne
Sütun, değerler kramer ve Babs Kramer.
Ve böylece biz daha önce bu vardı.
Biz yürüttükten sonra SQL sorgusu, biz bu var.
Biz Kramer ve Babs ekledik Anneler masaya Kramer.
>> Yani takmadan ediyor.
SEÇ biz ayıklamak için ne kullanın Tablodan bilgiler.
Yani bu bizim olsun nasıl veritabanından bilgi.
Ve böylece SEÇ komutlar olacak Çok sık programlama kullanılır.
Genel framework-- Genel iskelet bu gibi görünüyor.
Sütun grubunu Seçin Tablo ve ardından isteğe bağlı olarak
Bir condition-- belirtebilirsiniz veya Biz genellikle bir yüklemi dediğimiz,
genellikle biz SQL kullanmak terimdir.
>> Ama temelde ne var Özellikle satırlar almak istiyorum.
Sen, yerine getting istiyorsanız Her şey, onu daraltmak
Bunu yapacağını budur.
Ve sonra, isteğe bağlı olarak, siz de yapabilirsiniz Belirli bir sütuna göre sipariş.
Yani belki sıralanmış şeyler istiyorum alfabetik bir sütun dayalı
veya alfabetik olarak başka dayalı.
>> Yine, ORDER BY isteğe bağlıdır NEREDE ve.
Ama muhtemelen olacak useful-- Özellikle
WHERE yararlı olacaktır Bunu yapmazsanız, böylece daraltmak
geri tüm veritabanı olsun ve işlemek zorunda, sadece almak
Bunun parçaları umurumda söyledi.
Yani, örneğin, ben seçmek isteyebilirsiniz Kullanıcıların kimlik numarası ve fullname.
Peki bu gibi görünebilir?
Yani burada benim kullanıcıların masa.
Ben idnum seçmek istiyorum ve kullanıcılardan fullname.
Ne almak için gidiyorum?
Ben bu alacağım.
Ben daraltmak yoktu, bu yüzden ben her satır için kimlik numarası almak
ve ben tam alıyorum Her satır isim.
>> TAMAM.
Ne şifreyi seçmek istiyorsanız Nere şimdi kullanıcılardan
Ben bir koşul ekleyerek kulüpler, bir predicate-- idnum az 12 olduğu.
Yani burada benim veritabanı yeniden var, Benim kullanıcıların masa üstü.
Ne ben istiyorum almak için gidiyorum Bu bilgiyi seçin, şifre,
nerede kullanıcı kimliği veya idnum 12 daha azdır?
Ben bu alacağım bilgi geri, değil mi?
Idnum 10 olduğunu Olur böyle şeyler, daha az 12'den, kimlik numarası 11 12 daha azdır.
O satırlar için şifreyi alıyorum.
Ben istedi buydu.
Peki buna ne dersin?
Ne yıldızı seçmek istiyorsanız kullanıcı adı Jerry eşittir Anneler tablo?
Tamam seçeneğini yıldız özel joker tür sözde
Biz her şeyi almak için kullandığınız.
Böylece seçme söylüyorsun virgül anne, kullanıcı adı, hangi
Sadece olmak oldu Bu tabloda, iki sütun,
Ben sadece yıldız seçebilirsiniz ve her şeyi elde
Nerede adı Jerry eşittir.
Ve böylece ben alacağı ne Ben bu özel sorgu yaptıysanız.
>> Şimdi veritabanları Büyük onlar izin çünkü
Bize belki bilgileri organize etmek biz daha verimli biraz
Aksi takdirde belki.
Biz mutlaka saklamak için yok bilgilerin her parça ile ilgili
Aynı tabloda, bir kullanıcı hakkında.
Biz orada iki tablo vardı.
>> Biz depolamak gerekiyor Herkesin annesinin adı,
ve belki sosyal güvencesi olmayan sayı, biz kendi doğum tarihi var.
Bu her zaman gerekmez Aynı tabloda olması.
Sürece biz tanımlayabilirsiniz gibi tables-- arasındaki ilişkiler
ve bu nerede olduğunu ilişkisel Veritabanı terim tür gelir
play-- sürece biz tanımlayabiliriz olarak içine tablolar arasındaki ilişkiler,
biz tür bölümlere edebilirsiniz veya soyut şeyler bir yol,
biz sadece sahip olduğu Gerçekten önemli bilgiler
Biz kullanıcının tabloda umurumda.
Ve sonra yardımcı bilgilere sahip diğer tablolardaki ya da ekstra bilgiler
biz ana geri bağlanabilmesi için belirli bir şekilde kullanıcıların tablo.
>> Yani burada bu iki tablo var, ama Bunların arasında bir ilişki var,
sağ?
Bu kullanıcı adı gibi görünüyor bir şey olabilir
arasındaki ortak var Bu iki farklı tablolar.
Yani ne şimdi varsa Bir durum nerede
Bir kullanıcının tam adını almak istiyorum Kullanıcının masa ve onların anne
anne tablosundan isim?
Biz almak için bir yol yok Doğru, bu haliyle?
Içeren tek bir masa var tam adı ve annesinin adı hem.
Biz o seçeneği yok Şimdiye kadar ne gördüm.
>> Ve böylece biz tanıtmak zorunda JOIN bir fikir.
Ve JOIN muhtemelen En complex--
Gerçekten en karmaşık operasyon Biz video hakkında konuşmak için gidiyoruz.
Onlar biraz karmaşık olduğunu ama sen onu asmak olsun bir kez,
aslında çok kötü değil.
Bu sadece bir SELECT özel bir durum var.
Biz bir dizi seçmek için gidiyoruz birleştiren bir tablodan sütun
Bazı yüklem bir ikinci tabloda.
>> O bu-- gibi ilgili bu durumda, düşünmek tablo, bir, buraya tek daire olup
masa, iki Buraya başka dairedir.
Ve bu yüklem bölüm ortasında, bu kadar
çeşit Eğer düşünüyorsanız gibi Bir Venn diyagramı olarak ne
Onlar ortak var mı?
Biz bu iki tablo bağlamak istediğiniz Onlar ortak ne dayalı
ve bu varsayımsal bir tablo oluşturmak Bu arada iki birleşme olduğunu.
Yani biz bir de bu görürsünüz örnek ve belki de bu yardımcı olacağız
Biraz yukarı kaldırın.
Böylece belki seçmek istediğiniz USER.FULLNAME ve moms.mother
katılmak kullanıcılardan Her durumda anneler tablo
Nerede adı sütunu aralarında aynıdır.
Ve bu yeni bir Burada bu kullanıcıyı sözdizimi.
ve anneler ..
Ben birden fazla tablo yapıyorum Birlikte, ben bir tablo belirtebilirsiniz.
Ben özellikle ON ayırt edebilirsiniz O orada çok alt at.
Ben adını ayırt edebilirsiniz Kullanıcıların tablonun sütun
kullanıcı adı sütunundan anneler tablo olmazsam-- olan
biz sadece adı eşittir dese Gerçekten değil adınızı,
şey demek.
Biz onlar maç nerede yapmak istiyorum.
>> Yani masa ve belirtebilirsiniz bir durum söz konusu sütun adı
nerede belirsiz olurdu ne bahsediyorum.
Ben yapıyorum hepsi Yani ben orada Bu tablodan, bu sütunu söyleyerek,
ve çok açık olmak.
Yani yine, seçme ediyorum tam adı ve annesinin adı
birbirine bağlı kullanıcılar tablosundan Her durumda anneler tablo ile
nerede o column-- paylaşmak o adı kavramını paylaşabilirsiniz.
>> Yani burada biz daha önce vardı tablolardır.
Bu devletidir bizim Veritabanı şu anda mevcut olarak.
Biz açılan ediyoruz bilgiler ile başlayan budur.
Bu Gittiğimiz yeni tablo Birlikte bu birleştirerek oluşturun.
Ve biz vurgulayarak değiliz fark Kullanıcının tablodaki Newman'ın satır,
ve biz vurgulayarak değil Anneler tablosundaki Kramer'in satır
ne biri var çünkü hem her iki tabloda sets--.
>> Ortak olan tek bilgi aralarında Jerry her iki tabloda olduğu
ve gcostanza her iki tabloda yer almaktadır.
Biz ne zaman Ve böylece, SQL, JOIN ne get-- ve biz bu olsun aslında yapıyor.
Bu geçici bir değişken tür.
Bu varsayımsal gibi iki tablo birleşmesi.
Biz aslında bir şey olsun Bu gibi durumlarda
biz tabloları birleştirilmiş ettik Onlar ortak bilgiler.
>> Böylece users.username fark ve moms.username kolonu,
tam olarak aynıdır.
Bu bilgi olduğunu kullanıcıların tutarlıdır
masa ve anneler tablo.
Ve böylece biz onları birlikte birleşti.
Biz Kramer atılır çünkü o Kullanıcıların tabloda yoktu,
ve biz, çünkü Newman atılır O anneler tabloda yoktu.
Yani bu varsayımsal birleşme olduğunu SELECT JOIN işlemini kullanarak.
>> Ve sonra biz aradığını Kullanıcının tam adı ve kullanıcının annesi,
ve bu bilgilerin olduğu biz genel sorgudan alacağı
Biz SELECT ile yapılan.
Yani biz tabloları birlikte katıldı ve bu iki sütun ekstre,
ve böylece biz alacağı budur.
Ama SQL karmaşık bir tür JOIN.
Muhtemelen, onları çok yapmayacağım ama sadece iskeletin bazı fikrim yok
Eğer iki birleştirmek için kullanabilirsiniz Eğer gerekli ise birlikte tablolar.
Son iki olduğu bir biraz daha basit söz veriyorum.
Yani güncellenmesi, biz UPDATE kullanabilirsiniz Bir tablodaki bilgileri değiştirmek için.
Genel biçim GÜNCELLEME bazı masa, bazı değerine bazı sütun SET
NEREDE bazı yüklemi memnun.
Yani, örneğin, biz isteyebilirsiniz Kullanıcıların tablosunu güncelleştirmek için
ve YADA için şifre koymak Kimlik numarası 10 olan yada.
>> Bu nedenle, bu durumda biz konum Kullanıcıların tablosunu güncelleştirmek.
Kimlik numarası 10 olan Oradaki ilk satır,
ve biz güncellemek istiyoruz yada yada şifre.
Ve böylece ne olacağını var.
Bu doğru, oldukça basit değil mi?
Sadece çok basit tabloya değişiklik.
>> Biz kullanılan işlem olduğunu SİL Bir tablodan bilgileri siler.
Masanın NEREDEN DELETE FROM Bazı yüklem memnun.
Biz silmek istediğiniz Örneğin kullanıcılar tablosu
Nerede adı Newman olduğunu.
Muhtemelen için neler olup bittiğini tahmin edebilirsiniz biz SQL yürütmek sonra burada olur
Sorgu, Newman tablodan gitti.
>> Böylece tüm bu işlemler, ben söylediğim gibi PhpMyAdmin yapmak çok kolaydır.
Bir çok kullanıcı dostu arayüzü var.
Ama manuel çaba gerektirir.
Biz manuel çaba istihdam istemiyorum.
Bizim programları istiyoruz Doğru, bizim için bunu yapmak?
Yani biz yapmak isteyebilirsiniz Bu programlı.
Biz SQL dahil etmek istiyoruz ve var başka bir şey bizim için bunu yapmak için.
>> Ama ne biz izin verir gördük Bize programlı bir şeyler yapmak?
Biz doğru, PHP gördün mü?
Bazı tanıttı Bizim programlarına dinamizm.
Ve böylece Neyse, SQL ve PHP birlikte çok güzel oynuyor.
PHP bir işlev var kullanılabilir denilen sorgu.
Ve siz iletebilirsiniz parametre veya argüman
Bir SQL sorgusu sorgulamak için o Eğer yürütmek istiyoruz.
Ve PHP sizin adınıza yapacak.
>> Bağlı olduğunuz sonra Yani PHP ile veritabanı,
Bunu iki primerler var.
Denilen bir şey var MySQLi ve bir şey PDO çağırdı.
Biz büyük bir girmeyeceğim Orada miktar detay.
CS50 biz PDO kullanılabilir.
Eğer bağlandıktan sonra veritabanınıza, sen
Daha sonra sorguları veritabanı yapabilirsiniz argüman olarak sorguları geçirerek
PHP fonksiyonları.
Bunu yaparken Ve, saklamak bir ilişkisel dizi olarak sonuç kümesi.
>> Ve biz birlikte çalışmak için biliyorum PHP ilişkisel diziler.
Yani bir şey diyebilirsiniz gibi bu-- $ results--
PHP-- sorgusu eşittir bu olduğunu.
Ve sonra inside Bu argümanı sorgu işlevi
Ben sorgulamak için geçirerek o Bu SQL benziyor.
Ve aslında SQL olduğunu.
O I would sorgu dizesi var Benim veritabanı üzerinde yürütmek istiyorum.
>> Ve böylece kırmızı, bu PHP.
Bu ben SQL olduğunu yaparak PHP entegre
sorgu işlevi argüman.
Ben gelen tamadı seçmek istiyor Kimlik numarası 10 eşit kullanıcıları.
Ve sonra yaptık, belki sonra, Ben böyle bir şey diyebilirsiniz.
Ben yazdırmak istiyorum oturum için mesaj teşekkür ederiz.
>> Ve ben istiyorum o interpolate-- istiyorum $ sonuçları tamadı katmak için.
Ve böylece o ile çalışmak nasıl Ben döndüm ilişkisel dizi.
$ sonuçlar fullname olur temelde dışarı baskı sonuna kadar,
, Jerry Seinfeld giriş için teşekkürler.
O tam adı oldu Nerede idnum 10 eşittir.
>> Ve böylece tüm yapıyorum Ben şimdi-- ben saklanır ediyorum edilir
benim sorgu, benim sorgunun sonuçları ve bir ilişkisel dizi sonuçları,
ve fullname adıdır Ben başlamıştı sütun.
Böylece sonuçlarına benim anahtar var Ben istiyorum ilişkisel dizi.
Yani Teşekkür oturum için, $ sonuçları, tamadı sopa, çıktısını olacak
Sağ olanlar Kıvırcık arasında parantezler, Jerry Seinfeld.
Ve ben mesajın yazdırmak gibi olacak Jerry Seinfeld oturum için teşekkürler.
>> Şimdi, muhtemelen zor istemiyoruz Bu gibi kod şeyler, değil mi?
Biz baskı gibi bir şey yapmak isteyebilirsiniz biz yerine belki olabilir f
Farklı bilgi toplamak, ya da belki sorgu süreci var
Farklı bilgiler.
Ve böylece sorgu, sorgu işlevi vardır değiştirmelerin tür bu kavramı
Yüzde s f yazdırmak için çok benzer ve yüzde c soru işaretleri olduğunu.
>> Ve biz soruyu kullanabilirsiniz işaretleri çok benzer
Yedek değişkenler f yazdırmak için.
Yani belki kullanıcı daha önce giriş, ve onların kullanıcı kimlik numarasını kurtardı
PHP süper $ _SESSION içinde Anahtar kimliği küresel.
Onlar giriş Yani belki sonra, Eğer, ID 10 eşittir $ _SESSION set
örnekten extrapolating biz sadece bir saniye önce gördüm.
>> Ve böylece biz aslında çalıştırdığınızda Bu, şimdi sonuçları sorgulamak
o 10 fiş, ya da her neyse olur $ _SESSION Kimlik değeridir.
Ve böylece bize izin verir Biraz daha dinamik olacak.
Biz zor artık şeyler kodlama değil.
Biz bilgi tasarruf ediyoruz yerde ve daha sonra
biz yine bu bilgileri kullanabilir çeşit biz ne yapmak istediğinizi genelleme,
ve sadece plug-in ve değişim Bizim sayfanın davranışı
Ne kullanıcının kimlik numarasına dayalı Onlar giriş yaptıktan sonra aslında.
Bu olsa da, aynı zamanda mümkün sonuçlarınız ayarlamanız
birden çok satır oluşabilir.
Bu durumda, sahip arrays-- bir dizi
ilişkisel diziler bir dizi.
Ve sen sadece yineleme yapmak gerekiyor.
Ve biz yineleme için biliyorum PHP bir dizi aracılığıyla, değil mi?
Yani burada muhtemelen en çok Şimdiye kadar gördüğüm en karmaşık şey.
Aslında entegre Birlikte üç dil.
>> İşte kırmızı, bu, bazı HTML.
Görünüşe göre bu starting-- ediyorum Ben bazı HTML pasajı.
Ben yeni bir paragraf olduğunu başlıyorum TV'nin Seinfeld anneler diyor.
Ve sonra hemen sonra Ben bir tablo başlıyorum.
Ve ondan sonra, ben Doğru, bazı PHP var?
Orada bu PHP kodu hepsi var.
Ben görünüşte bir sorgu yapmak gidiyorum.
Ve sorgu yapmak için, ben gidiyorum Anneler SELECT anneler kullanıyor.
>> Yani bu SQL olduğunu getting-- olduğunu.
Yani mavi SQL olduğunu.
Biz ikinci önce gördüğümüz kırmızı HTML oldu.
Ve burada yeşil PHP.
Yani bir sorgu yapıyorum benim veritabanına, ben
Tüm seçilmesi anneler tablosundaki anneler.
Sadece belirli bunu daraltarak Değil satır, ben hepsi için soruyorum.
>> Sonuç ise Sonra kontrol değil eşittir yanlış eşittir.
Bu tür denetimi sadece benim yoludur Sonuçlar null değerine eşit değil if,
Örneğin biz c görmek istiyorsunuz.
Temelde bu sadece yapmak için kontrol ediyor aslında verileri geri aldım emin olun.
Ben yazdırmayı başlatmak için istemiyorum çünkü veri üzerinden herhangi bir veri alamadım.
Daha sonra sonuç olarak her sonuçta PHP foreach sözdizimi, tüm yapıyorum
$ sonuç anneler dışarı yazdırıyor.
Ve bu yüzden bir set almak için gidiyorum each-- annelerinin tüm
bu ilişkisel bir dizi var arrays-- ve ben yazdırarak ediyorum
Tablonun kendi satırına her biri.
Ve bu gerçekten güzel olduğunu hemen hepsi ona orada.
Biraz olduğunu biliyorum Biraz burada olacak
dizileri ile bu son örnekte ilişkisel diziler dizileri arrays--.
Ama gerçekten sadece kaynatın yok Bir sorgu yapma SQL aşağı
biz zaten ettik sonra genellikle seçerek tabloya bilgi koymak,
ve sonra sadece onu çekerek.
>> Ve bu onu çekeceği ise Bu özel durumda dışarı.
Biz bireyin tüm ayıklamak istiyorum anneler tablosundan anneler.
Biz onları bir bütün seti var ve biz yineleme ve yazdırmak istediğiniz
her biri.
Yani yine, bu muhtemelen En karmaşık bir örnek
biz üç karıştırma çünkü gördüğümüz Farklı dilleri bir arada, değil mi?
>> Yine, kırmızı burada HTML var, mavi burada bazı SQL ile karışık,
Yeşil bazı PHP ile karıştırılır.
Ama bütün bunlar oynamak birlikte güzel, bu kadar
Gelişmekte sadece bir madde iyi alışkanlıklar olsun böylece
Onları istediğiniz şekilde birlikte çalışmak.
Ve tek yolu gerçekten bunu yapmak için , pratik uygulama uygulamaktır.
Ben Doug Lloyd değilim, bu CS50 olduğunu.