Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
m_DBSQL_mu.docx
Скачиваний:
28
Добавлен:
17.03.2016
Размер:
373.51 Кб
Скачать

Типи даних

У РМД розрізняють поняття базового типу даних і поняття домену. Однак більшість сучасних реалізацій SQL не використовують поняття домену безпосередньо. Полю приписується тільки один з базових типів. Правда, часткова реалізація поняття домену в багатьох сучасних СУБД закладена можливістю визначення обмежень і правил на значення даних у полі, але за семантичною стороною питання як і раніше стежить користувач СУБД, оскільки для операцій порівняння СУБД завжди враховує тільки базовий тип поля.

Більш того, визначення самих базових типів даних є областю, в якій більшість комерційних СУБД проявляють свою індивідуальність. Зазвичай допускається зберігання символьних, числових даних, бітових рядків, спеціалізованих числових даних (таких, як "гроші"), а також спеціальних "темпоральних" даних (дата, час, часовий інтервал). Реальні назви типів та їх визначення сильно залежать від конкретної СУБД.

Створення простого запиту в sql

Запит - це питання, яке прикладна програма задає БД і отримує відповідь у вигляді набору записів, що відповідають певним критеріям і містять інформацію з вибраних полів. Запити не припускають тривалого зберігання одержуваних даних. Відповідні набори даних (таблиці, не обов'язково є відношеннями), якщо не вказано протилежне, завжди є динамічними структурами. Їх також називають DYNASET.

За вилучення інформації з БД відповідає оператор SELECT, який, крім цього, здатний виконувати ще масу функцій. Його повний вид може бути описаний таким чином:

SELECT [ALL | DISTINCT] select_list [INTO [new_table_name]]

[FROM <table_name | view_name> [(optimizer_hints)]

[[, <table_name2 | View_name2> [(optimizer_hints)]

[..., <table_name16 | View_name16> [(optimizer_hints)]]]

[WHERE clause]

[GROUP BY clause]

[HAVING clause]

[ORDER BY clause]

[COMPUTE clause]

Простий запит SQL заснований на трьох ключових словах оператора SELECT: SELECT (визначає список полів DYNASETS), FROM (вказує таблиці-джерела), WHERE (визначає умови відбору).

SELECT *

У своїй найпростішої формі SELECT надає всі дані з таблиці:

SELECT * FROM <ТАБЛИЦЯ>

Проекція

Вибір декількох полів з ​​таблиці здійснюється простим переліченням. Крім того, DYNASET містить поля в тому порядку, в якому вони вказані в списку, так що для перестановки полів таблиці місцями (сортування полів) досить вказати в SELECT необхідний порядок проходження.

SELECT <ім'я поля1>, <ім'я поля2>, ... FROM <ТАБЛИЦЯ>

Іноді між стовпцями необхідна вставка деякого рядка з фіксованим значенням.

Запит: Вивести прізвища студентів та їх адреси, розділені фразою "проживає за адресою".

Рішення:

SELECT СПрізв, 'проживає за адресою', САдреса FROM СТУДЕНТ.

Результат:

СПрізв

САдреса

Іваненко І. І.

проживає за адресою

А1

Іваненко І. І.

проживає за адресою

А2

Петрова П. П.

проживає за адресою

А3

Андрєєва О. О.

проживає за адресою

А4

Синтаксис:

SELECT column_name | 'string literal' [, column_name | 'string_literal' ...] FROM table_name

Ім'я будь-якого стовпця в DYNASET може не збігатися з ім'ям відповідного поля вихідної таблиці.

Рішення (2):

SELECT ПІБ = СПрізв, 'проживає за адресою', Адреса = САдреса

FROM СТУДЕНТ.

Результат:

СПрізв

САдреса

Іваненко І. І.

проживає за адресою

А1

Іваненко І. І.

проживає за адресою

А2

Петрова П. П.

проживає за адресою

А3

Андрєєва О. О.

проживає за адресою

А4

Синтаксис:

SELECT columnheading = columnname [, column_name ...] FROM tablejiame SELECT column_name column_heading [, column_name ...] FROM table_name

Оскільки в результаті операції вертикальної проекції може з'явитися набір записів,який не буде відношенням (що містить однакові рядки), то в SQL для усунення з результуючого набору повторюваних рядків використовується ключове слово DISTINCT:

Синтаксис:

SELECT {DISTINCT | ALL} <цільовий список> FROM <ТАБЛИЦЯ>. За замовчуванням використовується ключове слово ALL.

Обчислення та поля, що обчислюються

Оператор SELECT допускає використання в цільовому писку полів, що обчислюються.

Запит. Нехай оцінка, яку отримав студент, має бути переведена в бали деякого рейтингу = оцінка*100. Обчислити бал, отриманий студентом за кожний екзамен.

Рішення.

SELECT ID_Stud, Оцінка*100 FROM УСПІШНІСТЬ

Більш того, якщо потребується обчислити значення якогось виразу, який не пов'язаний з БД, використовується оператор SELECT:

Приклад: SELECT exp(0) повертає значення 1.

Синтаксис будь-якого арифметичного оператора цілком традиційний , різниця лиш в тому, що в якості операндів чи параметрів функцій може виступати ім’я стовпця. Різні реалізації SQL мають велику кількість вбудованих функцій для роботи з базовими типами даних. Коротко згадаємо можливості, які часто зустрічаються буз конкретизації синтаксису.

Робота з числовими даними: модуль, елементарну математичні, тригонометричні функції, перетворення градусів у радіани і навпаки, функції округлення, відокремлення цілої частини і інше.

Робота з символьними даними: злиття строк, отримання ASCII коду, отримання позиції першого включення підстроки та деякі інші функції пов’язані з позиціонуванням символів у стоці, перетворення нижнього регістра в верхній та навпаки і таке інше.

Робота за даними типу ДАТА: отримання поточної дати, збільшення будь-якої частини дати на задане число, обчислення кількості днів у заданому проміжку, отримання символьного анагола місяця, дня тижня да деякі іншу

Системні функції: отримання імені таблиці чи стовпця, першого ненульового елемента, ключа таблиці чи БД та багато інших.

Вибірка

Для задання умови вибірки в операторі SELECT використовується ключове слово WHERE

Синтаксис:

SELECT <ЦІЛЬВИЙ СПИСОК> FROM <ТАБЛИЦЯ> WHERE <БУЛЕВИЙ ВИРАЗ>

При формуванні умови на горизонтальну проекцію <БУЛЕВИЙ ВИРАЗ> будується з одного або більше логічних виразів, які дають оцінку TRUE або FALSE для кожного запису. В якості операндів можуть використовуватись імена полів, константи або параметри. В якості логічних операндів SQL підтримує наступні:

  • порівняння (=, <>, (!=), >=, <=, !>, !<);

  • булеві (“AND”, “OR”, “NOT”);

  • (NOT) LIKE – використовується для пошуку підстрочки у строчці

  • (NOT) IN – визначає, чи знаходиться значення в наборі даних;

  • (NOT) BETWEEN [початок інтервалу] AND [кінець інтервалу] – використовується для визначення, чи потрапило значення в даний діапазон

  • IS (NOT) NULL – визначає наповненість поля (перевіряє чи присвоєно значення полю можна тільки цим оператором)

Вираз LIKE допускає наступні шаблони та регулярні вирази:

  • % (*) – будь-яка кількість символів, включаючи нульову;

  • _(?) – будь-який одиничний символ;

  • [ ] – будь-який одиничний символ з перелічених в дужках (перелічення без пропусків та інших розділювачів, допускається вказування інтервалу, наприклад, А-С= від А до С);

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

Приклади використання LIKE:

LIKE ‘N%’ будь яка строчка, що починається з символу N

LIKE ‘%A%’ будь яка строчка, що містить А

LIKE ‘___tion’ будь яке слово з семи літер, що закінчується на tion

LIKE ‘[cf]%’ будь яка строчка,що починається з с або f

LIKE '[s-v]%ing' будь яка строчка, що починається з літери s, t, u, v та закінчується на ing

LIKE 'M[Af]%' будь яка строчка, що починається на М за якою не слідує літера f.

Результат порівняння з полем, яке містить предикат NULL, який означає, що значення не визначено, завжди дає FALSE. Наприклад, якщо поле Оцінка в деякому записі не має значення, то результат любого порівняння

Оцінка<5; Оцінка>5; Оцінка=5

буде хибним. Більш того, запис

Оцінка=NULL, (Оцінка!=NULL)

Не коректна. Порівняння з NULL виконується за допомогою спеціального оператора IS (NOT IS).

Запит: Вивести підсумки здачі іспитів на оцінку нижче, ніж 4.

Рішення: SELECT * FROM УСПІШНІСТЬ WHERE Оцінка <4

Запит: Вивести результати складених іспитів.

Рішення:SELECT * FROM УСПІШНІСТЬ WHERE Оцінка BETWEEN 3 AND 5

Запит: Вивести інформацію про Іваненкоа І.І. і Петрову П.П. (оскільки не уточнюється номер Іваненкоа І. І., то виведуться відомості про всіх, наявних в БД Іваненкоих І. І.)

Рішення: SELECT * FROM СТУДЕНТ WHERE СПрізв IN ('Іваненко І.І.', 'Петрова П.П.')

Запит: Вивести результати іспитів з курсів «бази даних» і «бази знань».

Рішення: SELECT * FROM УСПІШНІСТЬ WHERE КУРС LIKE '% Баз%'

Запит: Вивести інформацію про студентів, які не мають консультантів.

Рішення: SELECT * FROM СТУДЕНТ WHERE Консультант IS NULL

Сортування рядків

Отриманий DYNASET можна відсортувати по одному або декільком ключам.

Синтаксис:

SELECT <цільовий список> FROM <ТАБЛИЦЯ>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]