REFERATUA.ORG.UA — База українських рефератів




будуть виділені всі рядки з таблиці Products, що відповідають рядкам з таблиці Prices. Це так зване внутрішнє об'єднання. Для того, щоб створити запит, який повертає рядки, що не мають відповідності в одній з цих таблиць, треба використовувати зовнішнє об'днання. Вибрати рядки для кожного працівника, зокрема тих, хто ще не відноситься ні до якого відділу. SELECT * FROM{oj Employee LEFT OUTER JOIN Department ONEmployee.DeptNum=Department.DeptNum} LEFT OUTER JOIN використовується для того, щоб гарантувати, що в результуючій множині будуть представлені всі рядки з лівої таблиці (Employee). Щоб включити всі рядки з правої таблиці можна використовувати RIGHT OUTER JOIN, а для вибору всіх рядків з обох таблиць – FULL OUTER JOIN. Вкладені запити. Вкладений запит може використовуватися з предикатом EXISTS (NOT EXISTS). Вибрати список відділів, що не укомплектовані працівниками: SELECT DeptName FROM DepartmentWHERE DeptNum NOT EXISTS (SELECT * FROM Employee) Повертається список відділів, номера яких не містяться в жодному запису таблиці Employee. Можна також використовувати предикати IN та NOT IN. Дуже часто вкладені запити використовуються для операцій порівняння з клячовими словами ANY та ALL. Скласти список всіх студентів департаменту комп'ютерних технологій, у яких рейтинг вищий, ніж у студентів природничого факультету. SELECT Student_DCSS.Name FROM Student_DCSSWHERE Student_DCSS.Rating >ALL(SELECT Student_FNS.Rating FROM Student_FNS)Об'єднані запити. SQL дозволяє отримати один результат через об'єднання двох незалежних запитів шляхом їх комбінації за допомогою ключового слова UNION. SELECT * FROM Students_DCSSUNIONSELECT * FROM Students_FNSОператор INSERT. За допомогою оператора INSERT можна вставити дані в певне місце в базі даних. INSERT INTO Students_vipusknikiVALUES (1, 'Sveta Fiyalka', 'DCSS', 95) Оператор DELETE.DELETE FROM Student WHERE Student.Rating<61Оператор UPDATE. За допомогою цього оператора можна змінювати значення в існуючих рядках бази даних: UPDATE Employee SET Salary+100ODBC в 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. Цей оператор не використовується разом з операторами SQL, що повертають записи даних. Клас CRecordset інкапсулює функціональні можливості оператора ODBC SQL і набору рядків, що повертаються оператором. Змінні-члени цього класу ідентифікують дескриптор оператора ODBC, число полів і параметрів в наборі даних, об'єкт CDatabase, за допомогою якого набір записів підключен до джерела даних, і два рядки, що відповідають умовам WHERE та ORDER BY. Двома основними типами наборів записів є динамічні і статичні набори. Тип набору записів вказується при виклику функції CRecordset:Open. Статичні набори представляють статичний варіант представлення даних. Це найбільш зручно для таких задач, як створення звіту. Динамічні набори представляють динамічний варіант представлення даних, що відображає зміни,виконані іншими користувачами або за допомогою інших наборів записів застосування. Коли набір записів відкривається викликом функції Open, відбувається доступ до таблиці і запит, що представляється наьором записів, виконується. Набір записів і пов'язаний з ним дескриптор можуть бути закриті викликом функції Close. Атрибути набору записів можна отримати через виклик функцій CanAppend, CanRestart, CanScroll, CanTransact, CanUpdate, GetRecordCount, GetTableName, GetSQL, IsOpen, IsEOF, IsBOF та IsDeleted. Переміщення по набору записів можна отримати за допомогою функцій Move, MoveFirst, MoveLast, MoveNext та MovePrev. Дії з набором записів можуть відбуватися викликом функцій Addnew, Delete, Edit або Update. Об'єкт типу CRecordset ніколи не використовується безпосередньо. Необхідно отримати клас, похідний від CRecordset, і додати змінні, що відповідають оплям таблиці, яку представляють набір записів. Потім треба перекрити функцію DoFieldExchange набору записів; ця функція за допомогою функцій обміну полями записів RFX_(Record Field Exchange) повинна сприяти обміну даних між змінними класу та полями в базі даних. Ці функції за синтаксисом аналогічні функціям обмуну даними діалогу (dialog data exchange – DDX_).




Функції RFX_
Ім'я функції Тип поля Тип SQL ODBC
FX_Binary CByteArray SQL_BINARY, SQL_LONGVARBINARY, SQL_VARBINARY
RFX_Bool BOOL SQL_BIT
RFX_Byte BYTE SQL_TINYINT
RFX_Date CTime SQL_DATE, SQL_TIME, SQL_TIMESTAMP
RFX_Double double SQL_DOUBLE
RFX_Int int SQL_SMALLINT
RFX_Long LONG SQL_INTEGER
RFX_LongBinary CLongBinary SQL_LONGVARCHAR
RFX_Single float SQL_REAL
RFX_Text Cstring SQL_CHAR, SQL_DECIMAL, SQL_LONGVARCHAR, SQL_NUMERIC, SQL_VARCHAR
Обмін полями підтримується за допомогою класу CfieldExchange. Об'єкт цього класу містить інформацію про поля, обмін якими повинен відбуватися при виклику функції DoFieldExchange набору записів. Клас CRecordView – це клас перегляду, похідний від CformView, розробленого спеціально для відображення в формах записів баз даних. Об'єкти типу CRecordView використовують функції обміну даними діалогу (DDX) та обміна полями записів (RFX) для підтримки

 
Загрузка...