Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информационное обеспечение систем управления. Построение запросов пр.pdf
Скачиваний:
4
Добавлен:
15.11.2022
Размер:
3.76 Mб
Скачать

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

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

И. А. Шмидт

ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ

СИСТЕМ УПРАВЛЕНИЯ.

ПОСТРОЕНИЕ ЗАПРОСОВ

ПРИ РАБОТЕ С БАЗОЙ ДАННЫХ

Утверждено Редакционно-издательским советом университета в качестве учебного пособия

Издательство Пермского государственного технического университета

2008

УДК 681.3 (075) Ш73

Рецензенты:

д-р техн. наук, профессор Р. А. Файзрахмапов

(Пермский государственный технический университет);

канд. техн. наук И. Г Долгих

(Институт информационных систем)

Шмидт, И. А.

Ш73 Информационное обеспечение систем управления. Построе­

ние запросов

при работе с базой данных: учеб, пособие

/

И. А. Шмидт. -

Пермь: Изд-во Перм. гос. техн. ун-та, 2008.

-

83 с.

 

 

ISBN 978-5-88151-997-1

Содержит материал, необходимый для понимания способа орга­ низации структуры данных и практического освоения языка SQL. Выполнение всех запросов демонстрируется на примере тестовой ба­ зы данных. Рассматривается специфика СУБД Interbase в построении

баз данных.

Рекомендуется для студентов всех форм обучения, изучающих курс «Информационное обеспечение систем управления», специаль­ ностей 220301 «Автоматизация технологических процессов и про­ изводств», 220305 «Автоматизированное управление жизненным циклом продукции», а также других специальностей, связанных с об­ работкой информации.

УДК 681.3 (075)

© ГОУВПО

«Пермский государственный технический университет», 2008

ОГЛАВЛЕНИЕ

 

1. ТЕСТОВАЯ БАЗА ДАННЫХ...................................................

5

2. ВЫБОРКА ДАННЫХ. КОМАНДА SELECT..........................

10

3. ПРОСТЫЕ ВАРИАНТЫ ПОИСКА ДАННЫХ.......................

12

3.1. Упорядочение результата запроса.

 

Предложение ORDER BY.......................................................

16

3.2. Использование ключевого слова DISTINCT.........................

20

3.3. Предложение WHERE.............................................................

22

4. ОБОБЩЕНИЕ ДАННЫХ С ПОМОЩЬЮ АГРЕГАТНЫХ

 

ФУНКЦИЙ...................................................................................

35

4.1. Использование DISTINCT с COUNT.....................................

36

4.2. Предложение GROUP BY.......................................................

37

4.3. Предложение HAVING...........................................................

40

5. СОЕДИНЕНИЕ ТАБЛИЦ..........................................................

43

5.1. Внутренние соединения (связывание по равенству)...........

44

5.2. Внешние соединения...............................................................

46

6. ИСПОЛЬЗОВАНИЕ ПОДЗАПРОСОВ

 

В ОПЕРАТОРАХ SQL...............................................................

56

6.1. Выбор одного...........................................................................

57

6.2. Использование в подзапросе агрегатных функций.............

58

6.3. Связанные подзапросы...........................................................

58

6.4. Использование оператора EXISTS.........................................

62

6.5. Использование варианта IN с подзапросами............... .........

63

6.6. Использование NOT EXISTS...............................................

64

7. ОБЪЕДИНЕНИЕ ЗАПРОСОВ..................................................

48

8. ДОБАВЛЕНИЕ ДАННЫХ. КОМАНДА INSERT....................

68

8.1. Добавление отдельной строки..................................................

68

8.2. Добавление группы строк.........................................................

69

9. ОБНОВЛЕНИЕ УЖЕ ИМЕЮЩИХСЯ ДАННЫХ.

 

КОМАНДА UPDATE...................................................................

70

10. УДАЛЕНИЕ ДАННЫХ ИЗ ТАБЛИЦ. КОМАНДА

 

DELETE.........................................................................................

71

11. ГЕНЕРАТОРЫ И ИХ ИСПОЛЬЗОВАНИЕ.............................

72

11.1. Создание генераторов.............................................................

72

11.2. Использование генераторов................

73

ПРИМЕРЫ ЗАПРОСОВ..................................................................

78

1. ТЕСТОВАЯ БАЗА ДАННЫХ

Перед изучением языка SQL необходимо рассмотреть тестовую базу данных, на которой будут отрабатываться все запросы. Наша тестовая база данных полностью соответствует рассмотренной в учебном пособии по нормализации данных и создании базы дан­ ных. Напомним, что эта база данных описывает сферу воздушных перевозок. Все пояснения к модели даны в пособии по нормализа­ ции данных и создании базы данных.

Для начала приведем логическую модель БД, где каждый ин­ формационный объект отображается реляционной таблицей, а связи между таблицами соответствуют связям между информационными объектами. Модель представлена в виде диаграммы рис. 1.

Последний этап моделирования БД - переход к физическому уровню модели, на котором модель также представлена в виде диа­ граммы (рис. 2).

Рис. 1. Логическая модель

Рис. 2. Физическая модель

Приведем соответствие имен таблиц и полей на логическом и физическом уровне.

Вид объекта

Название

Название на физическом

на логическом уровне

уровне

 

1

2

3

Таблица

Авиамаршрут

AIRLINE

Поле

Номер маршрута

AL NUM

Поле

Код Типа Самолета

ALPLCODE

Поле

Код Авиакомпании

AL_AC_CODE

Поле

Откуда

AL AP FROM

Поле

Куда

A LA PTO

Таблица

Аэропорт

AIRPORT

Поле

Код аэропорта

APCODE

Поле

Название аэропорта

APNAME

Поле

Код Города

AP_CT_CODE

Таблица

Авиакомпания

AIRCOMPANY

Поле

Код Авиакомпании

AC CODE

Поле

Название Авиакомпа-

ACNAME

Таблица

Борт

BOARD

Поле

Борт номер

BRDNUM

Поле

Код Типа Самолета

BRDPLCODE

Поле

Код Авиакомпании

BRG AC CODE

Таблица

Город

CITY

Поле

Код Города

CT CODE

Поле

Название Города

CT_NAME

Таблица

Член Экипажа

EQUIPAGE

Поле

Код Члена Экипажа

EQ_CODE

Поле

Дата вылета

EQ_FL DATE

Поле

Номер маршрута

EQ FL NUM

Поле

Код Личности

EQ PR CODE

Поле

Код роли

EQ RNK CODE

Таблица

Рейс

FLIGHT

Поле

Дата вылета

FLDATE

Поле

Номер маршрута

FLNUM

Поле

Борт номер

FL BRD NUM

Таблица

Личность

PERSON

Поле

Код Личности

PR CODE

Поле

ФИО

PRNAME

Таблица

Тип Самолета

PLANE

Поле

Код Типа Самолета

PLCODE

Таблица

Поле

Поле

Таблица

Поле

Поле

Таблица

Поле

Поле

Поле

Таблица

Поле

Поле

Поле

Поле

Поле Таблица Поле Поле Поле

Роль члена экипажа

RANK

Код роли

RNK CODE

Роль

RNK NAME

Тип Салона

SALON

Код Типа Салона

SL TYPE

Название Типа Салона

SL NAME

Салон в Самолете

SALON IN PLANE

Код Типа Салона

SP SL TYPE

Код Типа Самолета

SP PL CODE

Количество мест

SP COUNT

Расписание

TIMETABLE

Код аэропорта

TBL АР CODE

Помер маршрута

TBL AL NUM

Время Прилета

TBL DOWN TIME

Время Вылета

TBL START TIME

Номер в Маршруте

TBL NUMBER

Тариф

TARIFF

Код Тарифа

TR CODE

Код Типа Салона

TR SL TYPE

Номер маршрута

TR AL NUM

'—

л 01Л пянных занесена информация в коли-

 

йпицЫ тестовой базы Д

основных закономерно-

<имя таблицы>. <имя столбца>

или

<псевдоним таблицы>. <имя столбца>

Уточненные имена столбцов обязательно должны присутство­ вать в операторах SELECT, где присутствует несколько таблиц, это позволит избежать двусмысленности при обращении к столбцам с одинаковым именем из разных таблиц. Такая ситуация может воз­ никнуть при выполнении соединений таблиц.

При задании имени столбца из таблицы, константы или любого выражения можно после ключевого слова AS указать текст, кото­ рый будет помещаться в заголовок отображаемой таблицы. Такой текст называется псевдонимом или алиасом столбца. Если псевдо­ ним содержит пробелы, специальные символы или буквы кирилли­ цы, то этот текст нужно заключить в двойные кавычки. Например:

SELECT CITY. CTJNAME

AS "Город", AIRPORT.AP^NAME AS "Аэропорт" FROM AIRPORT INNER JOIN CITY

ON AIRPORT.AP_CT_CODE = CITY.CT_CODE WHERE CITY.CT_NAME = 'Москва1

Русские тексты здесь заключены в кавычки, потому что содер­ жат символы, недопустимые в именах, а например CT_NAME, яв­ ляясь правильным именем в SQL, может обойтись без кавычек. Строковые константы должны заключатся в одинарные кавычки.

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

FROM <ссылка на таблицу> задает список имен таблиц, в которых осуществляется поиск. Здесь же можно указывать соеди­ нения (JOIN) таблиц, представления.

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