Використання мови SQL при роботі з базами даних в Delphi

Автор работы: Пользователь скрыл имя, 12 Января 2011 в 22:05, лабораторная работа

Краткое описание

Мета: ознайомитися з особливостями використання структурованої мови запитів (SQL) при роботі з базами даних в середовищі Delphi.

Содержимое работы - 1 файл

Lab10.doc

— 165.00 Кб (Скачать файл)

Лабораторна робота №10

Тема: Використання мови SQL при роботі з базами даних в Delphi

    Мета: ознайомитися з особливостями використання структурованої мови запитів (SQL) при роботі з базами даних в середовищі Delphi.

Теоретичні  відомості

  1. Компонент Query.

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

   Переваги  цього методу в більшій мірі можна  відчути при роботі з віддаленими  БД, оскільки значно збільшується швидкодія  у порівнянні з навігаційним методом  доступу. Навіть при роботі з локальними БД реляційний метод доступу дозволяє вирішувати достатньо складні задачі простими способами.

   В якості набору даних, який забезпечує можливість створення та використання SQL-запитів, найчастіше застосовується компонент Query, що знаходиться на закладці BDE палітри компонентів. В загальному випадку користувач не має можливості змінювати інформацію, що передається компонентом Query у візуальні елементи керування, такі як DBGrid. Для здійснення змін інформації, що зберігається в БД, формуються спеціальні запити.

   Більшість властивостей компоненту Query аналогічні відповідним властивостям компонента Table.

   Специфічні  властивості компоненту Query:

Властивість Тип Призначення
Active Boolean Визначає активність компонента Query. Якщо True, то компонент містить набір даних, який ґрунтується на виконанні SQL-запиту, що визначається властивістю SQL. Якщо False, то набір даних є порожнім
Constrained Boolean Властивість, встановлена  в True, вказує на те, що в змінюваному наборі даних на записи використовуються обмеження секції WHERE оператора SELECT
DataSource TDataSource Містить посилання  на джерело даних DataSource, що використовується для формування параметричного запиту
Local Boolean Має значення True, якщо компонент Query працює з локальною або файл-серверною БД
ParamCheck Boolean Якщо містить True, забезпечує автоматичне оновлення списку параметрів при зміненні запиту на етапі виконання програми
Params[Index: Word] TParams Містить список параметрів, що передаються в SQL-запиту. Дана властивість має зміст лише при створенні параметричних запитів
Prepared Boolean Має значення True, якщо запит підготований до виконання шляхом виклику методу Prepare
RequestLive Boolean Якщо містить  True, дозволяє змінювати записи набору даних і забезпечує автоматичне відображення цих змін. За замовчанням даній властивості привласнено значення False, тобто набір Query заборонено модифікувати. У випадку, коли за допомогою запиту набір даних формується на основі декількох таблиць, його не можна модифікувати незалежно від значення властивості RequestLive
RowsAffected Integer Містить кількість  запитів, які були змінені або  видалені в результаті виконання  запиту
SQL TStrings Містить текст  SQL-запиту. Текст статичного SQL-запиту можна вводити та змінювати за допомогою спеціального редактора
State TDataSetState Аналогічно  відповідній властивості компоненту Table
Text PChar Містить текст  SQL-запиту, який дійсно був переданий BDE. Вихідний текст запиту може бути змінений програмним чином, тому вміст даної властивості може відрізнятися від вмісту властивості SQL
UniDirectional Boolean Якщо містить  True, показник поточного запису набору даних може переміщуватися лише вгору. Такі набори даних обробляються значно швидше і займає менше пам’яті
 

   Основні методи компоненту Query:

Метод Призначення
Open Дозволяє відкрити набір даних. Цей метод використовується для виконання SQL-запиту, побудованого на основі оператору SELECT і здійснює вибірку записів з набору даних. Окрім виконання запиту, метод дає змогу переглянути вміст набору даних, отриманого в результаті
ExecSQL Використовується лише для виконання SQL-запиту. Цей метод не відкриває набір даних і застосовується при роботі із запитами, які здійснюють створення та знищення таблиць та індексів, змінення структури таблиць, а також додавання, видалення і редагування записів таблиць БД
Close Закриває набір  даних. Цей метод необхідно викликати перед будь-яким зміненням набору даних, а також перед динамічним зміненням тексту SQL-запиту.
 

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

   Як  вже було сказано, мова SQL містить засоби по створенню та видаленню таблиць, зміненню їх структури, роботі з індексами. Але найширше використовуються можливості мови SQL з організації вибірки даних за різними критеріями, сортування та пошуку даних, модифікації наборів даних (видалення, змінення записів). Саме на цих можливостях ми і зупинимося в даній лабораторній роботі.

  1. Організація відбору даних

   Відбір  даних з таблиць БД здійснюється за допомогою оператора SELECT. Результат такого відбору називається вибіркою.

   Оператор  SELECT – найбільш часто використовуваний та найбільш важливий оператор мови SQL. Він дозволяє отримувати вибірки з однієї або декількох таблиць БД та перетворювати результати к потрібному вигляду. За допомогою цього оператору можна реалізувати достатньо складні умови відбори даних. В загальному випадку цей оператор має наступний формат:

   SELECT [DISTINCT] {*|поле 1[,поле 2 …]}

   FROM таблиця 1[, таблиця 2…]

   [WHERE умови відбору]

   [GROUP BY список полів, що групуються]

   [HAVING умови групування]

   [ORDER BY список полів для сортування]

   [UNION оператор_SELECT]

   Опис  оператора SELECT потребує обов’язкового зазначення списку полів, а також операнду FROM, після якого вказується список таблиць, що використовуються для відбору даних. В найпростішому випадку даний оператор може мати, наприклад, наступний вигляд

   SELECT Tovar, Price

   FROM Shop

   В результаті виконання даного оператору  буде сформований набір даних, що містить значення полів Tovar та Price з таблиці Shop.

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

   Якщо  в набір даних необхідно включити всі поля заданої таблиці (таблиць), то замість перерахування імен полів можна вказати символ «*». Припустимо, якщо таблиця Firm.db містить поля Tab_nom, FIO, Otdel, Dolgn і Salary. Тоді два наступні оператори абсолютно ідентичні:

   SELECT Tab_nom, FIO, Otdel, Dolgn, Salary

   FROM Firm

   або

   SELECT *

   FROM Firm

   При відображенні вмісту набору даних за результатами виконання SQL-запиту в компоненті DBGrid за умовчанням в якості заголовків стовпців будуть використовуватися відповідні імена полів. Але існує можливість перевизначення цих заголовків, для чого використовується описувач AS, який ставиться після імені поля, а за ним вказується заголовок, що буде відображатися:

   SELECT Nom_stud AS Номер, FIO AS Прізвище, Grup AS Група

   FROM students

    Використання  умов відбору даних

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

   При порівнянні значення стовпця з константою умова пошуку має такий загальний  опис:

   WHERE ім’я_поля операція константа

   В якості операції може виступати одна з операцій відношення: = (дорівнює), > (більше), < (менше), >=(більше або дорівнює), <= (менше або дорівнює), !> (не більше), !< (не менше), <> (не дорівнює), != (не дорівнює). Крім того, умова може бути складеною, для поєднання частин якої використовуються круглі дужки та логічні функції NOT, AND, OR. Наприклад:

   SELECT Nom_r, Time_dep

   FROM reys

   WHERE Punkt_dep = ‘Берлін’ AND Punkt_arr = ‘Лондон’ AND

   Time_dep >= 15:00

   Результатом виконання наведеного запиту буде набір  даних, в якій будуть включені два  поля Nom_r та Time_dep, які показують, відповідно, номера рейсів та час відправлення літаків. При цьому існує ряд обмежень: будуть відібрані тільки ті записи, для яких пункт відправлення (Punkt_dep) – Берлін, пункт прибуття (Punkt_arr) – Лондон та час відправлення (Time_dep) – о 15:00 та пізніше.

   Існує ще декілька операцій, які можуть використовуватися  при формуванні умов пошуку:

Операція Призначення
BETWEEN Використовується  для перевірки входження значення поля в заданий діапазон
IN Використовується  для перевірки входження значення поля в заданий набір значень
LIKE Дозволяє виконувати порівняння за заданою маскою. В  масці можуть використовуватися  наступні символи: «%» - для позначення довільного рядка будь-якої довжини, «_» - для позначення довільного одиничного символу. Якщо дані символи повинні використовуватися в шаблоні безпосередні як такі, без врахування їх спеціального значення, то операція доповнюється описувачем ESCAPE символ, який дозволяє задати символ, поява якого в шаблоні відміняє спеціальні функції наступного за ним символу
IS NULL Використовується  для перевірки невизначеного  значення поля
 

   Приклад:

   SELECT FIO, Rist, Vaga,

   FROM grup

   WHERE (Vaga BETWEEN 45 AND 65) AND (Rist IN (160, 165, 170))

   Результатом виконання цього запиту буде набір  даних, що містить поля Прізвище (FIO), Зріст (Zrist) та Вага (Vaga). Набір даних формується на основі записів з таблиці grup, у яких значення поля Vaga знаходиться в діапазоні від 45 до 65, а значення поля Zrist точно дорівнює одному з трьох значень 160, 165, 170.

    Додаткові функції мови SQL

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

Функція Призначення
UPPER (рядок) Перетворює  всі символи рядка в символи  верхнього регістру
LOWER (рядок) Перетворює  всі символи рядка в символи нижнього регістру
TRIM (рядок) Видаляє символи  пробілу на початку та в кінці  рядка
SUBSTRING рядок FROM n1 TO n2 Виділяє з рядка  символи, починаючи з позиції  n1 до позиції n2
CAST (вираз AS тип_даних) Перетворює  вираз до заданого типу даних
Рядок_1|| Рядок_2 Здійснює конкатенацію (об’єднання) двох рядків
EXTRACT (елемент FROM вираз) Вибирає значення, яке відповідає вказаному елементу, з виразу що містить значення дати або часу. В якості параметру  елемент можуть бути задані такі значення: YEAR, MONTH, DAY, HOUR, MINUTE або SECOND (рік, місяць, день, годин, хвилина і секунда відповідно)
 

   Відповідність між типами даних мови SQL та типами даних таблиць Paradox наведена в наступній таблиці:

SQL Paradox
CHARACTER (N) Alpha
VARCHAR (N) Alpha
NUMERIC (X, Y) Number
FLOAT (X, Y) Number
MONEY Money
SMALLINT Short
INTEGER Long Integer
DECIMAL (X, Y) BCD
DATE Date
TIME Time
TIMESTAMP Timestamp
BLOB (N, 1) Memo
BLOB (N, 2) Binary
BLOB (N, 3) Formatted Memo
BLOB (N, 4) OLE
BLOB (N, 5) Graphic
BOOLEAN Logical
AUTOINC Autoincrement
BYTES Bytes(N)

Информация о работе Використання мови SQL при роботі з базами даних в Delphi