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

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

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

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

Рік:
2009
Тип роботи:
Звіт
Предмет:
Бази даних
Група:
ПІ

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Інститут КНІТ Кафедра ПЗ ЗВІТ До лабораторної роботи № 2 На тему: “ Ознайомлення із мовою Transact-SQL ” З дисципліни : " Бази даних. Частина 2 " Лектор: Доцент Павич Н.Я. Тема роботи: Ознайомлення із мовою Transact-SQL Мета роботи: Навчитися використовувати T-SQL, DML та транзакції для зміни даних та управління запитами в SQL Server 2008. Індивідуальне завдання Створити базу даних із архітектурою таблиць згідно варіанту. Всі новостворені об’єкти бази даних помістити у наперід створену схему бази даних. Внести відповідні дані у таблиці. Використовуючи DML виконати індивідуальне завдання згідно варіанту для відповідної навчальної бази даних. Продемонструвати використання інструкцій для роботи із транзакціями та обробки помилок використовуючи вірний та хибний запит. Вивести відповідні повідомлення про статус виконання запиту. Варіант 8. Видаліть з таблиці Ships всі кораблі, потоплені в битвах. Результати виконання завдання Створюємо схему бази даних: USE [Ships] GO CREATE SCHEMA [ShipSchema] AUTHORIZATION [ShipOwner] GO Створюємо структуру бази дних та поміщаємо всі об’єкти у раніше створену схему: use Ships go create table ShipSchema.Classes ( Class varchar(50) not null primary key, [Type] varchar(2) not null, Country varchar(20) not null, NumGuns tinyint, Bore real, Displacement int ) go create table ShipSchema.Ships ( Name varchar(50) not null primary key, Class varchar(50) not null, Lunched smallint ) go create table ShipSchema.Battles ( Name varchar(20) not null primary key, [Date] datetime not null ) go create table ShipSchema.Outcomes ( Ship varchar(50) not null, Battle varchar(20) not null, Result varchar(10) not null constraint PK_Outcomes primary key clustered ( Ship, Battle ) ) go  Створюємо зв’язки між таблицями:   В результаті отримаємо наступний вигляд структури бази даних :  Заносимо дані в таблиці: use Ships go insert into ShipSchema.Classes (Class, [Type], Country, NumGuns, Bore, Displacement) Values ('Aurora', 'bb', 'France', 100, 8, 150), ('Titanic', 'bc', 'USA', 150, 10, 300), ('Flying Golandec', 'bb', 'Netherlands', 100, 12, 200), ('Broken Ship', 'bb', 'China', 70, 7, 68) go  use Ships go insert into ShipSchema.Ships (Name, Class, Lunched) Values ('AuroraShip1','Aurora', 1950), ('AuroraShip2','Aurora', 1952), ('Aurora3','Aurora', 1963), ('TtitanicShip1','Titanic', 1950), ('TtitanicShip2','Titanic', 1947), ('Ttitanic3','Titanic', 1962), ('Flying_GolShip1','Flying Golandec', 1950), ('Flying_GolShip2','Flying Golandec', 1951), ('Broken_Ship1','Broken Ship', 1950), ('Broken_Ship2','Broken Ship', 1952), ('Broken_Ship3','Broken Ship', 1953), ('Broken_Ship4','Broken Ship', 1953) go  use Ships go insert into ShipSchema.Battles Values ('Битва в середземному', '02/05/1950'), ('Битва БІЛЯ ПУНКТУ 1', '02/05/1952'), ('Битва біля пунту 2', '02/05/1951'), ('Битва біля Китаю', '02/05/1950') go  use Ships go insert into ShipSchema.Outcomes Values ('AuroraShip1','Битва в середземному', 'sunk'), ('AuroraShip2','Битва в середземному', 'OK'), ('TtitanicShip1','Битва в середземному', 'damaged'), ('Ttitanic3','Битва БІЛЯ ПУНКТУ 1', 'OK'), ('Broken_Ship1','Битва БІЛЯ ПУНКТУ 1', 'sunk'), ('Flying_GolShip1', 'Битва біля пунту 2', 'OK'), ('Flying_GolShip2', 'Битва біля пунту 2', 'damaged'), ('TtitanicShip2', 'Битва біля пунту 2', 'damaged'), ('Broken_Ship2','Битва біля Китаю', 'damaged'), ('Broken_Ship3','Битва біля Китаю', 'sunk'), ('Broken_Ship4','Битва біля Китаю', 'sunk'), ('Flying_GolShip2','Битва біля Китаю', 'OK') go  Виконання індивідуально завдання: Стан до виконання запиту:  Запит: use Ships go delete from ShipSchema.Ships where ShipSchema.Ships.Name in (Select distinct Ship from ShipSchema.Outcomes Where Result = 'sunk') go  Стан після виконання запиту:  Робимо запит, який згенерує помилку USE Ships GO BEGIN TRANSACTION; -- Починаємо явну транзакцію BEGIN TRY -- Генерується помилка унікальності ключа. INSERT INTO ShipSchema.Classes VALUES ('Aurora', 'bb', 'England', 100, 8, 150) 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; -- повний текст повідомлення про помилку IF @@TRANCOUNT > 0 -- Якщо є запущені транзакції ROLLBACK TRANSACTION; -- відкат END CATCH; IF @@TRANCOUNT > 0 COMMIT TRANSACTION; -- підтвердження GO В результаті цього запиту помилку буде перехвачено і виведено інформацію про неї, сам запис в таблицю проведений не буде так як відбудеться відкат транзакції:  Якщо, помилки не робити то запит виконається, транзакція підтвердиться і запис буде внесено в таблицю: USE Ships GO BEGIN TRANSACTION; -- Починаємо явну транзакцію BEGIN TRY -- Генерується помилка унікальності ключа. INSERT INTO ShipSchema.Classes VALUES ('Aurora', 'bb', 'England', 100, 8, 150) 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; -- повний текст повідомлення про помилку IF @@TRANCOUNT > 0 -- Якщо є запущені транзакції ROLLBACK TRANSACTION; -- відкат END CATCH; IF @@TRANCOUNT > 0 COMMIT TRANSACTION; -- підтвердження GO   Висновок На даній лабораторній роботі я навчився використовувати Transact-SQL, запити мови DML та транзакції для зміни даних. Я ознайомився із методами управління запитами в SQL Server 2008 за допомогою конструкції TRY...CATCH.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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