You are on page 1of 20

Изпитна тема №6 на Виктор Чочков 6 номер от 11А

1.0 Дефиниция на бази данни


- Базите данни представляват колекция от логически свързани данни и
записи в конкретна предметна област, които са структурирани по
определен начин. Целта им е да позволяват бърза обработка на данни
с минимално дублиране.

1.2 Различни типове данни


Най-често използвани типове данни за обработка на текст:

CHAR(размер) Използва се за текст с фиксиран


размер.
VARCHAR(размер) Използва се за текст с който не е с
фиксиран размер
TINYTEXT Състои се от текст с максимален
размер: 255 символа.
TEXT Състои се от текст с максимален
размер:
65,535 символа.
MEDIUMTEXT Състои се от с текст максимален
размер:
16,777,215 символа.
LONGTEXT Състои се от текст с максимален
размер:
4,294,967,295 символа.
ENUM(val1, val2, val3, …) Текстов обект който може да има
само една стойност, избрана от лист с
възможни стойности.
SET(val1, val2, val3, …) Текстов обект който може да има 0
или повече стойности, избрани от
лист с възможни стойности.
Най-често използвани типове данни за обработка на числа:
TINYINT(size) Много малко цяло число. Обхватът
му е от -128 до 127, а с unsigned е от 0
до 255.
MEDIUMINT(size) Средно по големина цяло число.
Обхватът му е от -8388608 до
8388607, а с unsigned от 0 до
16777125.
INT(size) Средно по големина цяло число.
Обхватът му е от -2147483658 до
2147483647, а с unsigned е от 0 до
4294967295.
FLOAT(size, d) Число с плаваща запетая. Точния
размер на числата преди запетаята се
посочва с параметъра (size). Размера
на числата след запетаята се посочва
с параметъра d.
DOUBLE(size,d) Нормално голямо число с плаваща
запетая. Работи като float.
DECIMAL(size,d) Число като float и double но
максималното число за size
параметъра е 65, а за d е 30.
Типове за дата и час.

DATE Дата с формат: YYYY-MM-DD.


Поддържа се обхват от ‘1000-01-
01’ до ‘9999-12-31’.
TIME(fsp) Тип за време. Форматът е:
hh:mm:ss. Поддържа обхват от ‘-
838:59:59’ до ‘838:59:59’.
YEAR(fsp) Тип за година с 4 числа.

DATETIME(fsp) Комбинация от типа за дата и


време. Форматът е: YYYY-MM-DD
hh:mm:ss.

2.0 Създаване на таблици, добавяне, промяна и


премахване на записи от база данни с SQL команди.

Създаване на таблици:
Използва се командата CREATE TABLE.

Синтаксът е:
Примери:

CREATE TABLE Uchenik (


Nomer int,
PurvoIme varchar(255),
PoslednoIme varchar(255),
SredenUspeh unsigned double
);

Добавяне на записи в таблици:


Използва се командата INSERT INTO.

Синтаксът е:

Пример:

INSERT INTO Uchenik VALUES (‘6’, ‘Viktor’, ‘Chochkov’,


‘5.50’);

Промяна за записи в таблици:


Използва се командата UPDATE.

Синтаксът е:
Пример:
UPDATE Uchenik
Set SredenUspeh = ‘6.00’
WHERE Nomer = 6;

Премахване на записи в таблици:


Използва се командата UPDATE.

Синтаксът е:

Пример:

DELETE FROM Uchenik WHERE FirstName = ‘Viktor’;


Изтриване на таблици:
Използва се командата DROP TABLE

Синтаксът е

Пример:

DROP TABLE Uchenik;


3.0 Нормализация и нормални форми

Нормализацията представлява правила за създаване на оптимизирани и


качествени бази данни.

Това се постига чрез:


3.1 Премахване на дублирани данни
За да се използва паметта на сървъра по-ефективно.
3.2 Минимизиране на аномалиите при съхраняване, изтриване и
промяна на данните.
Когато се изтриват или променят таблици, които са свързани,
има вероятност да се промени информацията и в други
таблици, което не е хубава практика.
3.3 Създаване на отворена към бъдещи промени структура:
Трябва да имаме опцията да създаваме нови таблици, така че
да няма конфликти с други таблици.

За да бъде нормализирана една база данни тя трябва да следва трите


нормални форми:

Първа нормална форма


Казва се, че таблица е в първа нормална форма, ако всички
атрибути или полета в нея съдържат само уникални стойности.
Тоест, няма изброяване на стойности със запетая.

Телефонен номер 0889954234, 0876654749

Ако има частични ключове те трябва да се образуват в съставен първичен


ключ и не може да има два еднакви първични ключа в една таблица.
Втора нормална форма
Една таблица не може да съдържа дублираща се информация.

Това се постига когато първичния ключ има само една колона. Освен това
във втората нормална форма всички не-ключови колони трябва да
зависят функционално от първичния ключ.

Стъпки за да се гарантира, че данните са във втора нормална


форма.

1. Първа нормална форма трябва да бъде


постигната

2. Премахване на подмножества от данни,


приложими за няколко реда в таблица и
поставянето им в различни таблици.

3. Използване на чужди ключове на връзки между


създадените таблици за осигуряване на връзки
между създадените таблици.
Трета нормална форма
Занимава се с елиминиране на не-ключови атрибути, които не зависят от
първия ключ, а от друг атрибут.

Единствените зависимости между колоните може да са ,,колона зависи


от първичния ключ”. Те не трябва да зависят една от друга.

На практика една БД е в трета нормална форма, ако всяка таблица


представлява различен реален обект, а всеки запис в нея е екземпляр на
този обект. Връзките между таблиците са релациите между обектите.

Пример на нормализирана БД:

4.0 Видове връзки в релационните бази данни.


Отношение (relationship, релация) се нарича зависимост,

съществуваща между две таблици, когато записи от една

таблица могат да се свържат по някакъв начин със записи от друга.


Три са възможните видове отношения в релационните бази данни,
известни още като кардиналности или кардинални числа
(cardinality):

„едно към едно” (1:1),

„едно към много” (1:N),

“много към много” (M:N).

Отношение „едно към едно”


Всеки запис от една таблица е свързан с най-много един запис
от втора таблица и всеки запис от втората таблица е
свързан най-много с един запис от първата таблица.

Този вид отношение е специално, защото е единственото, при


което двете таблици могат да споделят един общ първичен
ключ.

Отношение „едно към много” (1:N)


Един запис от първата таблица, наречена родителска, може
да бъде свързан с много записи от втората таблица, наречена
дъщерна, но всеки запис от дъщерната таблица може да бъде
свързан само с един запис от родителската таблица.

Отношение „много към много” (M:N)

Един запис от едната таблица може да се свърже с


много на брой записи от втората таблица, и един
запис от втората може да се свърже с много на брой
записи от първата таблица.

За да се създаде на практика това отношение, се


използва нова, свързваща или асоциираща таблица,
която съдържа копия на първичните ключове на двете
таблици.
5.0 Каскадни операции
CASCADE се използва комбинирано с ON DELETE или с ON UPDATE.

В случай, че се ползва с ON DELETE:

Когато създадем foreign ключ използвайки тази опция,редовете от


дъщерната таблица автоматично ще се изтрият когато редовете от
родителската бъдат изтрити.

В случай, че се ползва с ON UPDATE:

Ще бъде същото като с ON DELETE с единствената разлика, че вместо да


се трият редовете ще бъдат обновени с новата информация от
родителските редове.

6.0 Ограничения
SQL ограниченията се използват за определяне на правилата на данните в
дадена таблица. Те също се използват за ограничаване на типа данни, които
могат да се прехвърлят в таблица. Това гарантира точността и надеждността
на данните в таблицата.

Ако има разминаване между ограничението и действието на данните,


действието се прекъсва и може да видим къде.

Ограниченията могат да бъдат на ниво колона или на ниво таблица.


Ограниченията на ниво колоните се отнасят за колона, а за цялата таблица се
прилагат ограничения на ниво таблица. В SQL обикновено се използват
следните ограничения:

NOT NULL – Уверява се, че колоната не може да има стойност NULL.

UNIQUE - Уверява се, че всички стойности в колона са различни.


PRIMARY KEY – комбинация от NOT NULL и UNIQUE. Уникално
идентифицира всеки ред в таблицата.

FOREIGN KEY – Уникално идентифицира ред / запис в друга таблица.

CHECK – гарантира, че всички стойности в колона отговарят на


конкретно условие.

DEFAULT – Задава стойност по подразбиране за колона, когато не е


зададена друга стойност

INDEX – Използва се за бързо създаване и извличане на данни от


базите данни.

Синтаксис:

Пример:
CREATE TABLE Chovek(
ID int NOT NULL,
Name varchar(255),
CONSTRAINT PK_Chovek PRIMARY KEY (ID)
);
Създаваме таблица „Chovek” с първичен ключ ,,PK_Chovek”,
който ще съдържа ид-то защото то има уникална
стойност и защото има constraint NOT NULL.

За да го премахнем може да използваме :


ALTER TABLE Chovek
DROP PRIMARY KEY;

7.0 CRUD Операции


,,Create, read, update and delete” са четирите основни
операции която всяка релационна база данни и
приложение трябва да може да изпълнява. Те създават,
четат, обновяват и изтриват данни и информация.
SQL използва:

CREATE /INSERT INTO за create заявки.


SELECT за read заявки.
UPDATE за update заявки.
DROP/DELETE за delete заявки.
Примери:
SELECT distinct Salary from Employee e1 where 2=Select
count(distinct Salary) from Employee e2 where e1.salary <=
e2.salary
Заявка която използва read функцията от CRUD за да
прочете и намери работника с втората най-голяма
заплата.

SELECT distinct salary from employee a where 3 >= (select


count(distinct salary) from employee b where a.salary <=
b.salary) order by a.salary desc;
В тази заявка използваме read функцията от CRUD за
да прочетем стойностите на трите най-високи
заплати от employee таблицата.

INSERT INTO Employees (employee_id, first_name,


last_name) values (1,’Viktor’,’Chochkov)
Тук използваме create функцията за да създадем нови
записи в таблицата Employees.
UPDATE Employees SET hire_date = GETDATE() WHERE
first_name = ‘Viktor’;
Тук използваме update функцията за да сложим
hire_date на днешната дата чрез функцията
GETDATE()

DELETE FROM Employees WHERE employee_id = 1


Изтриване на работник с employee_id равно на 1.

8.0 Подзаявки
Подзаявките представляват заявка вложена в друга.
Използваме ги за да извършваме операции с няколко
стъпки.
Пример:
SELECT sub.*
FROM (
SELECT * FROM ExampleTable
WHERER example_value = ‘value’
) sub
WHERE sub.example = ‘value’;
Тук използваме sub query за да прочетем
стойността за FROM.

Втори пример:
SELECT a.studentid, a.name, b.total_marks
FROM student a, marks b
WHERE a.studentid = b.studentid AND b.total_marks >
(SELECT total_marks FROM marks WHERE studentid = ‘1’)
Тук взимаме стойността с която ще сравним
b.totalmarks като правим subquery което взима
total_marks където studentid е равно на 1.
9.0 Обединяване и съединение на данни
UNION се използва за да се комбинира резултата
от две или повече SELECT заявки. Данните
получени от UNION са комбинирани в нови
редове. Връща различни редове.
JOIN комбинира дата от много таблици с общо
условие между тях. Вместо редове, данните са
комбинирани в колони. Може да не връща
различни колони.

10.0 Групиране, филтриране и сортиране на данни

За групиране се използва GROUP BY, за сортиране


ORDER BY.
Пример:
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
ORDER BY COUNT(CustomerID) DESC;
Тук изброяваме броя на клиентите(чрез
функцията COUNT()) във всяка страна,
сортирано от високо към ниско.

Пример за филтриране:
SELECT * FROM Survey WHERE person = ‘lake’
OR person = ‘roe’;
Тук филтрираме всички записи от
таблицата Survey и взимаме данните само
там където person е равно на ‘lake’ или на
‘roe’.
11.0 Функции, процедури и транзакции.

Функциите връщат стойности базирани на входен


параметър.
Примерни функции:
AVG() – Връща средноаритметична стойност.
COUNT() – Връща броя на редове.
FIRST() – Връща първата стойност от заявка.
LAST() – Връща последната стойност.
MAX() – Връща най-голямата стойност.
MIN() – Връща най-малката стойност.
SUM() – Връща сумата от стойности.
UCASE() – Конвертира поле от текст в главни
букви.
IFNULL(), ISNULL()

Съхранените процедури са като функциите, но те


имат възможността да приемат параметър за
изход и не е задължително да връщат стойност.
Примерни съхранени процедури:

CREATE PROCEDURE SelectAllCustomers


AS
SELECT * FROM Customers
GO;
EXEC SelectAllCustomers;

Процедурата чете всички редове от Customers и се


изпълнява чрез ключовата дума ‘EXEC’.

Tранзакция е мерна единица за работа извършена спрямо


база данни. Тя може да бъде последователност от работи
извършени в логически ред, независимо дали от
потребител или автоматично от някаква програма за база
данни.

You might also like