Охарактеризуйте призначення оператора вибору select в структурованій мові запитів sql та поясніть застосування агрегатних функцій І вкладених запитів в операторі вибору

Вид материалаДокументы

Содержание


Структура SQL
Оператори визначення даних DDL
Оператори маніпуляції даними
Типи даних
Оператор вибору SELECT
[group by
SELECT name, SUM name From Anketa
Застосування агрегатних функцій
SELECT Філіал. SUM (залишок)
Подобный материал:
Охарактеризуйте призначення оператора вибору SELECT в структурованій мові запитів SQL та поясніть застосування агрегатних функцій і вкладених запитів в операторі вибору. Наведіть приклади використання запитів створених на мові SQL

SQL (Structured Query Language) – Структурована мова запитів – стандартна мова запитів по роботі з реляційними БД. Мова SQL появилася після реляційної алгебри і його прототип був розроблений в кінці

70-х років в компанії IBM Research. Він був реалізований в першому прототипі реляційної СУБД фірми IBM System R.

Перший міжнародний стандарт мови SQL був принятий в 1989 р. В кінці 1992 р. був принятий новий міжнародний стандарт мови SQL, який в подальшому буде називатися SQL/92 або SQL2. В 1999 році появився новий стандарт, названий SQL3. Стандарт SQL3 відповідає якісним серйозним приобразованіям. В SQL3 введені нові типи даних.

SQL неможна в цілому віднести до традиційних мов програмування, вона не містить традиційні оператори, управляючі ходом виконання програми, він містить тільки набір стандартних операторів доступу до даних, збережених в базі даних. Оператори SQL зустрічаються в базовій мові програмування, яким може бути будь-яка стандартна мова:С++, PL, COBOL та інші. Крім цього оператори SQL можуть виконуватись ………

Структура SQL

SQL є повною мовою, і ній присутні не тільки операції запитів. Крім того мова підтримує оператори призначені для управління (адміністрація) БД.

Оператори визначення даних DDL:

CREATE TABLE Cтворити таблицю

ALTER TABLE Змінити таблицю

DROP TABLE Видалити таблицю

CREANE VIEW Створити представлення

ALTER VIEW Змінити представлення

DROP VIEW Видалити представлення

DROP INDEX Видалити індекс

Оператори маніпуляції даними

DELETE Видалити рядок

INSERT Вставити рядок

UPDATE Обновити рядок

Мова запитів DQL

SELECT Вибір рядка

Засоби адміністративних даних

ALTER DATABASE Змінити БД

ALTER DBAREA Зміна області зберігання БД

ALTER PASSWORD Змінити пароль

CREATE DATABASE Створити БД

DROP DATABASE Видалити БД

Типи даних

CHARACTER(n) – символьний рядок постійної довжини в n символів

NUMERIC - точні числа

INTEGER – цілі числа

SMALLINT – цілі числа малого діапазону

FLOAT – числа великої точності

VARCHAR(n) – рядки символів змінної довжини

NCHAR(N) – рядки локалізованих символів постійної довжини

BIT(n) – рядок бітів постійної довжини

DATE – календарна дата

Більшість комерційних СУБД підтримують ще додаткові типи даних, наприклад підтримують тип даних для представлення неструктурованого тексту великого об’єму. Цей тип аналогічний типу МЕМО в СУБД. Називаються ці типи по різному, наприклад в ORACLE цей тип називається LONG. При виконанні порівнянь в операціях фільтрації можуть використовуватись константи заданих типів. Системні константи: Стандарт SQL1 находить тільки одну системну константу USER, яка відповіда імені користувача

В операторах SQL мотуть використовуватись вираження, які строються по стандартних правилах застосування знаків математичних операцій додавання (+), віднімання(-), множення(*), ділення(/). В СУБД операція ділення(/) виконується як ділення на ціле.

Оператор вибору SELECT

Мова запитів (Data Query Language) в SQL складається з єдиного оператора SELECT. Цей диний оператор пошуку реалізує всі операції реляційної алгебри. Один і той самий запит може бути реалізований декількома способами.

Синтаксис оператора SELECT має наступний вигляд:

SELECT[ALL|DISTINCT](<>|*)

FROM <Список таблиць>

[WHERE <Предикат-умова вибірки чи з’єднання>]

[GROUP BY <Список полів результату>]

[HAVING <Предикат-умова для групи >]

[ORDER BY <Список полів, по яких упорядкувати вивід>]

Тут ключове слово ALL означає, що в результуючому наборі рядків включаються всі рядки, задовольняючи умову запиту. Значить в результуючий набір можуть попасти однакові рядки. І це порушення принципів теорії відношень. Ключове слово DISTINCT означає що в результуючий набір включаються тільки різні рядки, то є дублікати рядків результату не включаються в набір.

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

В розділі FROM задається заперечення вихідних відношень (таблиць) запиту.

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

В розділі GROUP BY задається список полів групування.

В розділі HAVING задаються предикати-умови, що накладаються на кожну групу.

В частині ORDER BY задається список полів упорядкування результату, тобто список полів, який визначає порядок сортування в результуючому відношенні. Наприклад, якщо першим полем списку буде вказане Прізвище, а другим Номер групи, то в результуючому відношенні спочатку будуть зібрані в алфавітному порядку студенти, і якщо найдуться однофамільці, то вони будуть розміщені в порядку зростання номерів груп.

Приклад

SELECT name, SUM name From Anketa

WHERE name=”Назар”

Name – поля таблиці

Anketa - назва таблиці

WHERE name=”Назар” – умова з чого вибирати

В виразі умов розділу WHERE можуть бути використані наступні предикати:
  • Предикати порівняння { =, <>, >,<, >=,<= }, які мають традиційне розуміння.
  • Предикат Between A and B – приймає значення між А і В. Предикат істинний, коли порівнюване значення попадає в заданий діапазон, включаючи границі діапазону. Одночасно в стандарті заданий і протилежний предикат Not Between A and B, який істинний тоді , коли порівнюване значення не попадає в заданий інтервал, включаючи його границі.
  • Предикат входження в множину IN (множина) істинний тоді, коли порівнюване значення входить в множину заданих значень. При цьому множина значень може бути задана простим перерахунком або встановленим підзапитом. Одночасно існує протилежний предикат NOT IN (множина), який істинний тоді, коли порівнюване значення не входить в задану множину.
  • Предикати порівняння з обранцем LIKE і NOT LIKE. Предикат LIKE потребує задачі шаблону, з яким порівнюється задане значення, предикат істинний, якщо порівнюване значення відповідає шаблону, і неправдивий в протилежному випадку. Предикат NOT LIKE має протилежне значення.

По стандарту в шаблон можуть бути включені спеціальні символи:
  • символ підкреслювання (_) – для позначення любого одиночного символа;
  • символ відсотка (%) – для позначення любої довільної послідовності символів;
  • інші символи, задані в шаблоні, означають самі себе.
  • Предикат порівняння з невизначеним значенням IS NULL. Поняття невизначеного значення було внесено в концепції баз даних пізніше. Невизначене значення визначається в реляційній моделі як значення, невідоме на даний момент часу. Це значення при появі додаткової інформації в любий момент часу може бути замінено на якесь конкретне значення. При порівнянні невизначених значень не діють стандартні правила порівняння: одне невизначене значення ніколи не рахується рівним другому невизначеному значенню. Для виявлення рівності значення якогось атрибута невизначеному застосовують спеціальні стандартні пре карди:

<ім'я атрибута> IS NULL і < ім'я атрибута> IS NOT NULL.

Якщо в даному рядку вказаний атрибут має невизначене значення, то предикат IS NULL приймає значення «Істина» (TRUE), а предикат IS NOT NULL - «Брехня» (FALSE), в іншому випадку предикат IS NULL приймає значення «Брехня», а предикат IS NOT NULL приймає значення «Істина».

Введення Null-значень викликало необхідність модифікації класичної двозначної логіки і перетворення її в трьохзначну. Всі логічні операції, створювані з невизначеним значенням, підлягають цій логіці в відповідності з заданою таблицею істинності.
  • Предикати існування EXIST і не існування NOT EXIST. Ці предикати відносяться до вбудованих підзапитів, і докладніше ми розглянемо їх, коли торкнемося підзапитів.

В умовах пошуку можуть бути використані розглянуті раніше предикати. Відклавши на час знайомство з групуванням, розглянемо детально перші три рядка оператора SELECT:
  • SELECT – ключове слово, яке повідомляє СУБД, що ця команда – запит. Всі запити починаються цим словом з наступаючим пробілом. За ним може слідувати спосіб вибірки – з видаленням дублікатів (DISTINCT) або без видалення .
  • FROM – Ключове слово, подібне SELECT, яке повинне бути представлене в кожному запиті. Воно супроводжується пробілом і іменами таблиці, використаних в якості інформації.

Застосування агрегатних функцій

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

Агрегатні функції використовуються подібні іменам полів в операторі SELECT, але з одним виключенням, вони беруть ім’я поля як аргумент. З функціями SUM і AVG можуть використовуватись тільки часові поля. З функціями COUNT, MAX, MIN – як числові так і символьні поля. Аргументом агрегатних функцій можуть бути окремі стовбці таблиці. Але для того щоб вираховувати кількість різних значень вибраного стовпця в групі необхідно застосувати ключове слово DISTINCT разом з іменем стовпця

Приклад

Знайти сумарний залишок по рахунках в філіях

SELECT Філіал. SUM (залишок)

From F

group by Філіал;

COUNT

Кількість рядків або не порожніх значень полів які вибрав запит

SUM

Сума всіх вибраних значень даного поля

AVG

Середнє арифметичне значення всіх вибраних значень даного поля

MAX

Найбільше із всіх вибраних значень даного поля

MIN

Найменше із всіх вибраних значень даного поля