Смекни!
smekni.com

Visual C++. Бази даних Укр. (стр. 3 из 7)

В DDL для роботи з об’єктами використовуються такі оператори SQL:

- CREATE – створює новий об’єкт;

- ALTER– модифікує існуючий об’єкт;

- DROP- видаляє об’єкт.

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

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

Мінімальний рівень:

- CHAR (n) – символьний рядок з n символів фіксованої довжини.

- VARCHAR (n) – символьний рядок змінної довжини, але не більше n символів.

- LONG VARCHAR – символьний рядок змінної необмеженої довжини.

Базовий рівень:

- DECIMAL (p,s) або NUMERIC (p,s) – значення з плавучою комою.

- SMALLINT- двохбайтове ціле.

- INTEGER – чотрьохбайтове ціле.

- REAL – чотирьохбайтове значення з плавучою комою.

- FLOAT або DOUBLE PRECISION – восьмибайтове значення з плавучою комою.

Розширений рівень:

- BIT – один біт.

- TINYINT – однобайтове ціле.

- BIGINT – восьмибайтове ціле.

- BINARY (n) – двійкове поле фіксованої довжини, що складається з n байт.

- VARBINARY(n) – двійкове поле змінної довжини, що не перевищує n байт.

- LONG VARBINARY- двійкове поле змінної необмеженої довжини.

- DATE- значення дати.

- TIME – значення часу.

- TIMESTAMP – значення, що містить час і дату.

Створення таблиці.

CREATE TABLE Student (

StudID UNTEGER,

StudName VARCHAR (20) )

Стовпчики таблиці можна довизначити, якщо додати після типу даних додаткові модифікатори. Найчастіше використовується модифікатор NOT NULL, який вказує на те, що значення для цього стовпця повинно бути задано. Можна також вимагати, щоб конкретне поле в таблиці не повторювалось. Для цього використовується модифікатор UNIQUE. Можна також задати для стовпця значення, що буде використовуватися по замовченню, якщо не було задано явних значень. Для цього служить модифікатор DEFAULT.

Видалення таблиці.

DROP TABLE Student

В опрераторі видалення можуть використовуватися ключові слова CASCADE та RESTRICT. Якщо в операторі вказано ключове слово CASCADE, то при видаленні таблиці видаляються також всі представлення або обмежувачі цілостності, пов’язані з цією таблицею. Модифікатор RESTRICT не дозволить видалити таблицю, якщо на неї є посилання в яких-небудь представленнях або обмежувачах цілостності.

Зміна таблиці.

Додавання стовпців:

ALTER TABLE Student ADD COLUMN Course INTEGER

Видалення стовпців:

ALTER TABLE Student DROP COLUMN Course

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

Індекси.

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

CREATE [UNIQUE] INDEX StudIndex ON Student (StudID) [ASC, DESC]

ASC – в зростаючому порядку

DESC – в спадаючому порядку

Змінити індекс неможливо, а можна лише видалити його.

DROP INDEX StudIndex

Представлення.

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

CREATE VIEW MyView AS SELECT * FROM TABLE MyTable

Представлення відображає всі стовпці таблиці

CREATE VIEW MyView (Id, Name) AS SELECT (StudID, Studname) FROM Student

Існуюче представленя не можна модифікувати, але можна його видалити.

DROP VIEWMyView

Мова керування даними DCL.

Дозволяє працювати з правами користувачів на об’єкти в базі даних.

Мова SQL дозволяє присвоїти групі користувачів певні права на деякий об’єкт. Права можуть бути такими:

- SELECT дозволяє запитувати дані

- INSERT дозволяє додавати нові рядки

- DELETE дозволяє видаляти рядки

- UPDATE дозволяє змінювати існуюючі рядки

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

Права присвоюються:

GRANT SELECT ON Student TO PUBLIC

GRANT SELECT, INSERT ON Student TO Sveta, Lena

Права UPDATE та REFERENCES можуть поширюватися на окремі стовпці.

GRANT UPDATE (Raiting, Credit) ON Student TO Sveta

Відмінити права на об’єкти можна за допомогою оператора REVOKE:

REVOKE SELECT ON Student FROM Lena

В операторі REVOKE можна використовувати модифікатори CASCADE та RESTRICT. Якщо відміняються права користувача на деяку таблицю, то доцільно відмінити його права на всі представлення, що потребують доступу до всієї таблиці. Зробити це можна за допомогою CASCADE. Модифікатор RESTRICT не дозволяє відмінити право доступу, яке вимагається згідно іншим правам, що присвоєні цьому користувачу.

Мова маніпулювання даними DML.

Основні типи операторів:

- SELECT

- INSERT

- DELETE

- UPDATE

SELECT – основа SQL. Використовується кожен раз при отриманні даних. Базовий синтаксис оператора SELECT:

SELECT * FROM Student

Інші:

SELECT * FROM Student WHERE Raiting>91 AND Credit<120

SELECT * FROM Student WHERE NOT Course=4

SELECT * FROM Student WHERE (Raiting/Credit)<1

В SQL є спеціальний оператор для порівняння символьних рядків. Предикат LIKE вибирає рядки на основі визначеного шаблону. В шаблон можуть входити звичайні символи, а також символи % та _. Рядок символів довільної довжини можна поставити у відповідність шаблону %, а один символ - _.

Вибір всіх рядків, що містять рядок Database в полі Title

SELECT ChapterNum FROM Chapters WHERE Title LIKE ‘%Database%’

Пошук заголовків, в яких починаючи з другої позиції міститься рядок ata

SELECT ChapterNum FROm Chapters WHERE Title LIKE ‘_ata%’

Для спрощення оператору WHERE використовується предикати IN та BETWEEN:

SELECT StudID FROM Student WHERE Course IN (4, 3)

SELECT StudName FROM Student WHERE Raiting BETWEEN 91 AND 100

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

SELECT DISTINCT Course FROM Student

По замовченню рядки, що повертаються після виконання запиту, подаються в довільному порядку. Змінити це можна за допомогою оператора ORDER BY, який дозволяє вказати один або декілька стовпців, що будуть використовуватися для сортування повертаємих рядків. Для кожного стовпця можна вказати модифікатор ASC або DESC.

SELECT StudID FROM Student ORDER BY StudID ASC

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

Сортування рядків за зростанням значень в стовпці Salary, а рядки з однаковими значеннями в цьому полі – за спаданням ідентифікаційних номерів EmpID:

SELECT EmpID, Salary FROM Employee ORDER BY Salary ASC, EmpID DESC

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

- AVG – повертає середнє значення в стовпці.

- COUNT – підраховує кількість повертаємих рядків.

- MAX – повертає максимальне значення для деякого стовпця в результуючій множині.

- MIN – повертає мінімальне значення для деякого стовпця в результуючій множині.

- SUM – підраховує загальну суму всіх значень для деякого стовпця в результуючій множині.

Задання значень дати і часу викликає особливий інтерес. Як правило, в різних системах керування базами даних використовуються різні, а тому, несумісні, способи представлення літералів для таких значень. ODBC забезпечує переносимий синтаксис для таких значень.

Для літералів дати використовуються один з наступних форматів:

{d ‘yyyy-mm-dd’}

Для літералів часу:

{t ‘hh:mm:ss’}

Для представлення значень дати і часу:

{ts ‘yyyy-mm-dd hh:mm:ss’}

Функції SQL.

В SQL, що використовується для ODBC, визначено багато функцій, які можна використовувати при побудові запитів або в параметрі списку вибору, або в операторі WHERE. Ці функціі можна розподілити на 5 груп: числові, строкові, функції дати та часу, функції системи та функції перетворення типів даних.