Ознайомлення із мовою Transact-SQL

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт
Предмет:
Інформаційні технології
Група:
ПІ

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет «Львівська політехніка» Інститут комп’ютерних наук та інформаційних технологій Кафедра ПЗ ЗВІТ до лабораторної роботи №2 з дисципліни «Бази даних (частина ІІ)» на тему: «Ознайомлення із мовою Transact-SQL» Лектор: доцент кафедри ПЗ Павич Н. Я. Мета: Навчитися використовувати T-SQL, DML та транзакції для зміни даних та управління запитами в SQL Server 2008. Завдання 1.Створити базу даних з наступною архітектурою таблиць: - Product (maker, model, type) - PC (code, model, speed, ram, hd, cd, price) - Laptop (code, model, speed, ram, hd, screen, price) - Printer (code, model, color, type, price) 2.Всі новостворені об’єкти бази даних помістити у наперед створену схему бази даних. 3.Внести відповідні дані у таблиці. 4.Використовуючи DML, видалити всі блокноти, що випускаються виробниками, які не випускають принтери. 5.Продемонструвати використання інструкцій для роботи із транзакціями та обробки помилок, використовуючи вірний та хибний запит. 6.Вивести відповідні повідомлення про статус виконання запиту. Хід роботи 1.Створення бази даних і чотирьох таблиць: Product, PC, Laptop, Printer. Відповідні SQL скрипти: USE [Librarians_Database] GO CREATE TABLE [ComputerFirm].[MyProduct]( [maker] [varchar](10) PRIMARY KEY, [model] [varchar](50) NOT NULL, [type] [varchar](50) NOT NULL ) GO USE [Librarians_Database] GO CREATE TABLE [ComputerFirm].[MyPC]( [code] [int] PRIMARY KEY, [model] [varchar](50) NOT NULL, [speed] [smallint] NOT NULL, [ram] [smallint] NOT NULL, [hd] [real] NOT NULL, [cd] [varchar](10) NOT NULL, [price] [money] NULL ) GO USE [Librarians_Database] GO CREATE TABLE [ComputerFirm].[MyLaptop]( [code] [int] PRIMARY KEY, [model] [varchar](50) NOT NULL, [speed] [smallint] NOT NULL, [ram] [smallint] NOT NULL, [hd] [real] NOT NULL, [price] [money] NULL, [screen] [tinyint] NOT NULL ) GO USE [Librarians_Database] GO CREATE TABLE [ComputerFirm].[MyPrinter]( [code] [int] PRIMARY KEY, [model] [varchar](50) NOT NULL, [color] [char](1) NOT NULL, [type] [varchar](10) NOT NULL, [price] [money] NULL ) GO Вигляд таблиць та встановлених зв’язків на діаграмі:  2. Створення схеми бази даних: USE [Librarians_Database] GO CREATE SCHEMA [ComputerFirm] AUTHORIZATION [User] GO Задання створеної схеми схемою за замовчуванням для даного користувача. Після цього всі новостворені таблиці поміщатимуться в цю схему: USE [Librarians_Database] GO ALTER USER [UserKlyovan] WITH DEFAULT_SCHEMA=[ComputerFirm] GO 3. Внесення відповідних даних у таблиці: INSERT INTO [Librarians_Database].[ComputerFirm].[MyProduct] VALUES ('Samsung','1428','PC'); INSERT INTO [Librarians_Database].[ComputerFirm].[MyProduct] VALUES ('Samsung','1429','PC'); INSERT INTO [Librarians_Database].[ComputerFirm].[MyProduct] VALUES ('Samsung','1621','Laptop'); INSERT INTO [Librarians_Database].[ComputerFirm].[MyProduct] VALUES ('HP','3734','Laptop'); INSERT INTO [Librarians_Database].[ComputerFirm].[MyProduct] VALUES ('HP','3992','Printer'); INSERT INTO [Librarians_Database].[ComputerFirm].[MyProduct] VALUES ('SomeFirm','7144','PC'); INSERT INTO [Librarians_Database].[ComputerFirm].[MyProduct] VALUES ('SomeFirm','7321','Laptop'); INSERT INTO [Librarians_Database].[ComputerFirm].[MyProduct] VALUES ('SomeFirm','7979','Printer'); INSERT INTO [Librarians_Database].[ComputerFirm].[MyPC] VALUES(40,'1428',1200,512,160,'52x',250); INSERT INTO [Librarians_Database].[ComputerFirm].[MyPC] VALUES (41,'1428',1200,1024,500,'52x',350); INSERT INTO [Librarians_Database].[ComputerFirm].[MyPC] VALUES (84,'7144',1500,2048,320,'52x',500); INSERT INTO [Librarians_Database].[ComputerFirm].[MyLaptop] VALUES(44,'1621',1200,512,160,400,15); INSERT INTO [Librarians_Database].[ComputerFirm].[MyLaptop] VALUES (72,'3734',800,256,80,250,14); INSERT INTO [Librarians_Database].[ComputerFirm].[MyLaptop] VALUES (87,'7321',1500,1024,240,NULL,15); INSERT INTO [Librarians_Database].[ComputerFirm].[MyPrinter] VALUES(75,'3992','y','Laser',200); INSERT INTO [Librarians_Database].[ComputerFirm].[MyPrinter] VALUES(88,'7979','n','Jet',140); INSERT INTO [Librarians_Database].[ComputerFirm].[MyPrinter] VALUES(89,'7979','n','Matrix',120) 4. Інформація про продукти комп’ютерної фірми (таблиця MyProduct):  Блокноти, які пропонує комп’ютерна фірма (таблиця MyLaptop):  Запит, який видаляє всі блокноти, що випускаються виробниками, які не випускають принтери: DELETE FROM [ComputerFirm].[MyLaptop] WHERE model = (SELECT model FROM ComputerFirm.MyProduct WHERE maker NOT IN (SELECT maker FROM ComputerFirm.MyProduct WHERE type = 'Printer') AND type = 'Laptop')  5. Вірний запит: транзакція видаляє з таблиці Product рядок, ключ якого вже не використовується іншими таблицями: USE Librarians_Database GO BEGIN TRANSACTION BEGIN TRY DELETE FROM ComputerFirmLibrarian.MyProduct WHERE model = '1621'; COMMIT TRANSACTION; END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage; ROLLBACK TRANSACTION; END CATCH; GO Хибний запит: транзакція видаляє з таблиці Product рядок, ключ якого використовується іншою таблицею (Laptop) як зовнішній: USE Librarians_Database GO BEGIN TRANSACTION BEGIN TRY DELETE FROM ComputerFirm.MyProduct WHERE model = '7321'; COMMIT TRANSACTION; END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage; ROLLBACK TRANSACTION; END CATCH; GO 6. У вірному запиті інструкція TRY видаляє відповідний рядок з таблиці Product; транзакція підтверджується:  У хибному запиті інструкція CATCH виводить таблицю з інформацією про неможливість видалення відповідного рядка з таблиці Product; здійснюється відкат транзакції:  Висновок: На цій лабораторній роботі я навчився використовувати Transact-SQL, DML та транзакції для зміни даних та управління запитами в SQL Server 2008; створив власну базу даних, вніс у неї відповідні дані та змінив у ній дані за допомогою DML та транзакцій.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!