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

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

Пример 1: Вывести максимальную площадь стран: SELECT

MAX(Площадь) AS Макс_площадь

FROM

Страны

Пример 2: Вывести наименьшее население стран в Африке: SELECT

MIN(Население) AS Мин_население

FROM

Страны

WHERE

Континент = 'Африка'

Пример 3: Вывести суммарное население стран Северной и Южной Америки: SELECT

SUM(Население) AS Суммарное_население

FROM

Страны

WHERE

Континент = 'Северная Америка' OR Континент = 'Южная Америка'

Пример 4: Вывести среднее население стран, кроме европейских. Результат округлить до двух знаков:

SELECT

ROUND(AVG(CAST(Население AS FLOAT)), 2) AS Среднее_население

FROM

Страны

WHERE

Континент != 'Европа'

Пример 5: Вывести количество стран, название которых начинается с буквы «С»: SELECT

COUNT(*) AS Количество

FROM

Страны

WHERE

LEFT(Название, 1) = 'С'

Пример 6: Вывести количество континентов, где есть страны: SELECT

COUNT(DISTINCT Континент) AS Количество_Континентов

FROM

Страны

Пример 7: Вывести разницу населения между странами с наибольшим и наименьшим количеством граждан:

SELECT

MAX(Население) - MIN(Население) AS Разница

FROM

Страны

Пример 8: Вывести количество стран на каждом континенте. Результат отсортировать по количеству стран по убыванию:

SELECT

Континент

, COUNT(Название) AS Количество_Стран FROM

Страны GROUP BY

Континент ORDER BY

Количество_Стран DESC

Пример 9: Вывести количество стран по первым буквам в названии. Результат отсор- тировать в алфавитном порядке:

SELECT

LEFT(Название, 1) AS Первая_буква

, COUNT(Название) AS Количество_Стран

FROM

Страны

GROUP BY

LEFT(Название, 1) ORDER BY

Первая_буква

Пример 10: Вывести список континентов, где плотность населения больше, чем 100 чел. на кв. км:

SELECT

Континент

, AVG(CAST(Население AS FLOAT) / Площадь) AS Сред_Плотность

FROM

Страны

GROUP BY

Континент HAVING

AVG(CAST(Население AS FLOAT) / Площадь) > 100

Пример 11: Ожидается, что через 25 лет население Европы и Азии вырастет на 20%, Северной Америки и Африки на 50%, а остальных частей мира - на 70%. Вывести список континентов с прогнозируемым населением:

SELECT

Континент

, CASE

WHEN Континент IN ('Европа', 'Азия') THEN FLOOR(SUM(Население) * 1.2)

ление) * 1.5)

FROM

WHEN Континент IN ('Северная Америка', 'Африка') THEN FLOOR(SUM(Насе-

ELSE FLOOR(SUM(Население) * 1.7) END AS Суммарное_Население

Страны

GROUP BY

Континент

Пример 12: Вывести список континентов, где разница по населению между наиболь- шими и наименьшими странами не более в 1000 раз:

SELECT

Континент

FROM

Страны

GROUP BY

Континент

HAVING MAX(Население) <= 1000 * MIN(Население)

Пример 13: Вывести количество стран, у которых нет столицы (не введена в базу): SELECT

COUNT(*) AS Количество

FROM

Страны

WHERE

Столица IS NULL

Пример 14: Вывести количество символов в самых длинных и коротких названиях стран и столиц:

SELECT

MAX(LEN(Название)) AS Дл_Название

, MAX(LEN(Столица)) AS Дл_Столица

, MIN(LEN(Название)) AS Кр_Название

, MIN(LEN(Столица)) AS Кр_Столица

FROM

Страны

Пример 15: Вывести список континентов, у которых средняя плотность среди стран с площадью более 1 млн. кв. км больше, чем 30 чел. на кв. км. Результат отсортировать по плот- ности по убыванию:

SELECT

Континент

,AVG(CAST(Население AS FLOAT) / Площадь) AS Плотность

FROM

Страны

WHERE

Площадь > 1000000 GROUP BY

Континент HAVING

AVG(CAST(Население AS FLOAT) / Площадь) > 30 ORDER BY

Плотность DESC

Задание

Вывести минимальную площадь стран.

Вывести наибольшую по населению страну в Северной и Южной Америке.

Вывести среднее население стран. Результат округлить до одного знака.

Вывести количество стран, у которых название заканчивается на «ан», кроме стран, у которых название заканчивается на «стан».

Вывести количество континентов, где есть страны, название которых начинается с буквы «Р».

Сколько раз страна с наибольшей площадью больше, чем страна с наименьшей пло- щадью?

Вывести количество стран с населением больше, чем 100 млн. чел. на каждом кон- тиненте. Результат отсортировать по количеству стран по возрастанию.

Вывести количество стран по количеству букв в названии. Результат отсортировать по убыванию.

Ожидается, что через 20 лет население мира вырастет на 10%. Вывести список континентов с прогнозируемым населением:

Вывести список континентов, где разница по площади между наибольшими и наименьшими странами не более в 10000 раз:

Вывести среднюю длину названий Африканских стран.

Вывести список континентов, у которых средняя плотность среди стран с населе- нием более 1 млн. чел. больше, чем 30 чел. на кв. км.

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

Соединения таблиц

Цель работы

Изучить неявные соединения таблиц.

Изучить явные соединения таблиц.

Изучить внутреннее соединение таблиц.

Изучить внешнее соединение таблиц.

Изучить соединения таблиц со своей копией.

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

Данные часто хранятся в несколько связанных таблицах. Для выбора данных использу- ются разные методы соединения таблиц.

Когда выбор данных осуществляется из нескольких таблиц, в конструкции SELECT для каждого поля указывается таблица в виде <таблица>.<поле>. Если название поля уникальное, то можно его указать без таблицы, иначе это обязательно, чтобы избежать коллизий. Чтобы не повторить длинные названия таблиц, можно использовать псевдоним для таблиц. Псевдоним указывается в конструкции как FROM.

При неявном соединении таблиц формат конструкций FROM и WHERE имеет следу- ющий вид:

FROM <таблица1> [псевдоним1], <таблица2> [псевдоним2]… [WHERE <условие_соединения> [AND <условие_поиска>]… ]

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

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

Для явного соединения таблиц используется команда JOIN. У явного соединения есть следующие разновидности:

Внутреннее соединение - осуществляется с помощью команды INNER JOIN. Из двух таблиц берутся только связанные строки. INNER JOIN имеет следующий формат записи:

<таблица1> INNER JOIN <таблица2> ON <таблица1>.<связующее_поле> = <таб- лица2>.<связующее_поле>.

При внутреннем соединении слово INNER можно пропустить.

Внешнее соединение - осуществляется с помощью команды OUTER JOIN. OUTER JOIN имеет следующий формат записи:

<таблица1> LEFT | RIGHT | FULL OUTER JOIN <таблица2> ON <таблица1>.<связую- щее_поле> = <таблица2>.<связующее_поле>.

У внешнего соединения есть три разновидности:

Левое внешнее соединение LEFT OUTER JOIN - из таблицы, название которой явля- ется левым операндом команды JOIN, выбираются все строки, из второй таблицы - только те записи, которые имеют связь с первой таблицей.

Правое внешнее соединение RIGHT OUTER JOIN - из таблицы, название которой является правым операндом команды JOIN, выбираются все строки, из первой таблицы только те записи, которые имеют связь со второй таблицей.

Полное внешнее соединение FULL OUTER JOIN - из обоих таблиц выбираются все строки.

При использовании внешних соединений, слово OUTER можно пропустить.

Перекрестное соединение CROSS JOIN - декартово произведение двух таблиц.

CROSS JOIN имеет следующий формат записи:

<таблица1> CROSS JOIN <таблица2>.

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

Используя соединение, можно связать таблицу с собой. При таком соединении псевдо- ним обязателен.

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

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

Даны следующие таблицы:

Таблица 1. Факультет

Аббревиатура

Название

Ен

Естественные науки

Гн

Гуманитарные науки

Ит

Информационные технологии

Фм

Физико-математический

Таблица 2. Кафедра

Шифр

Название

Факультет

вм

Высшая математика

ен

ис

Информационные системы

ит

мм

Математическое моделирование

фм

оф

Общая физика

ен

пи

Прикладная информатика

ит

эф

Экспериментальная физика

фм

Таблица 3. Сотрудник

Таб_номер

Шифр

Фамилия

Должность

Зарплата

Шеф

101

пи

Прохоров П.П.

зав. кафедрой

35 000,00 р.

101

102

пи

Семенов С.С.

преподаватель

25 000,00 р.

101

105

пи

Петров П.П.

преподаватель

25 000,00 р.

101

153

пи

Сидорова С.С.

инженер

15 000,00 р.

102

201

ис

Андреев А.А.

зав. кафедрой

35 000,00 р.

201

202

ис

Борисов Б.Б.

преподаватель

25 000,00 р.

201

241

ис

Глухов Г.Г.

инженер

20 000,00 р.

201

242

ис

Чернов Ч.Ч.

инженер

15 000,00 р.

202

301

мм

Басов Б.Б.

зав. кафедрой

35 000,00 р.

301

302

мм

Сергеева С.С.

преподаватель

25 000,00 р.

301

401

оф

Волков В.В.

зав. кафедрой

35 000,00 р.

401

402

оф

Зайцев З.З.

преподаватель

25 000,00 р.

401

403

оф

Смирнов С.С.

преподаватель

15 000,00 р.

401

435

оф

Лисин Л.Л.

инженер

20 000,00 р.

402

501

вм

Кузнецов К.К.

зав. кафедрой

35 000,00 р.

501

502

вм

Романцев Р.Р.

преподаватель

25 000,00 р.

501

503

вм

Соловьев С.С.

преподаватель

25 000,00 р.

501

601

эф

Зверев З.З.

зав. кафедрой

35 000,00 р.

601

602

эф

Сорокина С.С.

преподаватель

25 000,00 р.

601

614

эф

Григорьев Г.Г.

инженер

20 000,00 р.

602

Таблица 4. Специальность

Номер

Направление

Шифр

01.03.04

Прикладная математика

мм

09.03.02

Информационные системы и технологии

ис

09.03.03

Прикладная информатика

пи

14.03.02

Ядерные физика и технологии

эф

38.03.05

Бизнес-информатика

ис

Таблица 5. Дисциплина

Код

Объем

Название

Исполнитель

101

320

Математика

вм

102

160

Информатика

пи

103

160

Физика

оф

202

120

Базы данных

ис

204

160

Электроника

эф

205

80

Программирование

пи

209

80

Моделирование

мм

Таблица 6. Заявка

Номер

01.03.04

09.03.02

09.03.03

14.03.02

38.03.05

Код

101

205

209

101

102

103

202

205

209

101

102

103

202

205

101

102

103

204

101

103

202

209

Таблица 7. Зав_кафедрой

Таб_номер

101

201

301

401

501

601

Стаж

15

18

20

10

18

8

Таблица 8. Инженер

Таб_номер

153

241

242

435

614

Специальность

электроник

электроник

программист

электроник

программист

Таблица 9. Преподаватель

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