
- •Оглавление
- •Раздел 4. Проектирование реляционных баз данных. 113
- •Раздел 5. Определение структур данных и обслуживание баз данных. 114
- •Введение
- •Раздел 1. Основы теории баз данных Тема 1: Базы данных и информационные системы. Основные понятия.
- •Понятия базы данных и информационные системы.
- •Архитектура информационной системы.
- •Понятия базы данных и информационные системы.
- •Архитектура информационной системы.
- •Тема 2: Банки данных. Системы управления базами данных.
- •Банки данных. Основные компоненты системы.
- •Классификация субд.
- •Банки данных. Основные компоненты системы.
- •Классификация субд.
- •Раздел 2. Реляционная алгебра Тема1: Реляционная алгебра. Классические операции теории множеств.
- •Тема 2: Специальные операции теории множеств.
- •Раздел 3. Модели данных. Тема 1: Классические модели данных.
- •Сетевая модель представления данных.
- •Реляционная модель представления данных.
- •Элементы реляционной модели
- •Тема 2: Связывание таблиц. Целостность связей.
- •Основные виды связи таблиц.
- •Контроль целостности связей.
- •Характеристика видов связей
- •Раздел 4. Проектирование реляционных баз данных. Тема 1: Основные принципы проектирования баз данных.
- •2. Избыточное дублирование данных и аномалии
- •3. Формирование исходного отношения.
- •Тема 2: Метод нормальных форм
- •2. Выявление зависимостей между атрибутами
- •3. Нормальные формы
- •Тема 3: Метод сущность-связь. Этапы проектирования.
- •2.Этапы проектирования
- •3.Пример проектирования бд учебной части.
- •Тема 4: Правила формирования отношений.
- •2. Формирование отношений для связи 1:м
- •3. Формирование отношений для связи м:м
- •Раздел 5. Определение структур данных и обслуживание баз данных. Тема 1: Среда sql*Plus.
- •Функции.
- •2. Основные типы данных
- •3. Арифметические выражения
- •4. Операторы сравнения
- •5. Обработка неопределенных значений
- •6. Функции
- •7. Форматные модели
- •Тема 2: Структуры данных. Создание таблиц.
- •Создание таблиц.
- •3. Создание таблиц
- •Тема 3: Изменение таблиц и ограничений
- •Добавление и изменение столбца.
- •Изменение ограничений.
- •Удаление таблицы. Изменение имени таблицы и добавление комментариев.
- •Тема 4: Операции с ограничениями.
- •Тема 5: Манипулирование данными.
- •1. Вставка новых строк в таблицу
- •2. Копирование строк из другой таблицы
- •3. Обновление строк в таблице
- •4. Удаление строк из таблицы
- •Тема 6: Команда запроса данных. Простой запрос.
- •Тема 7: Сложные запросы.
- •Использование функций для работы с датами при организации запроса.
- •Тема 8: Группировка строк в запросе
- •2. Группы внутри групп.
- •3. Предложение having.
- •Тема 9: Подзапросы.
- •Подзапрос. Его назначение и синтаксис.
- •Однострочные и многострочные подзапросы.
- •Подзапрос. Его назначение и синтаксис.
- •2.Однострочные и многострочные подзапросы.
- •Тема 10: Выборка данных из нескольких таблиц.
- •2. Псевдонимы таблиц.
- •3. Дополнительные условия поиска.
- •4. Внешние соединения.
- •Select таблица.Столбец, таблица.Столбец
- •Тема 11: Создание, изменение и удаление последовательностей.
- •Создание последовательности.
- •2. Изменение и удаление последовательности.
- •3. Генерация значений последовательности.
- •Тема 12: Создание, изменение и удаление представлений.
- •Представления. Создание представлений.
- •Изменение и удаление представлений.
- •Представления. Создание представлений.
- •Изменение и удаление представлений.
- •Тема 13: «Индексы»
- •Понятие индекса. Необходимость использования.
- •Создание и удаление индексов.
- •1. Понятие индекса. Необходимость использования.
- •2. Создание и удаление индексов.
- •Тема 14: «Создание отчетов»
- •2. Форматирование number колонок.
- •3. Оформление Отчета пробелами и итоговыми строками.
- •4. Вычисление итоговых строк при изменении значения колонки.
- •5. Определение заголовков.
- •6. Установка размеров страницы
- •7. Сохранение и Печать Результатов Запроса
- •Тема 15: Управление транзакциями
- •Практикум Раздел 3. Реляционная алгебра.
- •Раздел 4. Проектирование реляционных баз данных.
- •Раздел 5. Определение структур данных и обслуживание баз данных.
- •Библиографический список
Тема 5: Манипулирование данными.
Вставка новых строк в таблицу.
Копирование строк из другой таблицы.
Обновление строк в таблице.
Удаление строк из таблицы.
1. Вставка новых строк в таблицу
Команда INSERT позволяет вставлять только по одной строке в таблицу.
Синтаксис:
INSERT INTO имя_таблицы [(столбец1[, столбец2…] ) ]
VALUES (значение 1[, значение 2…]);
Команда INSERT вставляет новую строку целиком, содержащую значения для каждого из столбцов (даже неопределенные). Символьные значения и даты заключаются в апострофы.
Пример 1: Добавление строки в таблицу.
INSERT INTO warehouse (id, name, location, area)
VALUES(2,'Иванов','ПК1','435')
2. Копирование строк из другой таблицы
Синтаксис:
INSERT INTO имя_таблицы (столбец [, столбец])
подзапрос;
где подзапрос возвращает строки в таблицу.
Пример 8: Запись информации о слушателе курса в таблицу s_emp.
INSERT INTO history (id, last_name, salary, title, start_date
SELECT id, last_name, salary, title, start_date
FROM s_emp
WHERE start_date<’01-JAN-06’;
При таком способе вставки строк в таблицу предложение VALUES не используется. Количество столбцов, указанных в предложении INSERT, должно совпадать с количеством столбцов в подзапросе.
3. Обновление строк в таблице
Синтаксис:
UPDATE имя_таблицы
SET столбец = значение [, столбец = значение…]
[WHERE условие];
где условие - задает строки, которые необходимо изменить, и состоит из имен столбцов, выражений, констант, подзапросов и операторов сравнения.
Пример 9: Обновление таблицы, добавив в первую запись новую дату.
UPDATE warehouse
SET data='10-09-03'
WHERE id=2
Пример 10: Обновление таблицы, добавив в последнюю запись значение даты и имени.
UPDATE warehouse
SET data='10-09-01', name='Сусликов'
WHERE id=6
Пример 11: Добавление значения даты в пятую строку таблицы.
UPDATE warehouse
SET data=sysdate
WHERE id=5
Пример 12: Обновление таблицы заполнением значениями 10000 по столбцу Зарплата.
UPDATE warehouse
SET zarpl=10000
4. Удаление строк из таблицы
Синтаксис:
DELETE FROM имя_таблицы
[WHERE условие];
где условие - задает строки, которые необходимо удалить, и состоит из имен столбцов, выражений, констант, подзапросов и операторов сравнения.
Примечание. Если вы пытаетесь удалить запись, на значение которой имеется ограничение, выдается сообщение об ошибке.
Пример 13:
DELETE FROM warehouse
WHERE id=4
Тема 6: Команда запроса данных. Простой запрос.
Команда SELECT /общий случай.
Организация простого запроса.
Псевдонимы столбцов.
Предотвращение выборки дубликатов строк.
Сортировка строк, возвращаемых запросом.
Ограничение количества выбираемых строк.
Команда SELECT /общий случай.
Команда SELECT выбирает информацию из базы данных. Синтаксис общей команды:
SELECT [DISTINCT] {*, имя_столбца [псевдоним], групповая_функция}
FROM имя_таблицы
[WHERE условие]
[GROUP BY выражение_группирования]
[HAVING условие_группы]
[ORDER BY {Имя_столбца, выражение} [ASC| DESC]];
Организация простого запроса.
В простейшей форме команда SELECT должна включать следующее:
SELECT [DISTINCT] {*, имя_столбца [псевдоним]}
FROM имя_таблицы;
Предложение SELECT – задает нужные столбцы. Звездочка (*) означает выбор всех столбцов таблицы. Предложение FROM указывает, в какой таблице находятся столбцы, заданные в предложении SELECT.
Пример 1: Вывод содержимого всех столбцов и строк таблицы S_DEPT.
SELECT* from S_DEPT;
Выборка заданных столбцов.
Вывод можно ограничить столбцами, имена которых указаны через запятую в предложении SELECT.
Пример 2: Вывести все номера отделов, коды служащих и их фамилии из таблицы EMP.
SELECT id_otdel, id_cotr, fam_cotr
From EMP;
Псевдонимы столбцов.
Изменить заголовок столбца можно с помощью его псевдонима. Псевдоним указывается в списке команды SELECT сразу за именем столбца и отделяется от него пробелом. По умолчанию такие альтернативные заголовки выводятся в символах верхнего регистра и не могут содержать пробелов, если псевдоним не заключен в кавычки (" ").
Пример 3: Вывод фамилии, заработной платы и суммы компенсационных выплат за год для каждого служащего. Объем выплат за год вычисляется путем прибавления к заработной плате ежемесячной премии в размере 100 долларов и умножения суммы на 12. Назвать столбец при выводе ANNUAL_SALARY.
SELECT id_cotr, fam_cotr, salary, 12*(salary+100) as ANNUAL_SALARY From EMP;
Пример 4: Вывод фамилии, заработной платы, должности и вычисленных комиссионных.
SELECT id_cotr, fam_cotr, salary, 12*(salary+100) “Зарплата за год”
From EMP;
Предотвращение выборки дубликатов строк.
При отсутствии указаний со стороны пользователя SQL*Plus включает в результаты запросов все строки, не изымая дубликаты. Ключевое слово DISTINCT, следующее сразу за словом SELECT, исключает дублирование строк.
Пример 5: Вывод всех названий отделов из таблицы S_DEPT, исключая дублирование
SELECT DISTINCT name
FROM S_DEPT;
Замечание: После квалификатора DISTINCT можно указать несколько столбцов. В этом случае он будет относиться ко всем выбранным столбцам.
Пример 6: Вывод всех возможных комбинаций должностей и номеров отделов.
SELECT DISTINCT id_otdel, id_cotr, fam_cotr From EMP;
5. Сортировка строк, возвращаемых запросом.
Порядок строк, возвращаемых в результате запроса, неопределен. Отсортировать строки можно с помощью предложения ORDER BY. Для сортировки можно задать выражение или позицию столбца в списке предложения SELECT.
По умолчанию строки сортируются по возрастанию (как ASC).
Порядок сортировки, принятый по умолчанию, меняется на противоположный с помощью слова DESC после имени столбца в предложении ORDER BY.
Пример 7: Вывод из таблицы S_EMP фамилии, номера отдела и даты начала работы каждого служащего. Результат сортируется по фамилиям.
SELECT DISTINCT id_otdel, id_cotr, fam_cotr FROM EMP
ORDER BY id_otdel;
Пример 8: Вывод из таблицы S_EMP фамилии, номера отдела и даты найма каждого служащего. Результат сортируется таким образом, чтобы служащие, нанятые последними, возглавляли список.
SELECT id_otdel, id_cotr, fam_cotr, start_date FROM EMP ORDER BY start_date DESC;
В предложении ORDER BY можно указать псевдоним столбца. Сортировка может быть организована по позиции. Он особенно полезен при сортировке по длинному выражению. Вместо повторного ввода выражения можно указать его позицию в списке SELECT
Пример 9: Выбираем строки из таблицы EMP и сортируем по второму столбцу.
SELECT id_cotr, fam_cotr, salary*12
From EMP
ORDER BY 2;
Сортировать результат можно и по нескольким столбцам. Предельным количеством столбцов сортировки является количество столбцов таблицы. Столбцы указываются в предложении ORDER BY через запятые. Сортировать можно и по столбцам, не входящим в список SELECT.
Пример 10: Вывод фамилии, номера отдела и заработной платы всех служащих. Результат сортируется по номерам отделов, а внутри отделов - в порядке убывания заработной платы.
SELECT id_cotr, fam_cotr, salary
FROM EMP
ORDER BY id_otdel, salary DESC;
6. Ограничение количества выбираемых строк.
Ограничить набор строк, возвращаемых в результате запроса, можно с помощью предложения WHERE. Предложение WHERE следует сразу за предложением FROM и задает условие, которое должно быть выполнено. Условие состоит из имен столбцов, выражений, констант и операторов сравнения.
Пример 11: Запрос для вывода имен, фамилий и должностей, служащих с фамилией “Петров”.
SELECT id_cotr, fam_cotr, salary
FROM EMP
WHERE fam_name=’Петров’;
Оператор BETWEEN.
Оператор BETWEEN используется для проверки вхождения значения в интервал значений (включая границы интервала). Нижняя граница должна быть указана первой.
Пример 12: Вывод имени, фамилии и даты найма служащих, нанятых в течение 1 года в период с 01 мая 1991 года по 1 мая 1992 г включительно.
SELECT id_otdel, id_cotr, fam_cotr, start_date
FROM EMP
WHERE start_date Between ’01-май-1991’ and ’01-май-1992';
Оператор IN.
Для проверки принадлежности значений к заданному списку используется оператор IN.
Пример 13: Вывод номера, названия отдела и номера региона для отделов в регионах 1 и 3.
SELECT id, name, region
FROM DEPT
WHERE Region in(1,3);
Оператор LIKE.
Используется для поиска строковых значений с помощью метасимволов (wildcards). Условия для поиска могут содержать символьные литералы или числа:
‘%’ означает отсутствие или некоторое количество символов;
‘_’ означает один символ.
В критерии поиска символы ‘%’ и ‘_’ можно сочетать с литералами в любой комбинации.
Оператор LIKE может использоваться в качестве быстрого эквивалента некоторых операций BETWEEN.
Пример 14: Вывод фамилий и дат найма для служащих, принятых на работу в 1991 году.
SELECT id_otdel, id_cotr, fam_cotr, start_date
FROM EMP
WHERE start_date LIKE ‘%91’;
Пример 15: Вывод фамилий, второй буквой которых является буква “а”
SELECT id_otdel, id_cotr, fam_cotr
FROM EMP
WHERE fam_cotr LIKE ‘_a%’;
Оператор IS NULL.
Неопределенные значения проверяются с помощью оператора IS NULL. Пользоваться оператором “=“ для сравнения с неопределенными значениями не следует, так как неопределенное значение не может быть равно или не равно какому-то другому.
Пример 16: Вывод номера, наименования и кредитного рейтинга всех клиентов, не имеющих торгового представителя.
SELECT id, name, credit_rating FROM s_customer WHERE saler_predst IS NULL;