- •Лабораторна робота № 1
- •Лабораторна робота № 2
- •Теоретичні відомості
- •Лабораторна робота № 3
- •Контрольні запитання
- •Лабораторна робота № 4
- •Лабораторна робота № 5
- •Лабораторна робота № 6
- •Створення таблиць
- •Прості запити і правила їхнього виконання
- •Особливості багатотабличних запитів
- •Використання вкладених запитів
- •Сортування результатів запиту
- •Внесення змін у базу даних
- •Додавання інформації в базу даних
- •Видалення даних
- •Об'єднання таблиць
- •Індекси
- •Лабораторна робота № 7
- •Література Основна література
- •Додаткова література
Лабораторна робота № 6
Тема: Керування СУБД АСУТП з використанням SQL
Короткі теоретичні відомості.
Процес створення бази даних у системі SQL-сервер складається з двох етапів: створення власне бази даних і її журналу транзакций. Дана інформація розміщається у відповідних файлах, що має розширення *.mdf для бази даних і *.ldf -для журналу транзакций. У файлі бази даних записується інформація про основні її об'єкти - таблицях, індексах і т.д., а у файл журналу трансакцій інформація про процес роботи з трансакціями (контроль цілісності даних, стан бази даних до і після виконання трансакції).
Створення бази даних у системі SQL-сервер може здійснюватися такими способами:
• за допомогою команди CREATE DATABASES.
• за допомогою утиліти SQL Server Enterprise Manager.
Для створення бази даних за допомогою SQL Server Enterprise Manager на першому етапі необхідно виконати деяке настроювання самої утиліти. Для цього, після її запуску, виберіть у лівому списку об'єктів групу SQL Server Group, у якій клацніть на імені необхідного SQL-сервера. Після цього, скориставшись командою Edit SQL Server Registration properties меню Action, установите наступні настроювання підключення утиліти до даного SQL-сервера.
Server - за допомогою цього списку визначається база даних, для якої відбувається настроювання;
Use Windows NT authentication - при підключенні утиліти до SQL-сервера в якості імені і пароля користувача передаються ім'я і пароль облікового запису користувача в системі Windows NT;
Use SQL Server authentication - настроювання імені і пароля користувача SQL-сервера. При цьому в полючи Login Name і Password варто ввести відповідно ім'я і пароль зареєстрованого користувача SQL-сервера. Для підвищення безпеки або у випадку, коли комп'ютером, на який установлений SQL-сервер, користуються кілька людей, можна установити опцію Always prompt for login and password, що дозволить щораз при спробі підключення до SQL-сервера утиліти SQL Server Enterprise Manager запитувати ім'я і пароль користувача;
Server Group - вибір групи серверів баз даних;
Show system databases and system objects - вся системна інформація в системі SQL-сервер (наприклад, перелік баз даних, імена і паролі користувачів і т.д.) зберігається в спеціальних системних базах даних. Дана опція використовується для здійснення доступу користувача до них (спробуйте підключитися до SQL-сервера, скасовуючи і встановлюючи цю опцію, що дозволить Вам виділити групу системних баз даних; перегляньте їхній зміст). Варто звернути особливу увагу на базу даних tempdb. Вона служить для збереження тимчасової інформації, використовуваної в процесі роботи SQL-сервера: тимчасові таблиці для сортування даних, збереження значень перемінних і т.д. В процесі використання для неї не створюється журнал транзакций, що значно збільшує швидкість роботи. Не використовуйте цю базу даних для збереження необхідної Вам інформації, тому що при перезавантаженні сервера вміст цієї бази даних очищається;
Automatically start SQL Server when connecting – вибір цієї опції визначає, чи варто виконувати запуск SQL-сервера при спробі підключення до нього за допомогою розглянутої утиліти.
Слід також зазначити той факт, що процедура створення бази даних у SQL-сервері вимагає наявності прав адміністратора сервера, у зв'язку з чим необхідно упевнитися в том. що при підключенні було використане ім'я користувача sa.
Наступним кроком буде вибір групи Databases у списку використовуваного SQL-сервера. Результатом цієї дії буде відображення в правій частині діалогового вікна утиліти всіх наявних баз даних на використовуваному сервері. Графічне відображення баз даних в утиліті SQL Server Enterprise Manager здійснюється за допомогою спеціальних значків - піктограм. Вибір команди New Database меню Action дозволяє створити нову базу даних у використовуваному сервері. Результатом цієї дії буде відображення на екрані діалогового вікна введення параметрів створюваної бази даних:
У поле Name даного діалогового вікна вказується ім'я створюваної бази даних. При цьому в списку Database files відображається ім'я файлу, що буде створений для цієї бази даних. Тут також можна змінити ім'я, шлях і вихідний розмір цього файлу. Якщо в процесі використання бази даних планується розміщення її на декількох дисках, то в цьому випадку можна створити так названі вторинні файли бази даних (secondary - розширення *.ndf). Для цього в списку Database files варто додати ім'я нового файлу бази даних, вказати до нього шлях і вихідний розмір. У цьому випадку в первинному (primary) файлі розташовується основна інформація про базу даних. При недостачі вільного місця для первинного файлу бази даних інформація, що додається, буде розмішатися у вторинних файлах.
Опція Automatically grow file даного діалогового/вікна дозволяє чи забороняє автоматичний ріст розміру бази даних. При цьому збільшення росту можна вказати за допомогою абсолютної величини в мегабайтах (In megabytes) чи процентному співвідношенні (By percent).
Рисунок 3 - Діалогове вікно створення бази даних
Якщо планується запис великих обсягів інформації в створювану базу даних, то рекомендується установити збільшення росту як найбільше, тому що в противному випадку це приведе до уповільнення роботи SQL-сервера. Область Maximum file size визначає максимальний розмір створюваної бази даних. В цьому випадку вибір опції Restrict filegrowth дозволяє обмежити ріст бази даних визначеним значенням у мегабайтах. З іншого боку, опція Unrestricted filegrowth відключає режим перевірки розміру бази даних, тобто в цьому випадку ріст розміру бази даних може бути необмеженим (з урахуванням вільного місця на диску і даних табл. 1). Якщо ж опція Automatically grow file відключає ріст бази даних, то в цьому випадку її розмір буде обмежений числовим значенням полючи Initial size у списку Database files.
Для прикладу створіть базу даних EDUCATION, у якій надалі буде змодельована структура даних (успішність студентів). Після коректного завершення додавання бази даних відповідна піктограма з'явиться в групі Databases. Скориставшись символом +, розкрийте об'єкти знову створеної бази даних, короткий опис яких приведено в таблиці 3.
Таблиця 3 Основні об'єкти структури бази даних SQL-сервера
Об'єкт |
Опис |
Tables |
Таблиці бази даних |
Views |
Види, що дозволяють відображати дані з таблиць |
Stored Procedures |
Збережені процедури |
Extended Stored Procedures |
Додаткові збережені процедури |
Об'єкт |
Опис |
Users |
Користувачі, що володіють дозволом до доступу в базу даних |
Roles |
Ролі бази даних, що дозволяють поєднувати користувачів у групи для здійснення доступу до даних |
Rules |
Правила бази даних |
Defaults |
Стандартні установки бази даних |
User Defined Data Types |
Обумовлені користувачем типи даних |
В знову створеній базі даних уже є кілька таблиць. Це системні таблиці, у яких розміщена інформація про базу даних. Також у SQL-сервері існує перелік ролей доступу до об'єктів бази даних, використовуваних для всіх об'єктів сервера. Їхній перелік і короткий опис представлені в таблиці 4.
Таблиця 4 Короткий опис ролей, що використовуються для доступу до бази даних
Роль |
Опис |
db_owner |
Повний доступ до бази даних |
db_accessadmin |
Можливість додавання і видалення користувачів |
db securityadmin |
Можливість керування всіма процесами доступу користувачів |
db_ddladmin |
Виконання всіх команд DDL (Data definition language - мова визначень), крім GRANT, REVOKE чи DENY |
dbjbackupoperator |
Виконання команд резервного копіювання бази даних |
db_datareader |
Можливість читання всіх даних з будь-яких таблиць бази даних |
db_datawriter |
Можливість зміни всіх даних з будь-яких таблиць бази даних |
db_denydatareader |
Можливість обмеження доступу до об'єктів бази даних з використанням оператора SELECT |
db_denydatawriter |
Можливість обмеження доступу до об'єктів бази даних з використанням операторів INSERT, UPDATE і DELETE |
Public |
Користувачі без надання спеціальних ролей мають роль доступу public |
Таблиця 5 Короткий опис ролей, використовуваних для доступу до сервера баз даних
Роль |
Опис |
sysadmin |
Виконання будь-яких функцій SQL-сервера |
serveradmin |
Настроювання конфігурації і виконання функцій закриття SQL-сервера |
setupadmin |
Керування зв'язками між серверами і їхніми процедурами запуску |
securityadmin |
Керування доступом, можливість створення баз даних, доступ до log-файлу помилок |
processadmin |
Керування процесами, що виконуються в SQL-сервері |
dbcreator |
Керування створенням і видаленням баз даних |
diskadmin |
Керування файлами на диску SQL-сервера |
Для перегляду користувачів, що мають доступ до створеної бази даних, є група Users у списку об'єктів поточної бази даних. Єдиним користувачем знову створеної бази даних є dbo (Database Owner - власник бази даних). Для перегляду встановлених йому ролей необхідно скористатися наступними діями:
• виберіть групу Users;
• клацніть мишею на імені користувача dbo;
• з меню Action виберіть команду Properties.
Результатом цих дій буде відкриття діалогового вікна установки ролей доступу до бази даних для користувача dbo (рис.4).
Рис 4 - Діалогове вікно визначення ролей доступу до бази даних користувачам dbo
Таблиці бази даних
В реляційних базах даних для збереження інформації використовуються таблиці, що представляють собою двовимірні масиви. Створення таблиць у системі SQL-сервер можна здійснити за допомогою команди SQL CREATE TABLE, підключившись до сервера бази даних за допомогою утиліти SQL Server Query Analyzer чи скориставшись утилітою SQL Server Enterprise Manager. Розглянемо другий спосіб створення таблиць.
Виберіть в списку об'єктів бази даних групу Tables, після чого в правій частині утиліти SQL Server Enterprise Manager буде відображений список усіх її таблиць, у тому числі і системних. Виконаєте команду New Table меню Action, після чого на екрані відобразиться запит введення імені створюваної таблиці. Для зручності рекомендується використання символів у верхньому регістрі в назві таблиць, що дозволить візуально відрізняти таблиці користувачів від системних.
Для приклада скористаємося структурою таблиці STUDENTS. Отже на запит введення імені варто ввести STUDENTS, після чого підтвердити введення натисканням кнопки ОК. Потім утиліта відобразить на екрані вікно дизайнера таблиць. В стовпчик Column Name необхідно буде ввести назву стовпця таблиці (у нашому випадку SNUM), після чого визначити його тип даних, скориставшись стовпчиком Datatype вікна дизайнера. Тут у списку відображається перелік усіх доступних типів даних, визначених у SQL-сервері. Після вибору типу даних для створюваного полючи система автоматично підставить для нього параметри Length (розмір поля), Precision (десятковий розмір) і Scale (точність числового типу даних). У залежності від типу даних система визначить доступ до редагування цих параметрів.
Якщо
необхідно зробити видалення рядка в
дизайнері таблиць, то для цього потрібно
клацнути мишею на кнопку
,
розташовану ліворуч від даного рядка,
що приведе до її виділення. Натискання
кнопки Delete викликає діалогове вікно
запиту на її видалення.
Рисунок 5 - Діалогове вікно дизайнера таблиць
Якщо введення даних у створюване поле вимагає наявності якого-небудь значення, установлюваного за замовчуванням, то його варто ввести в колонку DefaultValue вікна дизайнера таблиці. У таблиці STUDENTS зручно скористатися з даної можливості при вказівці мінімальної стипендії студентам навчального закладу. Введення в колонку Default Value для полючи STIP значення 17 дозволить автоматично встановлювати цю суму для кожного студента, що додається. При використанні цієї можливості варто бути особливо акуратним, тому що можна установити, наприклад, мінімальну стипендію новому чи відміннику двієчнику, розмір стипендії, яких відрізняється від застосовуваного за замовчуванням.
В СУБД є підтримка так званих NULL значень. За допомогою SQL-сервера можна визначити їхнє використання в таблицях. Іншими словами, забравши прапорець у колонку Allow Nulls для якогось поля, можна вимагати обов'язкове введення значень у це поле. Наприклад, цим можна скористатися при введенні номерів студентських квитків у поле SNUM. Це поле є ключовим (про створення ключових полів за допомогою SQL Server Enterprise Manager буде сказано нижче), що, у свою чергу, зажадає обов'язкове введення значень.
При створенні таблиці можна визначити так називана властивість Identity для якого-небудь її полючи. Ця властивість дозволяє автоматично збільшувати на зазначену величину значення, що вводиться в поле, при кожнім додаванні нового запису в таблицю.
Іншими словами, якщо виникає необхідність у додаванні до таблиці полючи, що автоматично збільшує своє значення (наприклад, поле-лічильник), те для нього потрібно настроїти властивість Identity. Для цього в першу чергу в поле варто забрати прапорець Allow Nulls, щоб уникнути невизначеності інформації. Наступним кроком буде установка прапорця в поле Identity, після чого потрібно ввести початкове значення Identity Seed і значение-инкремент Identity Increment ( сума, щододається,).
Створимо структуру даних EDUCATION, скориставшись наступними даними для визначення параметрів полів.
Таблиця 4 Структура таблиць бази даних EDUCATION
Column name |
Datatype |
Length |
Precision |
Scale |
Таблиця STUDENTS |
||||
SNUM |
int |
4 |
10 |
0 |
SFAM |
char |
20 |
0 |
0 |
SIMA |
char |
10 |
0 |
0 |
SOTCH |
char |
15 |
0 |
0 |
STIP |
small-money |
4 |
10 |
4 |
Таблиця PREDMET |
||||
PNUM |
smallint |
2 |
5 |
0 |
PNAME |
char |
20 |
0 |
0 |
TNUM |
int |
4 |
10 |
0 |
HOURS |
smallint |
2 |
5 |
0 |
COURS |
tinyint |
1 |
3 |
0 |
Таблиця TEACHERS |
||||
TNUM |
int |
4 |
10 |
0 |
TFAM |
char |
20 |
0 |
0 |
TIMA |
char |
10 |
0 |
0 |
TOTCH |
char |
15 |
0 |
0 |
TDATE |
small-datetime |
4 |
0 |
0 |
При необхідності внесення змін у структуру таблиці після її створення, дизайнер таблиць можна завжди викликати, скориставшись командою Design Table меню Action, попередньо вибравши таблицю в списку.
Наступним етапом розробки структури навчальної бази даних EDUCATION буде внесення інформації в створені таблиці. Для зміни вмісту таблиць за допомогою утиліти SQL Server Enterprise Manager необхідно виконати наступні дії:
• вибрати необхідну таблицю в списку;
• виконати команду Open Table / Return all rows меню Action;
• якщо в таблиці знаходиться занадто багато записів, то можна обмежити вибір, скориставшись командою Open Table / Return Top меню Action. У цьому випадку на екран буде виведене діалогове вікно, у якому необхідно буде ввести номер запису, з яким потрібно здійснювати перегляд і редагування даних.
Результатом
виконання цих дій буде відкриття
редактора таблиці утиліти SQL Server
Enterprise Manager. Використовуючи клавіші
переміщення курсору, можна здійснити
перехід між полями і записами. При
установці курсору в поле нового запису
вона буде автоматично додана. Якщо
необхідно зробити видалень запису
таблиці, то для цього потрібно клацнути
мишею на кнопку
,
розташовану ліворуч від даного рядка,
що приведе до її виділення. Натискання
кнопки Delete викликає діалогове вікно
запиту на видалення цього запису.
Система автоматично перевіряє введення інформації на відповідність типу даних полів. Іншими словами, користувачу не удасться ввести в поле STIP таблиці STUDENTS строкове значення.
Рисунок 6 - Діалогове вікно редактора таблиць
Використання
кнопки Show/Hide
SQL Pane
дозволяє чи відобразити забрати панель
уведення SQL-команд. При цьому діалогове
вікно редактора розбивається на двох
частин для введення необхідних команд
SQL. По завершенні введення цих команд
варто обновити результати в таблиці,
скориставшись кнопкою Run
,
розташованої на панелі інструментів
редактора. Тут також можна забрати/вивести
з екрана панель результатів запиту,
скориставшись кнопкою Show/Hide
Results Pane
.
Якщо в процесі написання SQL-команди
з'являється необхідність переконатися
в коректності даної команди, то варто
скористатися кнопкою Verify
SQL
,
що здійснить перевірку і виведе відповідні
попередження, не звертаючи при цьому
до таблиці бази даних. Використання
цієї можливості прискорює роботу з
SQL-сервером при наявності в таблицях
бази даних великих обсягів інформації.
Рисунок 7 - Панель SQL діалогового вікна редактора таблиць
Типи даних, використовувані в SQL-сервері
Одним з основних моментів у процесі створення таблиць є визначення типів даних для її полів. Тип даних полючи таблиці визначає тип інформації, що буде розміщатися в цьому полі. SQL-сервер підтримує велике число різних типів даних: текстові, числові, двоичные і т.д.
Якщо є необхідність у розміщенні яких-небудь специфічних даних у поле таблиці, то в цьому випадку можна скористатися так називаними користувальницькими типами даних, процес створення яких розглядається нижче.
Розглянемо подробней типи даних, використовувані в SQL-сервері. Зверніть увагу на стовпчик LPS представлених нижче таблиць. Тут відображається можливість коректування (( - коректування припустиме, про - коректування неприпустиме) значень Length, Precision і Scale у дизайнері таблиць утиліти SQL Server Enterprise Manager для полючи цього типу даних.
Таблиця 6 Текстові типи даних
Назва |
LPS |
Опис |
Char
|
оо |
Текстовий тип даних, при використанні якого задається його розмірність, причому для кожного символу виділяється один байт. Розмірність: до 8000 символів. |
Nchar
|
оо |
Аналогічний типу даних Char, за винятком розмірності. Розмірність: до 4000 символів. |
Varchar |
оо |
Використовується для збереження текстової інформації перемінної довжини. Розмірність: до 8000 символів. |
Nvarchar
|
оо |
Аналогічний типу даних Varchar, за винятком розмірності. Розмірність: до 4000 символів. |
Таблиця 6 Текстові типи даних
Назва |
LPS |
Опис |
Char
|
оо |
Текстовий тип даних, при використанні якого задається його розмірність, причому для кожного символу виділяється один байт. Розмірність: до 8000 символів. |
Nchar
|
оо |
Аналогічний типу даних Char, за винятком розмірності. Розмірність: до 4000 символів. |
Varchar |
оо |
Використовується для збереження текстової інформації перемінної довжини. Розмірність: до 8000 символів. |
Nvarchar
|
оо |
Аналогічний типу даних Varchar, за винятком розмірності. Розмірність: до 4000 символів. |
Таблиця 7 Числові типи даних
Назва |
LPS |
Опис |
Int |
ооо |
Тип даних, що дозволяє зберігати позитивні і негативні цілі числа, що займає в пам'яті 4 байти. Діапазон: від –231 до +2331. |
Smallint |
ооо |
Займає в пам'яті 2 байти. Аналогічний типу даних Int, за винятком діапазону значень. Діапазон: від -32768 до 32767. |
Tinyint |
ооо |
Тип даних, використовуваний для збереження позитивних цілих чисел, що займає в пам'яті 1 байт. Діапазон: від 0 до 255. |
Real
|
ооо |
Тип даних, використовуваний для збереження позитивних і негативних чисел із крапкою, що плаває, з точністю до 7 цифр; займає в пам'яті 4 байти. Діапазон: від -3,4Е-38 до +3,4Е+38. |
Float |
ооо |
Тип даних, використовуваний для збереження позитивних і негативних чисел із крапкою, що плаває, з точністю до 15 цифр; займає в пам'яті до 8 байт. Діапазон: від -1,7Е-308 до +1,7Е+308. |
Decimal |
про |
Тип даних, що дозволяє визначати точно інтервал значень десяткових чисел, що вводяться, займає в пам'яті від 2 до 17 байт. Діапазон: від –10Е-38 до +10Е+38 |
Numeric |
про |
Аналогічний типу даних Decimal |
Money |
ооо |
Тип даних, використовуваний для збереження грошових значень, що займає в пам'яті до 8 байт. Діапазон: від –922337203685477.5808 до +922337203685477.5807. |
Small-money |
ооо |
Аналогічний типу даних Money, займає в пам'яті до 4 байт. Діапазон: від –214748.3648 до +214748.3647 |
Таблиця 8 Типи дані дати і часу
Назва |
LPS |
Опис |
Date time |
ooo |
Тип даних, що дозволяє зберігати комбінації дати і часу, що займає в пам'яті 8 байт. Діапазон: від 01.01.1753 до 31.12.9999. |
Small-date time |
ooo |
Аналогічний типу даних Datetime, що займає в пам'яті 4 байти Діапазон: від 01.01.1900 до 06.06.2079. |
Таблиця 9 Типи даних спеціального призначення
Назва |
LPS |
Опис |
Bit |
ooo |
Тип даних, що дозволяє зберігати інформацію, що приймає тільки два значення: 0 чи 1; займає в пам'яті 1 біт. Діапазон: 0 чи 1. |
Binary |
oo |
Тип даних, використовуваний для збереження бітових ланцюжків. Розмірність: до 8000 байт. |
Varbinary |
oo |
Тип даних, використовуваний для збереження бітових ланцюжків варьируемой довжини, аналогічно типу даних Binary. Розмірність: до 8000 байт. |
Timestamp |
ooo |
Тип даних, що автоматично розміщає значення лічильника щораз при вставці нового запису. |
Uniqueidentifier |
ooo |
Розміщення унікального 16-розрядного ідентифікатора QUID (Globally unique identifier), використовуваного для підтримки цілісності даних. Генерація нового ідентифікатора здійснюється з використанням команди SQL NEWID() |
Створення індексів і ключів у системі SQL-сервер
Індекси являють собою наборы унікальних значень для деякої таблиці з відповідними посиланнями на дані, розташовані в самій таблиці. Індекси є зручним внутрішнім механізмом системи SQL-сервера, за допомогою якого здійснюється доступ до даних найбільш оптимальним способом.
Для створення індексів визначеної таблиці бази даних SQL-сервера можна скористатися одним з наступних способів:
• створити індекс за допомогою SQL-команди CREATE INDEX;
• скористатися можливостями утиліти SQL Server Enterprise Manager.
Розглянемо подробней другий спосіб створення індексів. Початковим етапом створення індексу є вибір необхідної бази даних і таблиці, для якої він буде визначатися. Виконання команди. All Tasks / Manage Indexes меню Action відобразить на екрані діалогове вікно керування індексами баз даних. Варто звернути увагу на списки даного діалогового, що випадають, вікна Databases і Table, що дозволяють переміщатися між базами даних і їхня таблиця. При тім у списку Existing indexes відображаються наявні індекси для обраних таблиць баз даних.
Рисунок 8 - Діалогове вікно керування індексами таблиці
У нижній частині даного діалогового вікна располоя керуючі кнопки, що виконують наступні дії:
New - створення нового індексу для обраної таблиці даних;
Edit - редагування параметрів існуючого індексу;
Delete - видалення попереднє обраного індексу;
Close - закриття діалогового вікна;
Help - одержання довідкової інформації з даного питання.
Отже, для створення нового індексу варто скористатися кнопкою New даного діалогового вікна. Ця дія приведе до відкриття іншого діалогового вікна Create New Index, за допомогою якого і встановлюються параметри індексу (див. мал. 3.30).
У поле Index name даного діалогового вікна необхідно ввести ім'я створюваного індексу, після чого визначити перелік полів, що беруть участь в індексі, у представленому списку. Для додавання визначеного полючи в індекс варто установити прапорець ліворуч від його імені. Тут також можна переглянути наступну інформацію про поле: Column - ім'я полючи, Data type - тип даних, Length - розмір, Nullable - можливість використання NULL-значень, Precision - точність і Scale - порядок значень, що вводяться.
Рис3.30. Діалогове вікно створення індексу
Група опцій Index options дозволяє настроїти додаткові параметри створюваного індексу:
Unique values - при необхідності введення у визначене поле тільки унікальних значень, варто установити дану опцію. Це дозволить здійснювати автоматичну перевірку унікальності при кожнім додаванні нового запису. Якщо буде почата спроба уведення вже наявного значення в записі даного полючи, то системою буде видане повідомлення про помилку. При цьому варто звернути увагу на заборону присутності NULL-значень у цьому полі. При використанні NULL-значень і установці даної опції можуть виникнути помилки. Тому рекомендується установити обов'язкове введення значень у поле, для якого планується створення унікального індексу;
Clustered index - у системі SQL-сервер є можливість фізичного індексування даних. Іншими словами, використання індексів приводить до створення окремої структури, що зв'язується з фізичним розташуванням даних у таблиці. Використання цієї опції дозволяє зробити так називане кластерное індексування, у результаті чого будуть відсортовані дані в самій таблиці відповідно до порядку цього індексу, і вся інформація, що додається, буде приводити до зміни фізичного порядку даних. При цьому потрібно враховувати, що в таблиці може бути визначений тільки один кластерный індекс;
Ignore duplicate values — вибір даної опції приводить до ігнорування введення повторюваних значень у проіндексованих полях. Використання даної опції разом з Unique values дозволяє ігнорувати унікальність значень для полючи. Варто звертатися з цією опцією особливо акуратно роботі з многотабличными структурами і зв'язками між ними. Звичайне використання даної опції має значення при орієнтації на розподіл даних у розроблювальних структурах;
Do not recompute statistics (not recommended) - установка опції визначає функцію автоматичного відновлення статистики для таблиці. Не рекомендується установка даної опції;
File group - за допомогою даної опції можна здійснити вибір файлової групи, у якій буде знаходитися створюваний індекс. Використання індексу з іншої файлової групи підвищує продуктивність некластерных індексів у зв'язку з паралельністю виконання процесів уведення/висновку і роботи із самим індексом. При виборі даної опції активізується список файлових груп, що дозволяє визначити необхідну групу для розміщення індексу;
Fill factor - дана можливість використовується вкрай рідко. За допомогою цієї опції здійснюється настроювання розбивки індексу на сторінки. Однак використання даної можливості може помітно оптимизировать роботу SQL-сервера. Коефіцієнт FILLFACTOR визначає у відсотком співвідношенні розмір створюваних індексних сторінок. При цьому є зворотна пропорційна залежність частоти роботи з таблицею і коефіцієнта FILLFACTOR. Іншими словами, якщо планується часта зміна, видалення і додавання інформації в таблиці бази даних, то коефіцієнт FILLFACTOR варто установити якнайменше, наприклад, 20. З іншого боку, установка коефіцієнту значення 100 рекомендується при використанні великих таблиць, звертання до яких звичайно відбувається тільки для читання;
Pad index - опція визначає заповнення внутрішнього простору індексу і використовується разом з опцією Fill factor,
Drop existing - при використанні кластерного індексу, вибір даної опції визначає його повторне створення, що дозволяє запобігти небажане відновлення кластерных індексів.
Звичайному користувачу вкрай рідко приходиться створювати БД чи таблиці усередині її. Традиційно він працює з уже готовою структурою, що вже розроблена і реалізована адміністратором БД. Проте, для повного розуміння особливостей роботи SQL на операторах DDL (мова визначення даних) варто зупинитися досить докладно. За допомогою цих операторів можна:
створити нову БД;
визначити структуру нової таблиці і створити цю таблицю;
видалити існуючу таблицю;
змінити визначення існуючої таблиці;
визначити представлення даних;
забезпечити умови безпеки БД;
створити індекси для доступу до таблиць;
керувати розміщенням даних на пристроях збереження.
Оператори DDL дозволяють користувачу не вникати в деталі, збереження інформації в БД на фізичному рівні, тому що оперують, наприклад, такими поняттями, як чи таблиці полючи. У той же час, оператори DDL мають можливість маніпуляції з фізичною пам'яттю.
Власне DDL базується на трьох командах SQL:
CREATE - створити, що дозволяє визначити й об'єкт БД;
DROP - видалити, застосовуваний для видалення існуючого об'єкта даних;
ALTER - змінити, за допомогою якого можна змінити визначення об'єкта БД.
Використання команд DDL під час роботи дозволяє зробити структуру реляционной БД динамічної. Іншими словами, у СУБД можна створювати, чи видаляти змінювати таблиці, одночасно з цим забезпечуючи доступ користувачам до даних. У свою чергу, це означає, що з часом БД може рости і змінюватися, а її експлуатація може продовжуватися в той час, коли в БД додаються всі нові таблиці і додатки.
Оператори DDL у СУБД можна використовувати як в інтерактивному, так і в програмному SQL. Наприклад, якщо чи програмі користувачу потрібно таблиця для тимчасового збереження результатів, то допускається створити цю таблицю, заповнити її інформацією, виконати необхідні маніпуляції з даними і потім видалити її. У серйозних СУБД за створення нових БД відповідає тільки адміністратор, хоча не виключена можливість того, що й окремим користувачам це може бути дозволено.
Методи створення БД, застосовувані у ведучих реляционных СУБД, мають ряд розходжень. Наприклад, у Microsoft SQL Server існує оператор CREATE DATABASE, що є частиною мови визначення даних і служить для створення БД. Відповідно, оператор DROP DATABASE видаляє існуючі БД. Ці оператори можна використовувати як в інтерактивному, так і в програмному SQL.
Більшість многопользовательских БД мають досить нескладну організацію фізичної пам'яті, що забезпечує підвищення її продуктивності. Наприклад, у Microsoft SQL Server адміністратор БД може за допомогою оператора CREATE DATABASE задати один чи кілька іменованих файлів:
CREATE DATABASE <NAME_DATABASE> ON <FILE1>, <FILE2>, ...
Підхід, використовуваний у SQL Server, дозволяє розподіляти вміст БД по декількох дискових томах, про що вже говорилося вище. Наступним кроком, слідом за створенням порожній БД, є заповнення її таблицями.
