SlideShare a Scribd company logo
1 of 4
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев Клаузи, преобразуване, въвеждане и структура на функциите 1 от 4
Тема 17. Клаузи, преобразуване, въвеждане и структура на функциите
Упражнение: Използване на конструкции SELECT за достъп до данните
инж. Красимир Дойчев kdoychev@gmail.com
Целта на настоящия урок е да затвърдите знанията си и придобиете умения за работа
с конструкцията Select и инструмента Query Analyzer.
В това упражнение ще използвате конструкции SELECT за извличане на данни от
таблицата Titles – Заглавия на книги на база данни Pubs. Това е примерна база данни,
съпътстваща Microsoft SQL Server, която моделира работата на фирма за
книгоразпространение.
Постепенно ще усложняваме конструкциите, като всяка конструкция SELECT след
първата ще се базира на предишните конструкции, тъй като ще имате повече яснота за
данните, които са включени в набора от резултати.
Предварителни сведения
Таблицата Titles съдържа следните полета (фиг. 1)
Поле Описание Поле Описание
Title_id идентификационен номер advance предплата
title заглавие на книгата royalty търговска отстъпка
type тип (за бизнес, кулинарна,
компютърна и др.)
ytd_sales брой продажби от началото на
годината до момента
pub_id идентификационен номер на
издателство
notes забележки
price цена pubdate дата на издаване
1. Отворете SQL Query Analyzer и се свържете с вашия локален сървър.
 от меню Start - група Microsoft SQL Server - Query Analyzer
 от Enterprise Manager - меню Tools
 команда isqlw от командния промпт
2. Извлечете всички данни от таблица Titles на база данни Pubs
1. В панел Editor от прозорец Query въведете следния код на Transact-SQL:
Use Pubs
SELECT * FROM Titles
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев Клаузи, преобразуване, въвеждане и структура на функциите 2 от 4
С конструкцията Use Pubs определяте базата данни Pubs, съдържаща таблицата, която
искате да разгледате. Чрез конструкция SELECT ... FROM извличате данни от таблица Titles,
намираща се в база данни Pubs. Символът "звезда" ("*") в списъка за избор указва, че трябва
да се извлекат данни от всички колони (полета) в таблицата.
2. Изпълнете конструкцията от менюто Query Execute, чрез клавиш F5 или бутон .
Наборът от резултати се появява в страница Grids на панел Results.
3. Извлечете данните от полетата Title_id, Title, Price и Ytd_sales в таблица Titles
USE Pubs
SELECT Title_id, Title, Price, Ytd_sales
FROM Titles
4. Задайте условие, така че наборът от резултати да показва само тези записи,
чиято стойност в поле Price е по-голяма от $10
USE Pubs
SELECT Title_id, Title, Price, Ytd_sales
FROM Titles
WHERE Price > 10
Ако работите с оригиналната БД, трябва да виждате в резултата само 12 записа.
5. Задайте условие, така че наборът от резултати да показва само тези книги,
чиито заглавия започват с „The”.
USE Pubs
SELECT Title_id, Title, Price, Ytd_sales
FROM Titles
WHERE (title LIKE 'the%')
Условието title LIKE 'the%' ограничава да се показват само записите подобни
на шаблона 'the%'. Операторът за сравнение с шаблон е LIKE, а шаблонът е ограден в
апострофи (клавишът с българско „Ч”). Използва се глобалният символ %, който
замества всички символи след „the”.
6. Задайте условие, така че наборът от резултати да показва само тези книги,
чиито продажби са между 4095 и 8780.
USE Pubs
SELECT Title_id, Title, Price, Ytd_sales
FROM Titles
WHERE Ytd_sales BETWEEN 4095 AND 8780
Условието Ytd_sales BETWEEN 4095 AND 8780 ограничава да се показват
само записите, на които полето Ytd_sales е между 4095 и 8780. Операторът за
сравнение с област е BETWEEN стойност1 AND стойност2. От резултата се вижда,
че Between действа като по-голямо или равно, а AND като по-малко или равно.
7. Задайте подреждане на резултата от конструкция в задача 4 най-напред по
цената в низходящ ред, а после по заглавието на книгата във възходящ ред.
USE Pubs
SELECT Title_id, Title, Price, Ytd_sales
FROM Titles
WHERE Price > 10
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев Клаузи, преобразуване, въвеждане и структура на функциите 3 от 4
ORDER BY Price DESC, Title
Книгите се подреждат по цена в обратен ред заради ключовата дума DESC (от
Descending – низходящ), а след това се подреждат по заглавия във възходящ ред, защото
когато не е указана ключова дума, се подразбира ASC (от Ascending – възходящ). Редът на
полетата указва първо по кое поле ще се извърши сортирането.
8. Групирайте данните в набора от резултати по полето Type, така че да се
върне средноаритметичната цена на типа книги за всички книги, които са с
цена по-голяма от $10. Резултатът да е сортиран по средноаритметична цена
в обратен ред.
USE Pubs
SELECT Type, AVG (Price) AS AvgPrice
FROM Titles
WHERE Price > 10
GROUP BY Type
ORDER BY AvgPrice DESC
В набора от резултати, който връща тази конструкция SELECT, редовете с еднаква
стойност за Type ще бъдат групирани заедно. Редовете, които не отговарят на условията в
клауза WHERE, ще бъдат елиминирани преди да се извърши някакъв вид групиране. За
всяка групировка ще бъде изчислена средноаритметичната стойност на цената, която ще се
появи под псевдонима AvgPrice.
Сега напишете сами SQL конструкция, която да връща вместо средноаритметичната
цена, максималната и минималната цена за типа.
9. За горния пример ограничете допълнително да се показват само записите, за
които средноаритметичната цена на типа книги е по-голяма от 18.
SELECT Type, AVG (Price) AS AvgPrice
FROM Titles
WHERE Price > 10
GROUP BY Type
HAVING AVG (Price)>18
ORDER BY AvgPrice DESC
Клауза HAVING се използва да филтрира редовете от групирания резултат.
Условието, което използва HAVING в случая, може да се провери едва след групиране, така
че то не може да бъде включено в клауза WHERE.
10. За предишния пример създайте таблица, която съдържа набора от резултати
USE Pubs
SELECT Type, AVG(Price) AS AvgPrice
INTO TypeAvgPrice
FROM Titles
WHERE Price > 10
GROUP BY Type
HAVING AVG (Price)>18
ORDER BY AvgPrice DESC
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев Клаузи, преобразуване, въвеждане и структура на функциите 4 от 4
Конструкцията SELECT ще създаде нова таблица, наречена TypeAvgPrice. Таблицата
ще съдържа колона Type и колона AvgPrice, в които ще се появят стойностите от набора от
резултати.
След изпълнението, в страница Messages на панел Results се появява съобщение,
което показва броя на редовете, върху които е повлияла съответната операция.
Можете да видите новосъздадената таблица и да прегледате свойствата и
съдържанието й през Enterprise Manager. Ако таблицата не се вижда, щракнете с десния
бутон върху Tables на съответната база данни, в случая pubs, и изберете Refresh –
опресняване.
11. Покажете чрез SQL конструкция съдържанието на таблица TypeAvgPrice
USE Pubs
SELECT * FROM TypeAvgPrice
В страница Grids на панел Results се появява съдържанието на таблица TypeAvgPrice.
12. Изтрийте чрез SQL конструкция таблица TypeAvgPrice
USE Pubs
DROP TABLE TypeAvgPrice
В страница Messages на панел Results се появява съобщение, че командата е била
изпълнена успешно. Проверете дали таблицата се вижда в Enterprise Manager. Ако е
необходимо, направете опресняване - Refresh.
13. Затворете SQL Query Analyzer.
В следващото практическо упражнение ще се запознаете по-подробно с
аритметичните, сравнителните и логическите оператори и с някои често използвани
функции, които дават възможност да се отправят сложни запитвания към БД чрез
конструкцията SELECT. Ще се научите също да извличате данни от повече от една таблица,
използвайки вътрешни и външни съединения.
ЛИТЕРАТУРА
1. Microsoft. MSCE Microsoft SQL Server 2000 Проектиране и реализация на бази данни
Training kit. С., Софтпрес, 2001.
2. SQL Server Books Online

More Related Content

Similar to 17 klauzi upraznenia

22a sazdavane na bd i tablici v sql server upraznenie
22a sazdavane na bd i tablici v sql server   upraznenie22a sazdavane na bd i tablici v sql server   upraznenie
22a sazdavane na bd i tablici v sql server upraznenieIvan Peev
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkciiIvan Peev
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroSvetlin Nakov
 
9. заявка с изчислителни полета
9. заявка с изчислителни полета9. заявка с изчислителни полета
9. заявка с изчислителни полетаdnaidenowa
 
РАБОТА С ОБЕКТА „ЗАЯВКА“ (2)
РАБОТА С ОБЕКТА „ЗАЯВКА“ (2)РАБОТА С ОБЕКТА „ЗАЯВКА“ (2)
РАБОТА С ОБЕКТА „ЗАЯВКА“ (2)RaynaITSTEP
 

Similar to 17 klauzi upraznenia (8)

B9 t9 db_my_sql
B9 t9 db_my_sqlB9 t9 db_my_sql
B9 t9 db_my_sql
 
B9 t9 db_my_sql
B9 t9 db_my_sqlB9 t9 db_my_sql
B9 t9 db_my_sql
 
22a sazdavane na bd i tablici v sql server upraznenie
22a sazdavane na bd i tablici v sql server   upraznenie22a sazdavane na bd i tablici v sql server   upraznenie
22a sazdavane na bd i tablici v sql server upraznenie
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkcii
 
DBT_3
DBT_3DBT_3
DBT_3
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - Intro
 
9. заявка с изчислителни полета
9. заявка с изчислителни полета9. заявка с изчислителни полета
9. заявка с изчислителни полета
 
РАБОТА С ОБЕКТА „ЗАЯВКА“ (2)
РАБОТА С ОБЕКТА „ЗАЯВКА“ (2)РАБОТА С ОБЕКТА „ЗАЯВКА“ (2)
РАБОТА С ОБЕКТА „ЗАЯВКА“ (2)
 

More from Ivan Peev

08 pravila za dostap
08 pravila za dostap08 pravila za dostap
08 pravila za dostapIvan Peev
 
06 pregled na sigurnostta v sql server
06 pregled na sigurnostta v sql server06 pregled na sigurnostta v sql server
06 pregled na sigurnostta v sql serverIvan Peev
 
01 vavedenie v sql server 2000
01 vavedenie v sql server 200001 vavedenie v sql server 2000
01 vavedenie v sql server 2000Ivan Peev
 
24 sazdavane na potrebiteli i zadavane na razreshenia
24 sazdavane na potrebiteli i zadavane na razreshenia24 sazdavane na potrebiteli i zadavane na razreshenia
24 sazdavane na potrebiteli i zadavane na razresheniaIvan Peev
 
Konspekt prilojen mrejovi-software-12kl
Konspekt prilojen mrejovi-software-12klKonspekt prilojen mrejovi-software-12kl
Konspekt prilojen mrejovi-software-12klIvan Peev
 
Block diagrame 1
Block diagrame 1Block diagrame 1
Block diagrame 1Ivan Peev
 

More from Ivan Peev (6)

08 pravila za dostap
08 pravila za dostap08 pravila za dostap
08 pravila za dostap
 
06 pregled na sigurnostta v sql server
06 pregled na sigurnostta v sql server06 pregled na sigurnostta v sql server
06 pregled na sigurnostta v sql server
 
01 vavedenie v sql server 2000
01 vavedenie v sql server 200001 vavedenie v sql server 2000
01 vavedenie v sql server 2000
 
24 sazdavane na potrebiteli i zadavane na razreshenia
24 sazdavane na potrebiteli i zadavane na razreshenia24 sazdavane na potrebiteli i zadavane na razreshenia
24 sazdavane na potrebiteli i zadavane na razreshenia
 
Konspekt prilojen mrejovi-software-12kl
Konspekt prilojen mrejovi-software-12klKonspekt prilojen mrejovi-software-12kl
Konspekt prilojen mrejovi-software-12kl
 
Block diagrame 1
Block diagrame 1Block diagrame 1
Block diagrame 1
 

17 klauzi upraznenia

  • 1. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев Клаузи, преобразуване, въвеждане и структура на функциите 1 от 4 Тема 17. Клаузи, преобразуване, въвеждане и структура на функциите Упражнение: Използване на конструкции SELECT за достъп до данните инж. Красимир Дойчев kdoychev@gmail.com Целта на настоящия урок е да затвърдите знанията си и придобиете умения за работа с конструкцията Select и инструмента Query Analyzer. В това упражнение ще използвате конструкции SELECT за извличане на данни от таблицата Titles – Заглавия на книги на база данни Pubs. Това е примерна база данни, съпътстваща Microsoft SQL Server, която моделира работата на фирма за книгоразпространение. Постепенно ще усложняваме конструкциите, като всяка конструкция SELECT след първата ще се базира на предишните конструкции, тъй като ще имате повече яснота за данните, които са включени в набора от резултати. Предварителни сведения Таблицата Titles съдържа следните полета (фиг. 1) Поле Описание Поле Описание Title_id идентификационен номер advance предплата title заглавие на книгата royalty търговска отстъпка type тип (за бизнес, кулинарна, компютърна и др.) ytd_sales брой продажби от началото на годината до момента pub_id идентификационен номер на издателство notes забележки price цена pubdate дата на издаване 1. Отворете SQL Query Analyzer и се свържете с вашия локален сървър.  от меню Start - група Microsoft SQL Server - Query Analyzer  от Enterprise Manager - меню Tools  команда isqlw от командния промпт 2. Извлечете всички данни от таблица Titles на база данни Pubs 1. В панел Editor от прозорец Query въведете следния код на Transact-SQL: Use Pubs SELECT * FROM Titles
  • 2. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев Клаузи, преобразуване, въвеждане и структура на функциите 2 от 4 С конструкцията Use Pubs определяте базата данни Pubs, съдържаща таблицата, която искате да разгледате. Чрез конструкция SELECT ... FROM извличате данни от таблица Titles, намираща се в база данни Pubs. Символът "звезда" ("*") в списъка за избор указва, че трябва да се извлекат данни от всички колони (полета) в таблицата. 2. Изпълнете конструкцията от менюто Query Execute, чрез клавиш F5 или бутон . Наборът от резултати се появява в страница Grids на панел Results. 3. Извлечете данните от полетата Title_id, Title, Price и Ytd_sales в таблица Titles USE Pubs SELECT Title_id, Title, Price, Ytd_sales FROM Titles 4. Задайте условие, така че наборът от резултати да показва само тези записи, чиято стойност в поле Price е по-голяма от $10 USE Pubs SELECT Title_id, Title, Price, Ytd_sales FROM Titles WHERE Price > 10 Ако работите с оригиналната БД, трябва да виждате в резултата само 12 записа. 5. Задайте условие, така че наборът от резултати да показва само тези книги, чиито заглавия започват с „The”. USE Pubs SELECT Title_id, Title, Price, Ytd_sales FROM Titles WHERE (title LIKE 'the%') Условието title LIKE 'the%' ограничава да се показват само записите подобни на шаблона 'the%'. Операторът за сравнение с шаблон е LIKE, а шаблонът е ограден в апострофи (клавишът с българско „Ч”). Използва се глобалният символ %, който замества всички символи след „the”. 6. Задайте условие, така че наборът от резултати да показва само тези книги, чиито продажби са между 4095 и 8780. USE Pubs SELECT Title_id, Title, Price, Ytd_sales FROM Titles WHERE Ytd_sales BETWEEN 4095 AND 8780 Условието Ytd_sales BETWEEN 4095 AND 8780 ограничава да се показват само записите, на които полето Ytd_sales е между 4095 и 8780. Операторът за сравнение с област е BETWEEN стойност1 AND стойност2. От резултата се вижда, че Between действа като по-голямо или равно, а AND като по-малко или равно. 7. Задайте подреждане на резултата от конструкция в задача 4 най-напред по цената в низходящ ред, а после по заглавието на книгата във възходящ ред. USE Pubs SELECT Title_id, Title, Price, Ytd_sales FROM Titles WHERE Price > 10
  • 3. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев Клаузи, преобразуване, въвеждане и структура на функциите 3 от 4 ORDER BY Price DESC, Title Книгите се подреждат по цена в обратен ред заради ключовата дума DESC (от Descending – низходящ), а след това се подреждат по заглавия във възходящ ред, защото когато не е указана ключова дума, се подразбира ASC (от Ascending – възходящ). Редът на полетата указва първо по кое поле ще се извърши сортирането. 8. Групирайте данните в набора от резултати по полето Type, така че да се върне средноаритметичната цена на типа книги за всички книги, които са с цена по-голяма от $10. Резултатът да е сортиран по средноаритметична цена в обратен ред. USE Pubs SELECT Type, AVG (Price) AS AvgPrice FROM Titles WHERE Price > 10 GROUP BY Type ORDER BY AvgPrice DESC В набора от резултати, който връща тази конструкция SELECT, редовете с еднаква стойност за Type ще бъдат групирани заедно. Редовете, които не отговарят на условията в клауза WHERE, ще бъдат елиминирани преди да се извърши някакъв вид групиране. За всяка групировка ще бъде изчислена средноаритметичната стойност на цената, която ще се появи под псевдонима AvgPrice. Сега напишете сами SQL конструкция, която да връща вместо средноаритметичната цена, максималната и минималната цена за типа. 9. За горния пример ограничете допълнително да се показват само записите, за които средноаритметичната цена на типа книги е по-голяма от 18. SELECT Type, AVG (Price) AS AvgPrice FROM Titles WHERE Price > 10 GROUP BY Type HAVING AVG (Price)>18 ORDER BY AvgPrice DESC Клауза HAVING се използва да филтрира редовете от групирания резултат. Условието, което използва HAVING в случая, може да се провери едва след групиране, така че то не може да бъде включено в клауза WHERE. 10. За предишния пример създайте таблица, която съдържа набора от резултати USE Pubs SELECT Type, AVG(Price) AS AvgPrice INTO TypeAvgPrice FROM Titles WHERE Price > 10 GROUP BY Type HAVING AVG (Price)>18 ORDER BY AvgPrice DESC
  • 4. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев Клаузи, преобразуване, въвеждане и структура на функциите 4 от 4 Конструкцията SELECT ще създаде нова таблица, наречена TypeAvgPrice. Таблицата ще съдържа колона Type и колона AvgPrice, в които ще се появят стойностите от набора от резултати. След изпълнението, в страница Messages на панел Results се появява съобщение, което показва броя на редовете, върху които е повлияла съответната операция. Можете да видите новосъздадената таблица и да прегледате свойствата и съдържанието й през Enterprise Manager. Ако таблицата не се вижда, щракнете с десния бутон върху Tables на съответната база данни, в случая pubs, и изберете Refresh – опресняване. 11. Покажете чрез SQL конструкция съдържанието на таблица TypeAvgPrice USE Pubs SELECT * FROM TypeAvgPrice В страница Grids на панел Results се появява съдържанието на таблица TypeAvgPrice. 12. Изтрийте чрез SQL конструкция таблица TypeAvgPrice USE Pubs DROP TABLE TypeAvgPrice В страница Messages на панел Results се появява съобщение, че командата е била изпълнена успешно. Проверете дали таблицата се вижда в Enterprise Manager. Ако е необходимо, направете опресняване - Refresh. 13. Затворете SQL Query Analyzer. В следващото практическо упражнение ще се запознаете по-подробно с аритметичните, сравнителните и логическите оператори и с някои често използвани функции, които дават възможност да се отправят сложни запитвания към БД чрез конструкцията SELECT. Ще се научите също да извличате данни от повече от една таблица, използвайки вътрешни и външни съединения. ЛИТЕРАТУРА 1. Microsoft. MSCE Microsoft SQL Server 2000 Проектиране и реализация на бази данни Training kit. С., Софтпрес, 2001. 2. SQL Server Books Online