[MUZYKI] DOUG LLOYD: W naszych filmów na tematy, tworzenie stron internetowych, już wspomnieliśmy koncepcji bazy danych kilka razy, prawda? Więc baza jesteś prawdopodobnie zna od powiedzieć, za pomocą programu Microsoft Excel lub Arkusze Google. To naprawdę tylko zorganizowane zestaw tabel, wierszy i kolumn. I bazy danych, gdzie Nasze sklepy www Informacje, które jest ważne na naszej stronie internetowej, aby działać poprawnie. Ponownie, bardzo typowym przykładem tutaj jest przechowywanie nazw użytkownika i haseł w bazie danych, tak, że kiedy użytkownik zaloguje się naszej stronie internetowej, bazy danych można przeszukiwać, aby zobaczyć jeśli użytkownik nie istnieje w bazie danych. A jeśli są, sprawdzając, ich hasło jest prawidłowe. A jeśli ich hasło jest prawidłowe, wtedy możemy dać im cokolwiek strona oni żądania. Więc jesteś prawdopodobnie znowu znajome ten pomysł z programu Excel lub Google Arkusze kalkulacyjne. Mamy bazy danych, tabele, wiersze i kolumny. I to jest naprawdę sortowania podstawowego zestawu hierarchicznej awarii tutaj. Więc tutaj jest arkusz kalkulacyjny Excel. I jeśli kiedykolwiek otwarty w tym lub inny podobny program wiesz, że one tu są rows-- 1, 2, 3, 4, 5, 6, 7. Są to kolumny. Może tutaj, choć może nie korzystać z tej funkcji strasznie much-- Będę powiększyć in-- mamy Ta idea arkusza. Więc może te arkusze, jeśli I na przemian w przód iw tył, Są różne tabele istnieją w mojej bazy danych. A jeśli nadal przykład wszystkie sposób, nazwę tej bazy danych jest Księga 1. Może mam książki Book 2 i 3. Więc każdy plik Excel jest bazy danych, każdy arkusz jest stół, i wewnątrz każdej tabeli Mam Ta idea się z wierszy i kolumn. Więc jak mam pracować z bazą danych? Jak uzyskać informacje od niej? Dobrze jest język zwany SQL-- które zwykle wystarczy zadzwonić Sequel-- i to oznacza dla Structured Query Language. I jest to język programowania, ale to jest dość ograniczone programowania język. To nie całkiem tak jak inni że pracowałem z. Ale celem tego język programowania jest do kwerendy bazy danych, aby poprosić o informacje z bazy danych, znaleźć informacje w bazy danych, i tak dalej. Mamy również w CS50-- i to bardzo Wspólna platforma, to się nazywa MySQL. To, co możemy wykorzystać w trakcie. To open source platforma, która ustanawia tzw relacyjna database-- bazy danych efektywnie. Nie trzeba się zbyt szczegółowo co relacyjna baza danych jest. Ale język SQL jest bardzo biegły w pracy z MySQL i inne podobne style relacyjnych baz danych. I wiele instalacje MySQL się z czymś nazywa phpMyAdmin, który jest graficznym użytkownika interface-- się GUI--, że sprawia, że ​​trochę więcej przyjazny wykonać użytkownik zapytań do bazy danych, ponieważ bazy danych są nie tylko używane przez zaawansowanych programistów, prawda? Czasami są te małe przedsiębiorstwa, i nie mogą sobie pozwolić na zatrudnić zespół programistów, ale nadal trzeba przechowywać Informacje zawarte w bazie danych. Coś w phpMyAdmin sprawia, że ​​bardzo łatwe dla kogoś, kto nigdy nie zaprogramowane, aby podnieść i zapoznać się ze sposobem do pracy z bazą danych. Problemem jest to, phpMyAdmin, natomiast to fantastyczne narzędzie do nauki o bazach danych, jest to instrukcja. Będziesz musiał zalogować się to i wykonywać polecenia i typ rzeczy ręcznie. A jak wiemy z naszej Przykładem na programowaniu WWW PHP, konieczności ręcznego zrobić rzeczy na naszej stronie internetowej, jeśli chcemy, dynamiczny, aktywny reaguje strona internetowa, może nie jest najlepszym rozwiązaniem. Chcielibyśmy, aby znaleźć sposób na może zautomatyzować to jakoś. I SQL pozwoli nam to zrobić. Więc kiedy będziemy rozpocząć pracę z SQL, najpierw musimy mieć bazy danych do pracy. Tworzenie bazy danych jest coś pewnie zrobi w phpMyAdmin, ponieważ trzeba tylko zrobić to raz, Składnia i za to jest o wiele prostsze. Jest to o wiele łatwiejsze, aby to zrobić w graficznym interfejsie niż pisanie go jako polecenie. Polecenie może trochę uciążliwe. Podobnie, tworzenie tabeli może się trochę kłopotliwe, jak również. A więc rzeczy takie jak tworzenie bazy danych i tworzenia spisu, który jesteś prawdopodobnie tylko zrobić once-- raz na stole, raz na database-- to OK, aby zrobić w graficzny interfejs. W trakcie tworzenie tabeli, będziesz również określić wszystkie z kolumny, które będą w tej tabeli. Jakie informacje nie chcesz zapisać w tabeli? Być może nazwisko i datę urodzenia użytkownika, hasło, numer ID użytkownika, a może miasto i stan, prawda? I za każdym razem chcemy dodać użytkownika do bazy danych, chcemy dostać wszystkie sześć z tych elementów informacji. I robimy, że przez dodanie wiersze do tabeli. Więc najpierw utworzyć bazę danych, Następnie tworzymy tabelę. W ramach tworzenia stół, jesteśmy proszeni określić każdą kolumnę Chcielibyśmy w tej tabeli. A potem, jak zacząć, aby dodać informacje z bazy i kwerendy w bazie danych więcej generally-- nie tylko dodając, ale wszystko inne do-- będziemy do czynienia z wierszy tabeli, który jest jednym Informacje autora z całego zestawu. Więc każda kolumna SQL jest w stanie przechowywania danych określonego typu danych. Więc jakby wyeliminować tego Pomysł typów danych w PHP, ale są tu w SQL. I jest wiele typów danych. Oto tylko 20 z nich, ale to nawet nie wszystkie z nich. Więc mamy pomysły jak INTs-- Integers-- zapewne wiedzą że ta kolumna może przechowywać liczby całkowite. I istnieją różnice thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Może nie zawsze trzeba cztery kęsy. Może musimy osiem bajtów, a więc może korzystać z tych wariacje na liczb całkowitych być nieco więcej miejsca skuteczny. Możemy zrobić liczby dziesiętne, mamy może zrobić liczb zmiennoprzecinkowych. Są bardzo podobne. Istnieją pewne różnice, i jeśli możesz lubię patrzeć w górę SQL rodzaj przewodnika, można Można zobaczyć, co lekkie różnice między nimi. Może chcemy przechowywać informacje o dacie i czasie. Może jesteśmy śledzenie gdy użytkownik dołączył do naszej strony internetowej, a więc może chcemy mieć kolumnę, która jest czas, data lub datownik, że wskazuje, kiedy użytkownik faktycznie Zarejestrowałem się. Możemy zrobić geometrie i linestrings. To jest rzeczywiście bardzo fajne. Możemy nakreślić Obszar geograficzny, używając GIS koordynuje działki na powierzchnię. Więc może faktycznie przechowywać tego rodzaju informacji w kolumnie SQL. Tekst jest po prostu gigantyczne bąble tekstu, może. ENUMeracje są trochę ciekawe. Oni naprawdę istnieją w C. My nie mówić o nich, ponieważ nie są one strasznie powszechnie stosowane, co najmniej CS50. Ale to jest wyliczany typ danych, które jest w stanie utrzymać ograniczone wartości. Naprawdę dobrym przykładem tutaj jest stworzyć wyliczenia, gdzie siedem Możliwe wartości to niedziela, poniedziałek, Wtorek środa czwartek piątek, Sobota, prawda? Tego typu dane Dzień Tydzień nie istnieje, ale możemy utworzyć wyliczone typ danych, takich że kolumna może zawsze tylko trzymać jeden z tych siedmiu możliwych wartości. Mamy wymienione wszystkie z możliwych wartości. Następnie mamy CHAR i VARCHAR, i mam kolor to zielony ponieważ jesteśmy w rzeczywistości zajmie sekundę mówić o różnicy tych dwóch rzeczy. Więc ZNAK, w przeciwieństwie do C, gdzie ZNAK był pojedynczy znak, w SQL char dotyczy długość stały ciąg. I kiedy tworzymy ten Kolumna, w rzeczywistości Można określić długość łańcucha. Tak więc w tym przykładzie, można powiedzieć CHAR (10). Oznacza to, że każde Element tej kolumny składa się z 10 bajtów danych. Nie mniej nie więcej. Tak więc, jeśli spróbujemy i umieścić w 15 bit lub element 15 znaków lub wartość w tej kolumnie, my się tylko pierwsze 10. Jeśli stawiamy na dwóch Charakter długo wartość, będziemy mieć dwa znaków, a następnie osiem zerowe ukąszenia. Nigdy nie będziemy bardziej wydajne niż. VARCHAR jest trochę jak nasze pojęcie łańcucha że jesteśmy zaznajomieni z od C lub PHP. Jest to ciąg znaków o zmiennej długości. I podczas tworzenia kolumna, po prostu określa maksymalne możliwe długości. Więc może 99, lub powszechnie 255. To byłaby maksymalna długość. I tak, jakbyśmy przechowywania 15 ciąg znaków, użylibyśmy 15 bajtów, może 16 bajty dla NUL. Jeśli byliśmy przechowywania trzy ciąg znaków, użylibyśmy trzy lub cztery bajty. Ale nie będziemy korzystać z pełnej 99. Więc dlaczego mamy jedno i drugie? Cóż, jeśli musimy dowiedzieć się, jak długo, coś jest z VARCHAR, musimy rodzaju iteracyjne w poprzek tak jak to miało miejsce w C i dowiedzieć się, gdzie się zatrzyma. Natomiast jeśli wiemy, że wszystko w tej kolumnie jest 10 bajtów, może wiemy, że informacje, możemy skakać 10 bajtów, 10 bajtów 10 bajtów 10 bajtów, i zawsze znaleźć początku łańcucha. Więc możemy mieć pewne zmarnowana przestrzeń z CHAR, ale może jest handel off o lepszą szybkość w nawigacji bazę danych. Ale może chcemy Elastyczność VARCHAR zamiast having-- Jeśli nasz ZNAK było 255, ale większość naszych użytkowników było wprowadzenie jedynie trzy lub cztery bajty Warto informacji lub trzech lub czterech znaków o wartości informacji. Ale niektórzy użytkownicy korzystali całe 255, być może VARCHAR będzie tam bardziej odpowiednie. Jest to swego rodzaju kompromis, a generalnie dla celów CS50, nie musisz martwić się zbytnio o czy używasz CHAR lub VARCHAR. Ale w realnym świecie, te rzeczy mają znaczenia, ponieważ wszystkie z tych kolumn podjęcia rzeczywistej przestrzeni fizycznej. I fizycznego miejsca, w Prawdziwy świat, jest na wagę złota. Więc jeszcze jedną uwagę kiedy budujemy tabelę jest, aby wybrać jedną kolumnę się tak zwany klucz podstawowy. A kluczem podstawowym jest kolumna gdzie każda wartość jest wyjątkowy. A to oznacza, że ​​można łatwo wyłowić jeden wiersz po prostu patrząc na klucz podstawowy tego wiersza. Tak na przykład, ogólnie z użytkownikami, nie chcę dwóch użytkowników, którzy mają ten sam numer ID użytkownika. A więc może masz wiele informacji, a może dwóch użytkowników może mają ten sam name-- masz John Smith i John Smith. To nie musi być problem, ponieważ istnieje wiele osób w świecie o nazwie John Smith. Ale mamy tylko jeden numer identyfikacyjny użytkownika 10, jeden użytkownik ID nr 11, 12, 13. Nie mamy dwóch użytkowników z taką samą liczbą, i tak może być numery identyfikacyjne użytkownika byłby to dobry klucz podstawowy. Nie mamy żadnego dublowania, i możemy teraz wyjątkowo zidentyfikować każdy wiersz, po prostu patrząc na tej kolumnie. Wybór kluczy podstawowych może faktycznie aby kolejne operacje tabeli o wiele łatwiejsze, ponieważ można wykorzystać fakt, że niektóre wiersze będzie być unikalne, lub pewna kolumna z bazy danych lub tabeli będzie wyjątkowy, aby wybrać spośród poszczególne wiersze. Możesz też mieć wspólną podstawowej klucz, które można znaleźć okazję w użyciu, co jest po prostu Połączenie dwóch kolumn na pewno będzie wyjątkowy. Więc może masz jedną Kolumna to jako i śniadaniem, jedna kolumna to jeden, dwa, i trzy, ale będziesz tylko kiedykolwiek mają jeden A1, pojedyncza A2, i tak dalej, i tak dalej. Ale możesz mieć B2, A C2, lub A1, A2, A3, A4. Więc możesz mieć wiele Jako, stwardnienie Śniadaniem, wiele z nich, kilka dwójek, ale można zawsze tylko mieć single A1, B2, C3, i tak dalej. Tak jak powiedziałem, SQL jest język programowania, ale ma dość ograniczone słownictwo. To nie jest aż tak rozległy, jak C oraz PHP i inne języki że rozmowy w czasie. To jest bardziej gadatliwe język, niż to, co jesteśmy Porozmawiamy o tym w wideo, ponieważ w tym filmie będziemy mówić o cztery operacje, że my może wykonywać na stole. Istnieje więcej niż to. Możemy zrobić więcej niż to, ale dla naszych celów, jesteśmy na ogół będzie za pomocą tylko cztery operations-- wkładka, wybrać, aktualizować i usuwać. I prawdopodobnie można intuicyjnie domyślać co wszystkie cztery z tych rzeczy zrobić. Ale pójdziemy do kawałka szczegółów na każdym z nich. Więc dla celów tego wideo, załóżmy, Posiadamy następujące dwa Tabele w jednej bazie danych. Mamy tabeli o nazwie Użytkownicy, że ma cztery columns-- numer ID, nazwę użytkownika, hasło, a pełna nazwa. I mamy drugi tabela w tej samej bazie danych nazywa Moms, że po prostu przechowuje informacje o podanie nazwy użytkownika i matki. Tak więc dla wszystkich przykładów, w tym filmie, będziemy używać tej bazy danych i kolejne aktualizacje do niego. Więc powiedzmy, że chcemy dodać informacje do tabeli. To, co robi operacji wstawiania. W wyjaśnieniu wszystkich te polecenia, będę dać ogólny szkielet do użycia. Bo w zasadzie, zapytań będą wyglądać dość podobne, jesteśmy po prostu będzie się zmieniać nieco różne fragmenty informacji robić różne rzeczy z tabeli. Więc dla INSERT, szkielet wygląda trochę jak ten. Chcemy, aby wstawić do konkretnej tabeli. Następnie mamy otwarty nawias i lista kolumn które chcemy umieścić wartości w. Zamknij nawiasach następujące wartości, a następnie ponownie, wymienić się wartości chcemy umieścić w tabeli. Tak więc przykład ten byłby następujący. Chcę wstawić do tabeli użytkownicy następujące columns-- nazwę użytkownika, hasło i pełna nazwa. Więc nowego wiersza, w którym Kładę w tych trzech kolumn i jesteśmy zamiar umieścić w wartościach Newman, USMAIL i Newman. Więc w tym przypadku, jestem kładąc małą Newman do kolumny podając nazwę użytkownika, hasło USMAIL, a pełna nazwa stolicy N Newman do kolumny fullname. Więc oto co baza danych Wyglądał jak wcześniej. Oto, co tabela użytkowników na góry wyglądało zanim to zrobił. Po wykonujemy to zapytania, mamy to. Dodaliśmy nowy wiersz do tabeli. Ale zauważmy to jedno że nie określił, ale jakoś mam wartość dla, których jest to 12 tutaj. Nie powiedziałem, że chciałem umieścić numer identyfikacyjny tam. Chciałem umieścić nazwę użytkownika, hasło, pełna nazwa. A ja, że ​​to jest w porządku. Ale ja też dostałem ten 12. Dlaczego dostałem to 12? Cóż, okazuje się, że podczas definiowania kolumna, która ma być twój klucz główny, który jest zwykle, jak powiedziałem, numer identyfikacyjny. To nie zawsze musi będzie to numer identyfikacyjny, ale jest to zwykle dobry pomysł, aby być jakaś wartość całkowitą. Masz możliwość w phpMyAdmin podczas tworzenia bazy danych lub tabela, aby ustawić, że Kolumna jako auto przyrostu wartości. Która jest naprawdę dobrym pomysłem, gdy pracujesz z klucza podstawowego, bo chcesz każdą wartość W tej kolumnie jest unikatowy. A jeśli zapomnimy podać to dla więcej niż jednej osoby, masz teraz sytuację, w której że kolumna nie jest wyjątkowa. Masz dwie spacje, więc nie można już jednoznacznie identyfikować column-- lub nie jest już jednoznacznie można identyfikacji rekordu na podstawie tej kolumny. To stracił wszystkie jego wartość jako klucz podstawowy. I tak widocznie, co zrobiłem tutaj jest skonfigurowany identyfikator użytkownika Kolumna do auto przyrostu tak, aby każdy Czas dodać informacje do tabeli, to automatycznie daje mi wartość dla klucza podstawowego. Więc nigdy nie można zapomnieć, aby to zrobić, ponieważ baza danych będzie zrobić to za mnie. Więc to jest miłe. A więc dlatego mamy 12 tam, bo mam ustawić, że kolumny w górę do automatycznego przyrostu. Jeśli dodałem kogoś innego że to będzie 13, jeśli dodany ktoś inny, że to będzie 14, i tak dalej. Więc po prostu zrobić jeszcze jedną wprowadzenie. Będziemy wstawić do tabeli moms, w szczególności nazwę użytkownika i matka kolumnie, wartościami Kramer i Babs Kramer. I tak mieliśmy to przed. Po wykonujemy, że Zapytania SQL, mamy to. Dodaliśmy Kramer i Babs Kramer w tabeli moms. Więc to jest wstawianie. SELECT jest to, czego używać, aby wyodrębnić informacje z tabeli. Tak to jest jak mamy informacji z bazy danych. A więc wybierz polecenia będą bardzo często używane w programowaniu. Ogólny framework-- Ogólnie szkielet wygląda tak. Wybierz zestaw kolumn z stół, a następnie opcjonalnie można określić condition-- lub to, co zwykle nazywamy orzeczenie, jest zazwyczaj termin używamy w SQL. Ale to w zasadzie co Poszczególne rzędy chcesz uzyskać. Jeśli chcesz, zamiast się wszystko, sprowadzić, to gdzie by to zrobić. A następnie opcjonalnie można również zamówienie według wybranej kolumny. Więc może chcesz mieć rzeczy posortowane alfabetycznym w oparciu o jedną kolumnę lub alfabetycznie na podstawie innego. Ponownie, WHERE i ORDER BY są opcjonalne. Ale oni prawdopodobnie useful-- szczególnie GDZIE będzie przydatna zawężenia więc nie uzyskać całą swoją bazę danych i trzeba go przetworzyć, po prostu się kawałki to, że Ci zależy. Tak na przykład, może chcę wybrać Numer identyfikacyjny oraz pełna nazwa od użytkowników. Więc co to może wyglądać? Więc oto moja tabela użytkowników. Chcę wybrać idnum i fullname od użytkowników. Co ja mam dostać? Mam zamiar się tego. Nie sprowadzić, więc jestem uzyskanie numeru identyfikacyjnego dla każdego wiersza a ja jestem coraz pełna wymienić z każdego rzędu. OK. Co zrobić, jeśli chcę, aby wybrać hasło od użytkowników WHERE-- więc teraz Dodaję warunek, A predicate-- gdzie idnum jest mniejsza niż 12. Więc oto moja baza ponownie, mój użytkowników stół szczyt. Co ja mam dostać, jeśli chcę zaznaczyć, że informacje, hasło, gdzie identyfikator użytkownika lub idnum jest mniejsza niż 12? Mam zamiar się tego Informacje z powrotem, prawda? Zdarza się, że idnum jest 10 mniej niż 12, numer identyfikacyjny 11 mniej niż 12 lat. Dostaję hasło dla tych wierszy. To co prosiłem. A co z tym? Co zrobić, jeśli chcę wybrać gwiazda z Stół mamusie gdzie nazwa_użytkownika równa Jerry? OK, wybierz gwiazda jest specjalny rodzaj dzikiej karty tzw że używamy dostać wszystko. Tak mówią wybierz nazwa użytkownika matkę, która przecinkami stało się jedynym dwie kolumny tabeli, Mogę tylko wybrać gwiazdę i dostać wszystko gdzie nazwa_użytkownika równa Jerry. A więc to, co chciałbym dostać czy zrobiłem tego konkretnego zapytania. Teraz, bazy danych są wielkie, ponieważ pozwalają one nam zorganizować informacji może nieco bardziej efektywnie niż my może inaczej. Nie muszą przechowywać co istotne informacja o użytkowniku, w tej samej tabeli. Mieliśmy tam dwie tabele. Musimy zapisać Nazwa niesłyszących matki, a może nie mamy zabezpieczenia społecznego liczba, mamy swoją datę urodzenia. Że nie zawsze trzeba być w tej samej tabeli. Tak długo, jak możemy zdefiniować relacje pomiędzy tables-- i tam, że relacyjnych Termin baza rodzaju pochodzi w play-- tak długo, jak można zdefiniować relacje między tabelami, możemy rodzaju compartmentalize lub abstrakcyjne rzeczy, sposób, gdzie mamy tylko bardzo ważne informacje dbamy o w tabeli użytkownika. A potem mamy informacje pomocnicze lub dodatkowych informacji w innych tabelach że możemy podłączyć z powrotem do głównego użytkownicy tabela w sposób szczególny. Więc tutaj mamy te dwie tabele, ale istnieje związek między nimi, dobrze? Wydaje się, że nazwa użytkownika może być coś że istnieje wspólne między tych dwóch różnych tabel. I co z tego, jeśli mamy teraz sytuacja, w której mamy Aby uzyskać pełną nazwę użytkownika przed Stół użytkownika, a ich matki nazwy z tabeli matki? Nie mamy sposobu na zdobycie że w obecnej formie, prawda? Nie ma jednej tabeli, która zawiera zarówno imię, nazwisko i imię matki. Nie mamy takiej możliwości od tego, co widzieliśmy do tej pory. A więc musimy wprowadzić idea JOIN. I przyłącza są prawdopodobnie najbardziej complex-- to naprawdę najbardziej skomplikowana operacja będziemy mówić w filmie. Są trochę skomplikowane, ale gdy pojawi się zawiesić go, nie są one rzeczywiście tak źle. To jest tylko szczególnym przypadkiem SELECT. Mamy zamiar wybrać zestaw kolumny z tabeli gięcia w drugiej tabeli na jakiś orzecznika. W tym przypadku, myślę o tym jak this-- Stół z nich jest tu jedno koło, Stół dwa to kolejny krąg tutaj. I ta część orzecznik w środku, to coś jak jeśli myślisz o postaci diagramu Venna, co oni mają wspólnego? Chcemy połączyć te dwie tabele w oparciu o to, co ich łączy i stworzyć hipotetyczny tabeli to połączenie tych dwóch razem. Więc zobaczymy to w przykładem i być może, że będzie pomóc usunąć go trochę. Więc może chcesz wybrać user.fullname i moms.mother od użytkowników łączących w mamusie tabeli w każdej sytuacji gdzie kolumna Nazwa użytkownika jest takie samo między nimi. I to jest nowa składnia tutaj, do tego użytkownika. i mamusie .. Jeśli robię wielu tabel razem, można określić tabelę. Mogę wyróżnić się w szczególności na które na co bardzo nie na dole. Mogę odróżnić nazwę użytkownika kolumna tabeli użytkowników z kolumny nazwę użytkownika mamusie tabeli, które są otherwise-- jeśli tylko, że nazwa użytkownika jest równa nazwa użytkownika, że ​​naprawdę nie ma znaczy. Chcemy to zrobić, gdzie pasuje. Tak można określić tabeli i Nazwa kolumny w przypadku sytuacji gdzie by to było jasne, tego, co mówię. Więc to wszystko robię nie jestem mówiąc tę ​​kolumnę z tabeli, i jest bardzo wyraźne. Więc jeszcze raz, jestem wybranie pełne imię i nazwisko matki z tabeli użytkowników połączonych ze sobą z tabelą moms w każdej sytuacji gdzie oni dzielić się column-- dzielą tę nazwę użytkownika pojęcia. Więc tutaj są tabele, które mieliśmy wcześniej. To jest stan naszego bazy danych, ponieważ istnieje teraz. Informacje jesteśmy wydobycia jest to początek. To jest nowa tabela jedziemy stworzyć łącząc je razem. I zauważyć, że nie jesteśmy podkreślając Wiersz Newmana w tabeli użytkownika, i nie jesteśmy podkreślając Kramer wiersz w tabeli moms bo ani jeden istnieje w zarówno sets-- w obu tabelach. Jedyne informacje, które są wspólne między nimi jest Jerry jest w obu tabelach i gcostanza jest w obu tablicach. I tak, gdy robimy to SQL JOIN, co get-- i robimy rzeczywiście dostać to. To coś w rodzaju zmiennej tymczasowej. To jak hipotetyczny Połączenie dwóch tabelach. My faktycznie coś jak to, w którym mamy połączone ze sobą tabel na Informacje, które mają ze sobą wspólnego. Tak więc zauważyć, że users.username i kolumny moms.username, to jest dokładnie to samo. To była informacja, że był zgodny z użytkowników Stół i tabela mamusie. I tak połączył je razem. Mamy wyrzucić Kramer, ponieważ on nie istnieje w tabeli użytkowników, Newman i wyrzucić, ponieważ nie istnieje w tabeli moms. Więc jest to hipotetyczne połączenie za pomocą operacji JOIN SELECT. A potem szukaliśmy dla imię i nazwisko autora, a matka autora, a więc jest to informacja, że dostaniemy od ogólnego zapytania że zrobiliśmy z SELECT. Więc dołączył do tabel razem i ekstrakcji te dwie kolumny, a więc to, co mamy. Ale SQL JOIN rodzaju skomplikowane. Prawdopodobnie nie zrobi im zbyt wiele, ale po prostu mają jakieś pojęcie o szkielecie że można użyć do połączenia dwóch stoły razem, jeśli potrzebne do. Dwa ostatnie są nieco prostsze obiecuję. Więc aktualizacji, możemy użyć UPDATE zmienić informację w tabeli. Ogólny format jest UPDATE niektóre stół, jakieś kolumny do pewnej wartości GDZIE niektóre predykat jest spełniony. Tak na przykład, możemy chcieć aktualizacji tabeli użytkowników i ustawić hasło do bla bla, przy czym numer identyfikacyjny 10. Więc w tym przypadku, że jesteśmy aktualizowania tabeli użytkowników. Numer ID jest 10 dla że pierwszy rząd tam, i chcemy zaktualizować Hasło do bla bla. A więc to, co się stanie. Jest to dość proste, prawda? To jest po prostu bardzo prosta Modyfikacja tabeli. DELETE jest operacja kiedyś usuwanie danych z tabeli. DELETE FROM tabela WHERE niektóre predykat jest spełniony. Chcemy, aby usunąć z użytkowników stół na przykład gdzie nazwa użytkownika jest Newman. Można się domyślić, co się stało się tu po wykonujemy że SQL zapytanie Newman odszedł od stołu. Więc wszystkie te operacje, jak już mówiłem, są bardzo łatwe do zrobienia w phpMyAdmin. Jest to bardzo przyjazny interfejs użytkownika. Ale to nie wymagają ręcznego wysiłku. Nie chcemy zatrudniać ręcznego wysiłku. Chcemy, aby nasze programy do zrobić dla nas, prawda? Więc może chcemy zrobić to programowo. Chcemy włączyć SQL i mają coś jeszcze zrobić to za nas. Ale to, co widzieliśmy, która pozwala nam programowo coś zrobić? Widzieliśmy PHP, prawda? Wprowadza pewne Dynamizm w naszych programach. I tak, na szczęście, SQL i PHP grać bardzo ładnie razem. Jest to funkcja w PHP zwane zapytania, które mogą być użyte. I można przekazać jako parametr lub argument na zapytanie zapytanie SQL, które chcesz wykonać. I PHP zrobi to w jego imieniu. Więc jak już podłączony do bazy danych z PHP, tam dwa prawybory to zrobić. Jest coś, co nazywa MySQLi i coś zwane PDO. Nie będziemy się ogromny ilość szczegółów nie. W CS50 używamy PDO. Po podłączeniu do bazy danych, można może następnie dokonać zapytań do bazy danych przekazując zapytania jako argumenty do funkcji PHP. A kiedy to zrobisz, możesz przechowywać zestaw wyników w tablicy asocjacyjnej. I wiemy, jak pracować z Tablice asocjacyjne w PHP. Więc może coś powiedzieć jak this-- $ results-- to jest w PHP-- równa zapytania. A następnie wewnątrz z Funkcja kwerendy że argument że jestem przechodząc do zapytania który wygląda jak SQL. A w rzeczywistości to jest SQL. To ciąg kwerendy, które chciałbym jak wykonać w mojej bazie danych. I tak, w kolorze czerwonym, to jest PHP. Jest to SQL, że jestem integracji z PHP poprzez to argument do funkcji zapytania. Chcę wybrać FullName z użytkowników, gdzie numer ID wynosi 10. A to może po tym, jak już to zrobisz, Mogę powiedzieć coś takiego. Chcę wydrukować Dzięki za wiadomość zalogowaniu. I chcę go interpolate-- chcę interpolacji $ wyniki FullName. I tak to w jaki sposób pracować z które asocjacyjna, że ​​wróciłem. $ wyniki pełna nazwa będzie w zasadzie kończy się drukowanie, dzięki za zalogowaniu, Jerry Seinfeld. To była pełna nazwa gdzie idnum równa 10. A więc wszystko robię to ja jestem now-- przechowywane moje zapytanie, wyniki mojej kwerendy i wyniki w tablicy asocjacyjnej, a pełna nazwa to nazwa kolumna I był już za. Więc to jest mój klucz do wyników asocjacyjna, że ​​chcę. Więc Dzięki za zalogowaniu $ wyniki, będzie pełna nazwa wydrukować, będzie trzymać w prawo od tych kręconych szelki, Jerry Seinfeld. A ja chciałbym wydrukować wiadomości Dzięki za zalogowaniu Jerry Seinfeld. Teraz pewnie nie chcą ciężko Kod takie rzeczy się, prawda? Może Chcemy zrobić coś takiego druku f, gdzie możemy zastąpić i być może zbierać różne informacje, czy może mieć proces przeszukiwania różne informacje. A więc pytanie, funkcja kwerendy ma to pojęcie rodzaju substytucji Bardzo podobny do drukowania f procent s i procent c, to znaki zapytania. I możemy użyć pytanie Znaki bardzo analogicznie wydrukować f zmiennych zastępczych. Więc może twoja użytkownik zalogowany wcześniej, i zapisaniu ich numer ID użytkownika w $ _SESSION PHP Super globalnej w kluczowej ID. Więc może po zalogowaniu $ _SESSION ustawić ID równa się 10, ekstrapolacji na przykładzie po prostu zobaczył drugą temu. I tak, gdy faktycznie wykonuje to zapytanie wyniki teraz, to podłączyć 10, lub cokolwiek wartość ID $ _SESSION jest. I tak, że pozwala nam być nieco bardziej dynamiczne. Nie będziemy ciężko kodowania rzeczy już. Jesteśmy zapisywanie informacji gdzieś, a następnie możemy użyć ponownie te informacje rodzaj uogólnienia, co chcemy zrobić, i po prostu podłączyć i zmiany zachowanie naszej stronie na podstawie jakiego numeru ID użytkownika w rzeczywistości jest po ich zalogowany. Możliwe jest również, choć, które ustawione wyniki Może składać się z wielu rzędów. W takim przypadku, trzeba tablica arrays-- tablicę tablic asocjacyjnych. A wystarczy iteracji przez nią. I wiemy, jak do iteracji za pośrednictwem tablicy w PHP, prawda? Więc tutaj jest chyba najbardziej Kompleks rzeczy widzieliśmy do tej pory. To rzeczywiście integruje trzy języki razem. Tu, w kolorze czerwonym, to niektóre HTML. Ja najwyraźniej starting-- to urywek jakiegoś HTML, który mam. Zaczynam nowy akapit, że mówi moms Seinfeld telewizora. A potem zaraz potem Zaczynam tabeli. A następnie po tym, ja jakieś PHP, prawda? Mam wszystkie tego kodu PHP tam. Ja najwyraźniej zamiar złożyć zapytanie. I żeby zrobić kwerendę, zamierzam za pomocą przycisku SELECT matek Z matek. Więc to jest getting-- to SQL. Więc niebieski jest SQL. Czerwona widzieliśmy przed chwilą była HTML. I tu jest zielona PHP. Więc robię zapytanie do mojej bazy danych, jestem wybierając wszystkie z matki w tabeli moms. Nie tylko zawężając go do szczególności wiersz, pytam dla nich wszystkich. Następnie sprawdzić, czy wynik jest nie równe równa false. To jest po prostu mój sposób na sprawdzenie rodzaju od tego, czy wyniki nie jest równa null, które widzimy c np. Zasadniczo jest to po prostu sprawdzić, aby upewnić się, że rzeczywiście dostał dane z powrotem. Bo nie chcę, aby rozpocząć drukowanie z danymi, jeśli nie miałem żadnych danych. Następnie dla każdego wyniki W rezultacie foreach składnia z PHP, wszystko robię drukuje się matki $ wynik. I tak mam zamiar dostać zestaw wszystkich matek each-- to tablica stowarzyszeniowej arrays-- i jestem drukowanie każdy w oddzielnym wierszu tabeli. I to jest naprawdę ładna dużo wszystko było w porządku. Wiem, że to trochę trochę tu dzieje W tym ostatnim przykładzie z tablic arrays-- tablic asocjacyjnych. Ale to naprawdę nie tylko gotować w SQL do tworzenia zapytania, Zwykle wybierając już po mamy umieścić informacje w tabeli a potem po prostu wyciągając go. I to my go wyciągnąć w tym konkretnym przypadku. Chcemy wydobyć wszystkie jednostki matki z tabeli moms. Mamy cały zestaw nich, a my chcą iterację i wydrukować każdy. Więc jeszcze raz, to prawdopodobnie najbardziej skomplikowany przykład widzieliśmy, ponieważ jesteśmy mieszania trzy różne języki razem, prawda? Znów mamy tu na czerwono HTML, miesza się z pewnym SQL tutaj w kolorze niebieskim, pomieszany z PHP na zielono. Ale wszystko to grać ładnie razem, to tylko kwestia rozwoju dobre nawyki, dzięki czemu można uzyskać im pracować razem, jak chcesz. A jedynym sposobem, aby naprawdę zrobić jest praktyka, praktyka, praktyka. Jestem Doug Lloyd, to CS50.