>> [Играет музыка]
ДАГ Lloyd: В наших видео на тему веб-разработки,
мы упомянули понятие база данных несколько раз, верно?
Таким образом, база данных вы вероятно, знакомы с из
говорят, используя Microsoft Excel или Таблицы Google.
Это на самом деле просто организованная набор таблиц, строк и столбцов.
>> И база данных, где наш веб-сайт магазинов
Информация, что важно для нашего сайта, чтобы работать должным образом.
Опять же, в самом деле общий пример здесь хранит имена пользователей и пароли
в базе данных, так что, когда пользователь входит в наш веб-сайт,
база данных может быть запрошен, чтобы увидеть если пользователь существует в базе данных.
И если они есть, проверки того, что их правильный пароль.
И если их правильный пароль, то мы можем дать им все, что страница
они просьбой.
>> Так вы, вероятно, опять же, знакомы с этой идеей из Excel или Google
Таблицы.
У нас есть базы данных, столы, ряды и столбцы.
И это действительно рода фундаментальной набора
иерархической пробоя здесь.
Так вот таблица Excel.
И если вы когда-либо открыл это или другой аналогичной программы
Вы знаете, что это вот rows-- 1, 2, 3, 4, 5, 6, 7.
Эти колонки.
>> Может быть, здесь, хотя вы можете Не используйте эту функцию ужасно much--
Я масштаба in-- у нас есть эта идея листа.
Так, может быть, эти листы, если Я чередовать назад и вперед,
различные таблицы, существует в моей базе данных.
И если мы продолжим пример все путь, имя этой базы данных
это Книга 1.
Может быть, у меня есть книга 2 и 3 книги.
Таким образом, каждый файл Excel является базы данных, каждый лист представляет собой таблицу,
и внутри каждой таблицы у меня эта идея из строк и столбцов.
>> Так как я работаю с этой базой данных?
Как я могу получить информацию от него?
Ну есть язык называется SQL-- которые я обычно просто позвоните Sequel--
и это стоит для Structured Query Language.
И это язык программирования, но это довольно ограниченный программирования
язык.
Это не совсем, как и другие что мы работали с.
Но цель этого язык программирования
это запрос к базе данных, чтобы спросите информацию из базы данных,
найти информацию в базы данных, и так далее.
>> Мы также, в CS50-- и это очень общая платформа, это называется MySQL.
Это то, что мы используем в курсе.
Это с открытым исходным кодом платформа, которая устанавливает
так называемый реляционной database-- база данных, эффективно.
Нам не нужно, чтобы получить в слишком много деталей
на то, что реляционная база данных.
Но язык SQL является очень искусны в работе
с MySQL и другие подобные стили реляционных баз данных.
>> И многие установок MySQL приходят с чем-то
называется PhpMyAdmin, которые это графический пользовательский
interface-- в GUI--, что делает его немного более
дружественных пользователю выполнить запросы к базе данных,
поскольку базы данных используются не только по продвинутых программистов, верно?
Иногда есть эти малые предприятия,
и они не могут позволить себе нанять команду программистов,
но они по-прежнему нужно хранить Информация в базе данных.
>> Что-то вроде PhpMyAdmin делает его очень легко для кого-то
который никогда не запрограммирован, прежде чем подобрать и ознакомиться с тем, как
работать с базой данных.
Проблема состоит в том, PHPMYADMIN, а это фантастический инструмент для обучения
о базах данных, это руководство.
Вы будете иметь, чтобы войти в это и выполнять команды и тип
вещи вручную.
>> И, как мы знаем из нашего Пример на PHP веб-программирования,
того, чтобы вручную делать вещи на нашем сайте,
если мы хотим динамичный, активный реагировать сайт, возможно, не самый лучший подход.
Мы хотели бы найти путь к возможно, это как-то автоматизировать.
И SQL позволит нам это сделать.
Поэтому, когда мы собираемся начать работать с SQL,
мы сначала должны иметь базы данных для работы с.
Создание база данных то вы, вероятно,
будет делать в PhpMyAdmin, потому что Вы должны будете сделать это только один раз,
и синтаксис для этого является гораздо более простым.
Это намного легче сделать это в графическом интерфейсе пользователя
чем печатать его в качестве команды.
Команда может получить немного громоздким.
Аналогично, создавая таблицу можно получить немного громоздкий, а также.
И так такие вещи, как создание базы данных и создания таблицы, которой вы
вероятно, только собирается сделать once-- один раз в таблице, один раз в database--
это нормально, чтобы сделать это в графический интерфейс.
В процессе создания таблицы, вы
Также нужно указать все из столбцы, которые будут в этой таблице.
Какая информация сделать Вы хотите, чтобы хранить в таблице?
Может быть, имя пользователя и дата рождения, пароль, ID номер пользователя, а может быть,
Город и государство, верно?
>> И каждый раз, мы хотим, чтобы добавить пользователя в базу данных, мы хотим, чтобы все шесть
из этих частей информации.
И мы делаем это путем добавления Строки в таблице.
Таким образом, мы сначала создать базу данных, Затем мы создаем таблицу.
В рамках создания стол, мы попросили
указать, что каждый столбец мы хотели бы в этой таблице.
И то, как мы начнем добавлять Информация в базу данных
и запросить более база данных generally-- не просто добавление,
но все остальное мы do-- мы будем иметь дело
с рядами таблицы, которая является одним Информация пользователя из всего множества.
>> Таким образом, каждый столбец SQL способен проведение данных определенного типа данных.
Таким образом, мы устранены рода это Идея типов данных в PHP,
но они снова здесь, в SQL.
И есть много типов данных.
Вот только 20 из них, но это даже все из них нет.
Так у нас есть идеи, как INTs-- Integers-- мы, наверное, знаете
что этот столбец может содержать целые числа.
И есть вариации thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT.
Может быть, мы не всегда нужно четыре укусов.
Может быть, мы должны восемь байт, и поэтому мы можете использовать эти вариации на целых
чтобы быть немного больше места эффективным.
Мы можем сделать десятичных чисел, мы можно сделать плавающей запятой.
Они очень похожи.
Есть некоторые различия, и, если бы вы
люблю смотреть вверх по SQL рода руководства, вы
может видеть то, что небольшое различия между ними.
>> Может быть, мы хотим, чтобы сохранить информация о дате и времени.
Может быть, мы отслеживания когда пользователь присоединился наш сайт,
и поэтому, возможно, мы хотим иметь столбца, который
время дата или отметка, что указывает, когда пользователь действительно
подписали.
Мы можем сделать геометрию и linestrings.
Это на самом деле довольно прохладно.
Мы могли бы наметить географический район с помощью
ГИС координаты сюжет из области.
Так может на самом деле хранить такого рода информации в колонке SQL.
>> ТЕКСТ всего гигантские капли текста, может быть.
Перечисления являются своего рода интересно.
Они на самом деле существует в С. Мы не говорить о них, потому что они не
жутко обычно используется, по крайней мере, CS50.
Но это перечислимого типа данных, которые способен удерживать ограниченные значения.
>> Действительно хороший пример здесь будет создать перечисление, где семь
Возможные значения воскресенье, понедельник, Вторник, Среда, Четверг, Пятница,
Суббота, верно?
Это тип данных День Неделя не существует,
но мы могли бы создать перечислимого типа данных, например
что это столбец может только когда-либо провести один из тех семи возможных значений.
Мы перечислили все из возможных значений.
>> Тогда у нас есть уголь и VARCHAR, а у меня цвет эти зеленые
потому что мы на самом деле собирается взять вторую
говорить о разнице между этими двумя вещами.
Так СИМВОЛ, в отличие от С, где СИМВОЛ был один символ,
в SQL полукокса относится к фиксированная длина строки.
И когда мы создаем это колонка, мы на самом деле
можно указать длину строки.
>> Таким образом, в этом примере, мы могли бы сказать, CHAR (10).
Это означает, что каждый элемент этого столбца
будет состоять из 10 байт информации.
Не больше, не меньше.
Так что, если мы будем пытаться поставить в 15 бит или элемент 15 символов
или значение в этой колонке, мы только получить первые 10.
Если мы в двух долго значение характер,
мы будем иметь два символы, а затем восьми нулевые укусов.
Мы никогда не будем более эффективно, чем это.
>> VARCHAR вроде как наше понятие строки
что мы знакомы с из С или из РНР.
Это переменная длина строки.
И когда вы создаете эта колонка, вы просто
указать максимально возможные длины.
Так, может быть, 99 или 255, обычно.
Это было бы максимальная длина.
И поэтому, если мы были хранения 15 строка символов,
мы хотели бы использовать 15 байт, может быть, 16 байт для нулевого терминатора.
Если мы хранящем три строка символов,
мы будем использовать три или четыре байта.
Но мы бы не использовать полный 99.
>> Так почему бы нам другого?
Ну, если мы должны выяснить, как долго что-то с VARCHAR,
мы должны вида итерации по это только так, как мы это делали в C
и выяснить, где он останавливается.
В то время как, если мы знаем, что все в этой колонке 10 байт, может быть,
мы знаем, что информация, мы можем перейти 10 байт, 10 байт, 10 байт, 10 байт,
и всегда найти начало строки.
>> Таким образом, мы, возможно, некоторые впустую место с CHAR,
но, возможно, есть торговля от того, более высокую скорость
в навигации база данных.
Но, может быть, мы хотим, чтобы Гибкость VARCHAR
вместо having-- Если наша СИМВОЛ был 255, но большинство наших пользователей
были только ввод три или четыре байта Стоит информации или три или четыре
символы стоимостью информации.
>> Но некоторые пользователи используют вся 255, может быть,
VARCHAR бы более уместно там.
Это своего рода компромисса, и как правило, для целей CS50,
Вам не нужно слишком беспокоиться о ли вы использовать CHAR или VARCHAR.
Но в реальном мире, эти вещи имеют значение, потому что все из этих столбцов
взять фактическую физическое пространство.
И физическое пространство, в реальный мир, приходит в большом почете.
>> Так одной другой рассмотрения когда вы создаете таблицу
это выбрать один столбец, чтобы быть то, что называется первичным ключом.
И первичный ключ представляет собой столбец где каждый значение является уникальным.
А это значит, что вы можете легко выбрать одну строку, просто взглянув
на первичный ключ этой строки.
Так, например, вы Как правило, с пользователями,
не хочу двух пользователей, имеют одинаковое число идентификатора пользователя.
И поэтому, возможно, у вас есть много информации,
и, возможно, два пользователя могут есть же name--
у вас есть Джон Смит и Джон Смит.
Это не обязательно является проблемой, потому что есть несколько человек
в мире по имени Джон Смит.
Но у нас есть только одно идентификационный номер пользователя 10, один пользователь идентификационный номер 11, 12, 13.
Мы не имеем двух пользователей с таким же количеством,
и поэтому, возможно, ID пользователя число будет хороший первичный ключ.
>> Мы не имеем никакого дублирования, и теперь мы можем однозначно
определить каждую строку только глядя на этого столбца.
Выбор первичных ключей может на самом деле сделать последующие табличные операции
намного легче, потому что вы можете использовать тот факт, что некоторые строки будет
быть уникальным, или определенный столбец вашей базы данных или таблицы
будет уникальным, чтобы забрать из конкретных строк.
>> Вы также можете иметь совместное первичный ключ, который вы можете найти повод
в использовании, что это просто Сочетание двух столбцов,
гарантированно будет уникальным.
Так, может быть, у вас есть один столбец, как и Bs,
один столбец, что один, два, и три, но вы будете только когда-либо
есть один A1, один А2, и так далее, и так далее.
Но вы, возможно, В2, А С2, или А1, А2, А3, А4.
Таким образом, вы, возможно, придется несколько Так же, несколько Bs, несколько из них, несколько двоек,
но вы можете только когда-либо иметь одного А1, В2, С3, и так далее.
Так как я уже сказал, SQL является язык программирования,
но он имеет довольно ограниченный словарный запас.
Это не совсем так, как экспансивный С и PHP и другие языки
что мы говорим в курсе.
Это более подробный язык, чем то, что мы
поговорим о в этом видео, потому что в этом видео
мы будем говорить о четыре операции, которые мы
может выполнять на столе.
>> Есть больше, чем это.
Мы можем сделать больше, чем это, но для наших целей,
мы, как правило собираетесь использовать только четыре operations-- вставка,
выберите, обновлять и удалять.
И вы, вероятно, интуитивно догадаться то, что все эти четыре вещи.
Но мы пойдем в немного детализации по каждому из них.
>> Таким образом, для целей настоящего видео, давайте предположим,
У нас есть следующие два Столы в единой базе данных.
У нас есть таблица называется пользователей, что имеет четырех columns-- идентификационный номер, имя пользователя,
пароль и полное имя.
И у нас есть второй стол в той же базе данных
называется мам, которые просто хранит информацию о имени пользователя и матери.
Так что для всех примеров в этом видео, мы будем
использовать эту базу данных и последующие обновления к нему.
Так что давайте говорить, что мы хотим, чтобы добавить информацию в таблицу.
Это то, что делает операции вставки.
Объясняя все эти команды, я собираюсь
чтобы дать вам общее скелет использовать.
Потому что в основном, запросов собираются взгляд очень похожи,
мы только собираемся, меняется несколько различных частей информации
делать различные вещи со столом.
>> Таким образом, для INSERT, скелета выглядит вроде как это.
Мы хотим, чтобы вставить конкретный стол.
Тогда у нас есть открывающую скобку и список столбцов
что мы хотим, чтобы положить значения в.
Закрыть скобки, то следующие значения, а затем
опять же, мы перечислить значения мы хотим, чтобы положить в стол.
>> Так примером этого будет следующее.
Я хочу, чтобы вставить в таблицу пользователи следующий columns--
имя пользователя, пароль, и FullName.
Так в новой строке, где я ставлю в этих трех столбцов, и мы
собирается поставить в значениях Ньюман, USMAIL, и Ньюман.
Таким образом, в этом случае, я положить в нижнем регистре Ньюман
в поле пользователя, пароль USMAIL, и полное название столицы Н
Ньюман в колонке FULLNAME.
>> Так вот то, что база данных посмотрел, как раньше.
Вот то, что таблица пользователи на топ выглядел, прежде чем мы это сделали.
После того как мы это выполнить запрос, мы получаем это.
Мы добавили новую строку таблицы.
Но обратите внимание, это одно что я не уточнил,
но почему-то я получил значение для, что это 12 прямо здесь.
Я не говорю, что я хотел положил идентификационный номер там.
Я хотел, чтобы положить имя пользователя, пароль, FullName.
И я сделал это, это нормально.
>> Но я также получил эту 12.
Почему я получаю это 12?
Ну, получается, что когда вы определяете
столбец, который будет ваш Первичный ключ, который, как правило,
как я уже сказал, идентификационный номер.
Это не всегда обязательно будет идентификационный номер,
но это, как правило, хорошая идея, чтобы быть своего рода целое число.
У вас есть возможность в PhpMyAdmin когда вы создаете базу данных
или ваш стол, чтобы установить, что колонку, как авто приращение.
>> Который является действительно хорошая идея, когда вы работаете с первичным ключом,
потому что вы хотите каждое значение в этом столбце должны быть уникальными.
И если вы забыли указать это более, чем одного человека,
теперь у вас есть ситуации, когда не, что колонка больше не уникальна.
Вы не имеете две заготовки, так что вы можете не больше однозначно идентифицировать column--
или вы не больше не могу однозначно идентификации строки на основе этого столбца.
Это потерял все свои Значение в качестве первичного ключа.
>> И так, по-видимому, что я сделал здесь настроен идентификатор пользователя
столбец автоматическое приращение так, чтобы каждый раз я добавить информацию в таблице,
он будет автоматически даст мне значение для первичного ключа.
Так что я никогда не смогу забыть это сделать, потому что база данных сделает это за меня.
Так что отчасти хорошо.
И вот почему мы получаем 12 там, потому что я
установить, что колонна до автоматическое приращение.
Если я кого-то еще добавил это было бы 13, если я добавил
кто-то еще было бы 14, и так далее.
>> Так что давайте просто сделаем еще одну вставку.
Мы вставить в таблицу мам, в частности, имя пользователя и мать
столбцов, значения Крамер и Бабс Крамер.
И поэтому мы должны были это раньше.
После того как мы выполнить которые SQL запросов, мы должны это.
Мы добавили Крамер и Бабс Крамер таблице мам.
>> Так что это вставки.
ВЫБОР, что мы используем, чтобы извлечь Информация из таблицы.
Так что это, как мы получаем Информация из базы данных.
И поэтому выберите команды будет очень часто используются в программировании.
Общая framework-- Вообще скелет выглядит так.
Выберите набор столбцов с стол, и затем, необязательно,
Вы можете указать condition-- или то, что мы обычно вызывают предикат,
Обычно термин мы используем в SQL.
>> Но это в основном то, что конкретные строки вы хотите получить.
Если вы хотите, чтобы, вместо того, чтобы все, сузить ее,
это где вы могли бы сделать это.
И тогда, возможно, вы также можете заказать по определенному столбцу.
Так, может быть, вы хотите, чтобы вещи, отсортированные по алфавиту на основе одного столбца
или в алфавитном порядке на основе другого.
>> Опять же, где и ORDER BY являются необязательными.
Но они, вероятно, будет useful-- особенно
ГДЕ будет полезно сузить так что вам не
получить всю базу данных и обратно должны обработать его, вы просто получите
куски него, что вы заботитесь о.
Так, например, я мог бы хотеть выбрать Идентификационный номер и FullName от пользователей.
Так что, возможно, это выглядит?
Так вот мой стол пользователи.
Я хочу, чтобы выбрать idnum и FULLNAME от пользователей.
Что я собираюсь получить?
Я собираюсь получить это.
Я не сузить ее, поэтому я получение идентификационного номера для каждой строки
и я получаю полный название от каждой строки.
>> ХОРОШО.
Что делать, если я хочу, чтобы выбрать пароль от пользователей, так что теперь WHERE--
Я добавляю состоянии, predicate-- где idnum меньше 12.
Так вот моя база данных снова, мой пользователи таблице сверху.
Что я собираюсь получить, если я хочу выбрать эту информацию, пароль,
где идентификатор пользователя или idnum меньше 12?
Я собираюсь получить это информацию обратно, верно?
Бывает, что idnum 10, меньше чем 12, идентификационный номер 11 меньше, чем 12 лет.
Я получаю пароль для этих строк.
Вот то, что я просил.
Как насчет этого?
Что делать, если я хочу, чтобы выбрать звезду из мамы стол, где имя пользователя равен Джерри?
ОК, выберите звезда специальный вроде джокера так называемый
что мы используем, чтобы получить все.
Так они говорят выберите имя пользователя запятую мать, которая
оказался единственным две колонки этой таблицы,
Я могу только выбрать звезду и получить все
где имя пользователя равен Джерри.
И вот что я хотел бы получить если я сделал что конкретный запрос.
>> Теперь, базы данных здорово, потому что они позволяют
нам организовывать информацию, возможно, немного более эффективно, чем мы
в противном случае.
Мы не обязательно, чтобы хранить каждый значимая информация
о пользователе в той же таблице.
У нас было два столах.
>> Мы должны хранить имя матери у всех, в
и, возможно, мы не должны социальное обеспечение число, то есть их возраст.
Это не всегда нужно чтобы быть в той же таблице.
Пока мы можем определить отношения между tables--
а вот где, что реляционная Термин база данных рода приходит
в play-- тех пор, как мы можем определить между таблицами,
мы можем рода отсеки или абстрактные вещи, способ,
где у нас есть только действительно важная информация
мы заботимся о в таблице пользователя.
И тогда у нас есть вспомогательная информация или дополнительная информация в других таблицах
что мы можем подключить вернуться на главную Таблица пользователи определенным образом.
>> Так вот у нас есть эти две таблицы, но существует взаимосвязь между ними,
правильно?
Похоже, имя пользователя может быть что-то
что существует общее между Эти два различных таблиц.
Так что, если у нас теперь есть ситуация, когда мы
хотите получить полное имя пользователя от Таблица пользователя, и их матери
назвать из таблицы матери?
Мы не есть способ, чтобы получить что в его нынешнем виде, верно?
Там нет ни одного таблица, которая содержит как полное имя и имя матери.
Мы не имеем эту опцию от того, что мы видели до сих пор.
>> И поэтому мы должны ввести Идея объединения.
И присоединяется, вероятно, наиболее complex--
это действительно наиболее сложная операция мы будем говорить о в видео.
Они немного сложнее, но как только вы получите повесить его,
они на самом деле не так уж плохо.
Это просто частный случай SELECT.
Мы собираемся, чтобы выбрать набор столбцы из таблицы, соединяющие
в второй таблице на некоторый предикат.
>> В этом случае, думаю, об этом хотел this-- Таблица один один круг здесь,
таблица из двух еще один круг здесь.
И, что предикат часть в середине, это
вроде как, если вы думаете, о виде диаграммы Венна, то, что
у них есть общего?
Мы хотим, чтобы связать эти две таблицы на основе того, что они имеют в общем
и создать таблицу эту гипотетическую что слияние двух вместе.
Таким образом, мы увидим это в Пример и, возможно, это поможет
очистить его немного.
Так, может быть, вы хотите, чтобы выбрать user.fullname и moms.mother
от пользователей, заходящих в мамы стол в любой ситуации
где столбец имени пользователя то же самое между ними.
И это новый Синтаксис здесь, этот пользователь.
и мамы ..
Если я делаю несколько таблиц вместе, я могу указать таблицу.
Я могу отличить, в частности, что в самом низу есть.
Я могу отличить пользователя столбец таблицы пользователей
из колонки Новости из мамы стол, которые otherwise--
если мы только что сказали, имя пользователя равен имя пользователя, что на самом деле не
значит ничего.
Мы хотим сделать его там, где они совпадают.
>> Так что я могу указать таблицу и Имя столбца в случае возникновения ситуации,
где это было бы непонятно, то, что я говорю.
Так что все, что я делаю там я говоря эту колонку из этой таблицы,
и, будучи очень явным.
Итак, еще раз, я выбрав полное наименование и имя матери
из таблицы пользователей связаны друг с другом с таблицей мам в любой ситуации
где они разделяют эту column-- они разделяют это имя пользователя понятие.
>> Так вот столы, которые мы имели прежде.
Это состояние нашего базы данных, как она существует сейчас.
Информация мы извлечения это для начала.
Это новая таблица мы собираемся создать объединения их вместе.
И обратите внимание, что мы не выделяя Ряд Ньюмана в таблице пользователя,
и мы не выделяя Ряд Крамера в таблице мам
потому что ни одно существует в и sets-- в обеих таблицах.
>> Единственная информация, которая является общим между ними Джерри в обеих таблицах
и gcostanza в обеих таблицах.
И поэтому, когда мы делаем то SQL JOIN, то, что мы get-- и мы делаем на самом деле получить это.
Это своего рода временной переменной.
Это как гипотетическая Слияние двух таблиц.
Мы на самом деле что-нибудь как это, где
мы слились воедино столы на Информация, что они имеют в общем.
>> Так что users.username заметить и столбец moms.username,
это то же самое.
Это было информацию, согласуется с пользователей
стол и стол мамы.
И поэтому мы объединили их вместе.
Мы отброшены Крамер, потому что он не существует в таблице пользователей,
и мы отказались Ньюман, потому что он не существует в таблице мам.
Так что это гипотетический слияние с помощью операции соединения из SELECT.
>> А потом мы искали для Полное имя пользователя и мать пользователя,
и таким образом, это информация, которая мы хотели бы получить от общего запроса
что мы сделали с SELECT.
Таким образом, мы присоединились к таблицы вместе и мы извлекли эти два столбца,
и так это то, что мы хотели бы получить.
Но SQL JOIN и своего рода сложным.
Вы, вероятно, не будет делать им слишком много, но только иметь некоторое представление о скелете
что вы могли бы использовать, чтобы объединить два столы вместе, если вам нужно.
Последние два являются немного проще я обещаю.
Так обновлении, мы можем использовать UPDATE изменить информацию в таблице.
Общий формат обновить некоторые стол, установить некоторые колонки до некоторого значения
Где некоторые предикат выполняется.
Так, например, мы могли бы обновить таблицу пользователи
и установить пароль для болтовня йада, где идентификационный номер 10.
>> Таким образом, в этом случае, мы обновление таблицы пользователей.
Идентификационный номер 10 для что первая строка есть,
и мы хотим, чтобы обновить пароль для болтовня.
И вот что случится.
Это довольно просто, не так ли?
Это просто очень простой модификация таблицы.
>> DELETE является операция, чтобы мы использовали удалить информацию из таблицы.
DELETE FROM таблица, в которой некоторые предикат выполняется.
Мы хотим, чтобы удалить из Таблица пользователи, например
где имя пользователя является Ньюман.
Вы, наверное, можете догадаться, что собирается произойдет здесь после выполнения SQL, что
запрос, Ньюман ушел из-за стола.
>> Таким образом, все эти операции, как я уже сказал, очень легко сделать в PhpMyAdmin.
Это удобный интерфейс очень удобно.
Но это требует ручного труда.
Мы не хотим, чтобы использовать ручной усилия.
Мы хотим, чтобы наши программы на сделать это для нас, не так ли?
Таким образом, мы, возможно, захотите сделать это программно.
Мы хотим, чтобы включить SQL и есть что-то еще, чтобы сделать это для нас.
>> Но то, что мы видели, что позволяет нам программно что-то сделать?
Мы видели PHP, верно?
Он вводит некоторые динамизм в наших программах.
И так к счастью, SQL и PHP играть очень хорошо вместе.
Там это функция в PHP называется запрос, который может быть использован.
И вы можете пройти как Параметр или аргумент
запрашивать SQL-запрос, который Вы хотели бы выполнить.
И PHP сделает это от вашего имени.
>> Так после того как вы подключены к базе данных с PHP,
есть два праймериз вы делаете это.
Там что-то называется MySQLi и то, что называется PDO.
Мы не будем вдаваться в огромный количество деталей там.
В CS50 мы используем PDO.
После подключения к вашей базе данных, вы
то может делать запросы к базе данных при прохождении запросов в качестве аргументов
в PHP функций.
И когда вы это сделаете, вы хранить Результирующий набор в ассоциативном массиве.
>> И мы знаем, как работать с ассоциативные массивы в PHP.
Так что я, возможно, что-то сказать как this-- $ results--
это в PHP-- равна запрос.
И тогда внутри из Функция запроса, аргумент
что я передаю запросить который выглядит как SQL.
И в самом деле, что это SQL.
Это строка запроса, что я бы хотел выполнить на моей базе данных.
>> И так в красный, это PHP.
Это SQL, что я интеграции в PHP путем
это аргумент функции запроса.
Я хочу, чтобы выбрать из FullName пользователи, где идентификационный номер составляет 10.
И тогда, может быть, после того, как я сделал это, Я мог бы сказать что-то вроде этого.
Я хочу, чтобы распечатать ворота сообщение Спасибо за вход в.
>> И я хочу его interpolate-- Я хочу интерполировать $ FullName результаты.
И вот как я работаю с этим Ассоциативный массив, что я вернулся.
$ FullName бы результаты в основном в конечном итоге распечатки,
спасибо за входа в систему, Джерри Seinfeld.
Это было полное имя где idnum равна 10.
>> А так все, что я делаю является Я now-- я сохранил
мой запрос, результаты запроса моей и результаты в виде ассоциативного массива,
и FullName это имя столбец я получаю за.
Так что мой ключ в результатах Ассоциативный массив, что я хочу.
Так что спасибо за входа в $ Результаты, FullName будет распечатать, будет придерживаться
прямо между теми кудрявых брекеты, Джерри Seinfeld.
И я хотел, чтобы распечатать сообщение Спасибо за вход в Джерри Seinfeld.
>> Теперь, мы, вероятно, не хотите, чтобы трудно код вещи, как, что в, правильно?
Мы могли бы сделать что-то вроде печати е, где мы можем заменить и, возможно,
собирать различную информацию, или, может быть, есть процесс запроса
различная информация.
И так запрос, функция запроса имеет это понятие рода замен
очень похож на печать е процентов с и процент С, вопросительные знаки.
>> И мы можем использовать вопрос знаки очень аналогично
печатать е подставить переменных.
Так, может быть, ваш пользователь регистрируется в ранее, и вы сохранили свой идентификационный номер пользователя
$ _SESSION в PHP супер глобальный идентификатор ключа.
Так, может быть, после того как они вошли в систему, установить $ _SESSION ID равен 10,
Экстраполируя на примере мы только что видели секунду назад.
>> И поэтому, когда мы на самом деле выполнить Этот запрос результаты в настоящее время,
было бы подключить 10, или что-то идентификатор значение $ _SESSION есть.
И так, что позволяет нам быть немного более динамичным.
Мы не жесткого кодирования вещи в больше.
Мы экономим информации где-то и то
мы можем использовать эту информацию, чтобы снова вроде обобщить то, что мы хотим сделать,
и просто подключите и изменения поведение нашей странице
на чем основана идентификационного номера пользователя на самом деле после того, как они вошли.
Это также возможно, хотя, что ваши результаты установлено
может состоять из нескольких строк.
В этом случае, у вас есть массив arrays--
массив ассоциативных массивов.
И нужно просто повторять через него.
И мы знаем, как для перебора в массиве в PHP, верно?
Так вот, наверное, самая Комплекс, что мы видели до сих пор.
Это на самом деле объединяет трех языках вместе.
>> Здесь, в красный, это какая-то HTML.
Я, видимо, это starting-- фрагмент какой-то HTML, что у меня есть.
Я начинаю новый пункт, что Говорит мам Seinfeld телевизора.
А потом сразу же после Я начинаю таблицу.
А потом, после этого, я есть PHP, верно?
У меня все это PHP код там.
Я, видимо, собирается сделать запрос.
И сделать запрос, я собираюсь быть с помощью выбора матерей от мам.
>> Так что это getting-- это SQL.
Таким образом, синий является SQL.
Красный мы увидели секунду назад был HTML.
И вот зеленый PHP.
Так что я делаю запрос в моей базе данных, я
выбора всех матери в таблице мам.
Не только сузив его до частности ряд, я прошу всех из них.
>> Затем я проверяю, если результат не равно равняется ложь.
Это просто мой способ проверки своего рода из, если результаты не равен нулю,
что мы хотели бы видеть C, например.
В основном это просто проверка, чтобы уверен, что он на самом деле получил данные обратно.
Потому что я не хочу, чтобы начать печать из данных, если я не получил каких-либо данных.
Тогда для каждого результатов В результате Еогеасп синтаксис с PHP, все, что я делаю
печатает из $ результат матерей.
И поэтому я иду, чтобы получить набор всех матерей each--
это массив ассоциативных arrays-- и я печатаю
каждый из а собственной строке таблицы.
И это действительно очень много всего, что нужно сделать.
Я знаю, что это немного немного здесь происходит
В этом последнем примере с массивами arrays-- массивы ассоциативных массивов.
Но на самом деле это просто кипятить вниз в SQL, чтобы сделать запрос,
обычно выбирая после того как мы уже разместить информацию в таблице,
а затем просто потянув его.
>> И это мы вытащить его в этом конкретном случае.
Мы извлекаем бы все лица матери из таблицы мам.
Мы получили целый набор из них, и мы хочу для перебора и распечатать
каждый.
Итак, еще раз, это, вероятно, наиболее сложный пример
мы видели, потому что мы смешивания трех разные языки вместе, верно?
>> Опять же, у нас есть HTML здесь, в красный, смешанная с SQL здесь в синий,
смешанная с PHP в зеленый.
Но все они играют красиво вместе, это
просто вопрос разработки хорошие привычки, так что вы можете получить
им работать вместе, как вы хотите.
И единственный способ, чтобы действительно сделать что это практика, практика, практика.
Я Дуг Ллойд, это CS50.