DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи № 2 «Ознайомлення із мовою Transact-SQL»

Оригінальна назва роботи

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

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

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

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

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

Про що ця робота

У звіті наведено результати виконання лабораторної роботи з ознайомлення з мовою Transact-SQL та управління транзакціями. Продемонстровано роботу з інструкціями DML та обробку помилок у SQL Server 2008.

У роботі розглядаються

  • Transact-SQL
  • Бази даних
  • Мова DML
  • Транзакції SQL
  • Обробка помилок
  • SQL Server 2008

Зміст і розділи

  1. Тема роботи
  2. Мета роботи
  3. Індивідуальне завдання
  4. Результати виконання завдання
  5. Висновок
Для кого:Студенти технічних спеціальностей та викладачі дисципліни Бази даних
Викладачі:Павич Н. Я.

Ключові поняття

Transact-SQLDMLтранзакціяSQL Server 2008база данихструктура таблицьобробка помилоксхема бази данихinsertdelete

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Інститут КНІТ Кафедра ПЗ ЗВІТ До лабораторної роботи № 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.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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