Охарактеризуйте призначення оператора вибору select в структурованій мові запитів sql та поясніть застосування агрегатних функцій І вкладених запитів в операторі вибору
Вид материала | Документы |
- Конспект уроку в 11 класі Тема: «Запити та їх призначення. Мова запитів. Практична, 35.2kb.
- Урок 9 практична робота №3 тема: Створення запитів, форм та звітів у базі даних, 29.82kb.
- Соціально-психологічні чинники вибору шлюбного партнера та вступу молоді у шлюб, 57.32kb.
- Місце профконсультації в системі професійної орієнтації старшокласників, 91.23kb.
- Рекомендації щодо вибору піноутворювачів для протипожежного захисту об'єктів різного, 237.45kb.
- 1. Що було головною причиною вибору Вашого вузу I спецiальностi?, 139.79kb.
- Програма на мові Turbo Pascal, лінійні програми Команди галуження, вибору та мітки, 1485.97kb.
- Вах європейського вибору матеріали IIІ міжнародної науково-практичної конференції 25-27, 2505.29kb.
- Затверджено, 5543.74kb.
- Централизованная библиотечная система для взрослых, 85.85kb.
Охарактеризуйте призначення оператора вибору 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 | Найменше із всіх вибраних значень даного поля |