Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Метод указания AIS

.pdf
Скачиваний:
8
Добавлен:
18.02.2016
Размер:
9.86 Mб
Скачать

Контрольные вопросы

Рисунок 103

Рисунок 102

КАТУ1. Какие типы связыванияИМподдерживает.С.SQLСЕЙФУЛЛИНАServer 2000? 2. Какие действия выполняет данный сценарий?

SELECT Oils.OilID, Oils.OilName, PlantParts.PlantPart FROM Oils

INNER JOIN PlantParts

ON Oils.PlantPartID = PlantParts.PlantPartID

К.Т3. Внутреннее.Н.связываниеОМАРБЕКОВАвозвращает: только те строки, для которых условие связыванияА.имеетС. значение TRUE; все строки из одной или более таблиц, независимо от того, имеют ли они

соответствующие строки в другой таблице или только те строки, для которых условие связывания имеет значение FALSE?

4.Опишите синтаксис объединенияСУБД?

5.Каково предназначение фразы FROM?

91

14 Избирательная выборка данных

Иногда вы хотите сгруппировать или подвести итоги для повторяющихся строк тем или иным способом. Далее мы рассмотрим два метода осуществления этой задачи: ключевое слово DISTINCT и

фраза GROUP BY.

Оператор SELECT DISTINCT

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

Однако это повторение может дать двусмысленные результаты после выполнения запроса. Для упомянутой таблицы студентов, содержащей, допустим, 10000 строк, из которых 90 процентов относятся к жителям города Астаны, следующий запрос возвратит значение Астана 9000 раз – результат, который едва ли можно назвать полезным.

Использование ключевого слова DISTINCT в подобных ситуациях является спасением. Будучи помещенным непосредственно после SELECT, ключевое слово DISTINCT инструктирует SQL Server

КАТУизбегать дублирующихсяИМстрок в .результирующемС.СЕЙФУЛЛИНАмножестве. При этом следующий запрос возвратит каждое значение города только один раз, что вам и нужно.

Совет. Ключевое слово DISTINCT имеет антипод ALL, который инструктирует SQL Server возвращать все строки, как уникальные, так или нет. Поскольку этот режим действует для оператора SELECT, слово ALL обычно не используется, но вы можете его включить, если при этом синтаксис

запроса становится более понятным и очевидным. К.ТИспользование.Н.оператораОМАРБЕКОВАSELECT DISTINCT А.С.

Ключевое слово DISTINCT может быть задано в операторе SQL конструктора запросов Query Designer, либо путем установки свойств запроса.

Оператор GROUP BY

Ключевое слово DISTINCTСУБДинструктирует SQL Server возвращать только уникальные строки, в то время как фраза GROUP BY инструктирует SQL Server объединять строки с одинаковыми значениями в столбце или в столбцах, заданных во фразе, в одну строку.

Внимание! Каждая строка, включенная во фразу GROUP BY, должна быть включена в выход запроса.

Фраза GROUP BY чаще всего используется совместно с функцией агрегирования. Функция агрегирования выполняет вычисления над множеством значений и возвращает в результате единственное значение. Наиболее распространенными функциями агрегирования, используемой с GROUP BY, являются: функция MIN, которая возвращает наименьшее значение во множестве, функция MAX, которая возвращает наибольшее значение во множестве, и функция COUNT, возвращающая количество значений во множестве.

Использование ключевого слова GROUP BY

Фраза GROUP BY может быть задана с использованием любой из панелей конструктора запросов, но лучше всего это делать с помощью панели сетки Grid Pane и панели SQL Pane.

Фраза HAVING

Фраза HAVING ограничивает строки, возвращаемые фразой GROUP BY, таким же образом, как фраза WHERE ограничивает строки, возвращаемые фразой SELECT. В один оператор SELECT может быть включена и фраза WHERE, и фраза HAVING – при этом фраза WHERE применяется до операции группировки, а фраза HAVING – после нее.

Синтаксис фразы HAVING идентичен синтаксису фразы WHERE, за исключением того, что фраза HAVING может включать одну из функций агрегирования, включенных в список столбцов фразы SELECT. Заметим, однако, что вы должны повторять функцию агрегирования.

92

Задания:

1)создайте запрос SELECT DISTINCT с использованием панели диаграмм Diagram Pane;

2)создайте запрос SELECT DISTINCT с использованием панели SQL Pane;

3)создайте запрос GROUP BY с использованием панели сетки Grid Pane;

4)создайте запрос GROUP BY с использованием панели SQL Pane;

5)подсчитать количество записей в таблице lichkart;

6)подсчитать количество человек каждой национальности в таблице kontengent;

7)создайте запрос с использованием ключевого слова HAVING в панели сетки Grid Pane;

8)создайте запрос с использованием фразы HAVING в панели SQL Pane.

9)Создать представление с использованием мастера Create View Wizard

10)Создать представление с использованием конструктора View Designer

11)Добавить представление в запрос

12)Переименовать, модифицировать, удалить представление

Методические указания

1) Создайте запрос SELECT DISTINCT с использованием панели диаграмм Diagram Pane

Откройте конструктор запросов Query Designer для таблицы kontengent, щелкнув правой кнопкой мыши на имени таблицы в рабочей панели Details Pane, укажите на Open Table (Открытие таблицы) и

КАТУвыберите Return AllИМRows (Показать.всеСстроки.СЕЙФУЛЛИНА).

Отобразите панель диаграмм Diagram Pane, щелкнув на кнопке Diagram Pane (Панель

диаграмм) в панели инструментов конструктора запросов.Выберите столбец MESTO

Щелкните правой кнопкой мыши на пустой области панели диаграмм Diagram Pane и выберите К.PropertiesТ.(НСвойства.). ОМАРБЕКОВАКонструктор запросов Query Designer отобразит диалоговое окноАProperties.С.

(Свойства).

Установите флажок DISTINCT Values (Различать значения) (рисунок 104).

Рисунок 104

Нажмите кнопку Run (Выполнить), чтобы повторно исполнить запрос. Получим список мест жительств студентов без повторений. Конструктор запросов Query Designer отобразит каждое значение лишь единожды (рисунок 105).

93

2)Создайте запрос SELECT DISTINCT с использованием панели SQL Pane

Скройте панель диаграмм Diagram Pane и отобразите панель SQL Pane.

Замените имеющийся оператор SELECT на следующий:

SELECT DISTINCT MESTO FROM kontengent

Нажмите кнопку Run (Выполнить), чтобы повторно исполнить запрос. Конструктор запросов Query Designer отобразит отличающиеся значения MESTO, имеющиеся в таблице kontengent (рисунок

106).

К. .С.

3) Создайте запрос GROUP BY с использованием панели сетки Grid Pane

СУБДРисунок 105 Рисунок 106

Скройте панель SQL Pane и отобразите панель сетки Grid Pane.Выделите в запросе столбец POL в таблице kontengent.

Нажмите кнопку Group By (Сгруппировать) в панели инструментов конструктора запросов. Конструктор запросов Query Designer добавит столбец Group By в сетку и установит оба значения равными Group By.

Выделите в запросе новый столбец POL в таблице kontengent.Измените значение ячейки Group By для строки POL на Count.

Нажмите кнопку Run (Выполнить), чтобы повторно исполнить запрос. Конструктор запросов Query Designer отобразит количество мужчин и женщин (рисунок 107).

94

Рисунок 107

4)Создайте запрос GROUP BY с использованием панели SQL Pane

Скройте панель сетки Grid Pane и отобразите панель SQL Pane.

Замените имеющийся оператор SELECT следующим:

SELECT

OSNOVOB AS [Основа обучения], COUNT(OSNOVOB) AS Количество

FROM

kontengent

GROUP BY OSNOVOB

КАТУНажмите кнопкуИМRun (Выполнить).,СЕЙФУЛЛИНАчтобы повторно исполнить запрос. Конструктор запросов Query Designer отобразит количество студентов, обучающихся по гранту, в кредит и на платной основе

(рисунок 108).

К.Т.Н. А.С.

Рисунок 108

5)Подсчитать количество записей в базе lichkart

Замените имеющийся оператор SELECT следующим:

SELECT

COUNT(*) AS 'Количество записей'

FROM

lichkart

Нажмите кнопку Run (Выполнить), чтобы повторно исполнить запрос. Конструктор запросов Query Designer отобразит количество записей в таблице lichkart (рисунок 109).

95

Рисунок 109

6)Подсчитать количество человек каждой национальности в таблице kontengent

Замените имеющийся оператор SELECT следующим:

SELECT nacion.NAMENAC AS Национальность,

COUNT(kontengent.KODNAC) AS [Количество человек]

FROM kontengent INNER JOIN КАТУnacion ON kontengentИМ.KODNAC= nacion..СЕЙФУЛЛИНАKODNAC

GROUP BY nacion.NAMENAC

Нажмите кнопку Run (Выполнить), чтобы повторно исполнить запрос. Конструктор запросов Query Designer отобразит количество студентов каждой национальности (рисунок 110).

К.Т. А.С.

Рисунок 110

7)Создайте запрос с использованием ключевого слова HAVING в панели сетки Grid Pane

Скройте панель SQL Pane и отобразите панель сетки Grid Pane. (рисунок 111).

96

Рисунок 111

В поле Criteria столбца KODNAC таблицы kontengent введите «=1».

КАТУНажмите кнопкуИМRun (Выполнить).СЕЙФУЛЛИНАв панели инструментов конструктора запросов, чтобы повторно исполнить запрос. Конструктор запросов Query Designer выведет наименования

национальностей, количество студентов которых равно 1 (рисунок 112).

К.Т.Н А.С.

Рисунок 112

8) Создайте запрос с использованием фразы HAVING в панели SQL Pane

Скройте панель сетки Grid Pane и отобразите панель SQL Pane.

SELECT

OSNOVOB AS [Основа обучения], COUNT(OSNOVOB) AS Количество

FROM

kontengent

GROUP BY OSNOVOB

HAVING

(OSNOVOB = 'грант')

Нажмите кнопку Run (Выполнить) в панели инструментов конструктора запросов, чтобы повторно исполнить запрос. Конструктор запросов Query Designer выведет количество студентов, обучающихся по гранту (рисунок 113).

97

Рисунок 113

9) Создание представлений

Enterprise Manager предусматривает два метода для создания нового представления: мастер создания представления Create View Wizard, который проводит вас по всем этапам процедуры создания представления; и команда New View (Создать представление), которая открывает конструктор

представлений View Designer. Конструктор представлений аналогичен конструктору запросов, за КАТУисключением того, ИМчто он дает возможность.С.СЕЙФУЛЛИНАсохранять созданный вами оператор SELECT. Мастер создания представлений Create View Wizard является полезным инструментом, но иногда проще создать

представление с помощью конструктора представлений View Designer.

Создайте представление с использованием мастера Create View Wizard

К-.НажмитеТ.Нкнопку.WizardОМАРБЕКОВА(Мастер Database, Create View Wizard и нажмите ОК). А.С.

Создайте представление с использованием конструктора View Designer

В дереве консоли ConsoleСУБДTree Enterprise Manager перейдите к папке Views базы данных Student. Enterprise Manager отобразит список имеющихся представлений.

Нажмите New (Создать) в панели инструментов Enterprise Manager. Enterprise Manager откроет конструктор представлений View Designer с отображением всех четырех панелей.

Щелкните на кнопке Add Table (Добавить таблицу) в панели инструментов конструктора

10) Использование представлений

Создав представление, вы можете использовать его точно так же, как таблицу. Вы можете открыть его в Enterprise Manager с использованием конструктора представлений View Designer, либо включить его в другие запросы.

Если вы открываете конструктор представлений View Designer для существующего представления, Enterprise Manager трактует его как виртуальную таблицу. Базовым оператором SQL является либо SELECT * FROM <имя представления>, либо SELECT TOP n FROM <имя представления>, но не оператор запроса, создавший представление.

Откройте конструктор View Designer для представления

11) Включите представление в запрос

98

Перейдите к папке Tables базы данных Student в дереве консоли Console Tree. Enterprise Manager

отобразит список таблиц в рабочей панели Details Pane.

Откройте конструктор запросов Query Designer для таблицы Kontengent, щелкнув правой кнопкой мыши на имени таблицы, указав на Open Table (Открытие таблицы) и выбрав Return All Rows (Показать все строки). Конструктор запросов Query Designer откроет таблицу Kontengent.

Щелкните на кнопке Diagram Pane (Панель диаграмм) в панели инструментов, чтобы отобразить панель диаграмм.

Щелкните на кнопке Add Table (Добавить таблицу). Конструктор запросов Query Designer отобразит диалоговое окно Add Table (Добавление таблицы).

Откройте вкладку Views (Представления) в диалоговом окне Add Table (Добавление таблицы).

Контрольные вопросы

1.Какое существует обратное по действию ключевое слово для DISTINCT?

2.Для чего используется в запросе ключевое слово GROUP BY?

3.Какие действия выполняет данный сценарий?

SELECT PlantParts.PlantPart, Count(Oils.OilName) AS [NumberOfOils]

FROM Oils

INNER JOIN PlantParts

ON Oils.PlantPartID = PlantParts.PlantPartID КАТУGROUP BY PlantPartsИМ.PlantPart.С.СЕЙФУЛЛИНА

4. Какие функции из перечисленных являются функциями агрегирования: MIN (возвращает наименьшее значение во множестве), MAX (возвращает наибольшее значение во множестве), COUNT (возвращает количество значений во множестве), NEWID (определяет новый элемент во множестве),

AVG (возвращает среднее значение во множестве)?

К.Т.Н. ОМАРБЕКОВА А.С.

СУБД

99

15 Работа с данными

Задания

1.Какие ограничения следует учитывать при использовании оператора INSERT.

2.Вставьте строку с помощью Grid Pane и SQL Pane.

3.Вставьте строку, задающую значения для всех столбцов

4.Вставьте строку с использованием значений DEFAULT и NULL

5.Вставьте несколько строк с использованием оператора SELECT и панели Grid Pane (SQL Pane).

6.Модифицируйте строки с помощью панели Grid Pane (SQL Pane).

7.Модифицируйте строки с использованием оператора FROM

8.Удалите строки с помощью Grid Pane и Diagram Pane

9.Удалите строки с использованием фразы WHERE в панели SQL Pane

10.Удалите все строки с использованием оператора TRUNCATE TABLE

Методические указания

Понятие об операторе INSERT

Синтаксис оператора INSERT похож на синтаксис оператора SELECT. Его базовая форма имеет

следующий вид: КАТУINSERT [INTO] таблицаИМили представление.С.[(СЕЙФУЛЛИНАсписок столбцов)]

VALUES (список_значений)

ККаждый.Т.операторН.INSERTОМАРБЕКОВАможет модифицировать только одну таблицу или представлениеА.. ПриС. использовании оператора INSERT для модификации представления следует учитывать следующие

ограничения:

представление не должноСУБДсодержать функций агрегирования, таких как COUNT или AVG;

представление не должно содержать операторов TOP, GROUP BY, UNION или DISTINCT;

представление не должно содержать вычисляемых столбцов;

представление должно ссылаться на таблицу во фразе FROM;

оператор INSERT модифицирует столбцы только из одной таблицы.

Список столбцов в операторе INSERT не является обязательным. Если он не указан, оператор INSERT должен включать значения для всех столбцов в таблице или представлении, а порядок их должен соответствовать порядку столбцов в таблице или представлении. Вы можете использовать ключевое слово DEFAULT, чтобы задать для строки значения, установленные по умолчанию.

Если список столбцов присутствует, формат его подобен формату, используемому для списка столбцов в операторе SELECT: имена столбцов отделяются запятыми. Поскольку оператор INSERT может добавлять строку только в одну таблицу, вам нет необходимости использовать идентификатор имени таблицы в имени столбца.

Использование оператора INSERT

Оператор INSERT может быть создан с использованием панели сетки Grid Pane путем задания столбцов, либо с использованием панели SQL Pane путем непосредственного ввода оператора.

100