Лабораторная работа: Знакомства с MS SQL Server

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Напишите запрос, который выводит суммарный балл учеников по школам и по пред- метам, и промежуточные итоги. В итоговых строках NULL значения заменить на соответству- ющий текст в зависимости от группировки.

Напишите запрос, который выводит максимальный балл учеников по школам и по предметам. В итоговых строках NULL значения заменить на соответствующий текст в зави- симости от уровней группировки.

Напишите запрос, который выводит средний балл учеников по школам в столбцы.

Напишите запрос, который выводит средний балл учеников по школам в столбцы и по предметам в строки.

Напишите запрос, который выводит названия предметов, фамилии учеников и школы в один столбец.

Лабораторная работа № 19

Динамический SQL, XML и JSON

Цель работы

Изучить использование динамического SQL.

Изучить вывод данных в формате XML.

Изучить вывод данных в формате JSON.

Теоретическая часть

В интерактивных приложениях часто состав SQL-запросов заранее не известен и может изменяться в зависимости от условий.

Для решения таких ситуаций используется динамический SQL. Запросы формируются в виде текстовых строк непосредственно во время работы программы. Выполнение динамиче- ского SQL медленнее, чем статического.

Для выполнения динамического SQL используется команда EXEC | EXECUTE. Упро- щенный синтаксис имеет следующий вид:

EXEC | EXECUTE (<строка динамического SQL>)

Результат выполнения запроса можно получать в формате XML. Для этого в запросе необходимо указать предложение FOR XML.

В предложении FOR XML можно указать один из следующих режимов:

RAW - в этом режиме создается одиночный элемент <row> для каждой строки набора строк, возвращенного инструкцией SELECT. XML-иерархию можно создать с помощью напи- сания вложенных запросов FOR XML.

AUTO - в этом режиме вложенность XML создается эвристически, в зависимости от метода определения инструкции SELECT.

EXPLICIT - этот режим предоставляет больше возможностей по управлению формой XML-структуры. В XML-структуре могут быть использованы смешанные атрибуты и эле- менты. Однако написание запросов в режиме EXPLICIT может быть очень обременительным. PATH - этот режим совместно с вложенным запросом FOR XML обеспечивает гиб-

кость режима EXPLICIT более простым образом.

Эти режимы на самом деле работают только при выполнении запросов, для которых они установлены. Они не влияют на результаты любых последующих запросов.

Результат выполнения запроса можно получать в формате JSON. Для этого в запросе необходимо указать предложение FOR JSON. Предложение FOR JSON упрощает клиентские приложения, делегируя форматирование выходных данных JSON из приложения в SQL Server.

В предложении FOR XML можно указать один из следующих режимов:

PATH - этот режим используется для того чтобы сохранить полный контроль над форматом выходных данных JSON. Можно создавать объекты-оболочки и вкладывать сложные свойства друг в друга.

AUTO - этот режим используется для того чтобы отформатировать выходные данные автоматически на основе структуры инструкции SELECT.

Практическая часть

Пример 1: Создайте и запустите динамический SQL-запрос, выбирающий все данные из заданной таблицы:

DECLARE @DSQL VARCHAR(100) DECLARE @TN VARCHAR(50)

SET @TN = 'Ученики'

SET @DSQL = 'SELECT * FROM ' + @TN EXECUTE (@DSQL)

Пример 2: Создайте и запустите динамический SQL-запрос, выбирающий всех учени- ков из таблицы «Ученики», вторая буква фамилии которых расположена в заданном диапа- зоне:

DECLARE @L1 CHAR(1) DECLARE @L2 CHAR(1)

SET @L1 = 'а' SET @L2 = 'д'

EXECUTE ('SELECT * FROM Ученики WHERE Фамилия LIKE ''_[' + @L1 + '-' + @L2+ ']%''')

Пример 3: Создайте временную таблицу #Temp и добавить в нее название пяти таблиц из базы данных «Учебная». Создайте курсор, который, построчно читая таблицу #Temp, вы- бирает из каждой таблицы все данные:

CREATE TABLE #TEMP (

TABLENAME VARCHAR(50)

)

INSERT INTO

#TEMP

VALUES

('Дисциплина'),

('Заявка'),

('Инженер'),

('Кафедра'),

('Сотрудник')

DECLARE TC CURSOR FOR SELECT TABLENAME FROM #TEMP

OPEN TC

DECLARE @TN VARCHAR(50)

FETCH FROM TC INTO @TN WHILE @@FETCH_STATUS = 0 BEGIN

EXECUTE ('SELECT * FROM ' + @TN) FETCH FROM TC INTO @TN

END

CLOSE TC DEALLOCATE TC

DROP TABLE #TEMP

XML:

Пример 4: Выберите данные из таблицы «Ученики» и экспортируйте в RAW формате

SELECT

ID

,Фамилия

,Предмет

,Школа

,Баллы

FROM

Ученики

FOR XML RAW

XML:

Пример 5: Выберите данные из таблицы «Страны» и экспортируйте в PATH формате

SELECT

Название

,Столица

FROM

,Площадь

,Население

,Континент

Страны

FOR XML PATH

JSON:

Пример 6: Выберите данные из таблицы «Ученики» и экспортируйте в PATH формате

SELECT

ID

,Фамилия

,Предмет

,Школа

,Баллы

FROM

Ученики

FOR JSON PATH

Задание

Создайте и запустите динамический SQL-запрос, выбирающий первые N строк из заданной таблицы.

Создайте и запустите динамический SQL-запрос, выбирающий все страны из таб- лицы «Страны», последняя буква названия которых расположена в заданном диапазоне.

Создайте временную таблицу #Temp и добавьте к ней название столбцов таблицы

«Страны». Создайте курсор, который, построчно читая таблицу #Temp, выбирает каждый раз соответствующий столбец из таблицы «Страны».

Создайте процедуру, которая принимает как параметр список столбцов, название таблицы и выбирает заданные столбцы из заданной таблицы.

Создайте процедуру, принимающую как параметр список столбцов, название таб- лицы, название проверяемого столбца, знак сравнения, значение проверки и выбирающую за- данные столбцы из заданной таблицы в заданных условиях.

Выберите список европейских стран из таблицы «Страны» и экспортируйте в RAW формате XML.

Выберите список стран с населением больше 100 млн. чел. из таблицы «Страны» и экспортируйте в PATH формате XML.

Выберите список учеников из школы «Лицей» из таблицы «Ученики» и экспорти- руйте в PATH формате JSON

Лабораторная работа 15

Пространственные данные

Цель работы

Изучить пространственные данные.

Изучить тип данных GEOMETRY.

Изучить тип данных GEOGRAPHY.

Теоретическая часть

Пространственные данные представляют сведения о физическом расположении и форме геометрических объектов. Этими объектами могут быть точки расположения или более сложные объекты, такие как страны, дороги или озера.

SQL Server поддерживает два пространственных типа данных: GEOMETRY и GEOGRAPHY.

Пространственный тип данных GEOMETRY представляет данные в евклидовой (плос- кой) системе координат.

Пространственный тип данных GEOGRAPHY представляет данные в системе коорди- нат для сферической Земли.

Типы данных GEOMETRY и GEOGRAPHY поддерживают шестнадцать объектов пространственных данных или типов экземпляров. Однако только одиннадцать из этих типов экземпляров являются материализуемыми. Такие экземпляры можно создавать в базе данных и работать с ними.

Часто используемые объекты:

POINT(X Y) - для геометрических типов данных представляет собой единое место, где x и y представляют координаты создаваемого экземпляра. Для географических типов данных представляет единичное расположение, где X представляет широту, а Y - долготу. Значения широты и долготы измеряются в градусах. Значения широты находятся в интервале [-90, 90]. Значения долготы находятся в интервале [-180, 180].

LINESTRING(X1 Y1, X2 Y2[, Xn Yn]) - является одномерным объектом, представляющим последовательность точек и соединяющих их линейных сегментов.

CIRCULARSTRING(X1 Y1, X2 Y2, X3 Y3 [, Xn Yn]) - коллекция, состоящая из нуля или большего количества непрерывных круговых сегментов дуги. Сегмент дуги - это сегмент кривой, определяемый тремя точками на двумерной плоскости; первая точка не может совпадать с третьей. Если все три точки сегмента дуги лежат на одной прямой, сегмент дуги считается линейным сегментом.

POLYGON(X1 Y1, X2 Y2, X3 Y3 [, Xn Yn], X1 Y1) - представляет собой двухмерную поверхность, хранимую в виде последовательности точек, содержащую не менее трех уникальных точек, первая и последняя точки должны совпадать.

Практическая часть

Пример 1: Создайте временную таблицу, которая имеет один столбец типа GEOME- TRY. Добавьте в таблицу пространственный объект LINESTRING с координатами (1 1, 3 3, 2

4, 2 0, 1 1). Создайте SQL-запрос, выбирающий все данные из заданной таблицы:

CREATE TABLE #ST (

D GEOMETRY

)

INSERT

#ST VALUES

('LINESTRING(1 1, 3 3, 2 4, 2 0, 1 1)')

SELECT

D

FROM

#ST

DROP TABLE #ST

Пример 2: Создайте временную таблицу, которая имеет один столбец типа GEOMETRY. Добавьте в таблицу пространственный объект POLYGON с координатами (-3 7, 10 24, 30 16, 13 18, 4 0, 14 -6, 6 -13, 0 -4, -14 -13, -22 -39, -20 -7, -7 3, -11 7, -12 9, -11 10, -9 10,

-3 7). Создайте SQL-запрос, выбирающий все данные из заданной таблицы:

CREATE TABLE #ST (

D GEOMETRY

)

INSERT

#ST VALUES

('POLYGON((-3 7, 10 24, 30 16,

13 18, 4 0, 14 -6,

6 -13, 0 -4, -14 -13,

-22 -39, -20 -7, -7 3,

-11 7, -12 9, -11 10,

-9 10, -3 7))')

SELECT

D

FROM

#ST

DROP TABLE #ST

Задание

Создайте временную таблицу, состоящую из двух полей типа geometry и varchar(20). Заполните таблицу заданными полигонами и их названиями. Выберите все поля из таблицы.

Номер участка

Долгота

Широта

Участок №6

Точка №1

21369,11

21603,40

Точка №2

21584,64

21162,81

Точка №3

21587,40

21027,71

Точка №4

20727,78

21009,83

Точка №5

20720,45

21369,76

Точка №6

20898,96

21373,41

Участок №3

Точка №1

20728,49

20975,13

Точка №2

20740,38

20393,97

Точка №3

21107,99

20401,49

Точка №4

21103,40

20625,44

Точка №5

21160,39

20626,63

Точка №6

21153,08

20983,82

Участок №4

Точка №1

21588,12

20992,79

Точка №2

21597,74

20441,54

Точка №3

21269,66

20435,81

Точка №4

21266,28

20629,74

Точка №5

21209,25

20628,75

Точка №6

21203,01

20985,98

Участок №7

Точка №1

22775,32

21461,21

Точка №2

23234,54

21075,88

Точка №3

22977,79

20610,45

Точка №4

22637,02

20798,44

Точка №5

22549,38

21051,51

Номер участка

Долгота

Широта

Участок №8

Точка №1

22624,91

19970,80

Точка №2

22854,97

20387,52

Точка №3

22398,62

20639,24

Точка №4

22168,68

20222,45

Участок №11

Точка №1

23621,55

20255,27

Точка №2

23855,79

20314,44

Точка №3

23827,55

20426,38

Точка №4

23946,32

20641,48

Точка №5

23569,81

20849,18

Точка №6

23524,91

20850,59

Точка №7

23295,70

20435,08

Участок №12

Точка №1

23596,67

19981,86

Точка №2

23366,76

19565,04

Точка №3

22944,29

19798,09

Точка №4

23174,24

20214,89

Участок №13

Точка №1

23974,68

20627,60

Точка №2

23863,62

20422,64

Точка №3

23928,00

20159,98

Точка №4

23792,27

19913,93

Точка №5

24068,07

19761,76

Точка №6

24412,47

20386,08

Участок №14

Точка №1

24045,03

19732,76

Точка №2

23622,57

19965,83

Точка №3

23392,62

19549,03

Точка №4

23815,10

19315,97

Участок №5 зап

Точка №1

21638,11

20993,74

Точка №2

21649,39

20442,59

Точка №3

21793,84

20445,55

Точка №4

22017,66

20851,20

Точка №5

21754,09

20996,13

Участок №5 вост

Точка №1

22348,79

20662,78

Точка №2

22059,86

20822,21

Точка №3

21854,05

20449,22

Точка №4

21856,16

20390,95

Номер участка

Долгота

Широта

Точка №5

22118,83

20246,02

Участок №7 А

Точка №1

23231,72

20470,38

Точка №2

23004,06

20595,96

Точка №3

23257,96

21056,22

Точка №4

23460,94

20885,90

Участок № б/н

Точка №1

22899,36

20403,01

Точка №2

23127,02

20277,41

Точка №3

23217,83

20442,02

Точка №4

22990,17

20567,60

Участок № б/н

Точка №1

22869,16

20419,68

Точка №2

22536,51

20603,15

Точка №3

22627,15

20767,87

Точка №4

22959,86

20584,33

Участок № б/н

Точка №1

22407,55

20676,04

Точка №2

22559,71

20927,48

Точка №3

22608,36

20789,50

Точка №4

22513,51

20617,58

Участок №8

Точка №1

22651,93

19957,66

Точка №2

22881,85

20374,45

Точка №3

23109,51

20248,85

Точка №4

22879,56

19832,05

Участок № б/н

Точка №1

23618,51

20009,77

Точка №2

23650,78

20068,26

Точка №3

23610,13

20229,12

Точка №4

23284,66

20408,66

Точка №5

23193,85

20244,05

Участок № б/н

Точка №1

23635,13

20229,91

Точка №2

23860,44

20286,85

Точка №3

23891,24

20165,00

Точка №4

23761,22

19929,80

Точка №5

23638,63

19996,93

Точка №6

23676,61

20065,78

Озеро

Точка №1

21637,28

21029,09

Номер участка

Долгота

Широта

Точка №2

21634,42

21174,83

Точка №3

21414,03

21625,36

Точка №4

22150,41

21985,58

Точка №5

22751,91

21480,87

Точка №6

22515,53

21054,35

Точка №7

22544,07

20975,30

Точка №8

22385,66

20688,12

Точка №9

21763,52

21031,31

Практическая работа

Создать таблицы (не менее 5-и) по своему варианту.

Заполнить таблицы (справочные таблицы - не менее 5-и строк, операционные таб- лицы - не менее 20-и).

Создать запросы:

Запрос на выбор всех данных по двум полям таблицы;

Запрос на выбор всех неповторяющихся данных по одному полю таблицы;

Запрос на выбор всех полей и записей таблицы, сгруппированных по значению од- ного поля, с использованием условия на группу (секции GROUP BY, HAVING) и с заголов- ками колонок, заданными в запросе;

Запрос на выбор всех неповторяющихся записей по одному полю таблицы с колон- кой, образованной агрегирующей функцией SUM и озаглавленной в соответствии со смыслом;

Выбор нескольких (не всех) полей таблицы, отсортированных по убыванию;

Выбор произвольного количества полей таблицы с добавлением поля, являюще- гося результатом арифметического выражения, в котором участвуют значения поля таблицы;

Запрос на выбор всех записей по одному полю таблицы с колонкой, образованной агрегирующей функцией SUM и озаглавленной в соответствии со смыслом; выбор записей с использованием условия диапазона (between);

Запрос на выбор всех записей по произвольному количеству полей таблицы с ис- пользованием агрегирующей функции AVG и условием на отбор записей, заданном в секции WHERE;

Запрос на выбор двух полей таблицы с вычислением третьего поля по данным таб- лицы и сортировкой по убыванию по первому полю, по возрастанию по второму и по убыва- нию по третьему;

Запрос на выборку данных таблицы с условием сравнения по шаблону LIKE; Запрос с отбором по условию и сортировкой по убыванию одного из полей, а также добавлением поля, содержащего для всех записей константу, определенную при конструиро- вании запроса;

Запрос с использованием агрегирующих функций MIN и MAX;

Запрос с использованием сложного условия с логическими операторами AND, OR и сортировкой.

ВАРИАНТЫ ЗАДАНИЙ

Задание

Дополнительные возможности системы

Базы данных

Ориентировочные таблицы:

1.

«Студенческая библиотека»

«Список студентов»

«Список книг»

«Деятельность»

2.

«Страховая фирма»

«Виды страховок»

«Клиенты\объекты»

«Страховая деятельность»

3.

«Агентство недвижимости»

«Объекты недвижимости»

«Продажи»

«Покупки»

4.

ГИБДД (Государственная инспекция безопасности дорожного движения)

«Список водителей»

«Список автомобилей»

«Штрафы»

5.

«Деканат ВУЗа»

«Список студентов»

«Список предметов»

«Сессия»»

6.

«Отдел кадров производственного пред- приятия»

«Сотрудники»

«Штатное расписание»

«Отделы»

«Цеха»

7.

«Фирмы покупки и продажи автомобилей»

«Продажи»

«Покупки»

«Автомобили»

8.

«Гостиница»

«Номера»

«Счета»

«Клиенты»

9.

«Расчет квартплаты ТСЖ»

«Список жильцов»

«Оплаты»

«Тарифы»

10

«Железнодорожные кассы»

«Продажи»

«Посадочные места»

«Направления»

11

«Авиапассажирские перевозки»

«Рейсы»

«Самолеты»

«Продажи»

12

«Музей»

«Экспонаты»

«Авторы»

«Экспозиции»

Задание

Дополнительные возможности системы

Базы данных

Ориентировочные таблицы:

13

«Спортивные комплексы района»

«Нормативы»

«Спортсмены»

«Соревнования»

14

«Экзаменационная сессия»

«Предметы»

«Оценки»

«Студенты»

15

«Турагентство»

«Туры»

«Продажи»

16

«Аптека»

«Товары»

«Поставщики»

«Продажи»

17

«Сборка и реализация компьютеров»

«Продукция»

«Клиенты»

«Заказы»

18

«Продуктовые магазины района»

«Продажи»

«Отделы»

«Товары»

19

«Больница» (одного отделения)

«Больные»

«Диагнозы»

«Врачи»

20

«Видеотека»

«Артисты»

«Фильмы»

«Продажи»

Источник: https://otherreferats.allbest.ru/download/1383510/