Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет icon

Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет




НазваКонспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет
Сторінка9/19
Дата04.06.2013
Розмір1.62 Mb.
ТипКонспект
1   ...   5   6   7   8   9   10   11   12   ...   19
^

2.8 Синтаксис оператора вибірки даних (SELECT). BNF-нотація


Опишемо синтаксис оператора вибірки даних (оператора SELECT) більш точно. При описі синтаксису операторів звичайно використовуються умовні позначки, відомі як стандартні форми Бекуса-Наура (BNF).

У BNF позначеннях використовуються такі елементи:

  • Символ "::=" означає рівність по визначенню. Ліворуч від знака стоїть обумовлене поняття, праворуч - властиво визначенне поняття.

  • Ключові слова записуються прописними буквами. Вони зарезервовані й становлять частину оператора.

  • Заповнювачі конкретних значень елементів і змінних записуються курсивом.

  • Необов'язкові елементи оператора укладені у квадратні дужки [].

  • Вертикальна риса | вказує на те, що всі попередні їй елементи списку є необов'язковими й можуть бути замінені будь-яким іншим елементом списку після цієї риси.

  • Фігурні дужки {} вказують на те, що все, що міститься усередині них, є єдиним цілим.

  • Три крапки "..." означає, що попередня частина оператора може бути повторена будь-яка кількість разів.

  • Багато крапок, усередині якого перебуває кома ".,.." вказує, що попередня частина оператора, яка складається з декількох елементів, розділених комами, може мати довільне число повторень. Кому не можна ставити після останнього елемента. Зауваження: дана угода не входить у стандарт BNF, але дозволяє більш точно описати синтаксис операторів SQL.

  • Круглі дужки є елементом оператора.

Синтаксис оператора вибірки

У досить сильно спрощеному вигляді оператор вибірки даних має такий синтаксис (для деяких елементів ми дамо не BNF-визначення, а словесний опис):

^ Оператор вибірки ::=

Табличний вираз [ORDER BY

{{Ім'я стовпця-результату [ASC | DESC]} | {Позитивне ціле [ASC | DESC]}}.,..];

Табличне вираз ::=

Вираз-Select- вираз {UNION | INTERSECT | EXCEPT} [ALL]

{Вираз-Select- вираз | TABLE Ім'я таблиці | Конструктор значень таблиці} ]

Вираз-Select-вираз ::=

SELECT [ALL | DISTINCT] {{{Скалярний вираз | Функція агрегування | Вираз-Select-вираз} [AS Ім'я стовпця]}.,..}

| {{Ім'я таблиці | І’мя кореляції}.*}

| * FROM {

{Ім'я таблиці [AS] [Ім'я кореляції] [(Ім'я стовпця.,..)]}

| {Вираз-Select- вираз [AS] Ім'я кореляції [(Ім'я стовпця.,..)]}

| З'єднана таблиця }.,..

[WHERE Умовний вираз]

[GROUP BY {[{Ім'я таблиці | І'мя кореляції}.] Ім'я стовпця}.,..]

[HAVING Умовний вираз]

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

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

Розділ HAVING містить умовний вираз, що обчислюється для кожної групи, обумовленої переліком угруповання в розділі GROUP BY. Цей умовний вираз може містити функції агрегування, що обчислюються для кожної групи. Умовний вираз, сформульований у розділі WHERE, може бути перенесений до розділу HAVING. Перенос умов з розділу HAVING у розділ WHERE неможливий, якщо умовний вираз містить агрегатні функції.

Якщо в розділі SELECT присутні агрегатні функції, то вони обчислюються по-різному залежно від наявності розділу GROUP BY. Якщо розділ GROUP BY відсутній, то результат запиту повертає не більше одного рядка. Агрегатні функції обчислюються по всіх рядках, які задовольняють умовному виразу в розділі WHERE. Якщо розділ GROUP BY є присутнім, то агрегатні функції обчислюються окремо для кожної групи, зазначеної у розділі GROUP BY.

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

^ Функція агрегування ::=

COUNT (*) | { {COUNT | MAX | MIN | SUM | AVG} ([ALL | DISTINCT] Скалярний вираз) }

Конструктор значень таблиці ::=

VALUES Конструктор значень рядка.,..

Конструктор значень рядка ::=

Елемент конструктора | (Елемент конструктора.,..) | Вираз-Select- вираз

Вираз-Select-вираз, який використовується у конструкторі значень рядка, зобов'язаний повертати рівно один рядок.

^ Елемент конструктора ::=

Вираз для обчислення значення | NULL | DEFAULT

Синтаксис з'єднаних таблиць

У розділі FROM оператора SELECT можна використовувати з'єднані таблиці. Нехай у результаті деяких операцій ми одержуємо таблиці A й B. Такими операціями можуть бути, наприклад, оператор SELECT або інша з'єднана таблиця. Тоді синтаксис з'єднаної таблиці має такий вигляд:

З'єднана таблиця ::=

Перехресне з'єднання | Природне з'єднання | З'єднання за допомогою предиката | З'єднання за допомогою імен стовпців | З'єднання об'єднання

Тип з'єднання ::=

INNER | LEFT [OUTER] | RIGTH [OUTER] | FULL [OUTER]

Перехресне з'єднання ::=

^ Таблиця А CROSS JOIN Таблиця В

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

Таблиця А [NATURAL] [Тип з'єднання] JOIN Таблиця В

З'єднання за допомогою предиката ::=

Таблиця А [Тип з'єднання] JOIN ^ Таблиця В ON Предикат

З'єднання за допомогою імен стовпців ::=

Таблиця А [Тип з'єднання] JOIN Таблиця В USING (Ім'я стовпця.,..)

З'єднання об'єднання ::=

^ Таблиця А UNION JOIN Таблиця В

Опишемо використані терміни.

CROSS JOIN - перехресне з'єднання повертає просто декартовий добуток таблиць. Таке з'єднання в розділі FROM може бути замінено списком таблиць через кому.

NATURAL JOIN - природне з'єднання відбувається по всіх стовпцях таблиць А і В, що мають однакові імена. У результуючу таблицю однакові стовпці уставляються тільки один раз.

JOIN ... ON - з'єднання за допомогою предиката з'єднує рядки таблиць А і В за допомогою зазначеного предиката.

JOIN ... USING - з'єднання за допомогою імен стовпців з'єднує відношення подібно природному з'єднанню по тим загальним стовпцям таблиць А і Б, які зазначені в списку USING.

OUTER - ключове слово OUTER (зовнішній) не є обов'язковими, воно не використовується ні в яких операціях з даними.

INNER - тип з'єднання "внутрішнє". Внутрішній тип з'єднання використовується за замовчуванням, коли тип явно не заданий. У таблицях А і В з'єднуються тільки ті рядки, для яких знайден збіг.

LEFT (OUTER) - тип з'єднання "ліве (зовнішнє)". Ліве з'єднання таблиць А і В містить у собі всі рядки з лівої таблиці А і ті рядки із правої таблиці В, для яких виявлений збіг. Для рядків з таблиці А, для яких не знайдено відповідності у таблиці В, у стовпці, що витягають із таблиці В, заносяться значення NULL.

RIGHT (OUTER) - тип з'єднання "праве (зовнішнє)". Праве з'єднання таблиць А і В містить у собі всі рядки із правої таблиці В і ті рядки з лівої таблиці А, для яких виявлений збіг. Для рядків з таблиці В, для яких не знайдено відповідності в таблиці А, у стовпці, що витягають із таблиці А, заносяться значення NULL.

FULL (OUTER) - тип з'єднання "повне (зовнішнє)". Це комбінація лівого й правого з'єднань. У повне з'єднання включаються всі рядки з обох таблиць. Для співпадаючих рядків поля заповнюються реальними значеннями, для незбіжних рядків поля заповнюються відповідно до правил лівого й правого з'єднань.

UNION JOIN - з'єднання об'єднання є зворотним стосовно внутрішнього з'єднання. Воно включає тільки ті рядки з таблиць А і В, для яких не знайдено збігів. У них використаються значення NULL для стовпців, отриманих з іншої таблиці. Якщо взяти повне зовнішнє з'єднання й видалити з нього рядки, отримані в результаті внутрішнього з'єднання, то вийде з'єднання об'єднання.

Використання з'єднаних таблиць часто полегшує сприйняття оператора SELECT, особливо, коли використовується природне з'єднання. Якщо не використовувати з'єднані таблиці, то при виборі даних з декількох таблиць необхідно явно вказувати умови з'єднання в розділі WHERE. Якщо при цьому користувач указує складні критерії відбору рядків, то в розділі WHERE змішуються семантично різні поняття - як умови зв'язку таблиць, так й умови відбору рядків.

Синтаксис умовних виразів розділу WHERE

Умовний вираз, використовуваний в розділі WHERE оператора SELECT повинен обчислюватися для кожного рядка-кандидата, який відбирається оператором SELECT. Умовний вираз може повертати одне із трьох значень істинності: TRUE, FALSE або UNKNOUN. Рядок-кандидат відбирається до результуючої множини рядків тільки у тому випадку, якщо для неї умовний вираз повернуло значення TRUE.

Умовні вирази мають такий синтаксис (з метою спрощення викладки наведені не всі можливі предикати):

^ Умовний вираз ::=

[ ( ] [NOT] {Предикат порівняння | Предикат between | Предикат in | Предикат like | Предикат null | Предикат кількісного порівняння | Предикат exist | Предикат unique | Предикат match | Предикат overlaps} [{AND | OR} Умовний вираз] [ ) ] [IS [NOT] {TRUE | FALSE | UNKNOWN}]

Предикат порівняння ::=

Конструктор значень рядка {= | < | > | <= | >= | <>} Конструктор значень рядка

Приклад. Порівняння поля таблиці й скалярного значення:

POSTAV.VOLUME > 100

Приклад. Порівняння двох сконструйованих рядків:

(PD.PNUM, PD.DNUM) = (1, 25)

Цей приклад еквівалентний умовному виразу

PD.PNUM = 1 AND PD.DNUM = 25

^ Предикат between ::=

Конструктор значень рядка [NOT] BETWEEN Конструктор значень рядка AND Конструктор значень рядка

Приклад. PD.VOLUME BETWEEN 10 AND 100

Предикат in ::=

Конструктор значень рядка [NOT] IN {(Select-вираз) | (Вираз для обчислення значення.,..)}


Приклад.

P.PNUM IN (SELECT PD.PNUM FROM PD WHERE PD.DNUM=2)

Приклад.

P.PNUM IN (1, 2, 3, 5)

Предикат like ::=

^ Вираз для обчислення значення рядка-пошуку [NOT] LIKE

Вираз для обчислення значення рядка-шаблона [ESCAPE Символ]

Предикат LIKE робить пошук рядка-пошуку в рядку-шаблоні. У рядку-шаблоні дозволяється використовувати два трафаретних символи:

  • Символ підкреслення "_" може використовуватися замість будь-якого одиничного символу в рядку-пошуку,

  • Символ відсотка "%" може заміняти набір будь-яких символів у рядку-пошуку (число символів у наборі може бути від 0 і більше).

^ Предикат null ::=

Конструктор значень рядка IS [NOT] NULL

Зауваження. Предикат NULL застосовується спеціально для перевірки, чи не дорівнює вираз null-значенню.

^ Предикат кількісного порівняння ::=

Конструктор значень рядка {= | < | > | <= | >= | <>} {ANY | SOME | ALL} (Select-вираз)

Квантори ANY й SOME є синонімами й повністю взаємозамінні. Якщо зазначено один із кванторів ANY й SOME, то предикат кількісного порівняння повертає TRUE, якщо порівнюване значення збігається хоча б з одним значенням, що повертається у підзапиті (select-виразі). Якщо зазначено квантор ALL, то предикат кількісного порівняння повертає TRUE, якщо порівнюване значення збігається з кожним значенням, що повертається у підзапиті (select-вираз).

^ Приклад.

P.PNUM = SOME (SELECT PD.PNUM FROM PD WHERE PD.DNUM=2)

Предикат exist ::=

EXIST (Select-вираз)

Предикат EXIST повертає значення TRUE, якщо результат підзапиту (select-вираз) не порожній.

^ Предикат unique ::=

UNIQUE (Select-вираз)

Предикат UNIQUE повертає TRUE, якщо в результаті підзапиту (select-вираз) немає співпадаючих рядків.

Предикат match ::=

Конструктор значень рядка MATCH [UNIQUE] [PARTIAL | FULL] (Select-вираз)

Предикат MATCH перевіряє, чи буде значення, зазначене в конструкторі рядка збігатися зі значенням будь-якого рядка, отриманого у результаті підзапиту.

^ Предикат overlaps ::=

Конструктор значень рядка OVERLAPS Конструктор значень рядка

Предикат OVERLAPS, є спеціалізованим предикатом, що дозволяє визначити, чи буде зазначений період часу перекривати інший період часу.
1   ...   5   6   7   8   9   10   11   12   ...   19

Схожі:

Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconКонспект лекцій Суми Сумський державний університет 2012 Міністерство освіти і науки, молоді та спорту України Сумський державний університет
Внутрішній економічний механізм підприємства: конспект лекцій / укладач Н. В. Мішеніна.– Суми : Сумський державний університет, 2012....
Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconКонспект лекцій Суми Видавництво Сумду 2010 міністерство освіти І науки україНи
Затверджено на засіданні кафедри фінансів як конспект лекцій з дисципліни "Інформаційні системи і технології у фінансах"
Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconМіністерство освіти І науки україни сумський державний університет до друку та в світ дозволяю на підставі «Єдиних правил»
Методи прийняття управлінських рішень. Конспект лекцій / Укладач Д. О. Смоленніков. – Суми: Вид-во СумДУ, 2008. – 89 с
Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconКонспект лекцій Суми Видавництво Сумду 2009
Внутрішній економічний механізм підприємства: Конспект лекцій/ Укладач І. В. Новикова. – Суми: Вид-во СумДУ, 2009. – 185с
Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconМіністерство освіти І науки україНи Сумський державний університет Менеджмент персоналу
Менеджмент персоналу: конспект лекцій / Укладач: К. В. Ілляшенко. – Суми: Вид-во СумДУ, 2010. – 78с
Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconКонспект лекцій Суми Видавництво Сумду 2009
Психологія творчості : Конспект лекцій / Укладач О. А. Кривопишина.– Суми: Вид-во СумДУ, 2009.– 81 с
Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconКонспект лекцій Суми Видавництво Сумду 2009
Психологія творчості : Конспект лекцій / Укладач О. А. Кривопишина.– Суми: Вид-во СумДУ, 2009.– 81 с
Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconМіністерство освіти І науки україни сумський державний університет граматичні таблиці з української мови для студентів-іноземців підготовчого відділення Суми Видавництво СумДУ
Граматичні таблиці з української мови для студентів-іноземців підготовчого відділення / Уклад.: Н. О. Ворона, Т. О. Дегтярьова, Н....
Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconМіністерство освіти І науки україни сумський державний університет історія України
України: навчальні матеріали для студентів-іноземців підготовчого відділення / Укладачі: М. С. Казанджиєва, О. П. Коньок, Н. О. Тубол,...
Конспект лекцій Суми Видавництво Сумду 2009 Міністерство освіти І науки України Сумський державний університет iconМіністерство освіти І науки україни сумський державний університет медичний інститут кафедра інфекційних хвороб І епідеміології
Методичні рекомендації до семінарських занять лікарів-інтернів спеціальності “Інфекційні хвороби” / Укладачі М. Д. Чемич, Н.І. Ільїна,...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи