SlideShare a Scribd company logo
1 of 26
Бази от данни
Урок 4: Работа с обекта
„заявка“- част 2
Юлиана Пенева
Департамент “Информатика”,НБУ
july_peneva@abv.bg
Съдържание
1. Видове съединение.
2. Агрегатни функции.
3. Групиране на данните.
4. Общ вид на SQL заявка.
5. Обновяване на данните.
Юлиана Пенева Бази от данни - урок 4 2
Видове съединение
Преговор
1. Операцията „съединение“ комбинира свързани помежду
си редове от две таблици в един ред
2. Особености на съединението:
 за да се извличат данни от няколко таблици се изисква
таблиците да са свързани;
 таблиците се свързват по ключови полета, имащи общи
значения (външен ключ-главен ключ).
3. Видове съединение в Access:
 вътрешно (inner join);
 външно (outer join);
 рекурсивно (self join) – няма да го разглеждаме.
Юлиана Пенева Бази от данни - урок 4 3
Видове съединение
Вътрешно съединение
1. При вътрешното съединението условието се дефинира по следния
начин:
<име на колона от Таблица1> = <име на колона от Таблица2>
2. Резултатът съдържа записите от Таблица2, чиито стойности
съвпадат със свързаните им полета в Таблица1 (съдържа външен
ключ).
3. При вътрешното съединение в резултата участват само онези
данни от Таблица 1, за които има съответни данни в Таблица 2.
4. По премълчаване когато се създава съединение Access приема, че
то е вътрешно съединение.
5. Вътрешното съединение позволява комбинирането на данни от две
и повече таблици.
6. Вътрешните съединения се задават в SQL след ключовата дума
FROM по следния начин:
FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.Поле1 =
Таблица2.Поле2
Илюстрация с Access
Юлиана Пенева Бази от данни - урок 4
4
Видове съединение
Външно съединение
1. При външното съединение резултатът съдържа:
• записите от Таблица2, чиито стойности съвпадат със
свързаните им полета в Таблица1 (съдържа външен
ключ);
• записите от Таблица 1, за които няма съответен запис в
Таблица 2 (или обратно).
2. Външното съединение бива ляво и дясно.
3. Външните съединения се задават в SQL след ключовата
дума FROM по следния начин:
FROM Таблица1 [Left|Right] JOIN Таблица2 On Таблица1.Поле1 =
Таблица2.Поле2
Юлиана Пенева Бази от данни - урок 4 5
Видове съединение
Ляво външно съединение
Участват всички записи от Таблица1 (таблицата вляво),
независимо дали имат съответен запис в Таблица2 и
записите от Таблица2, в които свързващото поле
съдържа стойности, които са общи за двете таблици.
Юлиана Пенева Бази от данни - урок 4 6
Видове съединение
Дясно външно съединение
Участват всички записи от Таблица2 (таблицата вдясно),
независимо дали имат съответен запис в Таблица1 и
записите от Таблица2, в които свързващото поле
съдържа стойности, които са общи за двете таблици.
Илюстрация с Access.
Юлиана Пенева Бази от данни - урок 4 7
Агрегатни функции
Юлиана Пенева Бази от данни - урок 4 8
1. В SQL са предвидени основните агрегатни функции:
• COUNT – връща броя на стойностите в дадена колона
или броя на редовете в таблицата;
• SUM – връща сумата от стойностите на посочената
колона;
• MIN – връща най-малката стойност в посочената
колона;
• MAX – връща най-голямата стойност в посочената
колона;
• AVG – изчислява средна стойност в посочената
колона.
2. Агрегатните функции се прилагат само върху
единствена колона.
Агрегатни функции
Юлиана Пенева Бази от данни - урок 4 9
3. COUNT, MIN и MAX могат да се прилагат върху
числови или нечислови полета.
4. SUM и AVG се прилагат само върху числови полета.
5. Всички функции първо изключват стойностите Null и
работят върху останалите стойности.
6. COUNT(*) представлява специален начин на
използване на COUNT и връща броя на редовете в
указана таблица, независимо от наличните стойности
Null.
Агрегатни функции
Заявка 1: Да се изчислят сумата от заплатите на всички
служители, максималната и минималната заплати в
предприятието.
SELECT SUM(Salary), MAX(Salary), MIN(Salary)
FROM EMPLOYEE
Заявка 2: Да се изчислят средната, максималната и
минималната заплати на служителите от отдел 'Маркетинг'.
SELECT MAX (Salary), MIN (Salary), AVG(Salary)
FROM EMPLOYEE, DEPARTMENT
WHERE Dno=Dnumber AND Dname='Маркетинг'
Юлиана Пенева Бази от данни - урок 4 10
EMPLOYEE (Fname, Lname, Ssn, Bdate, Address, Sex, Salary, Superssn, Dno)
DEPARTMENT (Dname, Dnumber, Mgrssn, Mgrstartdate)
PROJECT (Pname, Pnumber, Plocation, Dnum)
WORKS_ON (Essn, Pno, Hours)
Агрегатни функции
Заявка 3 : Да се намери общия брой на служителите в
предприятието.
SELECT COUNT(*)
FROM EMPLOYEE
Заявка 4 : да се намери общия брой на служителите,
работещи в отдел 'Изследователски'.
SELECT COUNT(*)
FROM EMPLOYEE, DEPARTMENT
WHERE Dno=Dnumber AND Dname =
'Изследователски’
Илюстрация с Access.
Юлиана Пенева Бази от данни - урок 4 11
Агрегатни функции
Заявка 5: да се преброят различните стойности на
колоната SALARY в базата (колко различни заплати има
в предприятието).
SELECT COUNT(DISTINCT Salary)
FROM EMPLOYEE.
Юлиана Пенева Бази от данни - урок 4 12
Групиране на данните
1. Групиране = разделяне на редовете в дадена таблица по
стойностите на някоя от колоните и прилагането на агрегатна
функция в рамките на всяка група
2. Групирането е възможно чрез използуването оператора
GROUP BY.
3. След него се изброяват колоните, по чиито стойности
таблицата ще се дели на групи. Тези колони се изброяват
задължително и след SELECT.
SELECT <списък от колони>
FROM <списък от таблици>
[WHERE <условие>]
[GROUP BY <колони на групиране>]
Юлиана Пенева Бази от данни - урок 4 13
Групиране на данните
Заявка 6: за всеки отдел да се изведат номерът му, броят на
служителите и средната им заплата.
SELECT DNO, COUNT(*), AVG(Salary)
FROM EMPLOYEE
GROUP BY Dno
Юлиана Пенева Бази от данни - урок 4 14
Групиране на данните
Заявка 7: за всеки проект да се изведат номер, име и
брой на служителите, които работят по него.
SELECT Pnumber,Pname,COUNT(*)
FROM PROJECT, WORKS_ON
WHERE Pnumber=Pno
GROUP BY Pnumber, Pname
При съвместната употреба на операцията
съединение с GROUP BY групиращата функция се
прилага след като се изпълни съединението!
Юлиана Пенева Бази от данни - урок 4 15
Групиране на данните
Задаване на условие върху групите
1. Използува се оператора HAVING, след който
се формулира необходимото условие
2. Агрегатните функции се изчислят само
групите, които отговарят на указаното условие.
Юлиана Пенева Бази от данни - урок 4 16
Групиране на данните
Заявка 8: за всеки проект, в който са ангажирани повече
от двама души, да се изведат номер, име и брой
на служителите, които работят по него.
SELECT Pnumber, Pname, COUNT (*)
FROM PROJECT, WORKS_ON
WHERE Pnumber=Pno
GROUP BY Pnumber, Pname
HAVING COUNT (*) > 2
Юлиана Пенева Бази от данни - урок 4 17
Групиране и сортиране
1. Сортирането на резултатната таблица по
стойностите на една или няколко колони,
възходящо или низходящо е възможно чрез
оператора ORDER BY.
2. След него се изброяват колоните, по чиито
стойности таблицата ще се сортира.
3. По подразбиране сортирането се извършва
възходящо. Ключовата дума DESC позволява
низходяща подредба.
Илюстрация с Access
Юлиана Пенева Бази от данни - урок 4 18
Общ вид на SQL заявка
SELECT <списък от колони>
FROM <списък от таблици>
[WHERE <условие>]
[GROUP BY <колони на групиране>]
[HAVING <условие за групиране>]
[ORDER BY <списък от колонии>]
Юлиана Пенева Бази от данни - урок 4 19
Обновяване на базата
В SQL има три операции за обновяване на базата:
1. INSERT – въвежда редове в указаната таблица.
2. DELETE – премахва редове от указаната таблица.
3. UPDATE – модифицира данни в указаната
таблица.
Всяка команда за обновяване важи само за
единствена таблица.
Юлиана Пенева Бази от данни - урок 4 20
Обновяване на базата
INSERT
1. Позволява добавянето на един или няколко реда в
указаната таблица. Има няколко варианта.
2. Задават се стойностите на всяка колона, като се спазва
редът, наложен при дефинирането на таблицата.
3. Общ вид на командата:
INSERT INTO име на таблица [(списък с имена на колони)] VALUES
(стойности);
Пример 1: да се добавят данни за новоназначен служител.
INSERT INTO EMPLOYEE
VALUES('Стоян','Маринов','653298653','30-DEC-92',
'Люлин,бл.744,Вх.А,София','M',3700,'987654321',4)
Юлиана Пенева Бази от данни - урок 4 21
Обновяване на базата
Пример 2: да се въведат имената и номера на новоназначен
служител.
INSERT INTO EMPLOYEE (Fname,Lname,Ssn)
VALUES ('Стоян','Маринов',653298653).
Юлиана Пенева Бази от данни - урок 4 22
Обновяване на базата
DELETE
1. Позволява премахването на онези редове от указаната
таблица, които удовлетворяват зададеното условие.
2. Ако не е зададено явно условие всички редове се
изтриват и таблицата остава празна.
3. Окончателното премахване на таблица от базата става с
командата DROP.
4. Общ вид на командата:
DELETE FROM име на таблица WHERE условие за избор;
Юлиана Пенева Бази от данни - урок 4 23
Обновяване на базата
Пример 3: Да се изтрият данните за служителя с указаното име.
DELETE FROM EMPLOYEE
WHERE LNAME = 'Петров'
Пример 4: Да се изтрият данните за служителя с указания номер.
DELETE FROM EMPLOYEE
WHERE SSN = '123456789'
Пример 5: Да се изтрият данните за всички служители.
DELETE FROM EMPLOYEE
Юлиана Пенева Бази от данни - урок 4 24
Обновяване на базата
UPDATE
1. Променя стойностите на указаните колони,
удовлетворяващи зададеното условие.
2. Имената на колоните, подлежащи на
актуализация се указват след ключовата дума
SET.
3. Общ вид на командата:
UPDATE име на таблица SET име на колона=стойност1, …
WHERE условие за избор;
Юлиана Пенева Бази от данни - урок 4 25
Обновяване на базата
Пример 6: Да се промени местоположението и номера на
указания отдел (с номер 10).
UPDATE PROJECT
SET Plocation = 'Варна', Dnum = 5 WHERE Pnum = 10
Пример 7: Да се повишат с 10% заплатите на служителите от
указания отдел.
UPDATE EMPLOYEE
SET Salary = Salary*1.1
WHERE Dno = 5
Илюстрация с Access
Юлиана Пенева Бази от данни - урок 4 26

More Related Content

What's hot

ПОЛІОМІЄЛІТ ГВП.pptx
ПОЛІОМІЄЛІТ ГВП.pptxПОЛІОМІЄЛІТ ГВП.pptx
ПОЛІОМІЄЛІТ ГВП.pptxssuser64ff05
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...DAVID Academy
 
3 клас урок 10 які бувають меню.як запустити програму на виконання.
3 клас урок 10  які бувають меню.як запустити програму на виконання.3 клас урок 10  які бувають меню.як запустити програму на виконання.
3 клас урок 10 які бувають меню.як запустити програму на виконання.Сокальська ЗШ І-ІІІ ступенів №2
 
αρχεια φυλλο εργασιας
αρχεια  φυλλο εργασιαςαρχεια  φυλλο εργασιας
αρχεια φυλλο εργασιαςkatetrinasal
 
HTML – програмиране и валидиране
HTML – програмиране и валидиранеHTML – програмиране и валидиране
HTML – програмиране и валидиранеEkaterina Mitseva
 
Metoda konturnih struja
Metoda konturnih strujaMetoda konturnih struja
Metoda konturnih strujatehnickaso
 
Aριθμητικά συστήματα - ΜΕΤΑΤΡΟΠΕΣ
Aριθμητικά συστήματα - ΜΕΤΑΤΡΟΠΕΣAριθμητικά συστήματα - ΜΕΤΑΤΡΟΠΕΣ
Aριθμητικά συστήματα - ΜΕΤΑΤΡΟΠΕΣmdaglis
 
Країни-карлики Європи
Країни-карлики ЄвропиКраїни-карлики Європи
Країни-карлики ЄвропиCristina Nestor
 
Інформатика - підручник для 8 класу авт. Ривкінд Й.Я.
Інформатика - підручник для 8 класу авт. Ривкінд Й.Я.Інформатика - підручник для 8 класу авт. Ривкінд Й.Я.
Інформатика - підручник для 8 класу авт. Ривкінд Й.Я.VsimPPT
 
Конспект уроку на тему: "Поняття про мультимедійні повідомлення, Об’єкти муль...
Конспект уроку на тему: "Поняття про мультимедійні повідомлення, Об’єкти муль...Конспект уроку на тему: "Поняття про мультимедійні повідомлення, Об’єкти муль...
Конспект уроку на тему: "Поняття про мультимедійні повідомлення, Об’єкти муль...Андрей Виноходов
 
Algoritmi sortiranja u C++
Algoritmi sortiranja u C++Algoritmi sortiranja u C++
Algoritmi sortiranja u C++Adnan Goretić
 
Poluprovodnicke komponente predavanja1
Poluprovodnicke komponente predavanja1Poluprovodnicke komponente predavanja1
Poluprovodnicke komponente predavanja1Im1318
 
Nervi cranialis
Nervi cranialisNervi cranialis
Nervi cranialisIgor68
 
Презентація доповнена реальність. Ю. В. Єчкало, В. В. Ткачук
Презентація доповнена реальність. Ю. В. Єчкало, В. В. ТкачукПрезентація доповнена реальність. Ю. В. Єчкало, В. В. Ткачук
Презентація доповнена реальність. Ю. В. Єчкало, В. В. ТкачукVictoriya Tkachuk
 
ψηφιακά ηλεκτρονικά κεφ 1
ψηφιακά ηλεκτρονικά κεφ 1ψηφιακά ηλεκτρονικά κεφ 1
ψηφιακά ηλεκτρονικά κεφ 1Theodoros Leftheroudis
 

What's hot (20)

ПОЛІОМІЄЛІТ ГВП.pptx
ПОЛІОМІЄЛІТ ГВП.pptxПОЛІОМІЄЛІТ ГВП.pptx
ПОЛІОМІЄЛІТ ГВП.pptx
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
 
3 клас урок 10 які бувають меню.як запустити програму на виконання.
3 клас урок 10  які бувають меню.як запустити програму на виконання.3 клас урок 10  які бувають меню.як запустити програму на виконання.
3 клас урок 10 які бувають меню.як запустити програму на виконання.
 
αρχεια φυλλο εργασιας
αρχεια  φυλλο εργασιαςαρχεια  φυλλο εργασιας
αρχεια φυλλο εργασιας
 
Rad-BIOS, CHIPSET, KESH
Rad-BIOS, CHIPSET, KESHRad-BIOS, CHIPSET, KESH
Rad-BIOS, CHIPSET, KESH
 
HTML – програмиране и валидиране
HTML – програмиране и валидиранеHTML – програмиране и валидиране
HTML – програмиране и валидиране
 
Softver
SoftverSoftver
Softver
 
Урок №2. Кодування символів
Урок №2. Кодування символів Урок №2. Кодування символів
Урок №2. Кодування символів
 
5.04 kalodia
5.04 kalodia5.04 kalodia
5.04 kalodia
 
Metoda konturnih struja
Metoda konturnih strujaMetoda konturnih struja
Metoda konturnih struja
 
Aριθμητικά συστήματα - ΜΕΤΑΤΡΟΠΕΣ
Aριθμητικά συστήματα - ΜΕΤΑΤΡΟΠΕΣAριθμητικά συστήματα - ΜΕΤΑΤΡΟΠΕΣ
Aριθμητικά συστήματα - ΜΕΤΑΤΡΟΠΕΣ
 
Країни-карлики Європи
Країни-карлики ЄвропиКраїни-карлики Європи
Країни-карлики Європи
 
Інформатика - підручник для 8 класу авт. Ривкінд Й.Я.
Інформатика - підручник для 8 класу авт. Ривкінд Й.Я.Інформатика - підручник для 8 класу авт. Ривкінд Й.Я.
Інформатика - підручник для 8 класу авт. Ривкінд Й.Я.
 
Конспект уроку на тему: "Поняття про мультимедійні повідомлення, Об’єкти муль...
Конспект уроку на тему: "Поняття про мультимедійні повідомлення, Об’єкти муль...Конспект уроку на тему: "Поняття про мультимедійні повідомлення, Об’єкти муль...
Конспект уроку на тему: "Поняття про мультимедійні повідомлення, Об’єкти муль...
 
Algoritmi sortiranja u C++
Algoritmi sortiranja u C++Algoritmi sortiranja u C++
Algoritmi sortiranja u C++
 
Poluprovodnicke komponente predavanja1
Poluprovodnicke komponente predavanja1Poluprovodnicke komponente predavanja1
Poluprovodnicke komponente predavanja1
 
Nervi cranialis
Nervi cranialisNervi cranialis
Nervi cranialis
 
Презентація доповнена реальність. Ю. В. Єчкало, В. В. Ткачук
Презентація доповнена реальність. Ю. В. Єчкало, В. В. ТкачукПрезентація доповнена реальність. Ю. В. Єчкало, В. В. Ткачук
Презентація доповнена реальність. Ю. В. Єчкало, В. В. Ткачук
 
спірометрія 2013
спірометрія 2013спірометрія 2013
спірометрія 2013
 
ψηφιακά ηλεκτρονικά κεφ 1
ψηφιακά ηλεκτρονικά κεφ 1ψηφιακά ηλεκτρονικά κεφ 1
ψηφιακά ηλεκτρονικά κεφ 1
 

More from RaynaITSTEP

Project management professional
Project management professionalProject management professional
Project management professionalRaynaITSTEP
 
Project management it step
Project management it stepProject management it step
Project management it stepRaynaITSTEP
 
monitoring and diagnostics
monitoring and diagnosticsmonitoring and diagnostics
monitoring and diagnosticsRaynaITSTEP
 
network security
network securitynetwork security
network securityRaynaITSTEP
 
configuring disk sand drivers
configuring disk sand driversconfiguring disk sand drivers
configuring disk sand driversRaynaITSTEP
 
install update and migration to windows 10
install update and migration to windows 10install update and migration to windows 10
install update and migration to windows 10RaynaITSTEP
 
Фотошоп за деца_4
Фотошоп за деца_4Фотошоп за деца_4
Фотошоп за деца_4RaynaITSTEP
 
Структурни кабелни системи
Структурни кабелни системиСтруктурни кабелни системи
Структурни кабелни системиRaynaITSTEP
 
Android introduction
Android introductionAndroid introduction
Android introductionRaynaITSTEP
 
Adobe Illustrator - Урок 2
Adobe Illustrator - Урок 2Adobe Illustrator - Урок 2
Adobe Illustrator - Урок 2RaynaITSTEP
 
Adobe Illustrator - Обобщение
Adobe Illustrator - ОбобщениеAdobe Illustrator - Обобщение
Adobe Illustrator - ОбобщениеRaynaITSTEP
 
Урок 1_Прозрачност
Урок 1_ПрозрачностУрок 1_Прозрачност
Урок 1_ПрозрачностRaynaITSTEP
 
Урок 3 4 - layer blend modes and effects
Урок 3 4 - layer blend modes and effectsУрок 3 4 - layer blend modes and effects
Урок 3 4 - layer blend modes and effectsRaynaITSTEP
 
inline block elements
inline block elementsinline block elements
inline block elementsRaynaITSTEP
 
html introduction
html introductionhtml introduction
html introductionRaynaITSTEP
 

More from RaynaITSTEP (20)

Project management professional
Project management professionalProject management professional
Project management professional
 
Project management it step
Project management it stepProject management it step
Project management it step
 
Lean startup
Lean startupLean startup
Lean startup
 
monitoring and diagnostics
monitoring and diagnosticsmonitoring and diagnostics
monitoring and diagnostics
 
network security
network securitynetwork security
network security
 
networking
networkingnetworking
networking
 
data security
data securitydata security
data security
 
configuring disk sand drivers
configuring disk sand driversconfiguring disk sand drivers
configuring disk sand drivers
 
boot process
boot process  boot process
boot process
 
install update and migration to windows 10
install update and migration to windows 10install update and migration to windows 10
install update and migration to windows 10
 
virtualization
virtualizationvirtualization
virtualization
 
Фотошоп за деца_4
Фотошоп за деца_4Фотошоп за деца_4
Фотошоп за деца_4
 
Структурни кабелни системи
Структурни кабелни системиСтруктурни кабелни системи
Структурни кабелни системи
 
Android introduction
Android introductionAndroid introduction
Android introduction
 
Adobe Illustrator - Урок 2
Adobe Illustrator - Урок 2Adobe Illustrator - Урок 2
Adobe Illustrator - Урок 2
 
Adobe Illustrator - Обобщение
Adobe Illustrator - ОбобщениеAdobe Illustrator - Обобщение
Adobe Illustrator - Обобщение
 
Урок 1_Прозрачност
Урок 1_ПрозрачностУрок 1_Прозрачност
Урок 1_Прозрачност
 
Урок 3 4 - layer blend modes and effects
Урок 3 4 - layer blend modes and effectsУрок 3 4 - layer blend modes and effects
Урок 3 4 - layer blend modes and effects
 
inline block elements
inline block elementsinline block elements
inline block elements
 
html introduction
html introductionhtml introduction
html introduction
 

РАБОТА С ОБЕКТА „ЗАЯВКА“ (2)

  • 1. Бази от данни Урок 4: Работа с обекта „заявка“- част 2 Юлиана Пенева Департамент “Информатика”,НБУ july_peneva@abv.bg
  • 2. Съдържание 1. Видове съединение. 2. Агрегатни функции. 3. Групиране на данните. 4. Общ вид на SQL заявка. 5. Обновяване на данните. Юлиана Пенева Бази от данни - урок 4 2
  • 3. Видове съединение Преговор 1. Операцията „съединение“ комбинира свързани помежду си редове от две таблици в един ред 2. Особености на съединението:  за да се извличат данни от няколко таблици се изисква таблиците да са свързани;  таблиците се свързват по ключови полета, имащи общи значения (външен ключ-главен ключ). 3. Видове съединение в Access:  вътрешно (inner join);  външно (outer join);  рекурсивно (self join) – няма да го разглеждаме. Юлиана Пенева Бази от данни - урок 4 3
  • 4. Видове съединение Вътрешно съединение 1. При вътрешното съединението условието се дефинира по следния начин: <име на колона от Таблица1> = <име на колона от Таблица2> 2. Резултатът съдържа записите от Таблица2, чиито стойности съвпадат със свързаните им полета в Таблица1 (съдържа външен ключ). 3. При вътрешното съединение в резултата участват само онези данни от Таблица 1, за които има съответни данни в Таблица 2. 4. По премълчаване когато се създава съединение Access приема, че то е вътрешно съединение. 5. Вътрешното съединение позволява комбинирането на данни от две и повече таблици. 6. Вътрешните съединения се задават в SQL след ключовата дума FROM по следния начин: FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.Поле1 = Таблица2.Поле2 Илюстрация с Access Юлиана Пенева Бази от данни - урок 4 4
  • 5. Видове съединение Външно съединение 1. При външното съединение резултатът съдържа: • записите от Таблица2, чиито стойности съвпадат със свързаните им полета в Таблица1 (съдържа външен ключ); • записите от Таблица 1, за които няма съответен запис в Таблица 2 (или обратно). 2. Външното съединение бива ляво и дясно. 3. Външните съединения се задават в SQL след ключовата дума FROM по следния начин: FROM Таблица1 [Left|Right] JOIN Таблица2 On Таблица1.Поле1 = Таблица2.Поле2 Юлиана Пенева Бази от данни - урок 4 5
  • 6. Видове съединение Ляво външно съединение Участват всички записи от Таблица1 (таблицата вляво), независимо дали имат съответен запис в Таблица2 и записите от Таблица2, в които свързващото поле съдържа стойности, които са общи за двете таблици. Юлиана Пенева Бази от данни - урок 4 6
  • 7. Видове съединение Дясно външно съединение Участват всички записи от Таблица2 (таблицата вдясно), независимо дали имат съответен запис в Таблица1 и записите от Таблица2, в които свързващото поле съдържа стойности, които са общи за двете таблици. Илюстрация с Access. Юлиана Пенева Бази от данни - урок 4 7
  • 8. Агрегатни функции Юлиана Пенева Бази от данни - урок 4 8 1. В SQL са предвидени основните агрегатни функции: • COUNT – връща броя на стойностите в дадена колона или броя на редовете в таблицата; • SUM – връща сумата от стойностите на посочената колона; • MIN – връща най-малката стойност в посочената колона; • MAX – връща най-голямата стойност в посочената колона; • AVG – изчислява средна стойност в посочената колона. 2. Агрегатните функции се прилагат само върху единствена колона.
  • 9. Агрегатни функции Юлиана Пенева Бази от данни - урок 4 9 3. COUNT, MIN и MAX могат да се прилагат върху числови или нечислови полета. 4. SUM и AVG се прилагат само върху числови полета. 5. Всички функции първо изключват стойностите Null и работят върху останалите стойности. 6. COUNT(*) представлява специален начин на използване на COUNT и връща броя на редовете в указана таблица, независимо от наличните стойности Null.
  • 10. Агрегатни функции Заявка 1: Да се изчислят сумата от заплатите на всички служители, максималната и минималната заплати в предприятието. SELECT SUM(Salary), MAX(Salary), MIN(Salary) FROM EMPLOYEE Заявка 2: Да се изчислят средната, максималната и минималната заплати на служителите от отдел 'Маркетинг'. SELECT MAX (Salary), MIN (Salary), AVG(Salary) FROM EMPLOYEE, DEPARTMENT WHERE Dno=Dnumber AND Dname='Маркетинг' Юлиана Пенева Бази от данни - урок 4 10 EMPLOYEE (Fname, Lname, Ssn, Bdate, Address, Sex, Salary, Superssn, Dno) DEPARTMENT (Dname, Dnumber, Mgrssn, Mgrstartdate) PROJECT (Pname, Pnumber, Plocation, Dnum) WORKS_ON (Essn, Pno, Hours)
  • 11. Агрегатни функции Заявка 3 : Да се намери общия брой на служителите в предприятието. SELECT COUNT(*) FROM EMPLOYEE Заявка 4 : да се намери общия брой на служителите, работещи в отдел 'Изследователски'. SELECT COUNT(*) FROM EMPLOYEE, DEPARTMENT WHERE Dno=Dnumber AND Dname = 'Изследователски’ Илюстрация с Access. Юлиана Пенева Бази от данни - урок 4 11
  • 12. Агрегатни функции Заявка 5: да се преброят различните стойности на колоната SALARY в базата (колко различни заплати има в предприятието). SELECT COUNT(DISTINCT Salary) FROM EMPLOYEE. Юлиана Пенева Бази от данни - урок 4 12
  • 13. Групиране на данните 1. Групиране = разделяне на редовете в дадена таблица по стойностите на някоя от колоните и прилагането на агрегатна функция в рамките на всяка група 2. Групирането е възможно чрез използуването оператора GROUP BY. 3. След него се изброяват колоните, по чиито стойности таблицата ще се дели на групи. Тези колони се изброяват задължително и след SELECT. SELECT <списък от колони> FROM <списък от таблици> [WHERE <условие>] [GROUP BY <колони на групиране>] Юлиана Пенева Бази от данни - урок 4 13
  • 14. Групиране на данните Заявка 6: за всеки отдел да се изведат номерът му, броят на служителите и средната им заплата. SELECT DNO, COUNT(*), AVG(Salary) FROM EMPLOYEE GROUP BY Dno Юлиана Пенева Бази от данни - урок 4 14
  • 15. Групиране на данните Заявка 7: за всеки проект да се изведат номер, име и брой на служителите, които работят по него. SELECT Pnumber,Pname,COUNT(*) FROM PROJECT, WORKS_ON WHERE Pnumber=Pno GROUP BY Pnumber, Pname При съвместната употреба на операцията съединение с GROUP BY групиращата функция се прилага след като се изпълни съединението! Юлиана Пенева Бази от данни - урок 4 15
  • 16. Групиране на данните Задаване на условие върху групите 1. Използува се оператора HAVING, след който се формулира необходимото условие 2. Агрегатните функции се изчислят само групите, които отговарят на указаното условие. Юлиана Пенева Бази от данни - урок 4 16
  • 17. Групиране на данните Заявка 8: за всеки проект, в който са ангажирани повече от двама души, да се изведат номер, име и брой на служителите, които работят по него. SELECT Pnumber, Pname, COUNT (*) FROM PROJECT, WORKS_ON WHERE Pnumber=Pno GROUP BY Pnumber, Pname HAVING COUNT (*) > 2 Юлиана Пенева Бази от данни - урок 4 17
  • 18. Групиране и сортиране 1. Сортирането на резултатната таблица по стойностите на една или няколко колони, възходящо или низходящо е възможно чрез оператора ORDER BY. 2. След него се изброяват колоните, по чиито стойности таблицата ще се сортира. 3. По подразбиране сортирането се извършва възходящо. Ключовата дума DESC позволява низходяща подредба. Илюстрация с Access Юлиана Пенева Бази от данни - урок 4 18
  • 19. Общ вид на SQL заявка SELECT <списък от колони> FROM <списък от таблици> [WHERE <условие>] [GROUP BY <колони на групиране>] [HAVING <условие за групиране>] [ORDER BY <списък от колонии>] Юлиана Пенева Бази от данни - урок 4 19
  • 20. Обновяване на базата В SQL има три операции за обновяване на базата: 1. INSERT – въвежда редове в указаната таблица. 2. DELETE – премахва редове от указаната таблица. 3. UPDATE – модифицира данни в указаната таблица. Всяка команда за обновяване важи само за единствена таблица. Юлиана Пенева Бази от данни - урок 4 20
  • 21. Обновяване на базата INSERT 1. Позволява добавянето на един или няколко реда в указаната таблица. Има няколко варианта. 2. Задават се стойностите на всяка колона, като се спазва редът, наложен при дефинирането на таблицата. 3. Общ вид на командата: INSERT INTO име на таблица [(списък с имена на колони)] VALUES (стойности); Пример 1: да се добавят данни за новоназначен служител. INSERT INTO EMPLOYEE VALUES('Стоян','Маринов','653298653','30-DEC-92', 'Люлин,бл.744,Вх.А,София','M',3700,'987654321',4) Юлиана Пенева Бази от данни - урок 4 21
  • 22. Обновяване на базата Пример 2: да се въведат имената и номера на новоназначен служител. INSERT INTO EMPLOYEE (Fname,Lname,Ssn) VALUES ('Стоян','Маринов',653298653). Юлиана Пенева Бази от данни - урок 4 22
  • 23. Обновяване на базата DELETE 1. Позволява премахването на онези редове от указаната таблица, които удовлетворяват зададеното условие. 2. Ако не е зададено явно условие всички редове се изтриват и таблицата остава празна. 3. Окончателното премахване на таблица от базата става с командата DROP. 4. Общ вид на командата: DELETE FROM име на таблица WHERE условие за избор; Юлиана Пенева Бази от данни - урок 4 23
  • 24. Обновяване на базата Пример 3: Да се изтрият данните за служителя с указаното име. DELETE FROM EMPLOYEE WHERE LNAME = 'Петров' Пример 4: Да се изтрият данните за служителя с указания номер. DELETE FROM EMPLOYEE WHERE SSN = '123456789' Пример 5: Да се изтрият данните за всички служители. DELETE FROM EMPLOYEE Юлиана Пенева Бази от данни - урок 4 24
  • 25. Обновяване на базата UPDATE 1. Променя стойностите на указаните колони, удовлетворяващи зададеното условие. 2. Имената на колоните, подлежащи на актуализация се указват след ключовата дума SET. 3. Общ вид на командата: UPDATE име на таблица SET име на колона=стойност1, … WHERE условие за избор; Юлиана Пенева Бази от данни - урок 4 25
  • 26. Обновяване на базата Пример 6: Да се промени местоположението и номера на указания отдел (с номер 10). UPDATE PROJECT SET Plocation = 'Варна', Dnum = 5 WHERE Pnum = 10 Пример 7: Да се повишат с 10% заплатите на служителите от указания отдел. UPDATE EMPLOYEE SET Salary = Salary*1.1 WHERE Dno = 5 Илюстрация с Access Юлиана Пенева Бази от данни - урок 4 26