Операторы групповой обработки значений поля
Запросы могут производить обобщенную групповую обработку значений полей. Это реализуется с помощью функций: AVG, SUM, MAX, MIN, COUNT.
В логических и арифметических выражениях можно использовать функции: AVG (среднее значение в поле), MAX (максимальное значение поля), MIN (минимальное), COUNT (подсчет количества строк): числовые и символьные.
SUM (сумма значений поля): только числовые значения
Пример : найти сумму всех товаров в таблице ТОВАРЫ.
SELECT SUM (цена)
FROM ТОВАРЫ;
Пример: подсчитать количество фирм, производящих товар.
SELECT COUNT Номер компании
FROM Компании;
Пример: Подсчитать общее число строк в таблице КОМПАНИИ.
SELECT COUNT (*)
FROM Компании;
COUNT со звездочкой включает записи с NULL (неопределенным значением) и дубликаты.
Пример : определить товар с максимальной ценой.
SELECT MAX (Цена)
FROM ТОВАРЫ;
В результате запроса будет получено только одно значение.
Сортировка результатов поиска
Если указаны несколько полей, то столбцы вывода упорядочиваются один внутри другого, при этом можно определять возрастание (ASC) и убывание (DESC) для каждого столбца. Необходимо, чтобы поле, по которому происходит упорядочивание, было указано в операторе SELECT.
Пример: вывести наименования товаров в алфавитном порядке.
SELECT * FROM ТОВАРЫ
ORDER by Название товара ASC;
Пример: вывести наименования компаний в порядке возрастания, а их адреса в порядке убывания.
SELECT *
FROM Компании
ORDER by Название компании ASC, адрес DESC;
Пример: поместить в запрос название единицы измерения цены товара.
SELECT название товара, тип товара, ‘у.е.’, цена
FROM ТОВАРЫ;
МНОГОТАБЛИЧНЫЕ ЗАПРОСЫ
В реляционных таблицах допускается наличие одинаковых полей в разных таблицах.
Поэтому при формировании многотабличного запроса в разных таблицах могут встретиться одинаковые поля, во избежание этого синтаксис многотабличных запросов следующий:
Товары. Название товара,
где Товары – имя таблицы;
Название товара – поле этой таблицы.
При построении многотабличного запроса в операторе WHERE необходимо выполнить связывание таблиц по одинаковому полю, а затем накладывать остальные условия
Пример: определить какие товары поставляются фирмами.
SELECT Товары. название товара, Компании. название товара
FROM Товары, Компании
WHERE Товары. Номер компании = Компании. Номер компании;
Пример: определить компанию, которая производит товар «кружка».
SELECT Товары. Название товара
FROM Товары, Компании
WHERE Товары. Номер компании = Компании. Номер компании and Товары. Название товара = ‘кружка’;
Пример: выбрать товары, произведенные в Москве в порядке убывания их цены.
SELECT Товары. Название товара, Товары. Цена
FROM Товары, Компании
WHERE Товары. Номер компании = Компании. Номер компании and Компании. Адрес = ‘Москва’
ORDER BY Товары. Цена DESC;
ВНЕСЕНИЕ ИЗМЕНЕНИЙ В БАЗУ ДАННЫХ
Для внесения изменений в базу данных используют три оператора:
UPDATE – изменение значений строк таблицы;
INSERT INTO – вставка новых записей (строк таблицы);
DELETE – удаление записей таблиц.
Оператор изменения записи
UPDATE <имя таблицы>
SET <имя столбца> = {<выражение>, NULL}
[, SET <имя столбца> = {<выражение>, NULL}…]
[WHERE <условие>]
Пример: изменить тип всех товаров на «Посуда».
UPDATE ТОВАРЫ
SET Тип товара = ‘Посуда’;
Пример: увеличить на 500 единиц стоимость товаров, которые выпускает фирма – производитель с кодом 15.
UPDATE ТОВАРЫ
SET Цена = цена + 500
WHERE Номер компании 15;
Пример: уменьшить в два раза стоимость товаров, наименование которых «Мягкая игрушка», произведенных фирмой «Алиса».
UPDATE ТОВАРЫ
SET Цена = Цена / 2
WHERE Название товара = ‘Мягкая игрушка’ AND номер компании =
(SELECT номер компании
FROM Компании
Where название компании = ‘Алиса’);
Оператор добавления записей
INSERT INTO <имя таблицы>
[(<список столбцов>)] или
VALUES (<список значений>);
Оператор предназначен для ввода новых записей с заданными значениями в столбцах. Порядок перечисления имен столбцов должен соответствовать порядку значений, перечисленных в списке операнда VALUES.
Если <список столбцов> опущен, то в <списке значений> должен быть перечислены значения в порядке столбцов структуры таблицы.
Пример:ввести в таблицу ТОВАРЫ запись о новом товаре.
INSERT INTO ТОВАРЫ
VALUES (123, ‘Посуда’, Ф100, ‘Кружка керамическая’, 45,00 );
При необходимости допускается указывать столбцы, куда необходимо осуществить вставку значения, что позволяет это делать в любом порядке.
Пример:
INSERT INTO ТОВАРЫ (название товара, тип товара, цена)
VALUES (‘Кружка керамическая’, ‘Посуда’, 45,00 );
Столбцы Номер товара и Номер компании отсутствуют, т.е. для этих полей автоматически устанавливаются значения по умолчанию.
Значение по умолчанию может быть введено заранее или это будет NULL значение. Если ограничение запрещает использование значения NULL в данном поле, то необходимо заранее позаботится об обеспечении столбца содержательным значением для любой команды INSERT.
Оператор удаления записей
DELETE FROM <имя таблицы>
[WHERE <условие>];
Команда удаляет всю строку таблицы целиком, а не отдельные значения того или иного поля.
Пример: удалить содержимое таблицы ТОВАРЫ
DELETE FROM ТОВАРЫ;
В процессе работы чаще всего необходимо удалять не все данные, а только определенные строки из таблицы.
Пример: необходимо удалить все товары с наименованием «лампа».
DELETE FROM ТОВАРЫ
WHERE название товара = «Лампа настольная»;
Пример: необходимо удалить из таблицы ТОВАРЫ информацию о товарах, у которых фирма - производитель находится в Москве.
DELETE FROM ТОВАРЫ
WHERE номер компании =
(SELECT номер компании
FROM Компании
WHERE адрес = ‘Москва’);
СРЕДСТВА ЗАЩИТЫ БД
Основные средства защиты
Средства защиты БД условно делятся на две группы: основные и дополнительные.
К основным средствам защиты относятся средства:
· парольной защиты;
· шифрования данных и программ;
· установления прав доступа к объектам БД;
· защиты полей и записей таблиц БД.
Парольная защита представляет собой простой и эффективный способ защиты БД от несанкционированного доступа. Пароли устанавливаются конечным пользователями или администраторами. Учет и хранение паролей производится самой СУБД. Пароли хранятся в определенных системных файлах СУБД в зашифрованном виде. После ввода пароля пользователя СУБД предоставляются все возможности по работе с защищенной БД. Саму СУБД защищать паролем нет смысла.
Шифрование данных (всей базы или таблиц) применяют для того, чтобы другие программы «знающие формат БД этой СУБД», не могли прочитать данные.
Шифрование исходных текстов программ позволяет скрыть от несанкционированного пользователя описание соответствующих алгоритмов.
В целях контроля использования основных ресурсов СУБД во многих системах имеются средства установления прав доступа к объектам БД. Права доступа определяют возможные действия над объектами. Владелец объекта, а так же администратор БД имеют все права. Остальные пользователи имеет различные уровни доступа.
По отношению к таблицам предусматриваются следующие права доступа:
· просмотр (чтение) данных;
· редактирование данных;
· добавление новых записей;
· добавление и удаление записей;
· все операции, в том числе изменение структуры таблицы.
К данным, имеющимся в таблице, могут применяться меры защиты по отношению к отдельным полям и отдельным записям:
· полный запрет доступа;
· только чтение;
· разрешение всех операций.
По отношению к формам две операции:
· вызов для работы и разработка (вызов Конструктора);
· запрет вызова Конструктора (необходимо для экранных форм готовых приложений, чтобы конечный пользователь случайно не испортил приложение).
В самих экранных формах можно защитить отдельные элементы таблиц. Например, некоторые поля исходной таблицы вообще могут отсутствовать или скрыты от пользователя, а некоторые поля - доступны для просмотра.
На отчеты может накладываться запрет на вызов средств их разработки.
Для исключения просмотра и модификации (случайной и преднамеренной) текстов программ, используемых в приложения СУБД, помимо шифрации, может применяться их парольная защита.