русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

VYKLADACH POSADA1


Дата добавления: 2015-07-09; просмотров: 529; Нарушение авторских прав


KodVykl PrizvVykl KodPost NomKaf   KodPost PostVykl NormPost
Середа І.С.   професор
Бандур М.М.   доцент
Мунтян Р.Д.   старший викладач
Сірко В.В.   викладач
Опришко Ю.Й.        
Турчак А.Д.        

 

Щоб отримати прізвища викладачів, назви їх посад та норми навантаження, в SQL-92,можна створити такий запит :

SELECT VYKLADACH.PrizvVykl, POSADA.PostVykl, POSADA.NormPost

FROM VYKLADACH, POSADA

WHERE VYKLADACH.KodPost=POSADA. KodPost;

В результаті отримаємо віртуальну таблицю

PrizvVykl PostVykl NormPost
Середа І.С. професор
Бандур М.М. доцент
Мунтян Р.Д. професор
Сірко В.В. доцент
Опришко Ю.Й. доцент

В наведеному прикладі в запиті реалізоване так зване природне з’єднання або дорівнює-з’єднання, яке є окремим випадком θ-з’єднання.

Запишемо наведену вище операцію мовою реляційної алгебри з використанням обох типів з’єднання.

Природне з’єднання: (VYKLADACH join POSADA)[ PrizvVykl, PostVykl, NormPost]

При цьому мається на увазі, що система, яка реалізує операції реляційної алгебри, „знає” про належність атрибутів PrizvVykl, PostVyklтаNormPost до відповідних таблиць, а також про те, що з’єднання здійснюється по загальному атрибуту KodPost.

θ-з’єднання : ((VYKLADACH times POSADA)WHEREVYKLADACH.KodPost=POSADA. KodPost) [ PrizvVykl, PostVykl, NormPost]

Якщо потрібен такий список викладачів, що працюють на кафедрі №7, то SQL-запит за стандартом буде таким:



SELECT VYKLADACH.PrizvVykl, POSADA.PostVykl, POSADA.NormPost

FROM VYKLADACH, POSADA

WHERE (VYKLADACH.KodPost=POSADA.KodPost) AND (NomKaf=7);

В результаті отримаємо віртуальну таблицю

PrizvVykl PostVykl NormPost
Мунтян Р.Д. професор
Сірко В.В. доцент

Запишемо наведену вище операцію мовою реляційної алгебри з використанням обох типів з’єднання.

Природне з’єднання:

(( VYKLADACH join POSADA) WHERENomKaf=7) [PrizvVykl, PostVykl, NormPost]

θ-з’єднання:

(( VYKLADACH times POSADA)WHERE((VYKLADACH.KodPost=POSADA.KodPost)and (NomKaf=7))) [PrizvVykl, PostVykl, NormPost]

В стандарті SQL-89реалізація з’єднання виконувалася в опції WHERE, тобто в основу була покладена концепція θ-з’єднання із реляційної алгебри. В SQL-92дозволяється обидва підходи до реалізації операції з’єднання, в Jet SQL покладена концепція визначення природного з’єднання в опції FROM,а інші умови виборув опції WHERE.Тому для Jet SQLосновна структура оператора SELECT має таку граматику:

SELECT [DISTINCTDISTINCTROW] {*<список атрибутів проекції >}

FROM < природне з’єднання таблиць та/або запитів>

[WHERE <умова вибірки (до групування)>]

[GROUP BY <ім'я атрибута >]

[HAVING <умова вибірки (після групування)>]

[ORDER BY <список атрибутів > [ASC|DESC] ]

Тепер розкриємо граматичні конструкції і додаткові ключові слова, що наведені в операторі SELECT.

Необов’язкові ключові слова DISTINCTабо DISTINCTROWвживаються, коли треба не включати в результат дублі кортежів, що визначені опцією SELECT,або рядків, що створюються в результаті проекції усіх атрибутів таблиць, що з’єднуються.

Символ “*” використовують у тих випадках, коли в результатну таблицю виводяться усі атрибути таблиць, що перелічені в опції FROM. В результатній таблиці порядок атрибутів буде відповідати порядку атрибутів в початкових таблицях (спочатку атрибути першої таблиці, потім другої і т.д.).

<список атрибутів проекції> ::= <список атрибутів проекції>,<елементарна проекція> │ <елементарна проекція>

<елементарна проекція>::= <ім’я атрибута із таблиць, визначених в опції FROM>│ <арифметичний вираз> [AS <ім’я атрибута>]

<природне з’єднання таблиць та/або запитів> ::= <ім’я таблиці або запиту>│<природне з’єднання таблиць та/або запитів> <оператор з’єднання> <ім’я таблиці або запиту> ON <пара атрибутів природного з’єднання>

<оператор з’єднання> ::= <вид з’єднання> JOIN

<вид з’єднання>::= INNER│LEFT│ RIGHT

<пара атрибутів природного з’єднання> ::= <атрибут лівого табличного виразу> = <атрибут правого табличного виразу >

<атрибут лівого табличного виразу> ::= <ім’я атрибута із таблиць, визначених в опції FROM>

<атрибут правого табличного виразу> ::= <ім’я атрибута із таблиць, визначених в опції FROM>

<ім’я атрибута із таблиць, визначених в опції FROM> ::= <ім’я атрибута>| <ім’я таблиці або запиту>.<ім’я атрибута> | [<ім’я таблиці або запиту>].[<ім’я атрибута>]

Увага! В останньому правилі символи “[“ та “]” використовуються як термінальні символи граматичної конструкції, а не як метасимволи граматики, що задається розширеними формами Бекуса-Наура, в яких вони вказують на необов’язковість елемента, що знаходиться в таких дужках.

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

З врахуванням вищенаведеного запит на отримання списку викладачів та їх посад в Jet SQLзадається таким чином (структуру і вміст таблиць див. вище):

SELECT VYKLADACH.PrizvVykl, POSADA.PostVykl, POSADA. NormPost

FROM VYKLADACHINNERJOINPOSADAON VYKLADACH.KodPost=POSADA.KodPost;

а теж саме для кафедри №7 так:

SELECT VYKLADACH.PrizvVykl, POSADA.PostVykl, POSADA. NormPost

FROM VYKLADACHINNERJOINPOSADAON

[VYKLADACH].[KodPost]=[POSADA].[KodPost] WHERE NomKaf=7;

Результати цих запитів наведені вище. Тепер наведемо результати першого запиту при використанні лівого (замість INNER використаємо LEFT) та правого (замість INNERвикористаємо RIGHT) з’єднань.

Після LEFT JOINПісля RIGHT JOIN

PrizvVykl PostVykl NormPost   PrizvVykl PostVykl NormPost
Середа І.С. професор   Середа І.С. Професор
Бандур М.М. доцент   Мунтян Р.Д. Професор
Мунтян Р.Д. професор   Бандур М.М Доцент
Сірко В.В. доцент   Сірко В.В. Доцент
Опришко Ю.Й. доцент   Опришко Ю.Й. Доцент
Турчак А.Д.         старший викладач
          Викладач

В таблицях-результатах сірим кольором відмічені поля, які не визначені, точніше – визначені як поля, що мають значення Null (ніщо). Це значення можна використовувати для знаходження „невідповідностей” між таблицями, що зв’язуються (в СКБД Access є майстер (Wizard) запитів, за допомогою яких можна знайти подібні невідповідності). Продемонструємо це. Спочатку знайдемо в таблиці VYKLADACHрядки, в яких значення атрибута KodPostтакі, яких немає в таблиці POSADA, і таким чином, між ними не може бути встановлено режим посилальної цілісності.

SELECT VYKLADACH.KodVykl, VYKLADACH.PrizvVykl, VYKLADACH.KodPost, VYKLADACH.NomKaf

FROM VYKLADACH LEFT JOIN POSADA ON VYKLADACH.KodPost = POSADA.KodPost

WHERE (((POSADA. KodPost) Is Null));

Результат наведено нижче.

 

KodVykl PrizvVykl KodPost NomKaf
Турчак А.Д.

Тепер знайдемо в таблиці POSADAрядки, в яких є такі значення атрибута KodPost, яких немає в таблиці VYKLADACH.

SELECT POSADA.KodPost, POSADA.PostVykl, POSADA.NormPost

FROM VYKLADACH RIGHT JOIN POSADA ON VYKLADACH.KodPost = POSADA.KodPost

WHERE (((VYKLADACH.KodPost) Is Null));

Результат наведено нижче.

KodPost PostVykl NormPost
старший викладач
Викладач


<== предыдущая лекция | следующая лекция ==>
DELETE – видалити рядки із таблиці | Розрахункові поля


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.205 сек.