SlideShare a Scribd company logo
1 of 5
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 1 от 5
Тема 23. Създаване, модифициране и изтриване на представяния (изгледи) чрез
конструкции на Transact SQL
Практическо упражнение
инж. Красимир Дойчев kdoychev@gmail.com
Целта на настоящия урок е да затвърдите знанията си и получите умения за
използване SQL конструкцията Create View за създаване на изгледи (представяния),
конструкцията Alter View за модифициране на изгледи и конструкцията Drop View за
премахване (изтриване) на изгледи. Чрез тези конструкции ще затвърдите знанията си и за
конструкцията Select.
В това упражнение ще използвате примерната база данни Pubs, съпътстваща Microsoft
SQL Server, която моделира работата на фирма за книгоразпространение.
Част от схемата на базата данни Pubs, включваща таблиците, които ще се използват в
упражнението, е представена на фиг.1.
фиг. 1 Част от схемата на база данни „Pubs”
1. Отворете SQL Query Analyzer и се свържете с вашия локален сървър.
 от меню Start - група Microsoft SQL Server - Query Analyzer
 от Enterprise Manager - меню Tools
 команда isqlw от командния промпт
2. Създаване на изглед ViewAllTitles, който представя всички данни от таблица Titles.
В панел Editor на прозорец Query въведете следния код на Transact-SQL:
use Pubs
GO
CREATE VIEW dbo.ViewAllTitles
AS
SELECT * FROM Titles
GO
С конструкцията Use Pubs определяте базата данни Pubs, съдържаща таблиците,
върху които се базира изгледа.
В базата данни Pubs се създава изглед ViewAllTitles, който съдържа всички колони и
редове на таблицата Titles. Символът "звезда" ("*") в списъка за избор указва, че трябва да се
извлекат данни от всички колони (полета) в таблицата.
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 2 от 5
Обърнете внимание на командата GO преди израза CREATE VIEW. Тя служи за
обозначаване на края на един пакет. Пакетът е група от една или повече конструкции на
Transact SQL, които се изпращат наведнъж от едно приложение към SQL Server за
изпълнение. SQL Server компилира конструкциите от пакета в отделна изпълнима единица,
наречена план за изпълнение. След това конструкциите от плана за изпълнение се
изпълняват една по една. В случая използването на GO е задължително поради изискването
CREATE VIEW да бъде единствената конструкция в един пакет. Командите GO са
необходими, за да изолират конструкцията CREATE VIEW от конструкциите USE и SELECT
около нея.
Можете да видите изгледа в прозореца Object Browser, който се показва в левия край
на Query Analyzer, когато се избере команда Tools> Object Browser>Show/Hide или чрез
клавиш F8. Ако съдържанието на прозореца не е актуализирано, изпълнете команда Refresh
или натиснете клавиш F5.
Забележка: Когато веднъж е създаден изглед или таблица, ако се опитате да ги
създадете отново, ще получите съобщение за грешка. В такъв случай първо трябва да
изтриете изгледа или таблицата и след това да ги създавате.
3. Изтриване на изгледи
use Pubs
GO
DROP VIEW ViewAllTitles
Изтрива изгледа ViewAllTitles.
4. Показване на резултатите от изгледа ViewAllTitles.
В панел Editor на прозорец Query въведете следния код на Transact-SQL:
use Pubs
GO
CREATE VIEW dbo.ViewAllTitles
AS
SELECT * FROM Titles
GO
SELECT * FROM ViewAllTitles
GO
Създава се изглед ViewAllTitles и наборът от резултати се появява в страница Grids на
панел Results.
5. Извлечете данните от полетата Title_id, Title, Price и Ytd_sales в таблица Titles
USE Pubs
GO
CREATE VIEW dbo.ViewTitles1
AS
SELECT Title_id, Title, Price, Ytd_sales
FROM Titles
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 3 от 5
6. Задайте условие, така че наборът от резултати да показва само тези записи, чиято
стойност в поле Price е по-голяма от $10
USE Pubs
GO
CREATE VIEW dbo.ViewTitles2
AS
SELECT Title_id, Title, Price, Ytd_sales
FROM Titles
WHERE Price > 10
Ако работите с оригиналната БД, трябва да виждате в резултата само 12 записа.
7. Модифицирайте изгледа чрез ALTER, като зададете условие, така че наборът от
резултати да показва само тези записи, чиято стойност в поле Price е по-голяма от
$20
USE Pubs
GO
ALTER VIEW dbo.ViewTitles2
AS
SELECT Title_id, Title, Price, Ytd_sales
FROM Titles
WHERE Price > 20
Колко записа виждате сега
8. Задайте условие, така че наборът от резултати да показва само тези книги, чиито
заглавия започват с „The”.
USE Pubs
GO
CREATE VIEW dbo.ViewTitles3
AS
SELECT Title_id, Title, Price, Ytd_sales
FROM Titles
WHERE (title LIKE 'the%')
Условието title LIKE 'the%' ограничава да се показват само записите подобни
на шаблона 'the%'. Операторът за сравнение с шаблон е LIKE, а шаблонът е ограден в
апострофи (клавишът с българско „Ч”). Използва се глобалният символ %, който
замества всички символи след „the”.
9. Задайте условие, така че наборът от резултати да показва само тези книги, чиито
продажби са между 4095 и 8780.
USE Pubs
GO
CREATE VIEW dbo.ViewTitles4
AS
SELECT Title_id, Title, Price, Ytd_sales
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 4 от 5
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 като по-малко или равно.
10. Задайте подреждане на резултата от конструкция в задача 4 най-напред по цената в
низходящ ред, а после по заглавието на книгата във възходящ ред.
USE Pubs
GO
CREATE VIEW dbo.ViewTitles5
AS
SELECT
Top 50
Title_id, Title, Price, Ytd_sales
FROM Titles
WHERE Price > 10
ORDER BY Price DESC, Title
Книгите се подреждат по цена в обратен ред заради ключовата дума DESC (от
Descending – низходящ), а след това се подреждат по заглавия във възходящ ред, защото
когато не е указана ключова дума, се подразбира ASC (от Ascending – възходящ). Редът на
полетата указва първо по кое поле ще се извърши сортирането. Когато при създаване на
изглед се използва подреждане на записите чрез ORDER BY, задължително е преди списъка
с полета след Select да се използва ключовата дума Top. В противен случай се получава
съобщение за грешка. Top 50 означава, че се връщат първите 50 реда.
11. Групирайте данните в набора от резултати по полето Type, така че да се върне
средноаритметичната цена на типа книги за всички книги, които са с цена по-
голяма от $10. Резултатът да е сортиран по средноаритметична цена в обратен ред.
USE Pubs
GO
CREATE VIEW dbo.ViewTitles6
AS
SELECT
Top 100 Percent
Type, AVG (Price) AS AvgPrice
FROM Titles
WHERE Price > 10
GROUP BY Type
ORDER BY AvgPrice DESC
В набора от резултати, който връща тази конструкция SELECT, редовете с еднаква
стойност за Type ще бъдат групирани заедно. Редовете, които не отговарят на условията в
клауза WHERE, ще бъдат елиминирани преди да се извърши някакъв вид групиране. За
Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич
www.pglomonosov.org
Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 5 от 5
всяка групировка ще бъде изчислена средноаритметичната стойност на цената, която ще се
появи под псевдонима AvgPrice. Top 100 Percent означава, че се връщат първите 100% реда
от набора резултати, т.е. всички редове.
Сега напишете сами SQL конструкция, която да връща вместо средноаритметичната
цена, максималната и минималната цена за типа. Вместо Create View използвайте Alter View.
12. За горния пример ограничете допълнително да се показват само записите, за които
средноаритметичната цена на типа книги е по-голяма от 18. Използвайте
модифициране с ALTER VIEW
USE Pubs
GO
ALTER VIEW dbo.ViewTitles6
AS
SELECT
Top 100 Percent
Type, AVG (Price) AS AvgPrice
FROM Titles
WHERE Price > 10
GROUP BY Type
HAVING AVG (Price)>18
ORDER BY AvgPrice DESC
Клауза HAVING се използва да филтрира редовете от групирания резултат.
Условието, което използва HAVING в случая, може да се провери едва след групиране, така
че то не може да бъде включено в клауза WHERE.
13. Използване на вътрешно съединение за извличане на данни от таблица Publishers и
таблица Titles в база данни Pubs:
USE Pubs
GO
CREATE VIEW dbo.ViewTitles7
AS
SELECT
Top 100 Percent
t.Title, p.Pub_name
FROM Publishers AS p INNER JOIN Titles AS t
ON p.Pub_id = t.Pub_id
ORDER BY Title ASC
ЛИТЕРАТУРА
1. Microsoft. MSCE Microsoft SQL Server 2000 Проектиране и реализация на бази данни
Training kit. С., Софтпрес, 2001.
2. SQL Server Books Online

More Related Content

Similar to 23a sazdavane na izgledii v sql server upraznenie

21 manipulirane na danni v sql server
21 manipulirane na danni v sql server21 manipulirane na danni v sql server
21 manipulirane na danni v sql serverIvan Peev
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroSvetlin Nakov
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkciiIvan Peev
 
19 saedinenia na tablici
19 saedinenia na tablici19 saedinenia na tablici
19 saedinenia na tabliciIvan Peev
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BGsvilen.ivanov
 
WindowsAzure&NoSQL@SQLSaturday#152
WindowsAzure&NoSQL@SQLSaturday#152WindowsAzure&NoSQL@SQLSaturday#152
WindowsAzure&NoSQL@SQLSaturday#152Miroslav Lessev
 
Eclipse Modeling Framework@TUES
Eclipse Modeling Framework@TUESEclipse Modeling Framework@TUES
Eclipse Modeling Framework@TUESKiril Mitov
 
Java Script
Java ScriptJava Script
Java ScriptArtist
 

Similar to 23a sazdavane na izgledii v sql server upraznenie (11)

21 manipulirane na danni v sql server
21 manipulirane na danni v sql server21 manipulirane na danni v sql server
21 manipulirane na danni v sql server
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - Intro
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkcii
 
19 saedinenia na tablici
19 saedinenia na tablici19 saedinenia na tablici
19 saedinenia na tablici
 
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
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BG
 
WindowsAzure&NoSQL@SQLSaturday#152
WindowsAzure&NoSQL@SQLSaturday#152WindowsAzure&NoSQL@SQLSaturday#152
WindowsAzure&NoSQL@SQLSaturday#152
 
Eclipse Modeling Framework@TUES
Eclipse Modeling Framework@TUESEclipse Modeling Framework@TUES
Eclipse Modeling Framework@TUES
 
DBT_3
DBT_3DBT_3
DBT_3
 
Java Script
Java ScriptJava Script
Java Script
 

23a sazdavane na izgledii v sql server upraznenie

  • 1. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 1 от 5 Тема 23. Създаване, модифициране и изтриване на представяния (изгледи) чрез конструкции на Transact SQL Практическо упражнение инж. Красимир Дойчев kdoychev@gmail.com Целта на настоящия урок е да затвърдите знанията си и получите умения за използване SQL конструкцията Create View за създаване на изгледи (представяния), конструкцията Alter View за модифициране на изгледи и конструкцията Drop View за премахване (изтриване) на изгледи. Чрез тези конструкции ще затвърдите знанията си и за конструкцията Select. В това упражнение ще използвате примерната база данни Pubs, съпътстваща Microsoft SQL Server, която моделира работата на фирма за книгоразпространение. Част от схемата на базата данни Pubs, включваща таблиците, които ще се използват в упражнението, е представена на фиг.1. фиг. 1 Част от схемата на база данни „Pubs” 1. Отворете SQL Query Analyzer и се свържете с вашия локален сървър.  от меню Start - група Microsoft SQL Server - Query Analyzer  от Enterprise Manager - меню Tools  команда isqlw от командния промпт 2. Създаване на изглед ViewAllTitles, който представя всички данни от таблица Titles. В панел Editor на прозорец Query въведете следния код на Transact-SQL: use Pubs GO CREATE VIEW dbo.ViewAllTitles AS SELECT * FROM Titles GO С конструкцията Use Pubs определяте базата данни Pubs, съдържаща таблиците, върху които се базира изгледа. В базата данни Pubs се създава изглед ViewAllTitles, който съдържа всички колони и редове на таблицата Titles. Символът "звезда" ("*") в списъка за избор указва, че трябва да се извлекат данни от всички колони (полета) в таблицата.
  • 2. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 2 от 5 Обърнете внимание на командата GO преди израза CREATE VIEW. Тя служи за обозначаване на края на един пакет. Пакетът е група от една или повече конструкции на Transact SQL, които се изпращат наведнъж от едно приложение към SQL Server за изпълнение. SQL Server компилира конструкциите от пакета в отделна изпълнима единица, наречена план за изпълнение. След това конструкциите от плана за изпълнение се изпълняват една по една. В случая използването на GO е задължително поради изискването CREATE VIEW да бъде единствената конструкция в един пакет. Командите GO са необходими, за да изолират конструкцията CREATE VIEW от конструкциите USE и SELECT около нея. Можете да видите изгледа в прозореца Object Browser, който се показва в левия край на Query Analyzer, когато се избере команда Tools> Object Browser>Show/Hide или чрез клавиш F8. Ако съдържанието на прозореца не е актуализирано, изпълнете команда Refresh или натиснете клавиш F5. Забележка: Когато веднъж е създаден изглед или таблица, ако се опитате да ги създадете отново, ще получите съобщение за грешка. В такъв случай първо трябва да изтриете изгледа или таблицата и след това да ги създавате. 3. Изтриване на изгледи use Pubs GO DROP VIEW ViewAllTitles Изтрива изгледа ViewAllTitles. 4. Показване на резултатите от изгледа ViewAllTitles. В панел Editor на прозорец Query въведете следния код на Transact-SQL: use Pubs GO CREATE VIEW dbo.ViewAllTitles AS SELECT * FROM Titles GO SELECT * FROM ViewAllTitles GO Създава се изглед ViewAllTitles и наборът от резултати се появява в страница Grids на панел Results. 5. Извлечете данните от полетата Title_id, Title, Price и Ytd_sales в таблица Titles USE Pubs GO CREATE VIEW dbo.ViewTitles1 AS SELECT Title_id, Title, Price, Ytd_sales FROM Titles
  • 3. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 3 от 5 6. Задайте условие, така че наборът от резултати да показва само тези записи, чиято стойност в поле Price е по-голяма от $10 USE Pubs GO CREATE VIEW dbo.ViewTitles2 AS SELECT Title_id, Title, Price, Ytd_sales FROM Titles WHERE Price > 10 Ако работите с оригиналната БД, трябва да виждате в резултата само 12 записа. 7. Модифицирайте изгледа чрез ALTER, като зададете условие, така че наборът от резултати да показва само тези записи, чиято стойност в поле Price е по-голяма от $20 USE Pubs GO ALTER VIEW dbo.ViewTitles2 AS SELECT Title_id, Title, Price, Ytd_sales FROM Titles WHERE Price > 20 Колко записа виждате сега 8. Задайте условие, така че наборът от резултати да показва само тези книги, чиито заглавия започват с „The”. USE Pubs GO CREATE VIEW dbo.ViewTitles3 AS SELECT Title_id, Title, Price, Ytd_sales FROM Titles WHERE (title LIKE 'the%') Условието title LIKE 'the%' ограничава да се показват само записите подобни на шаблона 'the%'. Операторът за сравнение с шаблон е LIKE, а шаблонът е ограден в апострофи (клавишът с българско „Ч”). Използва се глобалният символ %, който замества всички символи след „the”. 9. Задайте условие, така че наборът от резултати да показва само тези книги, чиито продажби са между 4095 и 8780. USE Pubs GO CREATE VIEW dbo.ViewTitles4 AS SELECT Title_id, Title, Price, Ytd_sales
  • 4. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 4 от 5 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 като по-малко или равно. 10. Задайте подреждане на резултата от конструкция в задача 4 най-напред по цената в низходящ ред, а после по заглавието на книгата във възходящ ред. USE Pubs GO CREATE VIEW dbo.ViewTitles5 AS SELECT Top 50 Title_id, Title, Price, Ytd_sales FROM Titles WHERE Price > 10 ORDER BY Price DESC, Title Книгите се подреждат по цена в обратен ред заради ключовата дума DESC (от Descending – низходящ), а след това се подреждат по заглавия във възходящ ред, защото когато не е указана ключова дума, се подразбира ASC (от Ascending – възходящ). Редът на полетата указва първо по кое поле ще се извърши сортирането. Когато при създаване на изглед се използва подреждане на записите чрез ORDER BY, задължително е преди списъка с полета след Select да се използва ключовата дума Top. В противен случай се получава съобщение за грешка. Top 50 означава, че се връщат първите 50 реда. 11. Групирайте данните в набора от резултати по полето Type, така че да се върне средноаритметичната цена на типа книги за всички книги, които са с цена по- голяма от $10. Резултатът да е сортиран по средноаритметична цена в обратен ред. USE Pubs GO CREATE VIEW dbo.ViewTitles6 AS SELECT Top 100 Percent Type, AVG (Price) AS AvgPrice FROM Titles WHERE Price > 10 GROUP BY Type ORDER BY AvgPrice DESC В набора от резултати, който връща тази конструкция SELECT, редовете с еднаква стойност за Type ще бъдат групирани заедно. Редовете, които не отговарят на условията в клауза WHERE, ще бъдат елиминирани преди да се извърши някакъв вид групиране. За
  • 5. Професионална гимназия по механотехника и електротехника "М. В. Ломоносов" - гр. Добрич www.pglomonosov.org Красимир Дойчев SQL Server Създаване на базиданни и таблици чрез конструкцията Create 5 от 5 всяка групировка ще бъде изчислена средноаритметичната стойност на цената, която ще се появи под псевдонима AvgPrice. Top 100 Percent означава, че се връщат първите 100% реда от набора резултати, т.е. всички редове. Сега напишете сами SQL конструкция, която да връща вместо средноаритметичната цена, максималната и минималната цена за типа. Вместо Create View използвайте Alter View. 12. За горния пример ограничете допълнително да се показват само записите, за които средноаритметичната цена на типа книги е по-голяма от 18. Използвайте модифициране с ALTER VIEW USE Pubs GO ALTER VIEW dbo.ViewTitles6 AS SELECT Top 100 Percent Type, AVG (Price) AS AvgPrice FROM Titles WHERE Price > 10 GROUP BY Type HAVING AVG (Price)>18 ORDER BY AvgPrice DESC Клауза HAVING се използва да филтрира редовете от групирания резултат. Условието, което използва HAVING в случая, може да се провери едва след групиране, така че то не може да бъде включено в клауза WHERE. 13. Използване на вътрешно съединение за извличане на данни от таблица Publishers и таблица Titles в база данни Pubs: USE Pubs GO CREATE VIEW dbo.ViewTitles7 AS SELECT Top 100 Percent t.Title, p.Pub_name FROM Publishers AS p INNER JOIN Titles AS t ON p.Pub_id = t.Pub_id ORDER BY Title ASC ЛИТЕРАТУРА 1. Microsoft. MSCE Microsoft SQL Server 2000 Проектиране и реализация на бази данни Training kit. С., Софтпрес, 2001. 2. SQL Server Books Online