- •Контрольні запитання
- •Контрольні запитання
- •Які головні переваги реляційної моделі?
- •Які види ключів існують і навіщо вони потрібні?
- •Функціональна залежність
- •Найбільш простий вигляд оператора select
- •2. Використання секції where
- •2.1. Порівняння значення стовпчика із константою
- •2.2. Правила виконання однотабличних запитів на вибірку
- •3. Багатотабличні запити
- •3.1. Правила виконання багатотабличних запитів на вибірку
- •4. Використання псевдонімів таблиць
- •Секція order by – визначення порядку сортування
- •Групування записів
- •Правила виконання sql–запиту на вибірку (з врахуванням секції group by)
- •Кілька стовпчиків групування
- •8.3. Обмеження на запити з групуванням
- •8.4. Значення null в стовпчиках групування
- •Правила виконання sql–запиту на вибірку (з врахуванням секції having)
- •9.2. Обмеження на умову відбору груп
- •Значення null і умови відбору груп
- •Секція having без секції group by
- •Складні умови відбору у запитах на вибірку даних Використання логічних виразів
- •Порівняння
- •Перевірка на належність діапазону значень (between…and…)
- •Перевірка на належність множині значень (in)
- •Перевірка на рівність значенню null (is null)
- •Символ пропуску
- •2.1. Режими аутентифікації
- •2.2. Компоненти структури безпеки
- •2.3. Ролі сервера
- •2.4. Ролі баз даних
- •2.5. Ролі програми
- •2.6. Захист даних
- •Шифрування даних
- •Обмеження доступу до файлів sql server
- •3.1. Права доступу
- •3.2. Права на доступ до об'єктів баз даних
- •3.3. Заборона доступу
Контрольні запитання
-
Які головні переваги реляційної моделі?
-
Дати визначення термінів: відношення, кортеж, ключ.
-
Які види ключів існують і навіщо вони потрібні?
-
Що таке домени і навіщо вони потрібні?
-
Що таке цілісність БД і як вона підтримується?
-
Що таке логічна і фізична цілісність БД?
-
Що таке посилкова цілісність і як вона підтримується?
-
Перелічити правила вилучення і оновлення даних у зв'язаних відношеннях.
-
Навести приклади обмежень значень і структурних обмежень.
-
Назвати основні операції реляційної алгебри.
-
Назвати додаткові операції реляційної алгебри, навести приклади.
-
Охарактеризувати варіанти реляційного обчислення.
-
Що таке обчислення кортежів?
Лекція №9. Мова визначення даних. Типи даних у стандарті SQL.
SQL (англ. Structured query language — мова структурованих запитів) — декларативна мова програмування для взаємодії користувача з базами даних, що застосовується для формування запитів, оновлення і керування реляційними БД, створення схеми бази даних і її модифікація, система контролю за доступом до бази даних.. Сам по собі SQL не є ні системою керування базами даних, ні окремим програмним продуктом. Не будучи мовою програмування в тому розумінні, як C або Pascal, SQL може формувати інтерактивні запити або, будучи вбудованою в прикладні програми, виступати в якості інструкцій для керування даними. Стандарт SQL, крім того, вміщує функції для визначення зміни, перевірки і захисту даних.
Інтерактивний і вкладений SQL
Є два SQL: iнтерактивний і вкладений. Здебільшого обидві форми працюють однаково, але використовуються по-різному. Інтерактивний SQL використовується для функціонування безпосередньо в базі даних. У цьому SQL - коли ви введете команду, вона зараз же виконається, і ви зможете відразу побачити результат (якщо він взагалі виведеться).
Вкладений SQL складається з команд SQL, поміщених усередині програм, які зазвичай написані іншою мовою. Це робить такі програми більш потужними і ефективними.
Проте, доводиться мати справу зі структурою SQL і стилем управління даних, який вимагає деяких розширень інтерактивного SQL. Передача SQL-команд під вкладеним SQL пропускається ( "passed off") для змінних або параметрів, що використовуються програмою, в яку вони були вкладені. Різновиди SQL
І в інтерактивній, і у вкладеній формах SQL є численні частини, або підрозділи. На жаль, ці терміни не використовуються повсюдно у всіх реалізаціях. Вони вказані ANSI і корисні на концептуальному рівні, але більшість SQL-програм практично не обробляють їх окремо, так що вони, по суті, стають функціональними категоріями команд SQL.
DDL (Мова визначення даних) - так звана Мова опису схеми в ANSI - складається з команд, які створюють об'єкти (таблиці, індекси, перегляди й так далі) в базі даних.
DML (Мова маніпулювання даними) це набір команд, які визначають, які значення представлені в таблицях у будь-який момент часу. DCD (Мова Управління Даними) складається з коштів, які визначають, чи дозволити користувачу виконувати певні дії, чи ні. Вони є складовими частинами DDL в ANSI.
Це не різні мови, а розділи команд SQL, згруповані за їх функціями.
Не всі типи значень, які можуть бути в полях таблиці, логічно однакові. Найбільш очевидна відмінність - між числами і текстом. Ви не можете поміщати числа в алфавітному порядку або віднімати одне ім'я з іншого. Так як системи з РБД базуються на зв'язках між фрагментами інформації, різні типи даних повинні відрізнятися один від одного так, щоб відповідні процеси і порівняння могли бути в них виконані. У SQL це робиться за допомогою призначення кожному з полів типу даних, який вказує тип значення, що це поле може містити. Всі значення в даному полі повинні мати однаковий тип. У таблиці Замовників, наприклад, cname і city містять рядки тексту для оцінки, а snum і cnum це числа. З цієї причини ви не можете ввести значення Highest (Найвищий) або значення None у полі rating, яке має числовий тип даних. Це обмеження встановлене тому що воно накладає деяку структурність на ваші дані. Ви часто будете порівнювати деякі або всі значення в даному полі, тому ви можете виконувати дію тільки на певних рядках, а не на всіх. Ви не могли б зробити цього, якби значення полів мали змішаний тип даних.
На жаль, визначення цих типів даних є основною областю, в якій більшість комерційних програм БД і офіційний стандарт SQL не завжди збігаються. ANSI SQL-стандарт розпізнає тільки text і number, у той час як більшість комерційних програм використовують інші спеціальні типи. Такі як DATA (ДАТА) і TIME (ЧАС) - фактично, майже стандартні типи (хоча точний формат їх змінюється). Деякі пакети також підтримують такі типи як, наприклад, MONEY (ГРОШІ) і BINARY (двійкових). (MONEY це спеціальна "валютна" система числення, яка використовується комп'ютерами.)
Вся інформація в комп'ютері передається двійковими числами, а потім перетворюється в інші системи, щоб ми могли легко використовувати їх і розуміти.
ANSI визначає кілька числових типів, відмінності між якими досить тонкі, і іноді їх плутають. Складність числових типів ANSI можна принаймні частково, пояснити зусиллям зробити вкладений SQL сумісним з низкою інших мов. Два типи чисел ANSI - INTEGER (ЦІЛЕ ЧИСЛО) і DECIMAL (десяткове ЧИСЛО) (які можна скорочувати як INT і DEC, відповідно), будуть адекватні для наших цілей, так само як і для цілей більшості практичних ділових прикладних програм. Природно, що тип INTEGER можна представити як десяткове число, яке не містить ніяких цифр праворуч від десяткової точки.
Тип для тексту - CHAR (або СИМВОЛ), що відноситься до рядка тексту. Поле типу CHAR має довжину, яка визначається максимальним числом символів, які можуть бути введені в це поле. Більша частина реалізацій також мають нестандартний тип, званий VARCHAR (ЗМІННЕ ЧИСЛО СИМВОЛІВ), який є текстової рядком і може мати будь-яку довжину до певного реалізацією максимуму (зазвичай 254 символи). Значення CHARACTER і VARCHAR включаються до поодинокі лапки як 'текст'. Різниця між CHAR і VARCHAR в тому, що CHAR повинен резервувати достатню кількість пам'яті для максимальної довжини рядка, а VARCHAR розподіляє пам'ять в міру необхідності.
Символьні типи складаються з усіх друкованих символів, включаючи числа. Однак число 1 це не те саме, що символ "1". Символ "1" - тільки друкований фрагмент тексту, не можуть бути визначені системою як числове значення 1. Наприклад 1 + 1 = 2, але "1" + "1" не дорівнює "2". Символьні значення зберігаються в комп'ютері як двійкові значення, але показуються користувачеві як друкований текст.
Перетворення виконується за форматом, який визначається системою, яку ви використовуєте. Цей формат перетворення буде одним з двох стандартних типів (можливо, з розширеннями), що використовуються в комп'ютерних системах: ASCII-код (який використовується у всіх персональних комп'ютерах і малих) і EBCDIC-код (Розширений Двійково-десятковий Код Обміну Інформації) (що використовується у великих комп'ютерах). Певні операції, такі як впорядкування в алфавітному порядку значень поля, буде змінюватися разом з форматом.
Ми повинні стежити за ринком, а не за ANSI, у використанні типу DATE (ДАТА). (У системі, яка не розпізнає тип ДАТА, ви, звичайно, можете оголосити дату як символьне або числове поле, але це зробить більшість операцій більш трудомісткими.)
Ви повинні переглянути свою документацію з пакету програм, який ви будете використовувати, щоб з'ясувати точно, які типи даних він підтримує.
У наведеній нижче таблиці перелічено типи даних ANSI SQL SQL (Structured Query Language — мова структурованих запитів). Мова запитів і програмування баз даних, яка широко використовується для доступу, запитування, оновлення й керування даними в реляційних базах даних., еквівалентні їм типи SQL-даних обробника баз даних Microsoft Access і припустимі синоніми. Також наведено список еквівалентних типів даних Microsoft SQL Server.
Тип даних ANSI SQL |
Тип даних Microsoft Access SQL |
Синонім |
Тип даних Microsoft SQL Server |
BIT, BIT VARYING |
BINARY (див. примітки) |
VARBINARY, BINARY VARYING BIT VARYING |
BINARY, VARBINARY |
Не підтримується |
BIT (див. примітки) |
BOOLEAN, LOGICAL, LOGICAL1, YESNO |
BIT |
Не підтримується |
TINYINT |
INTEGER1, BYTE |
TINYINT |
Не підтримується |
COUNTER (див. примітки) |
AUTOINCREMENT |
(див. примітки) |
Не підтримується |
MONEY |
CURRENCY |
MONEY |
DATE, TIME, TIMESTAMP |
DATETIME |
DATE, TIME (див. примітки) |
DATETIME |
Не підтримується |
UNIQUEIDENTIFIER |
GUID |
UNIQUEIDENTIFIER |
DECIMAL |
DECIMAL |
NUMERIC, DEC |
DECIMAL |
REAL |
REAL |
SINGLE, FLOAT4, IEEESINGLE |
REAL |
DOUBLE PRECISION, FLOAT |
FLOAT |
DOUBLE, FLOAT8, IEEEDOUBLE, NUMBER (див. примітки) |
FLOAT |
SMALLINT |
SMALLINT |
SHORT, INTEGER2 |
SMALLINT |
INTEGER |
INTEGER |
LONG, INT, INTEGER4 |
INTEGER |
INTERVAL |
Не підтримується |
|
Не підтримується |
Не підтримується |
IMAGE |
LONGBINARY, GENERAL, OLEOBJECT |
IMAGE |
Не підтримується |
TEXT (див. примітки) |
LONGTEXT, LONGCHAR, MEMO, NOTE, NTEXT (див. примітки) |
TEXT |
CHARACTER, CHARACTER VARYING, NATIONAL CHARACTER, NATIONAL CHARACTER VARYING |
CHAR (див. примітки) |
TEXT(n), ALPHANUMERIC, CHARACTER, STRING, VARCHAR, CHARACTER VARYING, NCHAR, NATIONAL CHARACTER, NATIONAL CHAR, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING (див. примітки) |
CHAR, VARCHAR, NCHAR, NVARCHAR |
Контрольні запитання
1. Які найбільші основні відмінності між типами даних в SQL?
2. Чи розпізнає ANSI тип даних DATA ?
3. Який підрозділ SQL використовується, щоб розмістити дані в таблиці ?
4. Що таке «ключове слово»?
Лекція №10. Структура даних в реляційній моделі. Функціональні залежності між атрибутами.
Модель реляційної бази даних була вперше розроблена доктором Е.Ф.Коддом (Е. F. Codd) на початку 70-их років XX ст. як більш зручний засіб зберігання, вибірки і маніпулювання даними, ніж ієрархічні і сіткові бази даних. На той час Кодд працював дослідником в корпорації IBM. Наприкінці 1968р. Кодд, математик за освітою, вперше усвідомив, що математичні дисципліни можна використовувати, щоб принести в область управління базами даних строгі принципи і точність - саме таких якостей не вистачало цій області на той час.
У реляційній моделі даних об'єкти і взаємозв'язки між ними (всі дані) представляються за допомогою прямокутних таблиць. У теорії множин вигляд таблиці визначається відношеннями між елементами (назву типу структури дав термін relation (з англ, відношення). Перевагою реляційної моделі є відносна простота інструментальних засобів її підтримки. Рядки в реляційній базі даних називають записами (records), а стовпці - полями (fields).
У реляційній моделі БД дані організовані так, ніби вони зберігаються в двохвимірній таблиці. Реальне фізичне розміщення даних, яке має велике значення з точки зору часу, необхідного для обробки інформації, не впливає на синтаксис, який використовується при звертанні до них. Модель двохвимірної таблиці дозволяє звертатись до даних як по рядках, так і по стовпцях.
Більшість баз даних, незалежно від того, чи реалізовані вони на ПК чи ні, для збереження даних використовують таблиці. Таблиця складається з рядків і стовпців і має унікальне ім'я в базі даних. База даних містить множину таблиць, зв'язок між якими встановлюється за допомогою співпадаючих полів. У кожній з таблиць міститься інформація про які-небудь об'єкти одного типу (групи). Наприклад, одна таблиця може зберігати дані про студентів, а інша - про навчальні курси, які вони відвідують. Ці окремі таблиці необхідно зв'язати в єдине ціле. Комбінація всіх таблиць і їх взаємних зв'язків складає "фундамент" бази даних.
У реляційній базі даних зазвичай використовується декілька різних таблиць, між якими встановлюються зв'язки. Вони дозволяють ввести інформацію в одній таблиці і пов'язати її з записами іншої через спеціальний ідентифікатор. Оскільки в реляційній БД звертання відбувається як до рядків, так і до і стовпців, то дані сприймаються значно легше. У повсякденному житті нам часто зустрічаються подібні таблиці, наприклад, розклади руху поїздів, літаків, телефонні довідники.