Ноу Інти, лекція, створення, модифікація і видалення таблиць і уявлень

Порядок сортування COLLATE

Цю тему ми розглядали в минулій лекції і знаємо, що даний параметр застосовується з текстовими стовпцями і визначає спосіб, за яким будуть сортуватися і порівнюватися текстові дані при виведенні їх оператором SELECT. Для кодування WIN1251 це може бути сортування WIN1251 або PXW_CYRL.

видалення таблиць

Нерідко виникає необхідність видалити з бази даних створену раніше таблицю. Робиться це оператором DROP. приклад:

Цей же оператор використовується для видалення доменів, уявлень, тригерів і т.д.

модифікація таблиці

Іноді трапляються випадки, коли структуру таблиці потрібно змінити. Найпростіше видалити її оператором DROP і створити нову таблицю з цим же ім'ям, і з новою структурою. Але таблиця може вже містити якісь дані, або зміни повинні бути невеликими: додати новий стовпець (стовпці) або видалити парочку існуючих стовпців.

Змінити структуру таблиці можна оператором ALTER. який може мати додаткові параметри ADD (додати стовпець) або DROP (видалити стовпець). приклади:

Примітка. після виконання операторів ALTER в утиліті IBConsole. транзакція може вважатися незавершеною, і спроба ввести нову команду або закрити вікно Interactive SQL викличе помилку. В цьому випадку потрібно просто ввести і виконати команду завершення транзакції COMMIT. після якої можна вводити нові запити. Про транзакціях ми будемо говорити пізніше.

Далі потрібно видалити старий стовпець і створити новий з цим же ім'ям, але вже з новими параметрами:

Далі, за допомогою оператора UPDATE ... SET потрібно скопіювати дані з тимчасового стовпчика в щойно створений, після чого видалити тимчасовий:

уявлення

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

Уявлення зазвичай застосовують для ізоляції реально збережених даних від користувача, що збільшує безпеку бази даних. Уявлення зручні, коли наприклад, програміст або адміністратор БД приймає рішення розділити одну таблицю на дві. При цьому опис уявлення також змінюється, але для користувача це по -колишньому одна таблиця. так що змінювати клієнтську програму не доведеться. Розробник також отримує можливість змінювати уявлення. доповнюючи його новими можливостями. Ще уявлення допоможуть, якщо даному користувачеві небажано надавати доступ до всіх полів таблиці (таблиць). Йому можна зробити доступ до подання, в якому використовувати потрібні стовпці як з можливістю їх редагування, так і "Тільки для читання".

Подання створюється наступним чином:

тут <Имя_представления> є ідентифікатором уявлення, який не повинен збігатися з ідентифікаторами інших уявлень, таблиць або збережених процедур.

[(<Имя_столбца_представления> [, <Имя_столбца_представления> ...])] - необов'язковий список імен стовпців створюваного подання. Якщо цей список не вказувати, імена стовпців будуть такими ж, як і імена стовпців таблиці (таблиць), зазначених у запиті SELECT. Однак при використанні декількох таблиць, можуть виникнути випадки дублювання імен стовпців, тобто дві таблиці можуть мати стовпці з однаковими іменами. В цьому випадку вказати список імен стовпців для подання необхідно, відповідні стовпці будуть перейменовані в поданні. Імена стовпців в списку уявлення повинні відповідати кількості і порядку стовпців, зазначених в операторі SELECT.

Необов'язковий параметр [WITH CHECK OPTION] забороняє додавати записи, значення стовпців яких не задовольняють умови вибірки запиту уявлення. Припустимо, що в запиті SELECT уявлення є умова WHERE. Ця умова робить вибірку записів таблиці по полю цілого типу, вказуючи, що значення поля повинні бути в діапазоні від 0 до 100. Якщо в змінюваному поданні користувач модифікує запис. вийшовши за рамки зазначеного діапазону, запис перестане відповідати умові WHERE. Параметр [WITH CHECK OPTION] гарантує, що такі зміни будуть неможливі. Приклад створення уявлення:

Зазначене подання створює віртуальну таблицю з двох стовпців FAMILIYA і IMYA. які фізично зберігаються в таблиці Table_Firma. В утиліті IBConsole створені уявлення можна побачити в дереві серверів, в обраній базі даних в розділі Views. Звернутися до цієї вистави можна, як до звичайної таблиці, за допомогою запиту SELECT. виконаного в вікні запитів Interactive SQL:

У вікні виводу результатів будуть відображені стовпці уявлення.

Уявлення можуть мати і більш складний формат, містити в запиті кілька таблиць і навіть інших уявлень. Нижче наведено приклад створення двох таблиць та подання, що з'єднує деякі значення цих таблиць:

Зазначене подання створює три стовпці: назва товару, кількість цього товару на складі і його вартість. Причому виводяться тільки ті товари, вартість яких не перевищує 20. Параметр [WITH CHECK OPTION] тут не вказується, так як дане подання за визначенням є "тільки для читання". Після створення кожної таблиці вказується оператор COMMIT. який, як говорилося вище, підтверджує і завершує попередню транзакцію.

Змінні уявлення

Змінні уявлення дозволяють користувачам не тільки переглядати, але і редагувати дані. Спеціально вказувати, що уявлення є змінним, не потрібно. Подання автоматично створюється змінним, якщо воно задовольняє наступним вимогам:

  • Подання складається тільки з однієї таблиці.
  • Стовпці уявлення містять всі стовпці таблиці, визначені з параметром NOT NULL.
  • У поданні не використовуються агрегатні функції, параметри DISTINCT і HAVING. збережені процедури і призначені для користувача функції.

Якщо уявлення задовольняє всім цим вимогам, до нього можна застосовувати оператори INSERT. UPDATE і DELETE (тобто, редагувати).

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

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

модифікація уявлення

Подання. як і таблицю, можна видалити командою

Однак модифікувати уявлення командою ALTER не можна. Якщо все ж виникне така необхідність, то єдиною можливістю є видалення старого уявлення, і створення нового, з таким же ім'ям, але з новими параметрами. Оскільки фізично дані в представлення не зберігаються, така операція не призведе до їх втрати.

Схожі статті