You are on page 1of 19

Користење на SQL за

дефинирање на податоци

Лабораториска вежба 2
Содржина

► Типови податоци
 Претставени од системски тип на податок
 Kориснички дефиниран тип податок
► Основни поими – Табела
► Создавање на табела
► Променување на веќе создадена Табела
► Бришење на табела

► Задачи
Типови податоци
Типот на податоците е карактеристика која посочува каква
информација може да се чува во дадена колона.
Претставени со системски тип податок
► SQL Server користи различни типови податоци, кој можат да се
групират во осум општи категории:
 Binary (бинарни) – типовите binary, varbinary, image и се
користат за чување на бинарни низи. Типотbinary е со
фиксирана должина, а типовите varbinary и image се со
променлива должина. Типовите binary и varbinary дозволуваат
да се чуваат до 8000 бајта податоци, а типот image се користи
за чување на исклучително големи вредности, по-големи од
8000 бајта и максимална должина 231-1 бајта (до 2GB).
 Character (симболни) – типовите char, varchar, text чуваат
буквено-бројни податоци. Типот char е со фиксирана должина,
додека varchar и text се со променлива должина. Типот text е
за чување на големи низи од симболи, поголеми од 8000
симболи и максимална должина 231-1 симбола.
 Unicode character – типовите nchar, nvarchar, ntext чуваат
Unicode симболи. Типот ntext се користи за чување на
стрингови поголеми од 4000 Unicode симболи и максимална
должина 230-1 симбола.
 Date&Time (за датум и час) – типовите datetime и smalldatetime
чуваат информација за датум и час.
► Exact Numeric– типoви на податоци decimal, numeric, money,
smallmoney . Типот numeric е синоним на decimal. По
следниот начин се задава тип со фиксирана точност и
размер: decimal[(p[, s])], каде p е фиксирана точност, т.е.
максималниот општ број на децималните цифри, кој може да
се чува од двете страни на децималната точка; s е размер,
т.е. максималниот број на цифрите, кој можат да бидат
чувани од десната страна на децималната точка.
Максималната вредност на p е 38, т.е. 1<=p<=38 и
0<=s<=p. Типовите money и smallmoney се парични типови
со точност до десетоилјадити дел од паричните единици.

► Approximate Numeric (за реалните броеви) – типовете float и


real даваат можност за чување на децималните броеви.
Основната разлика меѓу двата типа е областа на вредности
(float дозволува двојна точност). Податоците од тип float
представуват број со децимала од ‑1.79Е+308 до 1.79Е+308.
Податоците од тип real претставуваат број со децимала од
‑3.40Е+38 до 3.40Е+38.
► Integer (цели броеви) – типовите bit, bigint, int, smallint, tinyint
чуваат цели броеви во различни области. Типот bit е цел број тип
на податоци со две можни вредности 0 или 1; типот bigint е меѓу
‑263 и 263‑1; типот int е меѓу ‑231 и 231‑1; типот smallint е меѓу ‑215 и
215‑1; типот tinyint е меѓу 0 и 255 = 28‑1.
► Special Numeric (специјални бројни типови) – претставуваат
податоци, кои не можат да се додадат кон некоја од останатите
категории податоци:
 cursor – овој тип податоци се користи за променливи, преку кои
подржуваат референца кон покажувачот и може да се искористи за
работа со курсорот.
 uniqueidentifier – податоците се состојат од 16-бајтен хексадецимален
број, кој претставува глобален уникатен идентификатор (GUID).
Јазикот Transact-SQL ја подржува системската функција NewID(), која
може да се искористи за генерирање на вредности од тој тип.
 timestamp – (8-бајтов број во бинарен формат) тој тип податоци
осигурува уникатна вредност за базата секој пат, кога се ажурира или
додава ред. Таа вредност може да е уникатна за базата, но може
евентуално да се дуплира со вредност од друга база. За разлика од
вредноста на типот uniqueidentifier, кој треба да се добие од
функцијата NewID(), колоните од тип timestamp се ажурираат
автоматски од системот, кога се додава или променува даден ред.
Kориснички дефиниран тип податок
► Kориснички дефинираните типови податоци (UDDTs – User Defined
Data Types) можат да се искористат, кога неколку таблици
треба да чуваат еден и ист тип на податоци во дадена колона
и треба да се гарантира, дека: тие колони имат апсолутно ист
тип податоци, иста должина, можност да дозволуваат вредност
NULL, вредност по подразбирање, да ги поддржува зададените
правила. Кориснички дефинираните типови податоци ги имаат
следните карактеристики:
 основен тип – определен системен тип податок на SQL Server, на
кој се базира UDDT;
 NULL опција – определува дали тој тип на податок дозволува
вредност NULL;
 правила (rules) – UDDT можат да имаат правила за ограничување,
кој дефинираат област од дозволени вредности за колоната;
 вредности по подразбиране (defaults).
NULL опцијата може да биде променета, кога табелата се создава
или променува.
► Кориснички дефинираните типови податоци можат да се
создаваат и бришат со:
1. Користење на Management Studio – се означува папката User
Defined Data Types и од контекстното мени се избира New
User Defined Data Type…, во што се отвара дијалог
прозорецот New User-Defined Data Type Properties (Сл. 1);

Фиг. 1 Создавање на кориснички дефинираните типови на податоци


2. Исполнување на процедурите CREATE TYPE и DROP TYPE:
CREATE TYPE [dbo].[@typename =] FROM
           [@phystype =] 'system_data_type'
           [, [@nulltype =] 'null_type']
DROP TYPE [dbo]. [@typename =] ' type'
И во двете процедури параметарот @typename преставува
име на новиот тип
Пример:
1) Создавање на кориснички дефиниран тип податок за
колони, кој чува телефонски броеви:
USE MyDatabase
CREATE TYPE phone_number FROM char(20) NULL

2) Бршење на постоечки UDDT:


DROP TYPE phone_number
Основни поими – Табела
► Системот за управување на релациони бази на податоци
(Relational Database Management Systems - RDBMS) ги
управува сите податоци во табели.
► Податоците во базата се чуваат под форма на табели, полиња
и записи.
► Табелата е специјална организирана форма на податоци и
секоја табела треба да има уникатно име.
► Табелата чува информација за даден објект (пр. продукт,
клиент) или дејство (пр. продажби, порачки) и е збир од
редови (записи) и колони (атрибути, полиња).
► Колоната во табелата се користи да чува одреден вид на
податок за објект или дејство (пр. имиња, дати, цени и др.).
► Редовите ги опишуваат сите атрибути на оделен објект или
дејност (пр. податоци за конкретен продукт, продажба и др)
Создавање на табели
► Општ вид на SQL конструкцијата за создавање
на табела:

CREATE TABLE [database_name.[owner]. |


owner.]table_name
( { col_name datatype [null_option]
  | col_name AS computed_col_expression
  } [, …]
)
[ON {filegroup_name | [DEFAULT]}]
[TEXTIMAGE_ON {filegroup_name | [DEFAULT]}]
► Параметри за дефинирање на карактеристиките на
табелата и колоните во табелата:

 Табелата се создава во база и се користи од еден определен


корисник. Базата може да содржи многу табели со едно и исто
име, ако тие имат различни сопственици. Целосното име на
табелата го има видот database_name.owner.table_name. За
име по подразбирање се зема име на базата во контекс на
базата, во кој се работи во моментот. За сопственикот на
табелата има две можности за име по подразбирање: 1)
моменталниот корисник и 2) сопственикот на базата.
Членовите на sysadmin и сопственикот на базата се сврзани со
корисничкиот идентификатор dbo и табелите, создадени од
такви корисници кои имаат default dbo за сопственик.
Комбинацијата од owner и table_name треба да е уникатна за
базата database_name. Името на табелата треба да одговара на
правилата за идентификација – комбинација од 1 до 128 букви,
цифри или символи #, $, @ и _.
 Имињата на колоните треба да одговараaт на правилата за
индентификација и да се уникатни (единствени) за табелата.
 datatype претставува еден од стандартните SQL Server
типови на податоци или претставува кориснички дефиниран
тип на податок
 computed_col_expression преставува математички израз кој
може да се состави кога се користат имињата на други
колони во табелата како вградени функции. За тие колони
не се чуваат никакви податоци, а се пресметуваат според
функцијата која се користи.
 null_option – се користат клучните зборови NULL или NOT
NULL, со кој се определува дали NULL вредности се
дозволени во колоната. Ако недостасува null_option, SQL
Server присвојува NOT NULL.
 Параметарот ON преставува опција која се користи така што
после дефиницијата на колоните дозволува создадените
табели или колоните од тип text, ntext и image да се
преместуваат во одделна група датотеки. Заради
исклучително големиот размер на колоните од тип text,
ntext и image, понекогаш е пожелно да се сместат
податоците од тие колони во друга група со датотеки.
Примери:
1) Создавање на табелата MyTable во базата
MyDatabase со подразбирлив сопственик:
CREATE TABLE MyDatabase..MyTable
( ID int NOT NULL,
  FirstName varchar(25) NOT NULL,
  MiddleInitial char(1) NOT NULL,
  LastName varchar(25) NOT NULL,
  Age tinyint NOT NULL
)
ON [DEFAULT]
2) Користење на кориснички дефинираниот тип податок
phone_number при создавање на табела:
CREATE TABLE Customers
( CustomerID smallint NOT NULL,
  CustomerName varchar(50) NOT NULL,
  Cust_phone phone_number )
► Создавање на табела преку Management Studio се извршува,
кога се означува папката Tables на соодветната база и се
избира New Tables… од контекстното мени. Се задава името
на новата табела, после кое во прозорецот за проектирање
на таблици се воведува потребната информација.
На пример Дефиниција на табелата MyTable е покажана на
Сл.2.

Сл. 2 Изглед на пример табела MyTable во Management Studio


Променување на веќе создадена
табела

► Општ вид на SQL конструкцијата за


променување на постоечка табела:

ALTER TABLE [database_name.[owner]. | owner.]table_name


{
   ALTER COLUMN col_name new_datatype [null_option]
 | ADD { col_name datatype [null_option] } [, …]
 | DROP { COLUMN col_name } [, …]
}
► Со овие команди може да се додаваат, бришат колони,
да се променува типот или својството null_option на
постоечка колона.
Примери:
1) Додавање на колона во табелата MyTable:
ALTER TABLE MyDatabase..MyTable
       ADD MB char(10) NULL
2) Променување на постоечка колона MiddleInitial, така
да да може да подржува вредност NULL:
ALTER TABLE MyDatabase..MyTable
       ALTER COLUMN MiddleInitial char(1) NULL
3) Бришење на постоечка колона Age:
ALTER TABLE MyDatabase..MyTable
      DROP COLUMN Age
► За да се промени дефиницијата на веќе создадена
табела преку Management Studio, се избира командата
Design Table од контекстното мени на соодветната
табела.
Пример - е покажан проектен изглед на табелата
MyTable, кој ги покажува промените во нејзината
дефиниција (Сл.3).

Сл. 3 Промена на дефиницијата на табелата MyTable во Management Studio


Бришење на табела
► Когатабелата е избришана, сите податоци,
индекси, тригери, ограничувања, сврзани со неа,
исто така се бришат. Бришењето на табелата
може да се изврши, кога ќе се избере командата
Delete од контекстното мени од соодветната
табела во Management Studio или кога се
искористи SQL конструкцијата:

DROP TABLE [database_name.[owner]. |


owner.]table_name
Пример:
DROP TABLE MyDatabase..MyTable
Задача 1: Треба да се проектира база на податоци, која треба да обработува
информација, неопходна на една општествена библиотека. Да се разгледа
следната табела и да се нормализира:

Задача 2. Треба да се проектира база на податоци, која содржи информација


за порачките на клиентите. Да се разгледа следната табела и да се
нормализира:

Да се создадат табела вклучени во проектите

You might also like