
- •Міністерство освіти і науки україни
- •Анотація
- •Основи sql
- •Основні поняття
- •Стандарт і реалізація мови sql
- •Введення в технологію клієнт-сервер
- •Типи команд sql
- •Переваги мови sql
- •Запис sql –операторів
- •Опис учбової бази даних
- •Визначення структури даних
- •Типи даних мови sql, визначені стандартом
- •Типи даних, використовувані в sql –сервері
- •Управляючі Конструкції sql
- •Основні об'єкти структури бази даних sql -сервера
- •Створення бази даних і проектування таблиць
- •База даних
- •Індекси
- •Ефективне виконання запитів для витягання даних
- •Пропозиція select
- •Пропозиція from
- •Пропозиція where
- •Пропозиція order by
- •З'єднання і теоретико-множинні операції над відношеннями
- •Операція вибірки
- •Операція проекції
- •Декартовий добуток
- •Операція з'єднання по двох відношеннях (таблицях)
- •Операція об'єднання
- •Операція перетину
- •Операція різниці
- •Операція ділення відношень
- •Обчислення і підведення підсумків в запитах
- •Побудова обчислюваних полів
- •Використання підсумкових функцій
- •Пропозиція group by
- •Пропозиція having
- •Поняття підзапиту
- •Використання підзапитів, що повертають одиничне значення
- •Використання підзапитів, що повертають безліч значень
- •Запити модифікації даних
- •Запит додавання
- •Запит видалення
- •Запит оновлення
- •Введення в поняття "Цілісність даних"
- •Визначення обмежень цілісності
- •Таблиці з обмеженнями в стандарті мови
- •Таблиці в середовищі ms sql Server
- •Представлення
- •Визначення представлення
- •Оновлення даних в представленнях
- •Переваги і недоліки представлень
- •Функції користувача
- •Поняття функції користувача
- •Функції Scalar
- •Функції Inline
- •Функції Multi-statement
- •Вбудовані функції
- •Функції для роботи з датою і часом
- •Збережені процедури
- •Поняття збереженої процедури
- •Збережені процедури, в середовищі ms sql Server
- •Курсори
- •Поняття курсору
- •Реалізація курсорів в середовищі ms sql Server
- •Управління курсором в середовищі ms sql Server
- •Тригери
- •Визначення тригера в стандарті мови sql
- •Реалізація тригерів в середовищі ms sql Server
- •Тригери в рекурсивних структурах
- •Введення в рекурсивні структури
- •Реалізація правил цілісності даних
- •Додавання запису в рекурсивну структуру
- •Зміна запису в рекурсивній структурі
- •Видалення запису з рекурсивної структури
- •Транзакції і блокування
- •Введення в транзакції
- •Acid -властивості транзакцій
- •Блокування
- •Управління транзакціями
- •Управління транзакціями в середовищі ms sql Server
- •Блокування в середовищі ms sql Server
- •Рівні ізоляції sql Server
- •Основні методи захисту даних. Управління користувачами
- •Управління користувачами бази даних
- •Управління користувачами в середовищі ms sql Server
- •Управління доступом до даних
- •Реалізація прав на доступ до об'єктів баз даних в середовищі ms sql Server
- •Впровадження sql -операторів в прикладні програми
- •Sql і прикладні програми
- •Архітектура odbc
- •Джерела даних і odbc
- •Взаємодія з базою даних в Java -програмах
- •Звернення до бази даних з використанням технології ado
- •Висновок
- •Список літератури
Типи даних, використовувані в sql –сервері
Системні типи даних
Один з основних моментів процесу створення таблиці - визначення типів даних для її полів. Тип даних поля таблиці визначає тип інформації, яка розміщуватиметься в цьому полі. Поняття типу даних в SQL Server повністю адекватно поняттю типу даних в сучасних мовах програмування. SQL -сервер підтримує велике число різних типів даних : текстові, числові, двійкові (див. таблицю 2.2).
Таблиця 2.2. | |||
image |
smalldatetime |
bit |
binary |
text |
real |
decimal |
char |
uniqueidentifier |
money |
numeric |
timestamp |
tinyint |
datetime |
smallmoney |
nvarchar |
smallint |
float |
varbinary |
nchar |
int |
ntext |
varchar |
sysname |
Приведемо короткий огляд типів даних SQL Server.
Для зберігання символьної інформації використовуються символьні типи даних, до яких відносяться CHAR (довжина), VARCHAR (довжина), NCHAR (довжина), NVARCHAR (довжина). Останні два призначені для зберігання символів Unicode. Максимальне значення довжини обмежене 8000 знаками ( 4000 - для символів Unicode).
Зберігання символьних даних великого об'єму (до 2 Гб) здійснюється за допомогою текстових типів даних TEXT і NTEXT.
До цілочисельних типів даних відносяться INT ( INTEGER ), SMALLINT, TINYINT, BIGINT. Для зберігання даних цілочисельного типу використовується, відповідно, 4 байти (діапазон від - 231 до 231-1 ), 2 байти (діапазон від - 215 до 215-1 ), 1 байт (діапазон від 0 до 255 ) або 8 байт (діапазон від - 263 до 263-1 ). Об'єкти і вирази цілочисельного типу можуть застосовуватися у будь-яких математичних операціях.
Числа, у складі яких є десяткова точка, називаються нецілочисельними. Нецілочисельні дані розділяються на два типи - десяткові і приблизні.
До десяткових типів даних відносяться типи DECIMAL [(точність[,масштаб])] чи DEC і NUMERIC [(точність[,масштаб])]. Типи даних DECIMAL і NUMERIC дозволяють самостійно визначити формат точності числа з плаваючою комою. Параметр точність вказує максимальна кількість цифр даних цього типу (до і після десяткової точки в сумі), що вводяться, а параметр масштаб - максимальна кількість цифр, розташованих після десяткової точки. У звичайному режимі сервер дозволяє вводити не більше 28 цифр, використовуваних в типах DECIMAL і NUMERIC (від 2 до 17 байт).
До приблизних типів даних відносяться FLOAT (точність до 15 цифр, 8 байт) і REAL (точність до 7 цифр, 4 байти). Ці типи представляють дані у форматі з плаваючою комою, тобто для представлення чисел використовується мантиса і порядок, що забезпечує однакову точність обчислень незалежно від того, наскільки мало або велике значення.
Для зберігання інформації про дату і час призначені такі типи даних, як DATETIME і SMALLDATETIME, що використовують для представлення дати і часу 8 і 4 байти відповідно.
Типи даних MONEY і SMALLMONEY роблять можливим зберігання інформації грошового типу ; вони забезпечують точність значень до 4 знаків після коми і використовують 8 і 4 байти відповідно.
Тип даних BIT дозволяє зберігати один біт, який набуває значень 0 або 1.
У середовищі SQL Server реалізований ряд спеціальних типів даних.
Тип даних TIMESTAMP застосовується в якості індикатора зміни версії рядка в межах бази даних.
Тип даних UNIQUEIDENTIFIER використовується для зберігання глобальних унікальних ідентифікаційних номерів.
Тип даних SYSNAME призначений для ідентифікаторів об'єктів.
Тип даних SQL_VARIANT дозволяє зберігати значення будь-якого з підтримуваних SQL Server типів даних за винятком TEXT, NTEXT, IMAGE і TIMESTAMP.
Тип даних TABLE, подібно до тимчасових таблиць, забезпечує зберігання набору рядків, призначених для наступної обробки. Тип даних TABLE може застосовуватися тільки для визначення локальних змінних і повертаних призначеними для користувача функціями значень. Приклад використання типу даних TABLE наведений в лекції, присвяченій функціям користувача.
Тип даних CURSOR потрібний для роботи з такими об'єктами, як курсори, і може бути затребуваний тільки для змінних і параметрів процедур, що зберігаються. Курсори SQL Server є механізмом обміну даними між сервером і клієнтом. Курсор дозволяє клієнтським застосуванням працювати не з повним набором даних, а лише з однією або декількома рядками. Приклади використання даних типу CURSOR ми розглянемо в лекціях, присвячених курсорам і процедурам, що зберігаються.
Створення користувацького типу даних
У системі SQL -сервера є підтримка призначених для користувача типів даних. Вони можуть використовуватися при визначенні якого-небудь специфічного або часто вживаного формату.
Створення користувацького типу даних здійснюється виконанням системної процедури :
sp_addtype [@typename=]type,[@phystype=]
system_data_type
[,[@nulltype=]'null_type']
Тип даних system_data_type вибирається з наступної таблиці.
Таблиця 2.3. | |||
image |
smalldatetime |
decimal |
bit |
text |
real |
'decimal[(p[,s])]' |
'binary(n)' |
uniqueidentifier |
datetime |
numeric |
'char(n)' |
smallint |
float |
'numeric[(p[,s])]' |
'nvarchar(n)' |
int |
'float(n)' |
'varbinary(n)' |
|
|
ntext |
'varchar(n)' |
'nchar(n)' |
EXEC sp_addtype bir, DATETIME, 'NULL'
чи
EXEC sp_addtype bir, DATETIME, 'NOT NULL'
Приклад 2.1. Створення користувацького типу даних bir.
CREATE TABLE tab
((id_n INT IDENTITY(1,1) PRIMARY KEY
names VARCHAR(40),
birthday BIR)
Приклад 2.2. Використання користувацького типу даних bir при створенні таблиці.
Видалення користувацького типу даних відбувається в результаті виконання процедури sp_droptype type : EXEC sp_droptype 'bir'
Отримання інформації про типи дані
Отримати список усіх типів даних, включаючи призначені для користувача, можна з системної таблиці systypes :
SELECT * FROM systypes
Перетворення типів
Нерідко вимагається конвертувати значення одного типу в значення іншого. Найчастіше виконується конвертація чисел в символьні дані і навпаки, для цього використовується спеціалізована функція STR. Для виконання інших перетворень SQL Server пропонує універсальні функції CONVERT і CAST, за допомогою яких значення одного типу перетворюються в значення іншого типу, якщо такі зміни взагалі можливі. CONVERT і CAST приблизно однакові і можуть бути взаємозамінними.
CAST(вираження AS тип_даних)
CONVERT(тип_даних[(довжина)]
вираження [, стиль])
За допомогою аргументу стиль можна управляти стилем представлення значень наступних типів даних : дата/час, грошовий або нецілочисельний.
DECLARE @d DATETIME
DECLARE @s CHAR(8)
SET @s='29.10.01'
SET @d=CAST(@s AS DATETIME)
Приклад 2.3. Перетворення даних символьного типу до даних типу дата/час.
Разом з типами даних засадничими поняттями при роботі з мовою SQL в середовищі MS SQL Server являються вирази, оператори, змінні, що управляють конструкції.
Вирази
Вирази є комбінацією ідентифікаторів, функцій, знаків логічних і арифметичних операцій, констант і інших об'єктів. Вираження може бути використане в якості аргументу в командах, процедурах, що зберігаються, або запитах.
Вираження складається з операндів (власне даних ) і операторів (знаків операцій, вироблюваних над операндами ). Операндами можуть виступати константи, змінні, імена стовпців, функції, підзапити.
Оператори - це знаки операцій над одним або декількома виразами для створення нового вираження. Серед операторів можна виділити унарні оператори, оператори присвоєння, арифметичні оператори, строкові оператори, оператори порівняння, логічні оператори, бітові оператори .
Змінні
У середовищі 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 для привласнення локальної змінної результату обчислень.