ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.05.2024

Просмотров: 62

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

вставить в таблицю Persons рядок, в якому значення прізвища ( last_name ) і дати народження ( bday ) будуть задані відповідно як "Іванов" і "1934".

Наприклад:

mysql> INSERT INTO Artifacts (author)

SELECT id FROM Persons

WHERE last_name='Иванов'

AND bday='1934';

вставить в таблицю Artifacts в полі "автор" ( author ) значення ідентифікатора, вибраного з таблиці Persons по умові, що прізвище людини Іванов і рік народження 1934.

Діють наступні угоди.

Якщо не вказаний список стовпців для INSERT... VALUES або INSERT... SELECT, то величини для всіх стовпців повинні бути визначені в списку VALUES() або в результаті роботи SELECT . Якщо порядок стовпців в таблиці невідомий, для його отримання можна використовувати DESCRIBE ім’я_таблиці.

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

Вираз expression може відноситися до будь-якого стовпця, який раніше був внесений в список значень. Наприклад, можна вказати наступне:

mysql> INSERT INTO ім’я_таблиці (col1,col2) VALUES(15,col1*2);

Ми ще не обговорили три необов'язкові параметри, присутні у всіх трьох формах команди: LOW_PRIORITY, DELAYED і IGNORE.

Параметри LOW_PRIORITY і DELAYED використовуються, коли з таблицею працює велике число користувачів. Вони наказують встановлювати пріоритет даної операції перед операціями інших користувачів. Якщо указується ключове слово LOW_PRIORITY, то виконання даної команди INSERT буде затримано до тих пір, поки інші клієнти не завершать читання цієї таблиці. В цьому випадку клієнт повинен чекати, поки дана команда вставки не буде завершена, що у разі інтенсивного використовування таблиці може зажадати значний час. В протилежність цьому команда INSERT DELAYED дозволяє даному клієнту продовжувати операцію зразу ж, незалежно від інших користувачів.

Якщо в команді INSERT указується ключове слово IGNORE, то всі рядки, що мають ключі PRIMARY або UNIQUE, що дублюються, в цій таблиці, будуть проігноровані і не внесені в таблицю. Якщо не указувати IGNORE, то дана операція вставки припиняється при виявленні рядка, що має значення існуючого ключа, що дублюється.


9 Оператор update

Синтаксис:

UPDATE [LOW_PRIORITY] [IGNORE] ім’я_таблиці

SET ім’я_столбца1=вираз1 [, ім’я_столбца2=вираз2 ...]

[WHERE where_definition]

[LIMIT число]

Оператор UPDATE оновлення значення існуючих стовпців таблиці відповідно до введених значень. У виразі SET указується, які саме стовпці слід модифікувати і які величини повинні бути в них встановлені. У виразі WHERE, якщо воно присутнє, задається, які рядки підлягають оновленню. В решті випадків обновляються всі рядки. Якщо заданий вираз ORDER, то рядки обновлятимуться у вказаному в ньому порядку.

Якщо указується ключове слово LOW_PRIORITY, то виконання даної команди UPDATE затримується до тих пір, поки інші клієнти не завершать читання цієї таблиці.

Якщо указується ключове слово IGNORE, то команда оновлення не буде перервана, навіть якщо виникне помилка дублювання ключів. Рядки, через які виникають конфліктні ситуації, оновлені не будуть.

Якщо у виразі, який задає нове значення стовпця, використовується ім'я цього поля, то команда UPDATE використовує для цього стовпця його поточне значення. Наприклад, наступна команда встановлює стовпець death_date в значення, на одиницю більше його поточної величини:

mysql> UPDATE Persons SET death_date=death_date+1;

У версії MySQL 3.23 можна використовувати параметр LIMIT #, щоб переконатися, що була змінена тільки задана кількість рядків.

Наприклад, така операція замінить в першому рядку нашої таблиці експонатів назву title на рядок "Лампова ЕОМ":

mysql> UPDATE Artifacts SET title='Лампова ЕОМ' Limit 1;

10 Оператор delete

Оператор DELETE видаляє з таблиці ім’я_таблиці рядки, що задовольняють заданим в where_definition умовам, і повертає число видалених записів.

Якщо оператор DELETE запускається без визначення WHERE, то віддаляються всі рядки.

Синтаксис:

DELETE [LOW_PRIORITY] FROM ім’я_таблиці

[WHERE where_definition]

[LIMIT rows]

Наприклад, наступна команда видалить з таблиці Persons всі записи, у яких поле "рік народження" ( bday ) більше 2003:

mysql> DELETE FROM Persons WHERE bday>2003;

Видалити всі записи в таблиці можна ще і за допомогою такої команди:

mysql> DELETE FROM Persons WHERE 1>0;

Але цей метод працює набагато повільніше, ніж використовування тієї ж команди без умови:

mysql> DELETE FROM Persons;

Специфічна для MySQL опція LIMIT для команди DELETE указує серверу максимальну кількість рядків, які слід видалити до повернення управління клієнту. Ця опція може використовуватися для гарантії того, що дана команда DELETE не зажадає дуже багато часу для виконання.


Висновок

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

Контрольні питання

  1. Дайте визначення бази даних.

  2. Дайте визначення реляційної бази даних.

  3. Що таке ключ відношення? Наведіть приклад.

  4. Що таке індекс? В чому його призначення?

  5. Що представляє собою СУБД MySQL?

  6. Назвіть відомі вам оператори MySQL.

  7. Опишіть призначення і механізми роботи названих операторів.

16


Смотрите также файлы