Материал: Using_MySql,_MS_SQL_Server_and_Oracle(1)

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

Работа с MySQL, MS SQL Server и Oracle

в примерах

Практическое пособие для программистов и тестировщиков

Версия книги 1.0.3 от 12.04.2018

Работа с MySQL, MS SQL Server и Oracle в примерах

Содержание

ПРЕДИСЛОВИЕ ..........................................................................................................................................

4

РАЗДЕЛ 1: МОДЕЛЬ, ГЕНЕРАЦИЯ И НАПОЛНЕНИЕ БАЗЫ ДАННЫХ ..............................................

5

1.1.

ОБЩЕЕ ОПИСАНИЕ МОДЕЛИ .......................................................................................................

5

1.2.

МОДЕЛЬ ДЛЯ MYSQL .....................................................................................................................

7

1.3. МОДЕЛЬ ДЛЯ MS SQL SERVER ....................................................................................................

9

1.4.

МОДЕЛЬ ДЛЯ ORACLE.................................................................................................................

11

1.5. ГЕНЕРАЦИЯ И НАПОЛНЕНИЕ БАЗЫ ДАННЫХ .......................................................................

12

РАЗДЕЛ 2: ЗАПРОСЫ НА ВЫБОРКУ И МОДИФИКАЦИЮ ДАННЫХ ...............................................

17

2.1. ВЫБОРКА ИЗ ОДНОЙ ТАБЛИЦЫ ...............................................................................................

17

2.1.1.

ПРИМЕР 1: ВЫБОРКА ВСЕХ ДАННЫХ.............................................................................................

17

2.1.2.

ПРИМЕР 2: ВЫБОРКА ДАННЫХ БЕЗ ПОВТОРЕНИЯ..........................................................................

18

2.1.3.

ПРИМЕР 3: ИСПОЛЬЗОВАНИЕ ФУНКЦИИ COUNT И ОЦЕНКА ЕЁ ПРОИЗВОДИТЕЛЬНОСТИ.................

21

2.1.4.

ПРИМЕР 4: ИСПОЛЬЗОВАНИЕ ФУНКЦИИ COUNT В ЗАПРОСЕ С УСЛОВИЕМ ....................................

29

2.1.5.

ПРИМЕР 5: ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ SUM, MIN, MAX, AVG ...................................................

31

2.1.6.

ПРИМЕР 6: УПОРЯДОЧИВАНИЕ ВЫБОРКИ .....................................................................................

35

2.1.7.

ПРИМЕР 7: ИСПОЛЬЗОВАНИЕ СОСТАВНЫХ УСЛОВИЙ ....................................................................

39

2.1.8.

ПРИМЕР 8: ПОИСК МНОЖЕСТВА МИНИМАЛЬНЫХ И МАКСИМАЛЬНЫХ ЗНАЧЕНИЙ .............................

43

2.1.9.

ПРИМЕР 9: ВЫЧИСЛЕНИЕ СРЕДНЕГО ЗНАЧЕНИЯ АГРЕГИРОВАННЫХ ДАННЫХ .................................

55

2.1.10.

ПРИМЕР 10: ИСПОЛЬЗОВАНИЕ ГРУППИРОВКИ ДАННЫХ .................................................................

61

2.2.

ВЫБОРКА ИЗ НЕСКОЛЬКИХ ТАБЛИЦ.......................................................................................

66

2.2.1.ПРИМЕР 11: ЗАПРОСЫ НА ОБЪЕДИНЕНИЕ КАК СПОСОБ ПОЛУЧЕНИЯ ЧЕЛОВЕКОЧИТАЕМЫХ ДАННЫХ .66

2.2.2.

ПРИМЕР 12:

ЗАПРОСЫ НА ОБЪЕДИНЕНИЕ И ПРЕОБРАЗОВАНИЕ СТОЛБЦОВ В СТРОКИ ....................

71

2.2.3.

ПРИМЕР 13:

ЗАПРОСЫ НА ОБЪЕДИНЕНИЕ И ПОДЗАПРОСЫ С УСЛОВИЕМ IN ...................................

82

2.2.4.ПРИМЕР 14: НЕТРИВИАЛЬНЫЕ СЛУЧАИ ИСПОЛЬЗОВАНИЯ УСЛОВИЯ IN И ЗАПРОСОВ НА

ОБЪЕДИНЕНИЕ...........................................................................................................................................

92

2.2.5.

ПРИМЕР 15: ДВОЙНОЕ ИСПОЛЬЗОВАНИЕ УСЛОВИЯ IN ..................................................................

97

2.2.6.

ПРИМЕР 16: ЗАПРОСЫ НА ОБЪЕДИНЕНИЕ И ФУНКЦИЯ COUNT...................................................

102

2.2.7.

ПРИМЕР 17: ЗАПРОСЫ НА ОБЪЕДИНЕНИЕ, ФУНКЦИЯ COUNT И АГРЕГИРУЮЩИЕ ФУНКЦИИ .........

114

2.2.8.

ПРИМЕР 18: УЧЁТ ВАРИАНТОВ И КОМБИНАЦИЙ ПРИЗНАКОВ ........................................................

127

2.2.9.

ПРИМЕР 19: ЗАПРОСЫ НА ОБЪЕДИНЕНИЕ И ПОИСК МИНИМУМА, МАКСИМУМА, ДИАПАЗОНОВ .......

132

2.2.10.

ПРИМЕР 20: ВСЕ РАЗНОВИДНОСТИ ЗАПРОСОВ НА ОБЪЕДИНЕНИЕ В ТРЁХ СУБД .........................

149

2.3. МОДИФИКАЦИЯ ДАННЫХ .........................................................................................................

182

2.3.1.

ПРИМЕР 21: ВСТАВКА ДАННЫХ ..................................................................................................

182

2.3.2.

ПРИМЕР 22: ОБНОВЛЕНИЕ ДАННЫХ ...........................................................................................

190

2.3.3.

ПРИМЕР 23: УДАЛЕНИЕ ДАННЫХ ................................................................................................

193

2.3.4.

ПРИМЕР 24: СЛИЯНИЕ ДАННЫХ .................................................................................................

195

2.3.5.

ПРИМЕР 25: ИСПОЛЬЗОВАНИЕ УСЛОВИЙ ПРИ МОДИФИКАЦИИ ДАННЫХ........................................

200

РАЗДЕЛ 3: ИСПОЛЬЗОВАНИЕ ПРЕДСТАВЛЕНИЙ ...........................................................................

210

3.1. ВЫБОРКА ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ПРЕДСТАВЛЕНИЙ ........................................

210

3.1.1.

ПРИМЕР 26: ВЫБОРКА ДАННЫХ С ИСПОЛЬЗОВАНИЕМ НЕКЭШИРУЮЩИХ ПРЕДСТАВЛЕНИЙ............

210

3.1.2.ПРИМЕР 27: ВЫБОРКА ДАННЫХ С ИСПОЛЬЗОВАНИЕМ КЭШИРУЮЩИХ ПРЕДСТАВЛЕНИЙ И ТАБЛИЦ 215

3.1.3.ПРИМЕР 28: ИСПОЛЬЗОВАНИЕ ПРЕДСТАВЛЕНИЙ ДЛЯ СОКРЫТИЯ ЗНАЧЕНИЙ И СТРУКТУР ДАННЫХ241

3.2. МОДИФИКАЦИЯ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ПРЕДСТАВЛЕНИЙ..............................

245

3.2.1.

ПРИМЕР 29: МОДИФИКАЦИЯ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ «ПРОЗРАЧНЫХ» ПРЕДСТАВЛЕНИЙ ....

245

3.2.2.

ПРИМЕР 30: МОДИФИКАЦИЯ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ТРИГГЕРОВ НА ПРЕДСТАВЛЕНИЯХ .....

257

Работа с MySQL, MS SQL Server и Oracle в примерах © EPAM Systems, RD Dep, 2016–2018 Стр: 2/545

Работа с MySQL, MS SQL Server и Oracle в примерах

 

РАЗДЕЛ 4: ИСПОЛЬЗОВАНИЕ ТРИГГЕРОВ ......................................................................................

272

4.1. АГРЕГАЦИЯ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ТРИГГЕРОВ ................................................

272

4.1.1. ПРИМЕР 31: ОБНОВЛЕНИЕ КЭШИРУЮЩИХ ТАБЛИЦ И ПОЛЕЙ .......................................................

272

4.1.2. ПРИМЕР 32: ОБЕСПЕЧЕНИЕ КОНСИСТЕНТНОСТИ ДАННЫХ ..........................................................

292

4.2. КОНТРОЛЬ ОПЕРАЦИЙ С ДАННЫМИ С ИСПОЛЬЗОВАНИЕМ ТРИГГЕРОВ......................

315

4.2.1. ПРИМЕР 33: КОНТРОЛЬ ОПЕРАЦИЙ МОДИФИКАЦИИ ДАННЫХ .......................................................

315

4.2.2. ПРИМЕР 34: КОНТРОЛЬ ФОРМАТА И ЗНАЧЕНИЙ ДАННЫХ .............................................................

338

4.2.3. ПРИМЕР 35: ПРОЗРАЧНОЕ ИСПРАВЛЕНИЕ ОШИБОК В ДАННЫХ ....................................................

344

РАЗДЕЛ 5: ИСПОЛЬЗОВАНИЕ ХРАНИМЫХ ФУНКЦИЙ И ПРОЦЕДУР ..........................................

352

5.1.

ИСПОЛЬЗОВАНИЕ ХРАНИМЫХ ФУНКЦИЙ ............................................................................

352

5.1.1. ПРИМЕР 36: ВЫБОРКА И МОДИФИКАЦИЯ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ХРАНИМЫХ ФУНКЦИЙ......

352

5.1.2. ПРИМЕР 37: КОНТРОЛЬ ОПЕРАЦИЙ С ДАННЫМИ С ИСПОЛЬЗОВАНИЕМ ХРАНИМЫХ ФУНКЦИЙ ........

370

5.2.

ИСПОЛЬЗОВАНИЕ ХРАНИМЫХ ПРОЦЕДУР ..........................................................................

375

5.2.1. ПРИМЕР 38: ВЫПОЛНЕНИЕ ДИНАМИЧЕСКИХ ЗАПРОСОВ С ПОМОЩЬЮ ХРАНИМЫХ ПРОЦЕДУР .......

375

5.2.2. ПРИМЕР 39: ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ С ПОМОЩЬЮ ХРАНИМЫХ ПРОЦЕДУР...........

388

5.2.3. ПРИМЕР 40: УПРАВЛЕНИЕ СТРУКТУРАМИ БАЗЫ ДАННЫХ С ПОМОЩЬЮ ХРАНИМЫХ ПРОЦЕДУР ......

400

РАЗДЕЛ 6: ИСПОЛЬЗОВАНИЕ ТРАНЗАКЦИЙ ...................................................................................

408

6.1. УПРАВЛЕНИЕ НЕЯВНЫМИ И ЯВНЫМИ ТРАНЗАКЦИЯМИ...................................................

408

6.1.1. ПРИМЕР 41: УПРАВЛЕНИЕ НЕЯВНЫМИ ТРАНЗАКЦИЯМИ...............................................................

408

6.1.2. ПРИМЕР 42: УПРАВЛЕНИЕ ЯВНЫМИ ТРАНЗАКЦИЯМИ...................................................................

419

6.2.

КОНКУРИРУЮЩИЕ ТРАНЗАКЦИИ............................................................................................

428

6.2.1. ПРИМЕР 43: УПРАВЛЕНИЕ УРОВНЕМ ИЗОЛИРОВАННОСТИ ТРАНЗАКЦИЙ.......................................

428

6.2.2. ПРИМЕР 44: ВЗАИМОДЕЙСТВИЕ КОНКУРИРУЮЩИХ ТРАНЗАКЦИЙ.................................................

434

6.2.3.ПРИМЕР 45: УПРАВЛЕНИЕ ТРАНЗАКЦИЯМИ В ТРИГГЕРАХ, ХРАНИМЫХ ФУНКЦИЯХ И ПРОЦЕДУРАХ .465

РАЗДЕЛ 7: РЕШЕНИЕ ТИПИЧНЫХ ЗАДАЧ И ВЫПОЛНЕНИЕ ТИПИЧНЫХ ОПЕРАЦИЙ .............

474

7.1. РАБОТА С ИЕРАРХИЧЕСКИМИ И СВЯЗАННЫМИ СТРУКТУРАМИ.....................................

474

7.1.1. ПРИМЕР 46: ФОРМИРОВАНИЕ И АНАЛИЗ ИЕРАРХИЧЕСКИХ СТРУКТУР...........................................

474

7.1.2. ПРИМЕР 47: ФОРМИРОВАНИЕ И АНАЛИЗ СВЯЗАННЫХ СТРУКТУР..................................................

490

7.2. ОПЕРАЦИИ С БАЗАМИ ДАННЫХ .............................................................................................

516

7.2.1. ПРИМЕР 48: РЕЗЕРВНОЕ КОПИРОВАНИЕ И ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ ..............................

516

7.3. ОПЕРАЦИИ С СУБД ....................................................................................................................

522

7.3.1. ПРИМЕР 49: УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ, ЗАПУСК И ОСТАНОВКА СУБД ...............................

522

7.3.2. ПРИМЕР 50: ОПРЕДЕЛЕНИЕ И ИЗМЕНЕНИЕ КОДИРОВОК ..............................................................

525

7.4. ПОЛЕЗНЫЕ ОПЕРАЦИИ С ДАННЫМИ.....................................................................................

528

7.4.1. ПРИМЕР 51: ВЫЧИСЛЕНИЕ ДАТ ..................................................................................................

528

7.4.2. ПРИМЕР 52: ПОЛУЧЕНИЕ КОМБИНАЦИИ НЕПОВТОРЯЮЩИХСЯ ИДЕНТИФИКАТОРОВ......................

536

РАЗДЕЛ 8: КРАТКОЕ СРАВНЕНИЕ MYSQL, MS SQL SERVER, ORACLE.......................................

541

РАЗДЕЛ 9: ЛИЦЕНЗИЯ И РАСПРОСТРАНЕНИЕ................................................................................

545

Работа с MySQL, MS SQL Server и Oracle в примерах © EPAM Systems, RD Dep, 2016–2018 Стр: 3/545

Предисловие

Предисловие

Выражаю огромную благодарность коллегам из EPAM Systems за ценные замечания и рекомендации в процессе подготовки материала.

Эта книга посвящена практике использования SQL для решения типичных задач. Здесь не рассматривается теория реляционных баз данных (предполагается, что вы с ней знакомы либо способны найти недостающую информацию), но приведено более 500 SQL-запросов: от элементарных выборок до использования представлений, триггеров, хранимых процедур и функций.

Все примеры представлены в виде постановки задачи и её решения с использованием MySQL, MS SQL Server и Oracle, а также снабжены пояснениями и разбором типичных ошибок.

Этот материал в первую очередь будет полезен тем, кто:

когда-то изучал базы данных, но многое забыл;

имеет опыт работы с одной СУБД, но хочет быстро переключиться на другую;

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

Все решения выполнены на MySQL Community Server 5.6, Microsoft SQL Server Express 2012, Oracle 11gR2 Express Edition и, скорее всего, успешно будут работать на более новых версиях этих СУБД, но не на более старых.

В большинстве решений со сложной логикой алгоритм пояснён на примере MySQL, а для двух других СУБД лишь приведён код с небольшими комментариями, потому желательно рассматривать решения для всех трёх СУБД, даже если вам интересна только одна из них.

Исходные материалы (схемы, скрипты и т.д.) можно получить по этой ссылке: http://svyatoslav.biz/database_book_download/src.zip

Условные обозначения, используемые в этой книге:

Постановка задачи. Сразу отметим, что почти в каждом рассмотренном примере приведено несколько задач. Поскольку решение задачи в некоторых случаях будет размещено далеко от её формулировки, рядом с номером задачи в фигурных скобках будет приведена {ссылка} на решение.

Ожидаемый результат. Сначала мы будем показывать, что должно получаться при правильном решении задачи, а потом — само решение.

Решение задачи. Решение всегда будет приведено для MySQL, MS SQL Server и Oracle. Иногда решения будут похожими, иногда очень разными. Поскольку решение задачи в некоторых случаях будет размещено далеко от её формулировки, рядом с номером решения в фигурных скобках будет приведена {ссылка} на формулировку задачи.

Исследование. Это — тоже задача, но уже не на получение неких данных, а на проверку того, как ведёт себя СУБД в некоторых условиях.

Предостережение. Мы будем рассматривать типичные ошибки и приводить пояснения их причин и последствий.

Задание для самостоятельной проработки. Настоятельно рекоменду-

ется выполнять эти задания. Даже если вам кажется, что всё очень просто. Если, напротив, вам кажется, что всё очень сложно — сначала попробуйте самостоятельно решить уже разобранные примеры, обращаясь к готовому решению лишь для самопроверки.

Работа с MySQL, MS SQL Server и Oracle в примерах © EPAM Systems, RD Dep, 2016–2018 Стр: 4/545

Источник: https://studfile.net/preview/16418462/