Найближчим аналогом таблиці бази даних можна вважати лист електронної таблиці Microsoft Excel. При роботі з листом таблиці інформацію вводять у стрічки та стовпці. Також в електронних таблицях, як правило, є заголовки стовпців, згідно яких можна судити про вид інформації в них. Однак, на відміну від електронних таблиць, таблиці баз даних мають певні строгі обмеження відносно даних, які можна вводити в стовпці. В SQL Server така структура даних забезпечується за рахунок використання типів даних та властивостей стовпців. У таблиці 2.1 наводяться основні типи даних та їхні характеристики.
Таблиця 2.1. Вбудовані типи даних Microsoft SQL Server 2005
Тип даних | Діапазон – опис | Розмір у байтах |
Цілочисельні типи | ||
Bit | 0, 1 або NULL | 1 байт на кожні 8 стовпців |
Bigint | від -263 до 263-1 | |
Int | від -231 (-2 147 483 648) до 231-1 (2 147 483 647) | |
Smallint | від -215 (-32 768) до 215-1 (32 767) | |
Tinyint | від 0 до 255 | |
Десяткові типи | ||
decimal (p, s); numeric (p, s) | від -1038 до 1068-1 де p – точність (макс. к-сть цифр у числі), s – степінь (к-сть цифр після коми). Наприклад, для числа 5 123,845: p=7; s=3; | від 5 до 17 |
Числові типи з плаваючою комою | ||
Float | від -2,23∙10308 до 2,23∙10308 | |
Real | від -3,4∙1038 до 3,4∙1038 | |
Фінансові типи | ||
Money | від -922 337 203 685 477,5808 до 922 337 203 685 477,5807 | |
smallmoney | від -214 748,3648 до 214 748,3647 | |
Типи даних «Дата і час» | ||
Datetime | З 01.01.1753р. до 31.12.9999р. з точністю до 3,33 мсек. | |
smalldatetime | З 01.01.1900р. до 06.06.2079р. з точністю до 1 хв. | |
Символьні / текстові типи | ||
char (n) | n=1 ÷ 8 000 символів ANSI. Розмір фіксований. Недозаповнені поля доповнюються пробілами. | 1 для кожного символу |
varchar (n) | n=1 ÷ 8 000 символів ANSI. Розмір змінний (пробілами не доповнюється). | 1 для кожного символу + 2-байт-ний вка-зівник |
varchar (max) | До 2 147 483 647 символів ANSI. Розмір змінний (до 2 Гбайт). | |
Text | До 2 147 483 647 символів ANSI. Розмір змінний (до 2 Гбайт). | 1 для кожного символу |
nchar (n) | n=1 ÷ 4 000 символів UNICODE; розмір фіксований; недозаповнені поля доповнюються пробілами. | 2 для кожного символу |
nvarchar (n) | n=1 ÷ 4 000 символів UNICODE; розмір змінний (пробілами не доповнюється) | 2 для кожного символу + 2-байт-ний вка-зівник |
nvarchar (max) | До 1 073 741 823 символів UNICODE; розмір змінний (до 2 Гбайт). | |
Ntext | До 1 073 741 823 символів UNICODE. Розмір змінний (до 2 Гбайт) | 2 для кожного символу |
Бінарні типи | ||
binary (n) | n=1 ÷ 8000 байт; бінарні дані фіксованої довжини | 1 – 8000 |
varbinary (n) | n=1 ÷ 8000 байт; бінарні дані змінної довжини | 1 – 8000 + 2-байт-ний вка-зівник |
varbinary (max) | Бінарні дані змінної довжини; максимум до 2 147 483 647 байтів | До 2 Гб + 2-байт-ний вка-зівник |
Image | Бінарні дані змінної довжини; максимум до 2 147 483 647 байтів | До 2 Гб |
Спеціальні типи | ||
Timestamp | Унікальне значення в межах БД, що вказує на порядок змін; генерується автоматично | |
uniqueidentifer | Глобальний унікальний ідентифікатор (Globally Unique Identifier – GUID) | |
sql_variant | Дає можливість зберігати в одному стовпці дані різних типів (за винятком text, ntext, image, timestamp, xml, varchar(max), varbinary(max), nvarchar(max)) | до 8000 |
Xml | Символьне поле, що зберігає XML-дані | до 2 Гб |
Числові типи із плаваючою комою float і real рекомендують використовувати лише тоді, коли вхідні дані виходять за границю діапазонів точних числових типів даних decimal (numeric).
|
|
|
|
Типи даних money і smallmoney призначені для зберігання грошових значень, однак, через їхнє обмеження в чотири десяткових розряди після коми, вони рідко використовуються у фінансових програмах. Дані програми вимагають виконання розрахунків із точністю до 6, 8, а іноді 12 знаків після коми, і тому, замість фінансових типів, використовують decimal (numeric).
Серед символьних типів є, на перший погляд, чимало однотипних, і відмінності між ними, хоча й ледве помітні, але дуже важливі. Тип даних char як в ANSI, так і в UNICODE має фіксований розмір. Тому для нього потрібно однаковий об’єм пам’яті при довільній кількості символів, що зберігаються в стовпці. Наприклад, стовпець із типом даних char(30) займає 30 байт пам’яті незалежно від того, зберігається в ньому один символ чи тридцять, а невикористана пам’ять доповнюється пробілами. А для зберігання кожного символу в стовпці з типом даних varchar(30) необхідно лише один байт.
Типи даних text і ntext призначені для зберігання великих масивів символьних даних. Однак ці типи мають ряд обмежень: до них неможна застосовувати оператор рівності чи операцію об’єднання; багато системних функцій не можуть працювати із цими типами даних. Через ці обмеження в SQL Server 2005 були введені типи даних varchar(max) і nvarchar(max), які об’єднують можливості попередніх, можуть зберігати до 2 Гб даних та не мають обмежень щодо їхнього використання з різними операціями та функціями.
Типи даних binary / varbinary переважно використовують для збереження групи невеликих файлів розміром 4-6 Кб, що містять різні дані в двійковому форматі. Тип даних image дає можливість зберігати не лише фотографії, але й довільні документи Word, Excel, PDF тощо, довільні файли, розмір яких не перевищує 2 Гб. Для усунення обмежень, що накладаються на тип даних image при використанні з різними операціями та функціями, у SQL Server 2005 був введений тип даних varbinary(max), що теж дає можливість зберігати об’єм даних до 2 Гб.
п.1 |
а) |
б) |
п.2 |
п.3 |
п.4 |
п.5 |
п.6 |
п.7 |
Рис. 2.5. Створення нової таблиці
Створення таблиці:
1. У панелі Object Explorer (оглядач об’єктів) для вибраної бази даних розкрити вузли, як на рис. 2.5а, та в контекстному меню вузла Tables (таблиці) вибрати команду New Tables… (створити таблицю), після чого відкриється вікно Table Designer (конструктор таблиць) (2.5б).
2. Вписати назву таблиці в поле Name (ім’я), що розміщене на панелі Properties (Властивості).
3. Вибрати приналежність таблиці до певної схеми з випадаючого списку поля Schema (схема), що розміщене на панелі Properties (Властивості).
4. Вибрати файлові групи, у яких зберігатимуться дані цієї таблиці.
5. Сформувати стовпці таблиці, задаючи ім’я стовпця, його тип даних та дозвіл на NULL.
6. За допомогою вкладки Column Properties (властивості стовпців) задати значення властивостей стовпців таблиці.
7. Зберегти таблицю.
Приналежність до заданих файлових груп визначається окремо для звичайних даних і окремо для великих об’єктів:
· Для визначення місця зберігання звичайних даних розкрийте вузол розділу Regular Data Space Specification (специфікація звичайного простору даних) (рис. 2.5б, п.4) і у випадаючому списку File or Partition Scheme Name (ім’я групи файлів чи схеми розділів) виберіть необхідну групу файлів.
· Для визначення місця зберігання даних великих об’єктів виберіть необхідну групу файлів із випадаючого списку поля Text/Image Filegroup (група файлів Text/Image).
|
|
Спеціальна конструкція null, що означає «невідомий» чи «відсутній», дає можливість зберігати в стовпці пусті значення. null не є значенням, і тому не потребує пам’яті для свого збереження. Якщо ж дозвіл на null не встановлений, то це вимагає від користувача обов’язкового введення значення в зазначений стовпець.
Набір властивостей вкладки Column Properties (властивості стовпців)
1. Name (Ім’я) – ім’я стовпця.
2. Allow Nulls (Дозволити значення null) – дозволяє або забороняє значення null.
3. Length (Довжина) – вказує число символів, дозволених для символьних типів даних.
4. Default Value or Binding (значення або прив’язування за замовчуванням) – виводить значення за замовчуванням, яке встановлюється, коли в стовпець не було нічого введено. Значення за замовчуванням може бути введено у вигляді тексту або ж вибране з випадаючого списку, де відображаються всі глобальні значення за замовчуванням, що визначені в базі даних.
5. Precision (точність) – вказує максимальну кількість цифр у значеннях стовпця з типом decimal.
6. Scale (масштаб) – вказує максимальну кількість цифр справа від десяткової коми в значеннях стовпця з типом decimal.
7. Computed Column Specification (специфікація обчислюваного стовпця) – виводить інформацію про стовпець, що містить результат обчислень із використанням даних інших стовпців таблиці. У полі (Formula) [(формула)] задається вираз, згідно якого обчислюється значення для стовпця. В якості цього виразу може бути довільне коректне поєднання операторів, функцій, констант та значень інших стовпців цієї таблиці (оператори та функції наводяться в табл. 3.1). Поле Is Persisted (є збережуваним у базі даних) вказує чи зберігаються результати обчислень у базі даних (значення Yes (так)), чи в базі зберігається лише формула (значення No (ні)), а самі значення обчислюються лише при звертанні до цього стовпця.
8. Identity Specification (специфікація ідентифікуючого стовпця) – виводить інформацію про стан стовпця в режимі автоматичного генерування унікальних числових ідентифікаторів стрічок. Для включення стовпця в режим ідентифікації необхідно встановити в його полі (Is Identity) [(є ідентифікуючим стовпцем)] значення Yes (так), у полі Identity Increment (початкове значення) задати вихідне значення, а в Identity Seed (приріст) – значення інкременту. Вихідне значення – це початкове значення, що встановлюється для найпершої стрічки таблиці, а інкремент визначає, наскільки SQL Server збільшує (зменшує) цю початкову величину при генеруванні кожного наступного значення. Ця властивість доступна лише для цілочисельних типів, а для використання з типами decimal та numeric необхідно встановити нуль розрядів після коми.
|
|
9. Collation (таблиця сортування) – задає порядок сортування стовпця, який використовується SQL Server при сортуванні стрічок результатів запиту.
10. RowGuid (ідентифікатор GUID стрічки) – вказує на наявність глобальних унікальних ідентифікаторів стрічок; може бути застосованим лише для стовпців із типом даних uniqueidentifer. GUID формується на основі номера мережевої плати, унікальність якого гарантується виробниками в найближчі 100 років.