ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Visual C + +. Бази даних Укр.
         

     

    Іноземна мова

    Національний університет "Києво-Могилянська Академія" Курсова робота

    на тему:

    " Visual C + +. Бази даних. " Студентки 4-го курсу

    департаменту

    комп'ютерних технологій Фіялка Світлани

    Науковий керівник:

    Спасітєлєва С.О. Київ-1999

    Зміст:

    Вступ

    Програмування баз даних за допомогою ODBC

    Архітектура ODBC

    Концепції API ODBC

    Блок-схема типової ODBC-програми

    Програма установки ODBC

    Приклад програми ODBC

    Стандарт SQL та ODBC

    ODBC в MFS-застосуваннях

    Створення структури застосування за допомогою AppWizard

    Об'єкти доступу до даних (DAO

    Класи DAO

    Побудова застосування DAO

    Візуальні інструменти баз даних

    Висновки

    Вступ.

    В першу чергу Visual C + + - це компілятор C + +, але це також і середовище, компоненти якого, взаємодіючи один з одним, спрощують процес розробки застосувань. Середовище Visual C + + пропонує великі можливості для програмування Windows-застосувань. Найхарактернішою його компонентою є бібліотека основних класів Microsoft (Microsoft Foundation Classes - MFS ). Великий набір класів С + + інкапсулює основну частину API (Application Standart Interface) Win32 і пропонує могутню основу для написання типових застосувань. До складу Visual C + + входить Microsoft Developer Studio Integrated Development Environment - інтегроване середовище для розробки застосувань (IDE). Visual Studio 97 - остання версія Microsoft Developer Studio - є ядром системи розробки Visual C + +. Вона пропонує багато різних можливостей, надає доступ до багатьох компонент системи розроблювач Visual C + +, а також взаємодіє з такими засобами розробки Micrisoft, як Visual J + + або Microsoft Network Library. Visual Studio підтримує інтерфейс для компонентів проектів, початкових файлів і файлів ресурсів, а також ряд інструментів для побудови, запуску і тестування застосувань, хоча компілятор C/C + + та інші компоненти середовища розробника можна використовувати і з командного рядка. Visual Studio пропонує інтегрований інтерфейс для таких основних інструментів Visual C + + як майстри. Майстри (Wizards) , такі як AppWizard, - це інструменти генерації структур застосувань. За допомогою таких майстрів можна створювати структури застосувань серверів або контейнерів компонентів OLE, застосувань ODBC та DAO, серверів автоматизації, елементів управління ActiveX.

    Visual C + + пропонує широкі можливості для програмування баз даних, які, зокрема, полягають в розширеному керуванні джерел даних і відладці. В застосуваннях можна використовувати декілька технологій баз даних: ODBC (Open Database Connectivity) - Зв'язок відкритих баз даних, незалежний від постачальника механізм доступу до даних з різних джерел, DAO (Data Access Objects) - Об'єкти доступу до даних, застосовується для доступу до баз даних в Microsoft Visual Basic, Microsoft Access, Visual Basic for Applications, ADO (ActiveX Data Objects) - компактна технологія доступу до даних, орієнтована на Web, OLE DB - база даних OLE, набір специфікацій інтерфейсів компонентної об'єктної моделі COM.

    Метою даної курсової роботи є розгляд основних можливостей програмування баз даних в Visual C + +, зокрема використовуючи ODBC та DAO.

    Програмування баз даних за допомогою ODBC .

    ODBC або Open Database Connectivity (Зв'язок відкритих баз даних) - незалежний від постачальника механізм доступу до даних з різних джерел. Він є реалізацією специфікацій X/Open та SAG CLI (SQL Access Group Call Level Interface) - інтерфейс рівня виклику групи доступу SQL, яку виконала фірма Microsoft. ODBC пропонує функції для взаємодії з базами даних за допомогою мови програмування, наприклад, додавання, модифікування і видалення даних, отримання службової інформації про базу даних, таблиці та індекси.

    Архітектура ODBC.

    Архітектура ODBC складається з п'яти основних рівнів: прикладний рівень, інтерфейс ODBC, диспетчер драйверів, драйвер та джерело даних .

    Прикладний рівень реалізує GUI (Graphical User Interface - Графічний інтерфейс користувача) та бізнес-логіку. Він написаний на мові програмування, такій як Java, Visual Basic або C + +. Прикладна програма використовує функції з інтерфейсу ODBC для взаємодії з базами даних.

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

    Драйвер - та частина архітектури, яка все знає про будь-яку базу даних. Система драйверів ODBC працює не лише на платформі WINDOWS, але і на інших, зокрема UNIX, що перетворює API ODBC на могутній інструмент для створення платформні-незалежних застосувань. Крім того ODBC приводить вікорістовуємій в застосуванні синтаксис SQL до єдиного стандарту, що дозволяє розробляти застосування незалежні від вида бази даних. Звичайно драйвер пов'язаний з конкретною базою даних, наприклад, драйвери Access, Oracle та драйвер SQL Server. Інтерфейс ODBC має набір функцій, таких як оператори SQL, управління з'єднанням, інформація про базу даних тощо. В обов'язки драйвера входить їх реалізація. Це означає, що в деяких базах даних драйвер повинен емулюваті функції інтерфейсу ODBC, які не підтримуються системою керування базою даних. Він виконує роботу по розсилання запитів в бази даних, отриманню відповідей і відправленню їх прикладній програмі. Для баз даних, що працюють в локальних мережах або Internet, драйвер підтримує мережний зв'язок.

    Джерело даних у контексті ODBC може бути системою керування базою даних або просто набором файлів на жорсткому диску. Він може бути як простою базою даних Microsoft Access для невеликої фірми, так і багатосервернім зберігачем інформації про клієнтів телефонної компанії і їх розмовах.

    коцепції API ODBC.

    Основною частиною системи ODBC є драйвер . Драйвери можуть бути однорівневі та багаторівневі. Однорівневі драйвери обробляють звертання ODBC і оператори SQL, а багаторівневі - обробляють звертання ODBC та передають оператори SQL джерелу даних (можливо, серверу, розташованому де-небудь в мережі). ODBC не вимагає, щоб драйвери підтримували всі функції цього інтерфейсу. Замість цього для драйверів визначаються рівні відповідності API та граматики SQL. Єдина вимога: якщо драйвер задовільняє деякому рівню, то він повинен підтримувати всі функції ODBC, визначені на цьому рівні, незалежно від того, чи підтримує їх база даних. Так як в обов'язки драйвера входить Емуляція функцій ODBC, що не підтримуються системою керування базою даних, то інтерфейс ODBC не залежить від реалізації бази даних.

    Рівні відповідності API та граматики SQL для ODBC.        Тип         Рівень відповідності         Опис               Рівні   відповідності   API         Ядро         Всі функції із специфікації SAG CLI. Виділення і   звільнення опісувачів зв'язку, SQL-оператора і   оточення. Підготовка і виконання операторів   SQL. Отримання результату і службової   інформації про результат. Отримання інформації   про помилки. Здатність виконувати транзанкції.                     Рівень 1         Розширений набір 1 включає API ядра плюс   можливості посилати і отримувати часткові   набори даних, шукати інформацію в каталозі,   отримувати інформацію про можливості   драйвера і бази даних, тощо.                     Рівень 2         Розширений набір 2 включає рівень 1 плюс   можливості обробляти масиви як параметри,   можливість прокрутки курсору, виклик DLL   транзанкцій, тощо.             Рівні   відповідності   граматики   SQL         Мінімальна   граматика         Функції створення і видалення таблиць в мові   визначення даних. Прості функції вибору,   вставки, модифікації і видалення в мові   маніпулювання даними. Прості вирази.                     Граматика ядра         Відповідність специфікаціям SAG CAE 1992 на   мінімальну граматику плюс зміна таблиць,   створення і видалення індексу, створення і   видалення логічних таблиць бази даних для DLL.   Повний оператор SELECT для DDL. Повний   Оператор SELECT для DML. Функціїї у виразах,   наприклад, SUM and MAX.                     Розширена   граматика         Додаткові можливості, такі як зовнішні   з'єднання, позіційовані модифікація і видалення,   більше виразів і типів даних, виклики процедур.     

    ODBC не є еквівалентом Embedded SQL (Вбудований SQL), який використовує оператори SQL в вихідних програмах, написаних на інших мовах. Схожі гібрідні програми перед передечею компілятору основної мови програмування оброблюються прекомпілятором. ODBC інтерпретує оператори SQL під час виконання. Основна програма не потребує прекомпіляції для виконання різних операторів SQL, як і не треба компілюваті окремі версії програми для різних джерел даних.

    Блок-схема типової ODBC-програми.

    Перш ніж реалізувати оператори SQL, застосування ODBC повинно виконати ряд дій, щоб під'єднатісь до джерела даних. Типові дії звертання ODBC:

     SQLAllocEnv (); Виділяє середовище ODBC

     SQLAllocConnect (); Виділяє пам'ять для підключення

     SQLConnect (); Завантажує драйвер, підключає до джерела

                      //Виконати оператори ODBC     SQLPrepare ();     SQLExecute ();     SQLBindCol ();     SQLFetch ();     ... ..                            SQLAllocStmt (); виділяє пам'ять для оператора SQL

    SQL Free Stmt (); Звільнює пам'ять, виділену для оператора

    SQLDisconnect (); Перерозподіляє драйвер, відключає від джерела

    SQLFreeConnect (); Звільнює пам'ять, виділену для підключення

    SQLFreeEnv (); Звільнює середовище, перериває сеанс

    Виклик SQLAllocEnv () ініціалізує бібліотеку ODBC і повертає дескриптор типу SQLHENV. Дескриптор типу SQLHDBC, що повертається функцією SQLAllocConnect (), використовується в наступних звертаннях до функцій ODBC для посилання на певне підключення. Одне застосування може підтримувати декілька відкритих підключень. Функція SQLConnect () шляхом завантаження драйверу і підключення до джерела даних встановлює з'єднання. Це звертання до функції має варіанти; наприклад, виклик SQLDriverConnect (), можна використовувати для підключення до джерел даних, які не встановлюються за допомогою програми початкової установки ODBC. SQLBrowseConnect () дозволяє застосуванню циклічно продивлятися джерела даних. Виділяючи пам'ять для оператора SQL за допомогою функції SQLAllocStmt () на окремому кроці, ODBC забезпечує механізм, при якому оператори можуть конструювати і використовуватися один раз і кілька разів перш, ніж виділена пам'ять. Після цих чотирьох звертань, як правило, застосування ODBC створює звертання до бази даних для виконання операторів SQL. Воно може використовувати функцію SQLPrepare () для підготовки (компіляції) оператора SQL для виконання і функцію SQLExecute () для дійсного його виконання. В якості альтернативи виклику SQLPrepare () та SQLExecute () застосування можуть використовувати функцію SQLExecDirect () для виконання оператора SQL в одній дії. Спочатку стовпчики зв'язуються з змінними програми за допомогою SQLBindCol, потім ці змінні зчітуються після виконання SQLFetch () над рядком таблиці. Якщо даних більше нема, SQLFetch () повертає SQL_NO_DATA_FOUND. В якості альтернативи використанню SQLBindCol () для пов'заніх стовпців застосування можна використовувати функцію SQLGETDATA () для отримання даних з незв'язаніх стовпців.

    Коли його робота закінчена, застосування повинно звільнити задіяні ним ресурси ODBC.

    В ODBC 3.0 функція SQLFreeHandle () використовується замість функцій ODBC 2.x SQLFreeEnv (), SQLFreeConnect (), SQLFreeHandle ().

    Програма установки ODBC.

    Програма установки ODBC викликається за допомогою Control Panel (Панель керування) в Windows і використовується для регістрації джерел даних. Що саме є джерелом даних? Це залежить від драйвера. У випадку такого драйвера, як SQL Server, джерелом даних може бути база даних на сервері. В випадку драйвера Microsoft Access або Microsoft Excel база даних є файлом (MDB або XLS). В випадку Microsoft Text Driver база даних - це каталог, що містить текстові файли, які стосовно драйвера є таблицями в базі даних. Останні версії ODBC розрізняють три типи джерел даних. Джерело даних користувача - це джерело даних, яке бачить лише той, хто його створив. Джерело системних даних доступне всім користувачам даного комп'ютера. Джерело файлових даних - це джерело даних, специфікації якого зберігаються в файлі і можуть бути одночасно використані користувачами на різних комп'ютерах.

    Для додавання джерела даних треба викликати програму установки ODBC в Control Panel і, вибравши необхідний тип джерела даних, вибрати драйвер і додати його кнопкою Add. У з'явилося діалоговому вікні "Create New Data Source" можна вибрати базу даних і встановити необхідні властивості драйвера. Основне діалогове вікно містить список всіх інстальованніх джерел даних:

    джерело даних джерело системних джерело файлових

    користувача даних даних

       
                                        

    діалогове вікно "ODBC Data Source Administrator"

    Приклад програми ODBC.

    нище наведено текст простого застосування ODBC, яке зчитує рядки, що містяться в таблиці Excel. Коли доступ до таблиці Excel здійснюється з використанням драйвера Microsoft Excel ODBC, електронні таблиці відіграють роль таблиць бази даних, а рядки в таблиці - роль записів у ній.

          
    Таблиця Excel складається з 4 стовпчиків, що містять інформацію про прізвище та ім'я студента, факультет, де він навчається, та рейтинг за осінній триместр 1998/1999 навч. рік.

    Замість інсталяції цієї таблиці в якості джерела даних, використовуючи програму початкової установки ODBC, можна скористуватися можливостями функції SQLDriverConnect.

    Застосування може бути скомпільовано з командного рядка введеннням:

    cl student.c odbc32.lib . Файл student.xls (таблиця Excel) повинен бути доступним з поточного каталогу.

    # include

    # include

    # include

    # include

    # define CONNSTR «DBQ = Student.XLS; DRIVER = (Microsoft Excel Driver (*. xls )}»

    # define CONNLEN (sizeof (CONNSTR) -1)

    # define SQLTRY (x, y)

    (

    rc = y;

    if (rc! = SQL_SUCCESS)

    (

    char szState [6];

    char szMsg [255];

    SDWORD sdwNative;

    SWORD swMsgLen;

    SQLError (hEnv, hDBC, hStmt, szState, & sdwNative, szMsg, sizeof (szMsg), & swMsgLen);

    printf ( «Error% d performing% snSQLState =% snSQL message =% sn», rc, x, szState, szMsg);

    goto Terminate;

    )

    )

    void main (void)

    (

    SQLHENV hEnv = 0;

    SQLHDBC hDBC = 0;

    SQLHSTMT hStmt = 0;

    SQLCHAR szConnStr [255];

    SQLCHAR szStmt [255];

    SQLCHAR szName [255];

    SQLCHAR szFaculty [255];

    long nRating;

    SWORD cbConnStr;

    RETCODE rc;

    SDWORD sdwNLen;

    SDWORD sdwFLen;

    SDWORD sdwRLen;

    int i;

    char szResult [1000];

    SQLTRY ( «SQLAllocEnv», SQLAllocEnv (& hEnv))

    SQLTRY ( «SQLAllocConnect», SQLAllocConnect (hEnv, & hDBC))

    SQLTRY ( «SQLDriverConnect», SQLDriverConnect (hDBC, NULL, CONNSTR, CONNLEN, szConnStr, sizeof (szConnStr), & cbConnStr, SQL_DRIVER_NOPROMPT))

    SQLTRY ( «SQLAllocStmt», SQLAllocStmt (hDBC, & hStmt))

    sprintf (szStmt, «SELECT * FROM [Sheet1 $]»);

    SQLTRY ( «SQLPrepare», SQLPrepare (hStmt, szStmt, strlen (szStmt )))

    SQLTRY ( «SQLBindCol», SQLBindCol (hStmt, 1, SQL_C_CHAR, (PTR) szName, sizeof (szName), & sdwNLen))

    SQLTRY ( «SQLBindCol», SQLBindCol (hStmt, 2, SQL_C_CHAR, (PTR) szFaculty, sizeof (szFaculty), & sdwFLen))

    SQLTRY ( «SQLBindCol», SQLBindCol (hStmt, 3, SQL_C_SLONG, (PTR) & nRating, sizeof (nRating), & sdwRLen))

    SQLTRY ( «SQLExecute», SQLExecute (hStmt))

    for (i = 1; (rc = SQLFetch (hStmt)) == SQL_SUCCESS; i ++)

    (

    printf ( «Record #% dtName:% stFaculty:% stRating:% dn», i, szName, szFaculty, nRating);

    )

    if (rc! = SQL_NO_DATA_FOUND)

    (

    SQLTRY ( «SQLFetch», rc)

    )

    printf ( «Successfully completed.n »);

    Terminate0:

    if (hStmt) SQLFreeStmt (hStmt, SQL_CLOSE);

    if (hDBC) SQLDisconnect (hDBC);

    if (hDBC) SQLFreeConnect (hDBC);

    if (hEnv) SQLFreeEnv (hEnv);

    SQLTRY ( «SQLAllocEnv», SQLAllocEnv (& hEnv))

    SQLTRY ( «SQLAllocConnect», SQLAllocConnect (hEnv, & hDBC))

    SQLTRY ( «SQLDriverConnect», SQLDriverConnect (hDBC, NULL, CONNSTR, CONNLEN, szConnStr, sizeof (szConnStr), & cbConnStr, SQL_DRIVER_NOPROMPT))

    SQLTRY ( «SQLAllocStmt», SQLAllocStmt (hDBC, & hStmt))

    sprintf (szStmt, «SELECT * FROM [Sheet1 $] WHERE Rating> 91 ORDER BY Rating DESC »);

    SQLTRY ( «SQLPrepare», SQLPrepare (hStmt, szStmt, strlen (szStmt )))

    SQLTRY ( «SQLBindCol», SQLBindCol (hStmt, 1, SQL_C_CHAR, (PTR) szName, sizeof (szName), & sdwNLen))

    SQLTRY ( «SQLBindCol», SQLBindCol (hStmt, 2, SQL_C_CHAR, (PTR) szFaculty, sizeof (szFaculty), & sdwFLen))

    SQLTRY ( «SQLBindCol», SQLBindCol (hStmt, 3, SQL_C_SLONG, (PTR) & nRating, sizeof (nRating), & sdwRLen))

    SQLTRY ( «SQLExecute», SQLExecute (hStmt))

    for (i = 1; (rc = SQLFetch (hStmt)) == SQL_SUCCESS; i ++)

    (

    printf ( «Record #% dtName:% stFaculty:% stRating:% dn», i, szName, szFaculty, nRating);

    )

    if (rc! = SQL_NO_DATA_FOUND)

    (

    SQLTRY ( «SQLFetch», rc)

    )

    printf ( «Successfully completed.n »);

    Terminate:

    if (hStmt) SQLFreeStmt (hStmt, SQL_CLOSE);

    if (hDBC) SQLDisconnect (hDBC);

    if (hDBC) SQLFreeConnect (hDBC);

    if (hEnv) SQLFreeEnv (hEnv);

    )

    Простий макрос SQLTRY використовується для повідомлення про помилки.

    Після обов'язкових звертань до функцій SQLAllocEnv та SQLAllocConnect програма викликає SQLDriveConnect. Цей виклик робить можливим відкриття таблиці, яка не встановлювалась з використанням програми початкової установки ODBC і робить це без відображення інтерфейса користувача. Для відкриття таблиці використовуються константи CONNSTR та CONNLEN. Як тільки підключення до бази даних успішно завершено, виконуються послідовно два оператори SQL:

    1) SELECT * FROM [Sheet $] - Вибрати всі записи з таблиці Student.

    2) SELECT * FROM [Sheet $] WHERE Rating> 91 ORDER BY Rating DESC -- Вибрати записи з таблиці Student про тих студентів, що мають рейтинг більший за 91, та впорядкувати виведений список за зменшенням рейтингів студентів.

    Ім'я Sheet $ - це ім'я, яке надається драйвером для першої таблиці в робочій книзі Excel. Оператор SQL використовується для отримання полів всіх записів.

    Наступні 4 звертання прив'язують змінні до стовпчиків таблиці. Таке призначення функції SQLBindCol. Після послідовного отримання записів, значення полів переміщуються в ці змінні.

    Самі записи отримуються за допомогою функції SQLFetch і відображаються з використанням printf. Функція SQLFetch викликається до тих пір, поки значення, що повертається нею, не відрізняється чим-небудь від SQL_SUCCESS. Значення, що повертається, SQL_NO_DATA_FOUND показує, що отриманий останній запис, все інше є помилкою і обробляється відповідним чином.

    Програма завершується обов'язковими звертаннями до функцій SQLFreeStmt, SQLDisconnect, SQLFreeConnect та SQLFreeEnv для звільнення ресурсів і закінчення зв'язку з джерелом даних.

    При запуску цієї програми забезпечується такий вивід:

          

    Стандарт SQL та ODBC.

    Синтаксис для ODBC заснований на стандарті ANSI SQL-92.

    Майже кожна СУБД використовує свій власний діалект SQL, синтаксис якого може трохи відрізнятися. Кожен діалект може підтримувати різний набір властивостей. Драйвер ODBC для конкретної бази даних забезпечить необхідний переклад загального SQL на специфічний діалект, що використовується в певній СУБД.

    Існує три основні групи операторів SQL:

    мова визначеня даних DDL (Data Definition Language) використовується для задання структури бази даних і створення її об'єктів;

    мова керування даними DCL (Data Control Language) - для роботи з правами користувача на конкретні об'єкти;

    мова маніпулювання даними DML (Data Manipulation Language) - для виконання інших операцій таких, як додавання і модифікація даних, а також виконання запитів.

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

    У 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 VIEW MyView

    Мова керування даними 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 груп: числові, строкові, функції дати та часу, функції системи та функції перетворення типів даних.

    Синтаксис ODBC визначає таку форму запису при виклику функції в SQL:

    (fn ім'я функції)

    Строкові функції

    Деякі функції для роботи з рядками в ODBC SQL:

    - CONCAT (віраз1, віраз2) - приєднання віраз1 до віраз2;

    - INSERT (віраз1, початок, довжина, віраз2) - повертає віраз1, в якому видалена довжина символів, починаючи з символу початок, замість яких, починаючи з символу початок, вставлено віраз2;

    - LCASE (вираз) - повертає вираз, символи якого перетворені на відповідні з нижнього регістру;

    - LENGTH (вираз) - довжина вираз в символах;

    - POSITION (віраз1, віраз2) - повертає позицію віраз1 в віраз2;

    - UCASE (вираз) - повертає вираз, всі символи якого перетворені на відповідні верхнього регістру.

    Числові функції.

    Деякі числові функції в ODBC SQL:

    - ABS (вираз) - повертає абсолютне значення вираз;

    - MOD (віраз1, віраз2) - повертає остачу від ділення віраз1 на віраз2;

    - POWER (віраз1, віраз2) - повертає віраз1 в степені віраз2;

    - RAND (вираз) - повертає випадкове число. Вираз задає кількість випадкових чисел;

    - ROUND (віра1, віраз2) - повертає віраз1 округлення з точністю до віраз2 знаків після коми;

    - SQRT (вираз) - повертає квадратний корінь з вираз.

    Функції дати та часу.

    Деякі функції дати та часу в ODBC SQL:

    - CURDATE () - повертає поточну дату;

    - CURTIME () - повертає поточний час;

    - NOW () - повертає поточний час і дату в форматі дата/час;

    Системні функції.

    Деякі системні функції в ODBC SQL:

    - DATABASE () - повертає ім 'бази даних, що використовується в поточному сеансі;

    - USER () - повертає ім'я користувача бази даних, що використовується в поточному сеансі;

    Перетворення типів даних.

    Функція перетворення типів даних в ODBC SQL:

    CONVERT (вираз, тіп_даніх)

    Параметр тіп_даніх може приймати такі значення:

    SQL_BINARY

    SQL_CHAR

    SQL_DECIMAL

    SQL_DOUBLE

    SQL_FLOAT

    SQL_INTEGER

    SQL_LONGVARCHAR

    SQL_NUMERIC

    SQL_REAL

    SQL_SMALLINT

    SQL_TYPE_DATE

    SQL_TYPE_TIME

    SQL_TYPE_TIMESTAMP

    SQL_VARCHAR

    Об'єднання.

    Операція об'єднання повертає рядки, що сформовані з даних двох або більше різних таблиць і об'єднані в процесі виконання запиту.

    SELECT Name, Prices FROM Products, Prices WHERE Products.ID = Prices.ID

    При виконанні цього оператора будуть виділені всі рядки з таблиці Products, що відповідають рядки з таблиці Prices. Це так зване внутрішнє об'єднання. Для того, щоб створити запит, який повертає рядки, що не мають відповідності в одній з цих таблиць, треба використовувати зовнішнє об'днання.

    Вибрати рядки для кожного працівника, зокрема тих, хто ще не відноситься ні до якого відділу.

    SELECT * FROM

    (oj Employee LEFT OUTER JOIN Department ON

    Employee.DeptNum = Department.DeptNum)

    LEFT OUTER JOIN використовується для того, щоб гарантувати, що в результуючій множині будуть представлені всі рядки з лівої таблиці (Employee). Щоб включити всі рядки з правої таблиці можна використовувати RIGHT OUTER JOIN, а для вибору всіх рядків з обох таблиць - FULL OUTER JOIN.

    Вкладені запити.

    вкладений запит може використовуватися з предикатом EXISTS (NOT EXISTS).

    Вибрати список відділів, що не укомплектовані працівниками:

    SELECT DeptName FROM Department

    WHERE DeptNum NOT EXISTS (SELECT * FROM Employee)

    Повертається список відділів, номера яких не містяться в жодному запису таблиці Employee.

    Можна також використовувати Предикати IN та NOT IN.

    Дуже часто вкладені запити використовуються для операцій порівняння з клячовімі словами ANY та ALL.

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

    SELECT Student_DCSS.Name FROM Student_DCSS

    WHERE Student_DCSS.Rating> ALL

    (SELECT Student_FNS.Rating FROM Student_FNS)

    Об'єднані запити .

    SQL дозволяє отримати один результат через об'єднання двох незалежних запитів шляхом їх комбінації за допомогою ключового слова UNION.

    SELECT * FROM Students_DCSS

    UNION

    SELECT * FROM Students_FNS

    Оператор INSERT .

    За допомогою оператора INSERT можна вставити дані в певне місце в базі даних.

    VALUES (1, 'Sveta Fiyalka', 'DCSS', 95)

    Оператор DELETE .

    DELETE FROM Student WHERE Student.Rating <61

    Оператор UPDATE .

    За допомогою цього оператора можна змінювати значення в існуючих рядках бази даних:

    UPDATE Employee SET Salary +100

    ODBC в MFS-застосуваннях.

    Використання ODBC значно спрощується за допомогою Microsoft Foundation Classes Library (Бібліотека основних класів Microsoft). Прості застосування, що отримують доступ до таблиць через ODBC, можуть бути створені всього лише декількома натисненням кнопки миші з використанням мастерів AppWizard та ClassWizard. Існує декілька класів MFS, які підтримують доступ до баз даних і розділами записів.

    Класи ODBC в MFS .

    Найголовніші класи, що надаються MFS для підтримки застосувань ODBC - це класи CDatabase та CRecordset . Клас CDatabase представляє з'єднання з джерелом даних. Його змінна m_hdbc представляє дескриптор з'днання ODBC. Функції Open та Close можна використовувати для установки або закриття з'єднання з джерелом даних. Інші функції використовуються для установки або отримання параметрів з'єднання. До таких функцій належать: GetConnect (повертає рядок з'єднання ODBC), IsOpen, GetDatabaseName, CanUpdate, CanTransact, InWaitForDataSource, SetLoginTimeout та SetSynchronousMode. За замовченню для доступу до джерела даних клас CDatabase використовує асинхронний режим. Виконувана асинхронно дія може бути перервана викликом функції Cancel.

    Обробка транзанкцій підтримується функціями BeginTrans та Rollback.

    Клас CDatabase надає також дві перекріваємі функції. Функція OnSetOptions використовується для установки стандартних опцій з'єднання. Функція OnWaitForDataSource викликається системою для повідомлення про час обробки при виконанні довгої операції.

    Функцію ExecuteSQL можна використовувати для безпосереднього виконання оператора SQL.

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status