1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [Крістофер Варфоломій] [HARVARD UNIVERSITY] 3 00:00:04,000 --> 00:00:06,000 [Це CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 Таким чином, програмісти використовують бази даних як інструмент для зберігання та впорядкування 5 00:00:11,620 --> 00:00:13,620 наші постійні дані в таблицях. 6 00:00:13,620 --> 00:00:18,960 Це означає, що ваші дані зберігаються на енергонезалежну медіан, таких як жорсткий диск, 7 00:00:18,960 --> 00:00:22,940 і навіть коли комп'ютер вимкнений, дані залишаються недоторканими. 8 00:00:22,940 --> 00:00:29,530 І, як програмісти, наші програми використовують бази даних для сценаріїв, таких як зберігання 9 00:00:29,530 --> 00:00:32,890 інформацію про користувачів з веб-форм, дивлячись інвентарю, 10 00:00:32,890 --> 00:00:36,210 або оновлення інформації про те, які сайти переглядів. 11 00:00:37,150 --> 00:00:40,070 Але як же ми насправді взаємодіють з нашої бази даних, 12 00:00:40,070 --> 00:00:43,150 або те, що ми використовуємо для читання, зберігання, видалення, 13 00:00:43,150 --> 00:00:46,070 і оновлювати наші дані у цих таблицях бази даних? 14 00:00:47,280 --> 00:00:49,700 Ну, відповідь у тому, що ми використовуємо спеціальний тип бази даних мови 15 00:00:49,700 --> 00:00:53,400 , Який взаємодіє безпосередньо з нашими таблицями бази даних. 16 00:00:53,400 --> 00:00:56,740 Це ім'я є Structured Query Language, 17 00:00:56,740 --> 00:00:58,740 [Мова структурованих запитів] 18 00:00:58,740 --> 00:01:00,740 або те, що я називаю SQL. 19 00:01:00,740 --> 00:01:05,100 >> Тепер [Se-Quel], або SQL, не є мовою програмування, 20 00:01:05,100 --> 00:01:08,580 але замість цього, це мова, яка надає стандартний набір команд 21 00:01:08,580 --> 00:01:13,520 отримувати та обробляти дані з різних систем управління базами даних. 22 00:01:13,520 --> 00:01:17,630 Для CS50, ми підемо на чотири основні команди: 23 00:01:17,630 --> 00:01:21,210 вибирати, вставляти, оновлювати і видаляти. 24 00:01:21,210 --> 00:01:26,230 Крім того, ми будемо використовувати інтерфейс бази даних веб званий PHPMyAdmin, 25 00:01:26,230 --> 00:01:29,890 які встановлені на пристрої, щоб написати нашу SQL заяви. 26 00:01:30,830 --> 00:01:33,050 Таким чином, щоб допомогти вам запам'ятати ці команди, 27 00:01:33,050 --> 00:01:37,080 Я навів деякі кекси в шафу, щоб допомогти з нашими сценаріями. 28 00:01:39,650 --> 00:01:42,210 Скажімо, у вас база даних кекс, в 29 00:01:42,210 --> 00:01:44,490 де ви зберігаєте всю інформацію про ваших кексів. 30 00:01:44,490 --> 00:01:48,220 Тепер, бази даних може містити безліч таблиць 31 00:01:48,220 --> 00:01:50,950 і самі таблиці можуть містити багато стовпців. 32 00:01:50,950 --> 00:01:57,020 Усередині бази даних наших кекс, у нас є таблиця під назвою cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 Ця таблиця буде використовуватися для зберігання всієї інформації про кексів 34 00:02:00,500 --> 00:02:02,990 що, ну, у вашій шафі. 35 00:02:02,990 --> 00:02:07,770 Стовпці, які знаходяться всередині вашої таблиці, являють собою атрибути кекс. 36 00:02:07,770 --> 00:02:14,560 Наприклад, колони cupcake_cupboard є 37 00:02:14,560 --> 00:02:15,920 Cake ID, CakeType, CakeColor, і CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 Це логічне типізований стовпець використовується, щоб визначити, торт добре чи не добре. 39 00:02:23,040 --> 00:02:26,560 Ми збираємося почати з написання оператора вибору. 40 00:02:26,560 --> 00:02:32,160 Вибрати звітність використовується для отримання даних з певної таблиці бази даних. 41 00:02:32,160 --> 00:02:34,890 У цьому випадку, ми хочемо знати все 42 00:02:34,890 --> 00:02:39,080 про всі кекси, які існують в нашому шафі. 43 00:02:39,080 --> 00:02:48,670 Синтаксис, щоб зробити це "Вибрати" Space Star, або *, простір від простору нашого столу, 44 00:02:48,670 --> 00:02:52,050 який cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 Давайте підемо далі і виконати це. 46 00:02:56,670 --> 00:03:00,140 >> Як ми бачимо, всі ці кекси в нашому шафі. 47 00:03:00,140 --> 00:03:05,110 Важливо відзначити, що *, або зірочку, це символ підстановки 48 00:03:05,110 --> 00:03:08,830 , Що означає збір всіх стовпців деякої таблиці. 49 00:03:08,830 --> 00:03:13,650 Як правило, ми можемо отримати доступ до певного або декількох стовпцях 50 00:03:13,650 --> 00:03:16,950 замінити * з фактичним ім'ям стовпця. 51 00:03:16,950 --> 00:03:21,220 Якщо ми хочемо декілька стовпців, але не всі ми можемо досягти цього 52 00:03:21,220 --> 00:03:25,620 шляхом написання імен стовпців розмежування кожному стовпці коми. 53 00:03:25,620 --> 00:03:28,620 Наприклад, давайте витягувати тільки CakeId і CakeType в cupcake_cupboard таблиці. 54 00:03:28,620 --> 00:03:38,370 Синтаксис, щоб зробити це: SELECT простору CakeID коми 55 00:03:38,370 --> 00:03:44,370 CakeType просторі від нашого столу, cupcake_cupboard. 56 00:03:44,370 --> 00:03:46,370 Давайте підемо далі і виконати це. 57 00:03:49,340 --> 00:03:52,670 І ось, тепер є тільки два стовпці ми визначили 58 00:03:52,670 --> 00:03:54,670 Для кожного кексу в нашому шафі. 59 00:03:54,670 --> 00:03:57,710 Ми також можемо вдосконалювати наші результати запиту, вказавши 60 00:03:57,710 --> 00:04:00,910 "Де" пункту відразу після імені таблиці. 61 00:04:02,000 --> 00:04:05,410 Наприклад, як видається, кекс в нашому шафі 62 00:04:05,410 --> 00:04:08,660 що це, ну, не так вже й хороший погляд. 63 00:04:08,660 --> 00:04:13,950 Давайте з'ясувати всі кекси в нашому шафі, які, ну, не так вже й приємні оку 64 00:04:13,950 --> 00:04:16,110 за допомогою "Де" застереження. 65 00:04:16,110 --> 00:04:26,390 Синтаксис, щоб зробити це: SELECT * простір простір від простору cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 простору, де простір нашому умовному колонка, в цьому випадку CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 і логічне значення False. 68 00:04:36,900 --> 00:04:42,750 Важливо відзначити, що якщо ви використовуєте рядки, ви повинні укласти його в одинарні лапки. 69 00:04:42,750 --> 00:04:49,620 Це вірно для всіх рядків в SQL, або, в термінах SQL бази даних, символи варіант 70 00:04:49,620 --> 00:04:51,620 відомий як Varchar тип даних. 71 00:04:51,620 --> 00:04:57,660 У цьому випадку ми використовуємо Правда чи Брехня, яка є логічне значення, а не рядок. 72 00:04:59,120 --> 00:05:00,660 Давайте йти вперед і виконати цю команду. 73 00:05:00,660 --> 00:05:05,340 >> І ось, це той випадок, що у нас 1 шоколадом 74 00:05:05,340 --> 00:05:07,920 Не так добре кекс в нашому шафі. 75 00:05:09,620 --> 00:05:11,460 Далі, ми збираємося написати заяву вставки. 76 00:05:11,460 --> 00:05:15,560 Вставити звітність використовується, щоб вставити або додати 77 00:05:15,560 --> 00:05:17,770 додаткові рядки даних в таблиці бази даних. 78 00:05:17,770 --> 00:05:23,160 Повернення до нашим сценарієм, давайте припустимо, що ми тільки що зробили новий кекс. 79 00:05:25,910 --> 00:05:30,080 Так як ми дуже організовано кекс їдців, ми будемо мати, щоб вставити нову кекс 80 00:05:30,080 --> 00:05:32,330 У нашому cupcake_cupboard таблиці. 81 00:05:32,330 --> 00:05:40,690 Синтаксис для цього полягає в наступному: Вставте в космос нашого столу, 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard, пробіл (, 83 00:05:46,830 --> 00:05:51,060 і тут ми вказуємо імена стовпців, розділених комами, 84 00:05:51,060 --> 00:05:59,790 CakeType розділені комами CakeColor CakeIsNice) простору. 85 00:05:59,790 --> 00:06:06,540 Після цього, ми пишемо просторі слово VALUES (і тут 86 00:06:06,540 --> 00:06:12,170 Ми введіть значення для кожного стовпця, відповідно, також розділених комами. 87 00:06:12,170 --> 00:06:17,830 Одинарні лапки, тому що вони всі Varchar значення ми оточимо їх в одинарні лапки, 88 00:06:17,830 --> 00:06:26,780 LIGHT "кома" арахісове масло Брауна коми True. 89 00:06:26,780 --> 00:06:30,480 Тепер важливо, щоб дати кожному рядку унікальний номер, щоб ідентифікувати себе. 90 00:06:30,480 --> 00:06:33,660 Автоінкрементом колонка подає це як 91 00:06:33,660 --> 00:06:37,410  "Немає двох однакових ідентифікаторів може існувати в цій таблиці." 92 00:06:37,410 --> 00:06:39,480 Давайте підемо далі і виконувати. 93 00:06:39,480 --> 00:06:45,380 Там ми йдемо, все організовано. 94 00:06:49,720 --> 00:06:52,100 >> Наступний оператор SQL, що ми будемо писати це оновлення заяві. 95 00:06:52,100 --> 00:06:55,650 Оновлення заява може бути використане для зміни даних в стовпці 96 00:06:55,650 --> 00:06:58,440 для будь-якої існуючої рядки в таблиці бази даних. 97 00:06:59,670 --> 00:07:03,420 Раніше в нашому сценарії, за допомогою оператора вибору, ми визначили кекс 98 00:07:03,420 --> 00:07:08,300 у таблиці наші cupcake_cupboard, чиї CakeIsNice значення було помилковим. 99 00:07:08,300 --> 00:07:12,050 Давайте припустимо, що в той час як наші арахісове масло кекс був в духовці, 100 00:07:12,050 --> 00:07:15,790 ми зробили наш не такий гарний кекс дуже добре. 101 00:07:18,020 --> 00:07:22,240 Будучи таким виключно організований, ми хочемо, щоб наш кекс з урахуванням цього значення 102 00:07:22,240 --> 00:07:24,240 У нашому cupcake_cupboard таблиці. 103 00:07:24,240 --> 00:07:28,710 Тому, давайте оновимо наш шоколад кекс в базу даних, щоб відобразити це. 104 00:07:28,710 --> 00:07:39,720 Синтаксис: UPDATE просторі нашого столу, cupcake_cupboard, космічні простори SET 105 00:07:39,720 --> 00:07:44,240 стовпець, який ми хочемо змінити, CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 Тоді тут ми розміщуємо наші нові значення Правда просторі. 107 00:07:49,210 --> 00:07:54,290 Тепер, оскільки ми не хочемо, щоб оновити всі рядки з цим значенням, 108 00:07:54,290 --> 00:07:57,400 Ми хочемо, щоб забезпечити "Де" пропозицію, яка буде визначити нами 109 00:07:57,400 --> 00:07:59,830 до точної рядки, які ми хочемо змінити. 110 00:07:59,830 --> 00:08:03,690 У цьому випадку, ми знаємо, що є тільки один кекс 111 00:08:03,690 --> 00:08:06,670 , Який має CakeIsNice значення False. 112 00:08:06,670 --> 00:08:11,030 Крім того, ми також гарантуємо, що ми оновлюємо потрібні рядки 113 00:08:11,030 --> 00:08:13,030 за допомогою «А» пункту. 114 00:08:14,340 --> 00:08:17,270 Ми використовуємо "і" положення, щоб удосконалити наш запит далі. 115 00:08:17,270 --> 00:08:20,380 У цьому випадку, тому що ми знаємо, що кекс шоколад, 116 00:08:20,380 --> 00:08:23,160 Ми будемо використовувати цей CakeType колонки. 117 00:08:23,160 --> 00:08:31,500 Де простір нашому умовному просторі колонки CakeIsNice простір = False, 118 00:08:31,500 --> 00:08:38,330 і простір CakeType = 'CHOCOLATE ». 119 00:08:38,330 --> 00:08:41,880 Таким чином, покласти все це разом, це оновлення йдеться в заяві 120 00:08:41,880 --> 00:08:44,670 знайти всі кекси в нашій кекс шафа, 121 00:08:44,670 --> 00:08:50,520 і якщо є кекс, стовпець CakeIsNice містить значення ЛОЖЬ 122 00:08:50,520 --> 00:08:54,130 і CakeType містить значення ШОКОЛАД, 123 00:08:54,130 --> 00:08:58,240 Ми хочемо, щоб оновити конкретні CakeIsNice рядків значення True. 124 00:08:58,240 --> 00:09:01,140 Отже, давайте йти вперед і виконати інструкцію. 125 00:09:03,860 --> 00:09:05,860 І тепер, ми організували. 126 00:09:06,650 --> 00:09:09,220 >> Всі ці розмови про кекси зробив мене трохи голодним. 127 00:09:09,220 --> 00:09:11,360 Я думаю, що повинно допомогти собі до одного. 128 00:09:11,360 --> 00:09:17,670 Але якби я насправді є цей кекс, я повинен принаймні також видалити своє існування 129 00:09:17,670 --> 00:09:19,670  cupcake_cupboard нашого столу. 130 00:09:20,650 --> 00:09:22,590 Для цього ми будемо використовувати кнопку "Видалити" заяву. 131 00:09:22,590 --> 00:09:27,400 "Delete" заява може бути використано, щоб видалити всі або деякі рядки з таблиці. 132 00:09:27,400 --> 00:09:29,920 Якщо ви хочете видалити деякі певні рядки з таблиці, 133 00:09:29,920 --> 00:09:34,360 Потім ви повинні надати "Де" пункт, таким чином вказавши колонки 134 00:09:34,360 --> 00:09:37,660 які повинні бути унікальними в рядок, яку ви хочете видалити. 135 00:09:37,660 --> 00:09:47,370 Це синтаксис: DELETE простору від космічного наш стіл, cupcake_cupboard, простір. 136 00:09:47,370 --> 00:09:51,760 Зараз, в цей момент, коли ви знаходитесь так далеко у своїй заяві видалення 137 00:09:51,760 --> 00:09:54,240 Ви хочете бути дуже обережним. 138 00:09:54,240 --> 00:09:59,970 Наприклад, якщо я хочу виконати цей запит як є, без надання деяких "Де" пункту 139 00:09:59,970 --> 00:10:04,500 Я б втратити всі дані в цій таблиці cupcake_cupboard, 140 00:10:04,500 --> 00:10:09,590 а тому, що я вже знаю, що мій торт ідентифікатори унікальні, я буду використовувати 141 00:10:09,590 --> 00:10:12,410 Червона ID торт Velvet для мого "Де" застереження. 142 00:10:14,550 --> 00:10:20,670 Де простір нашій колоні, CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 Тому що це ціле значення немає необхідності, щоб оточити її в одинарні лапки. 144 00:10:25,010 --> 00:10:27,020 Отже, давайте виконати інструкцію. 145 00:10:33,560 --> 00:10:35,990 Ну, тепер, коли ми знищили існування цього кексу 146 00:10:35,990 --> 00:10:40,360 cupcake_cupboard нашого столу, у нас є тільки одне ліве: 147 00:10:41,680 --> 00:10:43,680 Зробити це зникає. 148 00:10:43,680 --> 00:10:46,990 Я Крістофера Варфоломія. Це CS50.