- •Лабораторная работа № 1 Тема: создание таблиц
- •Ссылка на таблицы других пользователей
- •Параметр default
- •Правила присвоения имен
- •Типы данных в Oracle
- •Ограничения
- •Ограничения целостности данных
- •Ограничение not null
- •Ограничение unique
- •Ограничение primary key
- •Ограничение foreign key
- •Ограничение check
- •Пример. Создание таблицы базы данных Film, Klient, Dogovor.
- •6 Regiser varchar2(20), Таблица создана.
- •Создание таблицы с заполнением строками из другой таблицы
- •Лабораторная работа №2
- •2 Values (1, 'Красотка', 'Поланский','12-12-1987', 30, 2);
- •1 Строка создана.
- •1 Строка создана. Копирование строк из другой таблицы
- •Insert into таблица (столбец[, столбец]}
- •3 Строки создано.
- •Обновление строк
- •1 Строка обновлена.
- •Команды явного управления транзакциями
- •Оператор конкатенации
- •Строки символов (литералы)
- •Обработка неопределенных значений
- •Функция nvl
- •Синтаксис
- •7 Строк выбрано. Преобразование nvl для различных типов
- •Лабораторная работа №4 Тема: ограничение количества выбираемых строк.
- •Азазель 40 5
- •7 Строк выбрано.
- •1 Иванов и.Н. 005363
- •Пример. Вывод названия фильмов и стоимости проката для фильмов, количество которых 3 и 5.
- •Сочетание символов в искомой строке
- •Строки не выбраны
- •2 From film 3 Азазель
- •Пример. Вывод кодов фильмов и их названий, имеющих режиссера.
- •Порядок выполнения операций Правила приоритета
- •1 Красотка 42 3
- •Пример.
- •Пример.
- •Числовые функции
- •Пример.
- •Использование арифметических операторов с датами
- •Арифметические операторы над датами
- •Функции для работы с датами
- •Пример.
- •Функции преобразования
- •Вывод даты в заданном формате
- •Форматы времени
- •Пример.
- •Элементы формата числа
- •Пример.
- •Лабораторная работа №7 Тема: групповые функции Групповые функции
- •Групповые функции
- •Пример. Вывод первого и последнего названия фильма из алфавитного списка всех фильмов.
- •8 Строк выбрано.
- •Предложение having
- •Пример.
- •Лабораторная работа №8 Тема: подзапросы
- •From таблица
- •(Select список_выбора
- •Однострочные подзапросы
- •Многострочные подзапросы
- •Лабораторная работа №9 Тема определение переменных во время выполнения Переменные подстановки с одним амперсантом
- •Команда set verify
- •Определение текстовых строк и дат с помощью переменных подстановки
- •Указание имен столбцов, выражений и текстовых строк во время выполнения
- •Определение переменных пользователя
- •Лабораторная работа №10 Тема: изменение таблиц и ограничений Добавление столбца
- •Изменение столбца
- •Добавление и удаление ограничений
- •Разрешение и запрет ограничений
- •Удаление таблицы
- •Команда rename:
- •Команда truncate: Синтаксис
- •Усечение таблицы.
- •Добавление комментариев к таблице
- •Лабораторная работа №11 Тема: создание последовательности
- •Создание последовательности
- •Проверка параметров последовательности
- •10 Строк выбрано. Псевдостолбцы nextval и currval
- •Пропуски в последовательности
- •Просмотр следующего свободного значения без его увеличения
- •Изменение параметров последовательности
- •Лабораторная работа № 12. Тема: словарь данных.
- •Запросы к словарю данных
- •Классы представлений
- •Прочие представления
- •Лабораторная работа № 13. Тема: создание представлений
- •2 As select filmId, namef, god_vip Дата_выпуска
- •13 Куклы 13.05.99
- •2 (Номер, Название, Дата)
- •2 (ИмяКлиента, посл_Выдача, Перв_выдача)
- •2 (Номер, Название, Дата)
- •Удаление представления
- •Лабораторная работа №14 Тема: создание индексов
- •Типы индексов
- •Создание индекса
- •Просмотр индексов
- •Удаление индекса
Предложение having
Предложение HAVING задает условие отбора групп для вывода. Следовательно, на группы накладывается дальнейшее ограничение, основанное на сводной информации.
Если используется предложение HAVING, сервер Oracle выполняет следующие действия:
Группирует строки.
Применяет групповую функцию.
Производит вывод групп, удовлетворяющих условию предложения HAVING.
Пример.
Вывод названия фильма и общей стоимости проката кассет для всех наименований фильмов, со стоимостью проката больше 50. Выходные строки сортируются по стоимости проката.
SQL> SELECT namef, SUM(stoimost_prok) as «Общая стоимость»
2 from film
3 GROUP BY namef
4 HAVING SUM(stoimost_prok)>50
5 ORDER BY SUM(stoimost_prok);
NAMEF Общая стоимость
------------------------- --------------------------------------
Куклы 60
Звонок 121
Лабораторная работа №8 Тема: подзапросы
Синтаксис
SELECT список_выбора
From таблица
WHERE выражение оператор
(Select список_выбора
FROM таблица);
где: оператор оператор сравнения (например, >, = или IN).
Операторы сравнения делятся на два класса: однострочные (>,=,>=,<,<>,<=) и многострочные (IN, NOT IN).
Подзапросы иногда называют вложенной командой SELECT, подкомандой SELECT или внутренней командой SELECT. Как правило, подзапрос выполняется первым, а его результат используется для полного определения условия во внешнем запросе.
Подзапрос должен быть заключен в скобки.
Подзапрос должен находиться после оператора сравнения.
В подзапросе нельзя использовать предложение ORDER BY. На каждую команду SELECT разрешается только одно предложение ORDER BY, и если оно используется, то должно быть последним в главной команде SELECT.
Однострочные подзапросы
Однострочный подзапрос возвращает из вложенной команды SELECT только одну строку. В подзапросах этого типа используется однострочный оператор сравнения.
Пример.
Вывод списка названий фильмов, имеющих такую же прокатную стоимость, что и фильм «Дом»
SQL> SELECT namef, stoimost_prok
2 FROM film
3 WHERE stoimost_prok =
4 (SELECT stoimost_prok
5 FROM film
6 WHERE namef = 'Дом');
NAMEF STOIMOST_PROK
------------------------- -------------
Дом 40
Азазель 40
Куклы 40
Ледниковый период 40
Первой выполняется команда SELECT вложенного блока запроса. Результат запроса – 40.
SQL> (SELECT stoimost_prok
2 FROM film
WHERE namef = 'Дом');
2. Далее обрабатывается главный блок запроса. Результат подзапроса используется при этом для вычисления условия поиска.
Фактически, для сервера Oracle главный запрос будет выглядеть следующим образом:
SQL> SELECT namef, stoimost_prok
2 FROM film
WHERE stoimost_prok = 40
Пример.
Вывод названия фильма и стоимости проката кассет всех фильмов, стоимость проката которых ниже средней.
SQL> SELECT namef, stoimost_prok
2 from film
3 WHERE stoimost_prok <
4 (SELECT AVG(stoimost_prok)
5 from film);
NAMEF STOIMOST_PROK
------------------------- ---------------------------
Звонок 35
Звонок 36
Куклы 20
Ошибки в подзапросах
Одна из распространенных ошибок — возврат однострочным подзапросом более, чем одной строки.
KLIENTID FILMID VIDACHA VOZVRAT
---------------- -------------- --------------- ---------------
1 1 01.02.03 01.04.03
1 11 01.01.03
2 1 12.03.03
Пример.
Подзапрос возвращает более одной строки, но использует однострочный оператор cравнения. Для исправления ошибки следует изменить "=" на "IN".
SQL> select namef, stoimost_prok
2 from film
3 where filmID =
4 (select filmID
5 from dogovor
6 where klientID<3);
(select filmID
*
ошибка в строке 4:
ORA-01427: подзапрос одиночной строки возвращает более одной строки