- •1 Типи даних язика sql, визначені стандартом
- •1.1 Символьні дані
- •1.3 Точні числа
- •1.4 Округлені числа
- •1.5 Дата і час
- •1.6 Поняття домена
- •2 Типи даних, що використовуються в sql-сервері
- •2.1 Системні типи даних
- •2.2 Короткий огляд типів даних sql Server.
- •2.3 Перетворення типів
- •3 Основні поняття ms sql Server
- •3.1 Вирази
- •4 Управляючі конструкції sql
- •5 Основні об’єкти структури бази даних sql-серверу
- •5.1 Таблиці
- •5.2 Уявлення
- •5.7 Призначені для користувача типи даних
- •5.8 Обмеження цілісності
- •5.9 Правила
- •5.10 Умовчання
- •Контрольні питання
2.3 Перетворення типів
Нерідко необхідно конвертувати значення одного типу в значення іншого. Найбільш часто виконується конвертація чисел в символьні дані і навпаки, для цього використовується спеціалізована функція STR. Для виконання інших перетворень SQL Server пропонує універсальні функції CONVERT і CAST, за допомогою яких значення одного типу перетворюються в значення іншого типу, якщо такі зміни взагалі можливі. CONVERT і CAST приблизно однакові і можуть бути взаємозамінними.
Разом з типами даних основоположними поняттями при роботі з язиком SQL в середовищі MS SQL Server є вирази, оператори, змінні, керуючі конструкції.
3 Основні поняття ms sql Server
3.1 Вирази
Вирази є комбінацією ідентифікаторів, функцій, знаків логічних і арифметичних операцій, констант і інших об'єктів. Вираз може використовуватися як аргумент в командах, збережених процедурах або запитах.
Вираз складається з операндів (власне даних) і операторів (знаків операцій, здійснюваних над операндами). Як операнди можуть виступати константи, змінні, імена стовпців, функції, підзапити.
Оператори – це знаки операцій над одним або декількома виразами для створення нового виразу. Серед операторів можна виділити унарні оператори, оператори привласнення, арифметичні оператори, рядкові оператори, оператори порівняння, логічні оператори, бітові оператори .
3.2 Змінні
В середовищі SQL Server існує декілька способів передачі даних між командами. Один з них – передача даних через локальні змінні. Перш ніж використовувати яку-небудь змінну, її слід оголосити. Оголошення змінної виконується командою DECLARE, що має наступний формат:
DECLARE {@имя_переменной тип_даних } [,...n]
Значення змінної можна привласнити за допомогою команд SET і SELECT. За допомогою команди SELECT зміній можна привласнити не тільки конкретне значення, але і результат обчислення виразу.
DECLARE @a INT
SET @a=10
Приклад 2.4. Використовування SET для привласнення значення локальної змінної.
DECLARE @k INT
SELECT @k=SUM(кількість) FROM Товар
Приклад 2.5. Використовування SELECT для привласнення локальної змінної результату обчислень.
4 Управляючі конструкції sql
Язик SQL є непроцедурним, але в середовищі SQL Server передбачений ряд різних керуючих конструкцій, без яких неможливе написання ефективних алгоритмів.
Групування двох і більш команд в єдиний блок здійснюється з використанням ключових слів BEGIN і END:
<блок_операторів>::=BEGIN{ sql_оператор | блок_операторів }END
Згруповані команди сприймаються інтерпретатором SQL як одна команда. Подібне угрупування потрібне для конструкцій поліваріантних розгалужень, умовних і циклічних конструкцій. Блоки BEGIN...END можуть бути вкладеними.
Деякі команди SQL не повинні виконуватися разом з іншими командами (йдеться про команди резервного копіювання, зміни структури таблиць, збережених процедур і ним подібних), тому їх сумісне включення в конструкцію BEGIN...END не допускається.
Нерідко певна частина програми повинна виконуватися тільки при реалізації деякої логічної умови. Синтаксис умовного оператора показаний нижче:
<умовний_оператор>::=
IF лог_вираз { sql_оператор | блок_операторів }
[ ELSE
{sql_оператор | блок_операторів } ]
Цикли організовуються за допомогою наступної конструкції:
<оператор_циклу>::=
WHILE лог_вырз { sql_оператор | блок_операторів }
[ BREAK ]
{ sql_оператор | блок_операторів }
[ CONTINUE ]
Цикл можна примусово зупинити, якщо в його тілі виконати команду BREAK. Якщо ж потрібно почати цикл заново, не чекаючи виконання всіх команд в тілі, необхідно виконати команду CONTINUE.
Для заміни безлічі одиночних або вкладених умовних операторів використовується наступна конструкція:
<оператор_поліваріантних_розгалужень>::=
CASE вхідне_значення
WHEN {значення_для_порівняння | лог_вираз} THEN вих_вираз [,...n]
[ ELSE інакше_вих_вираз]
END
Якщо вхідне значення і значення для порівняння співпадають, то конструкція повертає вихідне значення. Якщо ж значення вхідного параметра не знайдено ні в одному з рядків WHEN...THEN, то тоді буде повернено значення, вказане після ключового слова ELSE.
