Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 4 · Урок 3

Таблици

Богатата палитра от типове на MS SQL Server — низове, числа, дата/час и специалните типове — и създаването на таблицата Student с Identity вместо AutoNumber.

Релации (таблици) в MS SQL Server

Всяка таблица има уникално име, редове (кортежи, записи) и колони (атрибути). Стойностите в една колона са от един и същ тип. Допустимите типове при MS SQL Server са много повече от тези на Access — четири основни групи: низове, числови, дати и часове и други.

Низове от знаци

ТипОписаниеПамет
char(n)еднобайтова таблица, ФИКСИРАНА дължина n (до 8000)n байта — винаги
varchar(n|MAX)еднобайтова, ПРОМЕНЛИВА дължинабайтове за дължина + реалната
nchar / nvarcharUnicode вариантите (до 4000 знака)2 байта на знак
binary / varbinaryдвоични низове (нули и единици)като char/varchar
imageдвоични данни до 2 GB (изображения, аудио, видео)реалната дължина

Фиксирана vs променлива дължина

При char(10) винаги се заделят 10 байта — колкото и да е реалната данна. При varchar — само колкото трябва + байтове за дължината. Unicode типовете (n…) са за текст извън латиницата — например кирилица.

Числови типове

ТипДиапазонПамет
bit0 или 1до 8 стойности в 1 байт
tinyint0 … 2551 байт
smallint−32768 … 327672 байта
int−2147483648 … 21474836474 байта
bigint±9.2×10¹⁸8 байта
decimal(p,s)десетично число: p цифри, s след запетаята5–17 байта
money / smallmoneyпарични стойности8 / 4 байта
float(n) / realдвоични дробни (мантиса и порядък)4–8 байта

Десетичното число — decimal

Освен целите и дробните типове има и десетично число: представянето не е двоично, а в десетична бройна система (по 4 бита на цифра). Точността е по-добра — от огромна важност за финанси и сложни системи — за сметка на скоростта на пресмятане.

Дата и час, и другите типове

ТипОписание
datetime / datetime2дата и час (до 31.12.9999, точност до 100 ns при datetime2)
date / timeсамо дата (3 байта) / само час
smalldatetimeдата и час с точност 1 минута (4 байта)
sql_variantдо 8000 байта от произволен тип — колона със стойности от РАЗЛИЧЕН тип
uniqueidentifierглобален уникален идентификатор (GUID), 16 байта
xmlXML форматирани данни до 2 GB
cursor / tableза операции в базата — НЕ могат да са атрибути на таблица

Създаване на таблицата Student

В Object Explorer: базата School → десен бутон върху TablesNew\Table. На всеки ред описваме един атрибут: име (Column Name), тип (Data Type) и дали допуска отсъствие на стойност (Allow Nulls).

АтрибутТипAllow NullsЗащо
idStudentintнеуникален идентификатор
name, surname, familyvarchar(50)непроменлива дължина — не знаем колко са дълги имената
egnchar(10)нефиксирани 10 знака; първичният ключ
birth_datedateнесамо дата
birth_place, districtvarchar(50)ненаселено място и област
e_mailvarchar(50)неелектронна поща
mobilechar(12)ДАне е задължително ученикът да има телефон

Ключ и Identity

  • Първичен ключ: щракваме в реда на атрибута и в най-лявата колона → Set Primary Key — появява се изображение на ключ.
  • В SQL Server няма типа AutoNumber, но int атрибут може да получи същото поведение: Identity Specification → (Is Identity) = Yes, Identity Increment = 1, Identity Seed = 1 — всеки нов ред се номерира автоматично. Такъв ключ наричаме допълнителен (вътрешен) ключ.
  • Съхраняваме с Ctrl+S и задаваме името Student.

Практикум

1) Създайте таблицата Student в базата School. 2) Аналогична таблица Staff за персонала (+ атрибут за длъжността). 3) Таблица School_data с данните на вашето училище — наименование, патрон, населено място, адрес, телефон, интернет страница, лого, патронен празник.

Какво трябва да запомниш

  • Четири групи типове: низове, числови, дата/час, други.
  • char = фиксирана дължина; varchar = променлива; n… = Unicode.
  • decimal смята в десетична система — точност за сметка на скорост.
  • Identity (Is Identity, Seed, Increment) замества AutoNumber.
  • Allow Nulls се маха за задължителните атрибути още при дизайна.