Контакти

Основи SQL для початківців з уроками. SQL SELECT і запити на вибірку даних Запити в запиті sql select

Для зчитування даних з бази даних і виведення їх на Web-сторінці РНР-сценарій повинен виконати три операції. По-перше, сценарій повинен встановити з'єднання з СУБД за допомогою виклику вбудованої функції з'єднання з базою даних, наприклад, функції mysql_connect (), яка дозволяє встановити з'єднання з СУБД MySQL. По-друге, сценарій повинен за встановленим з'єднанню з СУБД відправити запит за допомогою вбудованої функції відправки SQL-запиту, наприклад, функції mysql_query (), яка дозволяє PHP-сценарієм передавати на виконання СУБД оператори SQL. По-третє, після приміщення СУБД результатів запиту у вихідний буфер Web-сервера сценарій повинен вважати дані з буфера і вивести їх на Web-сторінці. Наприклад, при роботі з MySQL сценарій може використовувати вбудовану функцію mysql_fetch_array (), яка зчитує рядок результатів SQL-запиту з буфера СУБД і поміщає значення стовпців рядка в масив елементів. Потім, сценарій може виконати оператор echo або викликати функцію print () для виведення значень полів таблиці бази даних на Web-сторінку.

Припустимо, наприклад, що використовується СУБД MySQL і в HTML-таблиці на Web-сторінці необхідно вивести дані з SQL-таблиці з ім'ям «Продукти», що міститься в базі даних «Товари». Перш за все, потрібно здійснити телефонний дзвінок функції mysql_connect () наступного вигляду:

$ Link \u003d mysql_connect ($ db_host, $ db_user, $ db_pass);

$ Db_host містить рядок "localhost" (якщо сервер MySQL знаходиться на тому ж комп'ютері, що і Web-сервер) або рядок з IP-адресою комп'ютера, де знаходиться сервер MySQL, з яким необхідно встановити з'єднання. (Для отримання IP-адреси сервера MySQL потрібно зв'язатися з Internet-провайдером.) Решта два аргументи, $ db_user і $ db_pass, містять ім'я користувача і пароль, необхідні функції mysql_connect () для встановлення з'єднання з СУБД MySQL. При роботі з СУБД MySQL з аргументами, встановленими за замовчуванням, увійти в базу даних можна з ім'ям користувача $ db_user \u003d "root" і паролем $ db_pass \u003d "password".

Інструкція з функцією mysql_connect () присвоює змінної $ link ідентифікатор з'єднання з СУБД або значення false, якщо спроба встановити з'єднання не вдалася. Оскільки час від часу трапляються помилки, за допомогою оператора if потрібно перевірити значення змінної $ link, і в разі необхідності виведіть на екран повідомлення про помилку. Якщо спроба встановлення з'єднання завершується успішно, для вибору бази даних з таблицями, дані яких будуть зчитуватися в запиті, можна скористатися викликом функції, наведеними в наступному прикладі:

if (! mysql_select_db ($ db_name, $ link)

// Інструкції, обробні випадок невдалої спроби

// використання бази даних

// Обробка після успішної установки з'єднання і вибору

// бази даних

Сервер MySQL, як правило, підтримує кілька баз даних, тому потрібно вибрати базу даних, яка містить потрібні таблиці. У наведеному прикладі $ db_name містить рядок "Товари", a $ link - ідентифікатор з'єднання з базою даних, повернутий функцією mysql_connect (). Як і раніше, необхідно перевірити дані, які повертаються PHP-функцією (в даному прикладі функцією mysql_select_db ()), щоб переконатися, що вибір бази даних був виконаний успішно. Функція mysql_select_db () повертає true при успішному виборі бази даних і false - в протилежному випадку.

Після успішної установки з'єднання з СУБД MySQL і вибору бази даних для виконання запиту потрібно викликати функцію mysql_query (), як показано в наступному прикладі:

$ Result \u003d mysql_query ($ query, $ link);

У наведеному прикладі, в якому прочитується вміст таблиці products, аргумент $ query містить SQL-команду:

SELECT * FROM Продукти ORDER BY назву

Як і раніше, параметр $ link містить ідентифікатор з'єднання з базою даних, повернутий успішно виконаної функцією mysql_connect (), виклик якої знаходиться в початку сценарію. Функція mysql_query () повертає false (якщо СУБД з якоїсь причини не змогла виконати переданий їй SQL-оператор) або покажчик на місце, куди СУБД помістила результати виконання запиту.

Для зчитування результатів запиту (т. Е. Рядків даних, які запит вибрав з таблиці products) потрібно кілька разів викликати функцію mysql_fetch_array () для зчитування всіх рядків результатів запиту і збереження їх в масиві. Потім потрібно вивести дані з масиву на Web-сторінку. Наприклад, наступний сценарій витягує кількість полів (повернутих в результатах запиту), їх імена і типи, і виводить значення стовпців, що містяться в результатах запиту, у вигляді HTML-таблиці, яку сценарій створює на Web-сторінці:

// Визначити кількість полів, повернутих в результаті запиту

$ Fields \u003d mysql_num_f ields ($ result);

// Почати визначення HTML-таблиці

echo "

" ;

// Вивести на екран назви стовпців у вигляді заголовків

// HTML-таблиці

echo "

";

for ($ i \u003d 0; $ i< $fields; $i++)

echo "

";

$ FieldType [$ i] \u003d mysql_field_type ($ result, $ i);

echo "

";

// Вивести в HTML-таблиці результати запиту

while ($ array \u003d mysql_fetch_array ($ result))

echo "

";

for ($ i \u003d 0; $ i< $fields; $i ++)

if ($ fieldType [$ i]<> "String")

echo "

";

echo "

";

echo "

". Mysql_field_name ($ result, $ i)."
";

echo "

" ;

echo "$ array [$ i]

";

Сценарій виводить на екран назви стовпців, повернутих запитом, у вигляді заголовків стовпців таблиці, а самі результати запиту поміщаються в рядки таблиці.

завдання

Створити базу даних в програмі Devart dbForge Studio for MySQL відповідно до варіанта завдання (табл. 1). Написати програму на мові PHP, яка зчитує дані з цієї бази і відображає їх у вигляді таблиці (рис.1).

Програма повинна бути збережена в файлі "d: \\ server \\ www \\ index.php". База даних повинна знаходитися в директорії "d: \\ server \\ mysql \\ data". Запускати програму з браузера, ввівши URL-адресу "http: // localhost".

Таблиця 1 - Варіанти завдань

варіант завдання
Паспортний стіл. Таблиця повинна мати наступні реквізитами. - № паспорта (обов'язкове поле); - ПІБ (обов'язкове поле); - Дата народження (обов'язкове поле); - Дата видачі паспорта (обов'язкове поле); - адреса; - телефон.
Автосалон. Таблиця повинна мати наступні реквізитами. - Фірма-виробник (обов'язкове поле); - модель машини (обов'язкове поле); - об'єм двигуна; - поточна вартість; - ознака наявності в продажу;
Бібліотека. - Інвентарний номер книги (обов'язкове поле); - Автор (обов'язкове поле); - Назва (обов'язкове поле); - Вартість (обов'язкове поле); - Жанр; - Дата надходження до бібліотечного фонду.
Автовокзал. - Номер рейсу (обов'язкове поле); - Пункт відправлення (обов'язкове поле); - Пункт прибуття (обов'язкове поле); - Час прибуття на дану станцію (обов'язкове поле); - Час відправлення (обов'язкове поле);
Тварини заповідника - Назва тваринного (обов'язкове поле); - Чисельність; - Занесено чи в червону книгу (обов'язкове поле); - Середня тривалість життя;
Відтак - Назва фільму (обов'язкове поле); - Режисер (обов'язкове поле); - Рік випуску; - Жанр; - Короткий опис;
ЖЕК - № ЖЕКу (обов'язкове поле); - Начальник (обов'язкове поле); - Чисельність персоналу; - Кількість обслуговуваних квартир (обов'язкове поле); - Кількість ремонтних бригад;
Предмети у ВНЗ - Назва (обов'язкове поле); - Лектор (обов'язкове поле); - Кафедра; - Кількість годин (обов'язкове поле); - Ознака іспит або залік;
Прайс-лист - Категорія (обов'язкове поле) (напр., Материнська плата, процесор і т.д.); - Код товара (обов'язкове поле); - Фірма-виробник (обов'язкове поле); - Назва товару (обов'язкове поле); - Ціна (обов'язкове поле); - Ознака наявності в продажу (обов'язкове поле);
Меню - Назва страви (обов'язкове поле); - Вага / об'єм страви (обов'язкове поле); - Ціна (обов'язкове поле); - Час приготування; - Наявність в даний момент (обов'язкове поле);

Оператор мови SQL SELECT призначений для запитів на вибірку даних з бази даних. Він може бути використаний як без умов (вибір всіх рядків у всіх шпальтах або всіх рядків в певних шпальтах), так і з численними умовами (вибір певних рядків), які задані в секції WHERE. Ознайомимося із засобами SQL, якими можна задавати ці умови на вибірку даних, а також дізнаємося, як використовувати оператор SELECT в підзапитах.

SELECT для вибору стовпців таблиці

Запит з оператором SELECT для вибору всіх стовпців таблиці має наступний синтаксис:

SELECT * FROM ім'я_таблиці

Тобто для вибору всіх стовпців таблиці після слова SELECT потрібно ставити зірочку.

Приклад 1. Є база даних фірми - Company. У ній є таблиця Org (Структура фірми) і Staff (Співробітники). Потрібно вибрати з таблиць усі стовпці. Відповідний запит для вибору всіх стовпчиків з таблиці Org виглядає наступним чином:

SELECT * FROM ORG

Цей запит поверне наступне (для збільшення картинки клацнути по ній лівою кнопкою миші):

Запит для вибору всіх стовпчиків з таблиці Staff виглядає наступним чином:

SELECT * FROM STAFF

Цей запит поверне наступне:


Для вибору певних стовпців таблиці нам буде потрібно замість зірочки перерахувати через кому назви всіх стовпців, які потрібно вибрати:

SELECT ВИБІРАЕМИЕ_СТОЛБЦИ FROM ім'я_таблиці

Приклад 2. Нехай потрібно з таблиці Org вибрати стовпці Depnumb і Deptname, в яких містяться дані відповідно про номери відділів фірми і про їхні назви. Запит для отримання такої вибірки буде наступним:

SELECT DEPNUMB, DEPTNAME FROM ORG

А з таблиці Staff потрібно вибрати стовпці DEPT, NAME, JOB, в яких містяться відповідно дані про номер відділу, в якому працює співробітник, його імені та посади:

SELECT DEPT, NAME, JOB FROM STAFF

Для вибору певних рядків таблиці разом з оператором SELECT вже потрібно ключове слово WHERE, яке вказує на деяке значення або кілька значень, що містяться в цікавлять нас рядках. Найбільш прості умови задаються за допомогою операторів порівняння та рівності (, \u003d), а також ключового слова IS. Умов може бути кілька, тоді вони перераховуються з використанням ключового слова AND. Запити для вибору рядків мають наступний синтаксис:

Приклад 4. У попередньому прикладі ми вибирали рядки з таблиці тільки за значенням одного стовпчика - DEPT. Нехай тепер потрібно вибрати дані про співробітників, які працюють в 38-му відділі і посаду яких - службовець (Clerk). Для цього в секції WHERE відповідні значення потрібно перерахувати з використанням слова AND:


Приклад 5. Нехай потрібно вибрати з таблиці Staff ідентифікатори та імена тих співробітників, розмір комісії яких - невизначений. Для цього в секції WHERE перед зазначенням значення стовпця COMM - NULL потрібно ставити не знак рівності, а слово IS:

Цей запит поверне наступні дані:


Для вказівки значень в рядках, які потрібно вибрати, використовуються і знаки порівняння.

Використання SELECT і предикатів IN, OR, BETWEEN, LIKE

Предикати - слова IN, OR, BETWEEN, LIKE в секції WHERE - також дозволяють вибрати певні діапазони значень (IN, OR, BETWEEN) або значення в рядках (LIKE), які потрібно вибрати з таблиці. Запити з предикатами IN, OR, BETWEEN мають наступний синтаксис:

Запити з предикатом LIKE мають наступний синтаксис:

Приклад 7. Нехай потрібно вибрати з таблиці Staff імена, посади і число відпрацьованих років співробітників, що працюють в відділах з номерами 20 або 84. Це можна зробити наступним запитом:

Результат виконання запиту:


Приклад 8. Нехай тепер потрібно вибрати з таблиці Staff ті ж дані, що і в попередньому прикладі. Запит зі словом OR аналогічний запитом зі словом IN і перерахуванням цікавлять значень в дужках. Запит буде наступним:

Приклад 9. Виберемо з тієї ж таблиці імена, посади і число відпрацьованих років співробітників, зарплата яких між 15000 і 17000 включно:

Результат виконання запиту:


Предикат LIKE використовується для вибірки тих рядків, в значеннях яких зустрічаються символи, зазначені після предиката між апострофами ( ").

Приклад 10. Виберемо з тієї ж таблиці імена, посади і число відпрацьованих років співробітників, імена яких починаються з літери S і складаються з 7 символів:

Символ підкреслення (_) означає будь-який символ. Результат виконання запиту:


Приклад 11. Виберемо з тієї ж таблиці імена, посади і число відпрацьованих років співробітників, імена яких починаються з літери S і містять будь-які інші літери в будь-якій кількості:

Символ відсотків (%) означає будь-яку кількість символів. Результат виконання запиту:


Значення, зазначені з використанням предикатів IN, OR, BETWEEN, LIKE можна інвертувати за допомогою слова NOT. Тоді запитувані дані будуть мати протилежний зміст. Якщо ми використовуємо NOT IN (20, 84), то будуть виведені дані співробітників, які працюють у всіх відділах, крім мають номери 20 і 84. З використанням NOT BETWEEN 15000 AND 17000 можна отримати дані співробітників, зарплата яких не входить в інтервал від 15000 до 17000. Запрос з NOT LIKE виведе дані співробітників, чиї імена не починаються або не містять символів, зазначених з NOT LIKE.

Написати SQL запити з SELECT і предикатами IN, NOT IN, BETWEEN самостійно, а потім подивитися рішення

Є база даних "Театр". Таблиця Play містить дані про постановках. Таблиця Team - про ролі акторів. Таблиця Actor - про акторів. Таблиця Director - про режисерів. Поля таблиць, первинні та зовнішні ключі можна побачити на малюнку нижче (для збільшення натиснути лівою кнопкою миші).


Приклад 12. Вивести список акторів, які не разу не були затверджені на головну роль. У таблиці team дані про головних ролях містяться в стовпці mainteam. Якщо роль - головна, то у відповідному рядку зазначено "Y".

SELECT і ORDER BY - сортування (впорядкування) рядків

Розбирання досі запити SQL SELECT повертали рядки, які могли бути розташовані в будь-якій послідовності. Однак часто потрібно впорядкувати рядки по порядку номерів, алфавітом і іншими ознаками. Для цього служить ключове словосполучення ORDER BY. Такі запити мають наступний синтаксис:

Приклад 15. Нехай вимагаєте вибрати з таблиці Staff співробітників, що працюють у відділі з номером 84 і впорядкувати (упорядкувати) записи по числу відпрацьованих років в зростаючому порядку:

Слово ASC вказує, що порядок сортування - зростаючий. Це слово не обов'язково, так як зростаючий порядок сортування застосовується за умовчанням. Результат виконання запиту:


Приклад 16. Нехай вимагаєте вибрати ті ж дані, що і в попередньому прикладі, але впорядкувати (упорядкувати) записи по числу відпрацьованих років в порядку спадання:

Слово DESC вказує, що порядок сортування - регресний. Результат виконання запиту:


SELECT і DISTINCT - видалення дублікатів рядків

Коли для значень рядків таблиці не задано умова унікальності, в результатах пошуку можуть зустрітися однакові рядки. Часто потрібно вивести лише унікальні рядки. Це робиться за допомогою виразу DISTINCT після оператора SELECT.

Приклад 17. Нехай требуетcя дізнатися, які існують відділи і які посади серед відділів, номера яких менше 30. Це можна зробити за допомогою наступного запиту:

Результат виконання запиту:


Оператор SELECT в підзапитах SQL

До сих пір ми розбирали конструкції SQL з оператором SELECT, в яких умови, за якому вибираються дані, і самі обрані дані містяться в одній і тій же таблиці бази даних. На практиці часто буває, що дані, які треба вибрати, містяться в одній таблиці, а умови - в інший. Тут на допомогу приходять підзапити: значення умови відбору повертаються з іншого запиту (вкладеного запиту), що починається також з SELECT. Запити з підзапитах можуть видавати як одну, так і декілька рядків.

Приклад 18. Всі ті ж таблиці ORG і STAFF. Нехай требуетcя дізнатися, в якому підрозділі працює співробітник з ідентифікаційним номером 280, і де це підрозділ розташований. Але інформація про підрозділи зберігається в таблиці ORG, а інформація про співробітників - в таблиці STAFF. Це можна зробити за допомогою наступного запиту з підзапитом, в якому зовнішній SELECT звертається до таблиці ORG, а внутрішній SELECT - до таблиці STAFF:

Результат виконання запиту:


Приклад 19. Нехай тепер требуетcя дізнатися, в яких підрозділах (без дублювання) працюють співробітники з заробітною платою менше 13000. Для цього в секції WHERE зовнішнього SELECT (запит до таблиці ORG) задається умова, яка набирає діапазон значень (IN), а внутрішній SELECT (до таблиці STAFF ) як раз повертає необхідний діапазон значень:

Реляційні бази даних і мова SQL

Будь-яка таблиця має своє логічне початок і свій логічний кінець. Так само будь-яка таблиця складається з даних, які за часту, а у випадку з базами даних в більшій мірі, розташовані в розкид. Як зазначалося в першому записі відносно SQL і баз даних, дані можуть вноситися регулярно, протягом усього життєвого циклу баз даних. За цей час може бути внесений не один десяток даних. У SQL, як в іншому і у всіх комп'ютерних програмах, можна впорядковувати дані. Робиться це за коштами команди ORDER BY. Для даної команди існують два аргументу

  • ASC задає порядок по зростанню (від меншого до більшого)
  • DESC - по спадаючій (від більшого до меншого)
Взагалі в SQL за замовчуванням встановлено упорядкування за зростанням (від меншого до більшого).
Спробуємо впорядкувати таблицю боржників на прізвище - стовпець Sname - по спадаючій

Debtors

Num Month Year Sname City Address Penalty Debt
0001 Липень2012 ІвановСтавропольСтавропольська, 14891.00 50000
0002 грудень2019 КононовТатаркаЗаміська, 25419565.00 684068
0003 Травень2013 ЯмшінМихайловскСільська, 489868.00 165840
0004 Серпень2012 дебатиСтавропольЦентральна, 164659.00 46580
... ... ... ... ... ... ... ...
9564 Березень2015 УліеваДьомінМіжнародна, 1566846.00 435089
9565 Жовтень2012 ПавловаСтавропольВокзальна, 37685.00 68059
9566 січень2012 УрюпаМихайловскФонтанна, 191235.00 51238
9567 Листопад2017 ВальетовТатаркаВиїзна, 6513698.00 789654

виконуємо запит
SELECT *
FROM Debtors
ORDER BY Sname DESC;

Debtors

Num Month Year Sname City Address Penalty Debt
0003 Травень2013 ЯмшінМихайловскСільська, 489868.00 165840
9566 січень2012 УрюпаМихайловскФонтанна, 191235.00 51238
9564 Березень2015 УліеваДьомінМіжнародна, 1566846.00 435089
0004 Серпень2012 дебатиСтавропольЦентральна, 164659.00 46580
9565 Жовтень2012 ПавловаСтавропольВокзальна, 37685.00 68059
0002 грудень2019 КононовТатаркаЗаміська, 25419565.00 684068
0001 Липень2012 ІвановСтавропольСтавропольська, 14891.00 50000
9567 Листопад2017 ВальетовТатаркаВиїзна, 6513698.00 789654

Так само упорядкування може виконуватися і в группіруемих даних, по засобом команди. Але в такому випадку, команда ORDER BY в запиті повинна стояти останньою, тобто
SELECT *
FROM Debtors
GROUP BY Sname
ORDER BY Sname DESC;

Якщо ж в упорядковуваних полях є осередки з порожніми значеннями (NULL), то, в залежності від програм, що працюють з БД, такі осередки можуть розташовуватися або в кінці списку, або на початку.
Існує ще одна хитрість з виконання упорядкування даних. Розглянемо запит
SELECT Num, Year, Sname
FROM Debtors
ORDER BY 2 DESC;

Тут під двійкою мається на увазі порядковий номер стовпчика з рядка "SELECT Num, Year, Sname" і саме з цього стовпцю буде виконуватися ранжування по спадаючій в результаті

Debtors

Як видно, значення впорядкувати за стовпцем Year, де на початку списку пізніша дата.
Отже, упорядкування в SQL має ті ж принципи ранжирування, що і в будь-яких комп'ютерних програмах. Все залежить від адміністратора БД і його потреб в тій чи іншій інформації, яку він хоче отримати.



Зміст статті
1. Найпростіші MySQL запити
2. Прості SELECT (вибрати) запити
3. Прості INSERT (новий запис) запити
4. Прості UPDATE (перезаписати, дописати) запити
5. Прості DELETE (видалити запис) запити
6. Прості DROP (видалити таблицю) запити
7. Складні MySQL запити
8. MySQL запити і змінні PHP

1. Найпростіші SQL запити

1. Виведе список ВСІХ баз.

SHOW databases;
2. Чи виведе список ВСІХ таблиць в Базі Даних base_name.

SHOW tables in base_name;

2. Прості SELECT (вибрати) запити до бази даних MySQL

SELECT - запит, який вибирає вже існуючі дані з БД. Для вибору можна вказувати певні параметри вибору. Наприклад, суть запиту російською мовою звучить так - ВИБРАТИ такі-то колонки З такою-то таблиці ДЕ параметр такий-то колонки дорівнює значенню.

1. Вибирає ВСЕ дані в таблиці tbl_name.

SELECT * FROM tbl_name;
2. Чи виведе кількість записів в таблиці tbl_name.

SELECT count (*) FROM tbl_name;
3. Вибирає (SELECT) з (FROM) таблиці tbl_name ліміт (LIMIT) 3 записи, починаючи з 2.

SELECT * FROM tbl_name LIMIT 2,3;
4. Вибирає (SELECT) ВСЕ (*) записи з (FROM) таблиці tbl_name і сортує їх (ORDER BY) по полю id по порядку.

SELECT * FROM tbl_name ORDER BY id;
5. Обирає (SELECT) ВСЕ записи з (FROM) таблиці tbl_name і сортує їх (ORDER BY) по полю id в ЗВОРОТНОМУ порядку.

SELECT * FROM tbl_name ORDER BY id DESC;
6. Вибирає ( SELECT) ВСЕ (*) записи з ( FROM) таблиці users і сортує їх ( ORDER BY) полем id в порядку зростання, ліміт ( LIMIT) Перші 5 результатів.

SELECT * FROM users ORDER BY id LIMIT 5;
7. Вибирає всі записи з таблиці users, Де поле fname відповідає значенню Gena.

SELECT * FROM users WHERE fname \u003d "Gena";
8. Вибирає всі записи з таблиці users, Де значення поля fname починається з Ge.

SELECT * FROM users WHERE fname LIKE "Ge%";
9. Вибирає всі записи з таблиці users, де fname закінчується на na, І впорядковує записи в порядку зростання значення id.

SELECT * FROM users WHERE fname LIKE "% na" ORDER BY id;
10. Вибирає всі дані з колонок fname, lname з таблиці users.

SELECT fname, lname FROM users;

11. Припустимо у Вас в таблиці призначених для користувача даних є країна. Так от якщо Ви хочете вивести ТІЛЬКИ список зустрічаються значень (щоб, наприклад, Росія не відображалося 20 разів, а тільки один), то використовуємо DISTINCT. Виведе, з маси повторюваних значень Росія, Україна, Білорусь. Таким чином, з таблиці users колонки country будуть виведені ВСЕ УНІКАЛЬНІ значення

SELECT DISTINCT country FROM users;
12. Вибирає ВСЕ дані рядків з таблиці users де age має значення 18,19 і 21.

SELECT * FROM users WHERE age IN (18,19,21);
13. Вибирає МАКСИМАЛЬНЕ значення age в таблиці users. Тобто якщо у Вас в таблиці найбільше значення age(З англ. Вік) дорівнює 55, то результатом запиту буде 55.

SELECT max (age) FROM users;
14. Чи вибере дані з таблиці users по полях name і age ДЕ age приймає найменше значення.

SELECT name, min (age) FROM users;
15. Чи вибере дані з таблиці users полем name ДЕ id НЕ РАВЕН 2.

SELECT name FROM users WHERE id! \u003d "2";

3. Прості INSERT (новий запис) запити

INSERT - запит, який дозволяє СПОЧАТКУ вставити запис в БД. Тобто створює НОВУ запис (рядок) в БД.

1. Робить новий запис в таблиці users, у полі name вставляє Сергій, а в поле age вставляє 25. Таким чином, в таблицю дописується нова рядки з даними значеннями. Якщо колонок більше, то вони залишилися залишаться або порожніми, або з встановленими за замовчуванням значеннями.

INSERT INTO users (name, age) VALUES ( "Сергій", "25");

4. Прості UPDATE запити до бази даних MySQL

UPDATE - запит, який дозволяє перезаписати значення полів або дописати щось в уже існуючій рядку в БД. Наприклад, є готова рядок, але в ній потрібно перезаписати параметр віку, так як він змінився з часом.

1. У таблиці users age стає 18.

UPDATE users SET age \u003d "18" WHERE id \u003d "3";
2. Все те ж саме, що і в першому запиті, просто показаний синтаксис запиту, де перезаписувати два поля і більше.
В таблиці users ДЕ id дорівнює 3 значення поля age стає 18, а country Росія.

UPDATE users SET age \u003d "18", country \u003d "Росія" WHERE id \u003d "3";

5. Прості DELETE (видалити запис) запити до бази даних MySQL

DELETE - запит, який видаляє рядок з таблиці.

1. Видаляє рядок з таблиці users ДЕ id дорівнює 10.

DELETE FROM users WHERE id \u003d "10";

6. Прості DROP (видалити таблицю) запити до бази даних MySQL

DROP - запит, який видаляє таблицю.

1. Видаляє повністю таблицю tbl_name.

DROP TABLE tbl_name;

7. Складні запити до бази даних MySQL

Цікаві запити, які можуть стати в нагоді навіть досвідченим користувачам

SELECT id, name, country FROM users, admins WHERE TO_DAYS (NOW ()) - TO_DAYS (registration_date)<= 14 AND activation != "0" ORDER BY registration_date DESC;
Даний складний запит ВИБИРАЄ колонки id, name, country У таблицях users, admins ДЕ registration_date (Дата) не старші 14 днів І activation НЕ ДОРІВНЮЄ 0 , Сортувати за registration_date в зворотному порядку (нове на початку).

UPDATE users SET age \u003d "18+" WHERE age \u003d (SELECT age FROM users WHERE male \u003d "man");
Вище прикладів так званого запиту в запиті в SQL. Оновити вік серед користувачів на 18+, де стать - чоловіча. Подібні варіанти запиту не рекомендую. З особистого досвіду скажу, краще створити кілька окремих - вони будуть опрацьовуватися швидше.

8. Запити до бази даних MySQL і PHP

В MySQL запити в PHP сторінці можна вставляти змінні в якості порівнюваних і тп значень. пара прикладів

1. Вибирає всі записи з таблиці users, Де поле fname відповідає значенню змінної $ name.

SELECT * FROM users WHERE fname \u003d "$ name";
2. У таблиці users ДЕ id дорівнює 3 значення поля age змінюється на значення змінної $ age.

UPDATE users SET age \u003d "$ age" WHERE id \u003d "3";

Увага! Якщо Вам цікавий будь-якої ще приклад, то пишіть питання в коментарі!

видалення записів

Для видалення записів з таблиці застосовується оператор DELETE:

DELETE FROM ІмяТабліци WHERE умова;

Даний оператор видаляє з зазначеної таблиці записи (а не окремі значення стовпців), які задовольняють зазначеному умові. Умова - це логічний вираз, різні конструкції якого були розглянуті в попередніх лабораторних заняттях.

Наступний запит видаляє записи з таблиці Customer, в якій значення стовпця LName одно "Іванов":

DELETE FROM Customer

WHERE LName \u003d "Іванов"

Якщо таблиця містяться відомості про декілька клієнтів з прізвищем Іванов, то всі вони будуть видалені.

В операторі WHERE може перебувати підзапит на вибірку даних (оператор SELECT). Підзапити в операторі DELETE працюють точно так же, як і в операторі SELECT. Наступний запит видаляє всіх клієнтів з міста Москва, при цьому унікальний ідентифікатор міста повертається за допомогою підзапиту.

DELETE FROM Customer

WHERE IdCity IN (SELECT IdCity FROM City WHERE CityName \u003d "Москва")

Transact-SQL розширює стандартний SQL, дозволяючи використовувати в інструкції DELETE ще одну пропозицію FROM. Це розширення, в якому задається з'єднання, може бути використано замість вкладеного запиту в реченні WHERE для вказівки видаляються рядків. Воно дозволяє задавати дані з другого FROM і видаляти відповідні рядки з таблиці в першому реченні FROM. Зокрема попередній запит може бути переписаний наступним чином

DELETE FROM Customer

FROM Customer k INNER JOIN

Операція видалення записів з таблиці є небезпечною в тому сенсі, що пов'язана з ризиком необоротних втрат даних у разі семантичних (але не синтаксичних) помилок при формулюванні SQL-вирази. Щоб уникнути неприємностей, перед видаленням записів рекомендується спочатку виконати відповідний запит на вибірку, щоб переглянути, які записи будуть видалені. Так, наприклад, перед виконанням розглянутого раніше запиту на видалення не перешкодить виконати відповідний запит на вибірку.

SELECT *

FROM Customer k INNER JOIN

City c ON k.IdCity \u003d c.IdCity AND c.CityName \u003d "Москва"

Для видалення всіх записів з таблиці досить використовувати оператор DELETE без ключового слова WHERE. При цьому сама таблиця з усіма визначеними в ній стовпцями зберігається і готова для вставки нових записів. Наприклад, наступний запит видаляє записи про всі товари.

DELETE FROM Product

Завдання для самостійної роботи: Сформулюйте на мові SQL запит на видалення всіх замовлень, які не мають в складі жодного товару (т. Е. Все порожні замовлення).



Сподобалася стаття? поділіться їй