
- •Крещенко л.Ф. Мова sql
- •Навчальна програма дисципліни«Мова sql»
- •Методичні рекомендації до вивчення дисципліни Тема 1. Основи роботи з Microsoft sql| Server| 2005
- •1. Основні відомості про|із|sql|Server|2005 та принципи його роботи
- •Що таке sql Server 2005
- •Бази даних
- •Реляційні бази даних
- •2. Використання sql|Server|Management|Studio|
- •Створення|створіння|запитів
- •Тема 2. Створення і керування базою даних sql Server
- •1. Створення бази даних у середовищі ms sql Server 2005
- •Методи створення бази даних sql Server
- •Оператор create database
- •Керування базою даних sql Server
- •Видалення бази даних sql Server
- •Приклад створення і керування базою даних
- •Перегляд бази даних BookShopDb
- •Видалення бази даних за допомогою оператора drop database
- •2. Створення таблиць у базі даних та накладання обмежень
- •Визначення типів даних
- •Системні типи даних
- •Користувальницькі типи даних
- •Цілісність даних
- •Цілісність, обумовлена користувачем
- •Практична реалізація створення таблиць та забезпечення цілісності даних Перегляд існуючих таблиць, стовпців і їхніх типів даних
- •Створення таблиць і керування ними
- •Створення таблиць у базі даних sql Server
- •Реалізація обмежень, що забезпечують цілісність
- •Загальні відомості про обмеження, що забезпечують цілісність
- •Визначення можливості зберігання порожніх значень (null)
- •Визначення значень за замовчуванням (default)
- •Автоматична нумерація й стовпці з ідентифікатором (identity)
- •Створення стовпців з ідентифікатором
- •Властивість identity
- •Обмеження primary key
- •Створення обмежень primary key
- •Обмеження unique
- •Створення обмежень unique
- •Обмеження foreign key
- •Створення обмежень foreign key
- •Обмеження check
- •Створення обмежень check
- •Модифікація таблиць у базі даних sql Server
- •Видалення таблиці з бази даних sql Server
- •Створення таблиці Authors у базі BookShopDb
- •Створення таблиць BookAuthors і BookCondition у базі даних BookShopDb
- •Тема 3. Синтаксичні елементи мови Transact-sql
- •1.Ідентифікатори
- •Звичайні ідентифікатори
- •Ідентифікатори з обмежниками
- •2. Функції та інші конструкції мови
- •Убудовані функції
- •Функції одержання набору рядків
- •Агрегатні функції
- •Скалярні функції
- •Користувальницькі функції
- •Типи користувальницьких функцій
- •Детермінованість функцій
- •3. Типи даних та фирази
- •Коментарі
- •Приклади. Створення сценаріїв за допомогою синтаксичних елементів мови Transact-sql
- •Сценарії Trarisact-sql
- •Тема 4 Вибірка даних з бази даних sql Server
- •1. Основи оператора select
- •Конструкція select
- •Використання ключових слів у списку вибору
- •Ключове слово distinct
- •Ключове слово top n
- •Ключове слово as
- •Типи інформації в списку вибору
- •Конструкція into
- •Конструкція from
- •Конструкції where, group by і having
- •Конструкція group by
- •Обробка конструкцій where, group by і having
- •Конструкція order by
- •Витяг всіх даних з таблиці Titles
- •Одержання даних з певних стовпців таблиці Titles
- •Завдання умови, якій повинен відповідати результуючий набір
- •Угруповання даних у результуючому наборі
- •2.Витяг даних за допомогою з'єднань
- •Внутрішні з'єднання
- •Зовнішні з'єднання
- •Використання лівих зовнішніх з'єднань
- •Використання правих зовнішніх з'єднань
- •Використання повних зовнішніх з'єднань
- •3.Визначення підзапитів усередині операторів select
- •Типи підзапитів
- •Підзапити із ключовими словами in або not in
- •Підзапити з операторами порівняння
- •Підзапити із ключовими словами exists і not exists
- •Узагальнення даних
- •Узагальнення даних за допомогою оператора cube
- •Узагальнення даних за допомогою оператора rollup
- •Приклади
- •Одержання даних за допомогою повного зовнішнього з'єднання
- •Тема 5. Модифікація даних у базах даних sql Server
- •1. Додавання даних у бд sql Server
- •Додавання даних за допомогою оператора insert
- •Insert [into] таблиця_або_відображення
- •Додавання даних за допомогою оператора insert...Values
- •Додавання даних за допомогою підзапиту select
- •Додавання даних за допомогою оператора select...Into
- •Додавання у вставлені рядки даних типу ntext, text і image
- •Додавання даних за допомогою операцій масового копіювання
- •2. Модифікація даних у бд sql Server
- •Модифікація даних за допомогою оператора update
- •Модифікація даних за допомогою конструкції set
- •Модифікація даних за допомогою конструкції where
- •Модифікація даних за допомогою конструкції from
- •Модифікація даних за допомогою api і курсорів
- •Модифікація даних типу ntext, text і image
- •3. Видалення даних із бд sql Server
- •Видалення даних оператором delete
- •Видалення даних за допомогою api і курсорів
- •Видалення даних за допомогою оператора truncate table
- •Практичні приклади модифікації даних у бд sql Server
- •Тема 6. Збережені процедури
- •1. Основні відомості про збережені процедури
- •Продуктивність
- •Можливості програмування
- •Безпека
- •2. Операції зі збереженими процедурами
- •Збереження процедури
- •Методи створення збережених процедур
- •Передача контексту збереженій процедурі
- •Виконання збереженої процедури
- •Виклик збереженої процедури
- •Визначення параметрів і їхніх значень
- •Модифікація збереженої процедури
- •Видалення збереженої процедури
- •Приклади роботи зі збереженими процедурами
- •Приклади програмування збережених процедур
- •Тема 7. Створення|створіння|тригерів|трігерів|і керування ними
- •1. Створення|створіння|тригерів|трігерів|за допомогою мови|язика|transact-sql|
- •Конструкція on|
- •Конструкції for|, after|і instead|of|
- •Конструкція as|
- •Управління тригерами|трігерами|
- •Зміна і перейменування тригерів
- •Перегляд|проглядати|, видалення|віддалення|і відключення тригерів|трігерів|
- •2. Програмування тригерів|трігерів| Псевдотаблиці Inserted|і Deleted|
- •План практичних занять Практичні заняття 1,2 (4 години)
- •Перелік завдань для модуля
- •Індивідуальні завдання для самостійної роботи студентів
- •Порядок і критерії оцінювання знань студентів
- •Перелік питань для підготовки до поточного модульного контролю
- •Розподіл балів, що отримають студенти за результатами вивчення дисципліни «Мова sql»
- •Система нарахування балів за видами навчальної роботи
- •Список рекомендованої літератури
Угруповання даних у результуючому наборі
Уведемо наступні команди Transact-SQL вікні редактору запитів:
USE Pubs
SELECT Type, AVG(Price) AS AvgPrice
FROM Titles
WHERE Price > 10
GROUP BY Type
ORDER BY AvgPrice DESC
У результуючому наборі, що поверне цей оператор SELECT, групуються рядки з однаковими значеннями поляТурe. Рядки, що не відповідають умовам конструкціїWHERE, виключаються до початку будь-яких операцій по угрупованню. При угрупованні виконується усереднення значень стовпцяPrice,а отримане середнє значення вставляється в результуючий набір у вигляді стовпцяAvgPrice. Значення стовпцяAvgPriceупорядковуються по убуванню. Виконаємо оператор Transact-SQL. Результуючий набір виводиться на вкладціResults.
Створення таблиці для розміщення результуючого набору
Уведемо наступні команди Transact-SQL вікні редактору запитів:
USE Pubs
SELECT Type, AVG(Price) AS AvgPrice
INTO TypeAvgPrice
FROM Titles
WHERE Price > 10
GROUP BY Type
ORDER BY AvgPrice DESC
Оператор SELECT створить нову таблицю за назвою TypeAvgPrice. У стовпцяхТурeіAvgPriceрозміщаються значення результуючого набору. Виконаємо оператор Transact-SQL. На вкладціResultsвиводиться повідомлення, з зазначеним числом рядків, на яке вплинуло виконання оператора.
Уведемо і виконаємо наступний оператор Transact-SQL:
SELECT * FROM TypeAvgPrice
Уміст таблиці TypeAvgPriceвиводиться на вкладціResults.
Уведемо і виконаємо наступний оператор Transact-SQL:
DROP TABLE TypeAvgPrice
На вкладці Resultsвиводиться повідомлення про успішне завершення команди.
Тепер, коли ви познайомилися з основами роботи оператора SELECTі його різними конструкціями, ми розглянемо більш складні методики роботи із запитами. Одна з них дозволяє об'єднати кілька таблиць із метою одержання результуючого набору, що містить рядки й стовпці із всіх цих таблиць. Інша методика заснована на використанні підзапитів, які являють собою операториSELECT, вкладені в інші оператори (SELECT, INSERT, UPDATE або DELETE). Усередині підзапитів дозволяються вкладені підзапити. Такі елементи мови Transact-SQL, якCUBEіROLLUP, дозволяють одержувати зведені дані.
2.Витяг даних за допомогою з'єднань
З'єднання дозволяють витягати дані із двох або більшого числа таблиць на основі логічних зв'язків між таблицями. З'єднання вказує SQL Server, як варто використати дані однієї таблиці для вибору рядків з іншої таблиці.
З'єднання задають у конструкціях FROMабоWHERE. Умови з'єднання разом з умовами конструкційWHERE і HAVING визначають рядки, обрані з основної, зазначеної в конструкціїFROMтаблиці. Однак визначення умов з'єднання в конструкціїFROMдозволяє відокремити їх від інших умов пошуку, наприклад, заданих у конструкціїWHERE. Тому рекомендується задавати з'єднання саме цим методом.
Коли єдиний запит посилається на кілька таблиць, всі посилання на стовпці варто визначати точно, Будь-яке ім'я стовпця, що повторюється у двох або більше таблицях у складі одного запиту, необхідно конкретизувати, указавши ім'я таблиці.
Список вибору з'єднання може посилатися на всі стовпці таблиць, що з'єднують, або на деяку їхню підмножину. Не обов'язково, щоб у список вибору потрапили стовпці із всіх таблиць з'єднання. Наприклад, іноді в з'єднанні, що складається із трьох таблиць, одну таблицю використовують у якості 'мосту' між двома іншими; тому в список вибору стовпці з 'серединної' таблиці можуть не потрапити. Хоча в умові з'єднання звичайно використається знак рівності (=), дозволяється застосовувати й інші реляційні оператори або оператори порівняння (або інші предикати). Коли SQL Server обробляє з'єднання, механізм обробки запитів вибирає для цього найбільш ефективний метод (із декількох можливих). Хоча при фізичному виконанні різних з'єднань оптимізація виробляється no-різному, логічна послідовність операцій така:
застосовуються умови з'єднання з конструкції FROM;
застосовуються умови з'єднання й умови пошуку з конструкції WHERE;
застосовуються умови пошуку з конструкції HAVING.
Іноді ця послідовність може впливати на результат запиту, якщо переміщати умови між конструкціями FROM і WHERE.
Не обов'язково привласнювати стовпцям, які використовуються в умові з'єднання, однакове ім'я або тип даних. Однак, якщо типи даних не ідентичні, необхідно, щоб вони були сумісні або SQL Server міг виконати їхнє неявне перетворення. Якщо неявне перетворення типів неможливо, умова з'єднання повинна явно перетворювати типи даних за допомогою функції CAST.
Більшість з'єднань можна переписати у вигляді підзапитів (запитів, вкладених усередині інших запитів), а більшість підзапитів вдається переписати у вигляді з'єднань.
Більшість з'єднань відносяться до внутрішніх або зовнішніх. Внутрішні з'єднання повертають рядки, тільки коли в обох таблицях існує хоча б по одному рядку, що відповідає умові з'єднання. При цьому рядки, для яких немає відповідних рядків з іншої таблиці, виключаються. Зовнішні з'єднання повертають всі рядки, принаймні по одній із зазначених у конструкції FROMтаблиць або відображень, які відповідають кожній з умов пошуку, заданих конструкціямиWHEREабоHAVING. Також припустимі перехресні з'єднання і само-з'єднання.