Робота з уявленнями

У утиліті SQL Server Management Studio подання можна створювати, редагувати, виконувати і вставляти в інші запити

Створення уявлень в Management Studio

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

У утиліті Management Studio подання перераховано у власному вузлі в кожній базі даних

SQL Server Management Studio пропонує зручне середовище для роботи з перед-Новинка ^ уявленнями, пропонуючи інструменти створення запитів, редагування дан-2005 вих, збереження графічної структури таблиці та багато іншого

Команда New View в контекстному меню дозволить запустити конструктор запитів в режимі створення уявлень (рис 141)

Puc 141 Створення уявлення в конструкторі запитів утиліти Management Studio

Уявлення, реляційна алгебра, абстракція і безпека

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

SQL Server підтримує систему безпеки на рівні стовпців, і це дуже потужний механізм Проблема полягає в тому, що разові запити, створювані кінцевими користувачами, які не розуміють схему, дуже часто викликають помилки безпеки Рекомендоване рішення полягає у впровадженні захисту на рівень абстракції, який ізолює фізичну схему від доступу до даних Цей рівень абстракції бази даних може бути створений за допомогою уявлень і збережених процедур Він може обмежити те, що може проектуватися в зовнішній світ, конкретним набором стовпців Надання користувачам доступу до певного безлічі даних або можливості виконання тільки уявлень і збережених процедур захищає від них дані у фізичних таблицях

Більш докладно про рівні абстракції ви дізнаєтеся в главах 25 і 40, де розглядаються питання конфігурування безпеки обєктів

Конструктор уявлень працює в конструкторі запитів Management Studio Фактичний код SQL відображається і редагується на панелі SQL Стовпці в уявлення можна додавати на панелях Diagram, Grid і SQL Функція додавання таблиць доступна в контекстному меню, а також на панелі інструментів Тут можна додавати таблиці, інші уявлення, синоніми і табличні функції

Таблиці та інші уявлення можуть бути додані за допомогою перетягування їх на панель Diagram з вікна Object Explorer або за допомогою пункту контекстного меню Add Table

Функція додавання керованих таблиць (Add Derived Table) здатна додати в пропозицію FROM уявлення як джерело даних подзапрос Код SQL цього підзапиту можна ввести вручну на панелі SQL

Додаткова Більш докладно про використання конструктора запитів см в главі 6, Посвіт-інформація щенной роботі з утилітою Management Studio

Кнопка Verify SQL Syntax дозволяє перевірити синтаксис інструкцій SQL У той же час вона не перевіряє імена таблиць, стовпців і подань в інструкції SELECT

Кнопка Save панелі інструментів запускає сценарій фактичного створення вистави в базі даних Слід зазначити, що для збереження інструкція SELECT повинна бути вільна від помилок

Після створення подання його можна редагувати в Management Studio, виділяючи назву і вибираючи в контекстному меню команду Modify View

Для тестування інструкції SELECT подання в конструкторі запитів клацніть на кнопці Execute SQL або натисніть клавішу

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

Створення уявлень за допомогою коду DDL

Уявленнями можна управляти в редакторі запитів, виконуючи сценарії SQL, які використовують команди мови DDL: CREATE, ALTER і DROP Основний синтаксис створення уявлення наступний:

USE СНА2

CREATE доімя_представленія AS

інструкція_ SELECT

Наприклад, щоб створити уявлення vEventList програмним шляхом, у вікні запитів повинні бути виконані наступні команди:

CREATE VIEW dbovEventList AS

SELECT dboCustomerTypeName AS Customer,

dboCustomerLastName, dboCustomerFirstName, dboCustomerNickname,

dboEvent_mm_CustomerConfirmDate, dboEventCode, dboEventDateBegin, dboTourName AS Tour, dboBaseCampName, dboEventComment FROM dboTour

INNER JOIN dboEvent

ON dboTourTourlD = dboEventTourlD INNER JOIN dboEvent_mm_Customer

ON dboEventEventID = dboEvent_mm_CustomerEventID INNER JOIN dboCustomer

ON dboEvent_mm_CustomerCustomerlD = dboCustomerCustomerlD LEFT OUTER JOIN dboCustomerType ON dboCustomerCustomerTypeID

= dboCustomerTypeCustomerTypelD INNER JOIN dboBaseCamp ON dboTourBaseCampID = dboBaseCampBaseCampID

Спроба створити уявлення, яке вже існує, викличе помилку Коли вистава створена, інструкцію SELECT можна з легкістю відредагувати за допомогою команди ALTER:

ALTER dboViewName AS

SQL Select Statement

Команда ALTER поставляє поданням нову інструкцію SELECT Саме тут вступає в гру Object Explorer Щоб автоматично згенерувати інструкцію ALTER з існуючого уявлення, у вікні Object Explorer перейдіть до списку уявлень і виберіть у контекстному меню команду Script View as1^ Alter to^New Query Editor Windows

Якщо необхідно змінити уявлення, переважніше видалити його і створити заново, оскільки видалення представлення також призводить і до видалення дозволів доступу, встановлених раніше

Щоб видалити подання з бази даних, використовуйте команду DROP:

DROP VIEW dboViewName

У поданні, призначеному для багаторазового запуску, наступний код видалить його і відтворить заново:

IF EXISTS (SELECT * FROM SysObjects WHERE Name = імя_представленія) DROP VIEW dboімя_представленія CREATE dboімя_представленія AS

інструкція_5ЕЬЕСТ

Пропозиція order by та подання

Уявлення служать джерелом даних для інших запитів і не підтримують сортування всередині себе Наприклад, наступний код витягує дані з уявлення vEventList і впорядковує їх по полях Event Code і name Пропозиція ORDER BY не є частиною вистави vEventList, а застосовується до нього за допомогою виклику інструкції SQL:

SELECT EventCode, LastName, FirstName, IsNull(NickName,’)

FROM dbovEventList

ORDER BY EventCode, LastName, FirstName

Водночас синтаксис мови T-SQL допускає використання в уявленнях предиката ТОР, хоча останній даремний без пропозиції ORDER BY Водночас якщо подання включає в себе предикат ТОР 10 0 PERCENT, воно може включати і ORDER BY

CREATE VIEW dbovCapeHatterasTour AS

SELECT TOP 100 PERCENT TourName, BaseCampID FROM dboTour ORDER BY TourName

У версії SQL Server 2000 включення в уявлення вираження тор юо Новинка 1 percent допускало також використання пропозиції order by Однак у 2005 SQL Server 2005 ця помилка була виправлена, і пропозиція order by суще

ствует тільки для підтримки предиката тор Предикат тор без порядку сортування повертатиме тільки випадкові рядки і не матиме практичного значення Предикат тор юо percent з пропозицією order by в SQL Server 2005 НЕ БУДЕ сортувати дані в поданні

Обмеження в уявленнях

Незважаючи на те що подання може містити практично будь-яку допустиму інструкцію SQL, існують і деякі обмеження

■ Уявлення не можуть включати параметр SELECT INTO, який створює нову таблицю на основі вибраних стовпців Інструкція SELECT INTO завершиться помилкою, якщо таблиця вже існує, при цьому воно не повертає будь-яких значень Таким чином, наступне подання не має місця для існування:

SELECT * INTO Table

■ Представлення не може звертатися до тимчасової таблиці (яка містить в імені знак решітки) або табличній змінної, оскільки такі таблиці недовговічні

■ Уявлення не можуть містити стовпці COMPUTE і COMPUTE BY Замість цього вони можуть використовувати стандартні підсумкові функції і угрупування (COMPUTE і COMPUTE BY вважаються застарілими і використовуються тільки з міркувань зворотної сумісності)

Виконання уявлень

Представлення не може бути виконано саме по собі Інструкція SELECT, на основі якої створено уявлення, може бути виконана, однак у цій формі, з технічного боку, інструкція SQL не є поданням Інструкція SQL виконується тільки один раз і зберігається як уявлення Подання може бути корисно тільки як джерело даних в запиті

Саме тому контекстне меню Open View утиліти Management Studio автоматично генерує простий запит, витягуючи з вистави всі стовпці Представлення відображає тільки результати Однак включення інших панелей конструктора запитів дозволяє побачити і сам запит, витягнутий з подання

Панель SQL відобразить подання до реченні FROM інструкції SELECT Саме в такій формі на подання посилаються користувачі:

SELECT *

FROM vEventList

Коли уявлення викликаються з користувацьких додатків або з разових запитів, умова WHERE зазвичай використовується для вилучення з уявлення коректних даних Умова WHERE може бути введено на панеле GRID або SQL:

SELECT * FROM dbovEventList WHERE (EventCode = 101)

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*