[Грає музика] ДАГ Lloyd: У наших відео на тему веб-розробки, ми згадали поняття база даних кілька разів, вірно? Таким чином, база даних ви ймовірно, знайомі з з кажуть, використовуючи Microsoft Excel або Таблиці Google. Це насправді просто організована набір таблиць, рядків і стовпців. І база даних, де наш веб-сайт магазинів Інформація, що важливо для нашого сайту, щоб працювати належним чином. Знову ж таки, в насправді загальний приклад тут зберігає імена користувачів і паролі в базі даних, так що, коли користувач входить в наш веб-сайт, база даних може бути запитаний, щоб побачити якщо користувач існує в базі даних. І якщо вони є, перевірки того, що їх правильний пароль. І якщо їх правильний пароль, то ми можемо дати їм усе, що сторінка вони проханням. Так ви, ймовірно, знову ж таки, знайомі з цією ідеєю з Excel або Google Таблиці. У нас є бази даних, столи, ряди і стовпці. І це дійсно роду фундаментальної набору ієрархічної пробою тут. Так от таблиця Excel. І якщо ви коли-небудь відкрив це або іншої аналогічної програми Ви знаєте, що це ось rows-- 1, 2, 3, 4, 5, 6, 7. Ці колонки. Можливо, тут, хоча ви можете Не використовуйте цю опцію жахливо much-- Я масштабу in-- у нас є ця ідея листа. Так, може бути, ці листи, якщо Я чергувати назад і вперед, різні таблиці, існує в моїй базі даних. І якщо ми продовжимо приклад все шлях, ім'я цієї бази даних це Книга 1. Може бути, у мене є книга 2 і 3 книги. Таким чином, кожен файл Excel є бази даних, кожен лист являє собою таблицю, і всередині кожної таблиці у мене ця ідея з рядків і стовпців. Так як я працюю з цією базою даних? Як я можу отримати інформацію від нього? Ну є мова називається SQL-- які я зазвичай просто зателефонуйте Sequel-- і це коштує для Мова Структурованих Запитів. І це мова програмування, але це досить обмежений програмування мова. Це не зовсім, як і інші що ми працювали з. Але мета цього мова програмування це запит до бази даних, щоб запитаєте інформацію з бази даних, знайти інформацію в бази даних, і так далі. Ми також, в 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.