Типи даних, оператори і функції в SQL
Оператори мови SQL можна умовно розділити на кілька підгруп.
1. Мова визначення даних (Data Defіnіtіon Language - DDL) - використовується для створення і зміни структури об'єктів бази даних (наприклад, для створення і вилучення таблиць). Основні оператори цієї групи приведені в табл. 13.1.
Таблиця 13.1. Оператори визначення даних DDL
Оператор
| Зміст
| Дія
|
CREATE TABLE
| Створити таблицю
| Створить нову таблицю в БД
|
DROP TABLE
| Вилучити таблицю
| Вилучає таблицю з БД
|
ALTER TABLE
| Змінити таблицю
| Змінює структуру існуючої таблиці чи обмеження цілісності, що задаються для даної таблиці
|
CREATE VIEW
| Створити представлення
| Створить віртуальну таблицю, що відповідає деякому SQL-запиту
|
ALTER VIEW
| Змінити представлення
| Змінює раніше створене представлення
|
DROP VIEW
| Вилучити представлення
| Вилучає раніше створене представлення
|
CREATE INDEX
| Створити індекс
| Створює індекс для деякої таблиці для забезпечення швидкого доступу по атрибутах, що входить в індекс
|
DROP INDEX
| Вилучити індекс
| Вилучає раніше створений індекс
|
2. Мова маніпулювання даними (Data Manіpulatіon Language - DML) - використовується для маніпулювання інформацією, що міститься в об'єктах бази даних. Основні оператори цієї групи приведені в табл. 13.2.
Таблиця 13.2. Оператори маніпулювання даними Data Manіpulatіon Language (DMP)
Оператор
| Зміст
| Дія
|
DELETE
| Вилучити рядок
| Вилучає один чи кілька рядків, що відповідають умовам фільтрації, з базової таблиці. Застосування оператора не погоджується з принципами підтримки цілісності, тому цей оператор не завжди може бути виконаний коректно, навіть якщо синтаксично він записаний правильно
|
INSERT
| Вставити рядок
| Вставляє один рядок у базову таблицю. Допустимі модифікації оператора, при яких відразу скільки рядків можуть бути перенесені з однієї таблиці чи запиту в базову таблицю
|
UPDATE
| Обновити рядок
| Обновляє значення одного чи декількох стовпців в одному чи декількох рядках, що відповідають умовам фільтрації
|
3. Мова запитів (Data Query Language - DQL) - найбільше часто використовувані команди для створення запитів до бази даних. Основний оператор цієї групи приведений у табл. 13.3.
Таблиця 13.3. Мова запитів (Data Query Language - DQL).
Оператор
| Зміст
| Дія
|
SELECT
| Вибрати
| Оператор, що заміняє всі оператори реляційної алгебри і що дозволяє сформувати результуюче відношення, яке відповідає запиту
|
У мові SQL підтримуються наступні основні типи даних (табл. 13.4.).
Таблиця 13.4. Основні типи даних
Позначення даних
| Опис даних
|
Числові типи
|
Цілочислові типи
|
INTEGER чи INT
| ціле число, що зберігається в чотирьох байтах. Звичайно до 10 значущих цифр і знак. Діапазон від -2 147 483 648 до 2 147 483 647.
|
SMALLINT
| коротке ціле, що зберігається в двох байтах. Звичайно до 5 значущих цифр і знак. Діапазон від -32 768 до 32 767.
|
Веществені типи з фіксованою крапкою
Призначені для точного представлення дробових чисел. Використовується, коли неприпустимі погрішності, неминучі при представленні веществених чисел із плаваючою комою в двійковій формі (наприклад, при збереженні значень грошових величин). По суті це цілочисловий тип у який відображається десяткова крапка.
|
NUMERIC [(n, m)]
| точні числа, тут n - загальна кількість цифр у числі, m - кількість цифр ліворуч від десяткової крапки.
|
DECIMAL (p, q) чи DEC(p, q)
| десяткове число, що має p цифр (0 < p < 16) і знак; за допомогою q задається число цифр праворуч від десяткової крапки (q < p, якщо q = 0, воно може бути опущене).
|
Веществені типи з плаваючою крапкою
Використовуються для інженерних і наукових розрахунків. Коли такі числа заносяться в БД, вони перетворяться в двійкову форму з плаваючою крапкою. При цьому утвориться незначна погрішність, якою звичайно зневажають. У деяких випадках це неприпустимо, наприклад, при підсумовуванні великої кількості значень загальна погрішність результату може бути істотною. Тому типи з плаваючою крапкою не використовують для грошових величин.
|
FLOAT(p)
| число великої точності з плаваючою крапкою p число байтів, яке резервується для збереження числа. Визначається конкретною СУБД.
|
REAL
| веществений тип чисел, що відповідає числам із плаваючою крапкою, меншої точності, чим FLOAT.
|
DOUBLE
| подвійне число з плаваючою крапкою, більше, ніж REAL.
|
Строкові типи
|
Символьні рядки фіксованої довжини.
|
CHARACTER(n) чи CHAR (n)
| символьний рядок фіксованої довжини з n символів (0 < n < 256). При завданні даного типу під кожне значення завжди відводиться n символів, якщо реальне значення займає менше ніж n символів, то СУБД автоматично доповнює відсутні символи пробілами. Якщо реальне значення більше чим n символів, то зайві символи обрізуються. Тому не слід використовувати цей тип для рядків, довжина яких може сильно варіюватися, це приведе до невиправданої витрати зовнішньої пам'яті.
|
Символьні рядки перемінної довжини.
|
VARCHAR(n)
| символьний рядок перемінної довжини, що не перевищує n символів (n > 0 і різне в різних СУБД, але не менше 4096). Незалежно від того, який розмір рядка зазначений в оголошенні, поле буде займати стільки місця, скільки необхідно для збереження занесеної у нього інформації;
|
Типи для представлення дати і часу
|
DATE
| дата у форматі, що визначається спеціальною командою (за замовчуванням mm/dd/yy); поля дати можуть містити тільки реальні дати. Наприклад не можна вказати 18 місяць чи 37 число.
|
TIME
| час у форматі, що визначається спеціальною командою, (за замовчуванням hh.mm.ss);
|
TIMESTAMP
| комбінація дати і часу;
|
INTERVAL
| зберігає проміжок часу між двома датами чи між двома моментами часу;
|
Грошовий тип
|
MONEY
| гроші у форматі, що визначає символ грошової одиниці ($, руб,...) і його розташування (суфікс чи префікс), точність дробової частини й умова для показу грошового значення.
|
Двійкові рядки
Використовуються рідко, наприклад для створення двійкових масок.
|
BIT(n)
| рядок бітів постійної довжини, де n - довжина рядка в байтах.
|
BIT VARYING(n)
| рядок бітів перемінної довжини де n - максимальна довжина рядка в байтах.
|
Більшість СУБД підтримують додаткові типи даних, що не визначені в стандарті. Практично всі СУБД підтримують тип даних для представлення неструктурованого тексту великого обсягу. Цей тип аналогічний типу MEMO у настільних СУБД. Називаються ці типи по-різному, наприклад у ORACLE цей тип називається LONG, у SYBASE і MS SQL Server - TEXT.
Специфіка реалізації окремих типів даних істотно впливає на результати запитів до БД. Особливо це стосується реалізації типів даних DATE і TІMESTAMP. Тому додатки на різних платформах можуть працювати по-різному через розходження в інтерпретації типів даних.
В операціях SQL можуть використовуватися константи.
Для числових типів даних визначені константи у виді послідовності цифр із необов'язковим завданням знака числа і десятковою крапкою. Тобто правильними будуть константи: 612.716 +551.702
Константи з плаваючою комою задаються шляхом завдання мантиси і порядку, розділені символом Е, наприклад: 2.9Е-4 -134.235Е7 0.54267Е18.
Строкові константи повинні бути укладені в одинарні лапки: 'Кремінь В. А.'
У деяких реалізаціях, наприклад MS SQL Server і Іnformіx, припустимі подвійні лапки у строкових константах: "Київ"
В операторах SQL використовуються вираження з застосуванням знаків арифметичних операцій додавання (+), вирахування (-), множення (*) і розподілу (/). У деяких СУБД операція розподілу (/) інтерпретується як розподіл націло, тому можна одержати результат, що не відповідає традиційної інтерпретації вираження.
У стандарт SQL2 включені операції додавання і вирахування над датами. У більшості СУБД визначена операція конкатенації над строковими даними, позначається вона, на жаль, по-різному. Так, наприклад, для DB2 операція конкатенації позначається подвійною вертикальною рискою, у MS SQL Server - знаком додавання (+), тому два вираження, створені в різних СУБД, еквівалентні:
'Прізвище' || 'Ім'я ' || ' По батькові' 'Прізвище' + 'Ім'я ' + ' По батькові'
У SQL уведений ряд стандартних убудованих функцій (табл. 13.5.).
Таблиця 13.5. Стандартні убудовані функції.
Позначення функції
| Опис функції
|
BIT_LENGTH(<рядок>)
| кількість бітів у рядку
|
CAST(<значення> AS <тип даних>)
| значення, що перетворене в заданий тип даних
|
CHAR_LENGTH(<рядок>)
| довжина рядка символів
|
CONVERT(<рядок> USING <функція>)
| рядок, що перетворений відповідно до зазначеної функції
|
CURRENT_DATE
| поточна дата
|
CURRENT_TIME(<точність>)
| поточний час із зазначеною точністю
|
CURRENT_TIMESTAMP(<точність>)
| поточні дата і час із зазначеною точністю
|
LOWER(<рядок>)
| рядок, що перетворений до нижнього регістру
|
OCTED_LENGTH(<рядок>)
| число байтів у рядку символів
|
POSITION(<перший рядок> IN <другий рядок>)
| позиція, з якої починається входження першого рядка в другий
|
SUBSTRING(<рядок> FROM n FOR <довжина>)
| частина рядка, що починається з n -го символу і яка має зазначену довжину
|
TRANSLATE(<рядок> USING <функція>)
| рядок, що перетворений з використанням зазначеної функції
|
TRIM(BOTH <символ> FROM <рядок>)
| рядок, у якого вилучені всі перші і останні символи.
|
TRIM(LEADING <символ> FROM <рядок>)
| рядок, у якому вилучені всі перші зазначені символи.
|
TRIM(TRAILING <символ> FROM <рядок>)
| рядок, у якому вилучені останні зазначені символи.
|
UPPER(<рядок>)
| рядок, перетворений до верхнього регістра.
|
Дотепер поняття "таблиця", як правило, зв'язувалося з реальною чи з базовою таблицею, тобто з таблицею, для кожного рядка якої в дійсності мається деякий двійник у фізичній пам'яті машини. Однак SQL використовує і створює ряд віртуальних (начебто існуючих) таблиць: представлень, курсорів і неіменованих робочих таблиць, у яких формуються результати запитів на одержання даних з базових таблиць і, можливо, представлень. Це таблиці, що не існують у базі даних, але як би існують з погляду користувача.
Нижче буде розглянуто практичне застосування мови SQL. Хоча стандарт SQL92 припускає його використання у всіх сучасних СУБД, практично це не виконується. Це обумовлено тим, що виробники комерційних СУБД із ціллю підвищення конкурентноздатності виходять за рамки стандарту. У більшості випадків використовуються діалекти SQL, що відрізняються від SQL92. Наприклад, у Access це Jet SQL, а в Mіcrosoft SQL Server - Transact SQL. Отже, вивчення стандартної мови SQL92 можливо тільки теоретично. Тут же вирішується задача практичного вивчення основних положень SQL. Причому всі приведені в лекції приклади можна відтворити на домашньому комп'ютері в середовищі Access 2002 і вище.
Читайте также:
Воспользуйтесь поиском по сайту: