Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора_базова.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
541.18 Кб
Скачать
  1. Мова sql. Запит на оновлення. Використання співвіднесених запитів в запитах на оновлення.

Змінювати деякі або всі значення в існуючому рядку можна за допомогою команди UPDATE. Ця команда містить речення UPDATE, в якій вказано ім'я таблиці, що використовується, і речення SET, яке вказує на зміну яку потрібно зробити для певного стовпця.

Речення SET - це не предикат. Він може вводити порожні NULL значення так само, як він вводив значення не використовуючи якогось спеціального синтаксису (такого наприклад як IS NULL).

  1. Мова sql. Запит на знищення. Використання підзапитів в запитах на знищення.

Ви можете видаляти рядки з таблиці командою модифікації - DELETE. Вона може видаляти тільки введені рядки, а не індивідуальні значення полів, так що параметр поля є необов'язковим або недопустимим. Ви можете також використовувати підзапити в предикаті команди DELETE. Це дасть вам можливість визначати деякі досить складні критерії, щоб встановити, які рядки видалятимуться, що важливе, оскільки ви, звичайно ж, не схочете по необережності видалити потрібний рядок.

  1. Мова sql. Запит на додавання. Додавання результатів запиту.

Усі рядки в SQL вводяться з використанням команди модифікації ІNSERT. У найпростішій формі, ІNSERT використовує наступний синтаксис:

ІNSERT ІNTO <table name>

VALUES ( <value>, <value> . . .);

Ім'я таблиці, повинне бути попередньо визначено, у команді CREATE TABLE, а кожне значення пронумероване в речення значень, повинне збігатися з типом даних стовпця, у який воно вставляється.

Якщо вам потрібно ввести порожнє значення (NULL), ви вводите його так само як і звичайне значення. Оскільки значення NULL - це спеціальний маркер, а не просте символьне значення, він не включається в одиночні лапки.

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

  1. Мова sql. Об’єднання таблиць. Використання пропозиції union.

Ви можете помістити численні запити разом і об'єднати їх вивід використовуючи UNІON, об’єднує висновок двох або більш SQL запитів у єдиний набір рядків і стовпців. UNION автоматично виключає дублікати рядків з висновку. Це щось невластиве для SQL, оскільки одиночні запити звичайно містять DISTINCT, щоб усувати дублікати. Використання UNION ALL дає такі самі результати.

  1. Мова sql. Використання пропозицій any, all, some.

ANY, ALL і SOME нагадують EXІSTS, який сприймає підзапити як аргументи; однак вони відрізняються від EXІSTS тим, що використовуються разом з реляційними операторами. У цьому відношенні, вони нагадують оператор ІN, коли той використовується з підзапитами; вони беруть усі значення, виведені підзапитом, і обробляють їх як модуль. Однак, на відміну від ІN, вони можуть використовуватися тільки з підзапитами.

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

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

Любий запит який може бути сформульований з ANY (або, як ми побачимо, з ALL), міг бути також сформульований з EXІSTS, хоча навпаки буде невірно. Строго говорячи, варіант із EXІSTS не абсолютно ідентичний варіантам з ANY або з ALL через розходження в тім як обробляються порожні (NULL) значення. Але, з технічної точки зору, ми могли б робити це без ANY і ALL якби ми стали дуже спритні у використанні EXІSTSІS NULL).

Більшість користувачів, проте, знаходить ANY і ALL більш зручними у використанні, ніж EXISTS, який вимагає співвіднесених підзапитів. Крім того, залежно від реалізації, ANY і ALL можуть, принаймні в теорії, бути більш ефективними ніж EXISTS. Підзапити ANY або ALL можуть виконуватися один раз і мають висновок, що використовується щоб визначати предикат для кожного рядка основного запиту. EXISTS, з другого боку, бере співвіднесений підзапит, який вимагає, щоб весь підзапит повторно виконувався для кожного рядка основного запиту.

За допомогою ALL, предикат є вірним, якщо кожне значення вибране підзапитом задовольняє умові в предикаті зовнішнього запиту. ALL використовується в основному з нерівностями, ніж з рівністю, оскільки значення може бути "рівним для всіх" результатом підзапиту, тільки якщо всі результати фактично ідентичні.

Одна значна відмінність між ALL і ANY - спосіб дії за ситуації, коли підзапит не повертає ніяких значень. В принципі, всякий раз, коли допустимий підзапит не в змозі зробити висновок, ALL - автоматично вірний, а ANY автоматично неправильний.

Значення NULL також мають деякі проблеми з операторами на зразок цих. Коли SQL порівнює два значення в предикаті, одне з яких порожнє (NULL), то результат невідомий. Невідомий предикат, подібний невірному і є причиною того, що рядок не вибирається, але працювати він буде інакше в деяких схожих запитах, залежно від того, використовують вони ALL або ANY замість EXISTS.

Агрегатні функці можуть використовувати аргумент ALL - враховувати дублікати.

Відміність між ALL і * , коли вони використовуються с COUNT:

  • ALL використовує імя_поля, як аргумент.

  • ALL не може порахувати значення NULL.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]