Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Базы данных освоение работы в MS Access 2007. Электронное пособие
.pdf
7. Not LIKE
A B Not A
A ^ B
A v B
1 1 0 1 1
1 0 0 1 1
1
NULL
0
NULL
1
0 1 1 0 1
0 0 1 0 0
0
NULL
1 0 NULL
NULL
1
NULL
NULL
1
NULL
0
NULL
0
NULL
NULL
NULL
NULL
NULL
NULL
По стандарту SQL в шаблон могут входить специальные символы:
[ _ ] символ подчеркивания – для обозначения любого одиночного
символа
[ % ] символ процента – для обозначения любой последовательности
символов
8. Предикат сравнения с неопределенным значением IS NULL. При
сравнении неопределенных значений не действуют стандартные правила. Одно
неопределенное значение никогда не считается равным другому определенному
значению. Для выявления равенства значений используют стандартные
предикаты:
<имя атрибута> IS NULL или <имя атрибута> IS NOT NULL
В таблице истинности TRUE – 1, а FALSE – 0
Предикаты существования и не существования:
EXIST | Not EXIST Применяется во встроенных запросах.
Ключевое слово FROM должно присутствовать обязательно в каждом
запросе.
Если указано более одной таблицы, то неявно подразумевается, что над
перечисленными таблицами выполняется операция декартового произведения.
Таблицам можно присваивать имена-псевдонимы. Это удобно если нужно
объединить таблицу саму с собой.
Применение агрегатных функций в операторе SELECT
Данный оператор используется для формирования запроса и получения
информации из базы данных. Исполнитель запроса должен обладать
привилегией SELECT для всех таблиц, к которым осуществляется доступ.
81

Запросы могут быть отдельными операторами или быть частью определения
представления или курсора. Любой из запросов можно применять в качестве
подзапроса, чтобы получить значения, которые впоследствии будут
использованы другими операторами, включая сам оператор SELECT.
Иногда подзапрос выполняется отдельно для каждой строки,
обрабатываемой внешним запросов, при этом значения из этой внешней строки
будут использоваться в подзапросе. Запросы этого типа называются
зависимыми (correlated, коррелированными) подзапросами.
Результат запроса представляет собой таблицу, столбцы которой
определяется предложением SELECT как столбцы-результаты. Предложение
FROM определяет одну или несколько таблиц, из которых извлекаются
данные. Источником данных могут служить временные или постоянные
базовые таблицы, представления или выходные данные подзапросов, а также
другие операции с данными, результатом которых является таблица.
В предложении WHERE определяются критерии, которым должны
удовлетворять строки, чтобы их можно было использовать для получения
результата.
Предложение GROUP BY группирует выходные данные по одинаковым
значениям указанных столбцов. При использовании GROUP BY в
предложении SELECT могут быть указаны только те столбцы, которые
поименованы в фразе GROUP BY, и любые агрегатные функции.
Предложение GROUP BY применяется для выполнения агрегатных
функций над группами строк, которые имеют одинаковые значения в
указанных столбцах. Если GROUP BY отсутствует, то агрегатные функции
либо не используются вообще, либо используются для всех выходных
столбцов. Если все столбцы используют агрегатные функции, то все строки,
удовлетворяющие предложению WHERE, или все строки, извлекаемые
предложением FROM (если WHERE не задано), рассматриваются как одна
группа для получения агрегатных (групповых) значений.
Предложение HAVING определяет критерии, которым должны
удовлетворять группы строк, формируемые предложением GROUP BY, чтобы
их можно было поместить в выходные данные с помощью запроса.
Операции UNION INTERSECT и EXCEPT применяются для
объединения выходных данных нескольких запросов. Далее они будут описаны
подробнее. С помощью предложения ORDER BY можно расположить
результаты одного или нескольких запросов в определенном порядке.
Список, приведенный ниже, определяет последовательность обработки
предложений в операторе
82

SELECT:
1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 6. {UNION
или EXCEPT} 7. INTERSECT 8. ORDER BY
Каждое предложение описано далее в отдельном подразделе в
соответствии с порядком, определенным в синтаксической структуре
оператора.
Предложение SELECT стоит первым в синтаксической структуре, однако
не является первым логическим исполняемым шагом. Результатом выполнения
других предложений оператора (источников строк) являются наборы строк, из
которых должны быть получены выходные данные. Предложение SELECT
определяет, какие столбцы этих строк относятся к выходным данным. SELECT
может возвращать как сами значения столбцов, так и использовать их в составе
агрегатных функций или других выражений.
Вложенные запросы
Вложенные запросы – это некий аналог временных таблиц. Можно
использовать в предложении ИЗ, в том числе в соединениях, в условии В / В
ИЕРАРХИИ. Вложенные запросы обязательно должны быть в скобках и иметь
псевдоним. Обычно лучше 1 большой запрос с вложенными, чем
последовательность запросов из модуля. Некоторые задачи без вложенных
запросов решить языком запросов невозможно.
При разработке вложенных запросов полезно иерархическое дерево
Консоли запросов. Каждая вложенная ветка – это вложенный запрос. Корень
(или начало ветвления) – это весь запрос.
Конструктор запросов понимает вложенные запросы. При щелчке по
пиктограмме редактирования, расположенной над выбранными таблицами,
когда курсор расположен на таблице-источнике (вложенном запросе)
запускается еще один конструктор запросов.
Вложенный запрос видит только себя, он не видит внешний запрос.
Варианты решения (зависят от конкретной задачи):
• Использовать разыменование ссылочных полей.
• Для построения вложенных запросов, связанных с внешним, т.е.
вложенный запрос должен выполниться для каждой строки внешнего запроса,
нужно сделать левое внешнее соединение и сделать весь этот запрос
вложенным.
83

Внешнее объединение (правое, левое)
Существуют три разновидности объединений.
1. Перекрестные объединения (CROSS JOIN). Декартово (перекрестное)
произведение двух наборов данных. Произведение не определяет отношений
между наборами, а лишь содержит все возможные комбинации записей
объединяемых наборов.
2.Внутренние объединения (INNER JOIN). Подмножество декартова
произведения двух наборов данных с критерием, используемым для
объединения записей. Критерий возвращает логическую величину — признак
вхождения записи в объединенный набор.
3. Внешние объединения (OUTER JOIN). Как и внутренние
объединения, содержат критерий объединения записей, но обязательно
возвращают минимум один экземпляр каждой записи заданного набора. Это
может быть левый набор (источник данных слева от ключевого слова JOIN),
правый набор (источник данных справа от ключевого слова JOIN) или оба
набора в зависимости от конкретной разновидности внешнего объединения.
Пустые поля в тех частях записей, которые не отвечают критерию объединения,
содержат NULL. С другой стороны, внешнее объединение может сохранить
записи, для которых не находится соответствия в других наборах. В этом
случае недостающие поля заполняются значениями NULL. Решение о том,
войдет ли такая запись во внешнее объединение, зависит от того, в каком из
объединяемых наборов отсутствуют данные, и от типа внешнего объединения.
Существуют три разновидности внешних объединений
1. Левое внешнее объединение. Всегда содержит как минимум один
экземпляр каждой записи из набора, указанного слева от ключевого слова JOIN.
Отсутствующие поля из правого набора заполняются значениями NULL.
2.Правое внешнее объединение. Всегда содержит как минимум один
экземпляр каждой записи из набора, указанного справа от ключевого слова
JOIN. Отсутствующие поля из левого набора заполняются значениями NULL.
3.Полное внешнее объединение. Всегда содержит как минимум один
экземпляр каждой записи каждого объединяемого набора. Отсутствующие поля
в записях нового набора заполняются значениями NULL. Например, у нас есть
библиотека с таблицами books и editions из базы данных booktown. Если в
таблице books содержится общая информация о книгах, то в таблице editions
хранятся данные, относящиеся к конкретному изданию — код ISBN, издатель и
84

дата публикации. В таблицу editions входит поле book_id, связывающее ее с
полем id, которое является первичным ключом таблицы books.
Допустим, вы хотите получить информацию о каждой книге вместе со
всеми имеющимися кодами ISBN. Запрос с внутренним объединением таблиц
books и editions вернет набор данных с названиями книг и кодами ISBN, но, как
видно из листинга 4.38, если у книги нет печатного издания (или информация
об этом издании еще не занесена в базу данных booktown), информация о ней
не включается в результат.
Операторы манипулирования данными языка SQL
1) DELETE – удалить строку (опер-р удаления записей)
DELETE FROM <имя таблицы> [WHERE <условие>]
Этот оператор согласуется с условиями поддержки целостности БД,
поэтому он не всегда выполняется корректно. Результатом выполнения
оператора DELETE является удаление из указанной таблицы строк, которые
удовлетворяют условию, определенному операндом WHERE. Если
необязательный операнд WHERE опущен, т.е. условие отбора удаляемых
записей отсутствует, удалению подлежат все записи таблицы
2) INSERT – вставить строку (оператор вставки новых записей) имеет
форматы двух видов:
INSERT INTO <имя таблицы> [(<список столбцов>)] VALUES
(<список значений>) и
INSERT INTO <имя таблицы> [(<список столбцов>)] <предложение
SELECT>
В первом формате оператор INSERT предназначен для ввода новых
записей с заданными значениями в столбцах. Порядок перечисления имен
столбцов должен соответствовать порядку значений, перечисленных в списке
операнда VALUES. Если <список столбцов> опущен, то в <списке значений>
должны быть перечислены все значения в порядке столбцов структуры
таблицы. Во втором формате оператор INSERT предназначен для ввода в
заданную таблицу новых строк, отобранных из другой таблицы с помощью
предложения SELECT.
3) UPDATE – обновить строку (оператор изменения записей). Обновляет
значения одного или нескольких столбцов в 1 или нескольких строках в
соответствии с некоторыми условиями и имеет формат вида:
UPDATE <имя таблицы> SET <имя столбца> = {<выражение> ,
NULL } [, SET <имя столбца> = {<выражение>, NULL }...] [WHERE
<условие>]
85

Выполнение оператора UPDATE состоит в изменении значений в
определенных операндом SET столбцах таблицы для тех записей, которые
удовлетворяют условию, заданному операндом WHERE.
Новые значения полей в записях могут быть пустыми (NULL), либо
вычисляться в соответствии с арифметическим выражением. Правила записи
арифметических и логических выражений аналогичны соответствующим
правилам оператора SELECT.
4) SELECT – оператор выборки записей
5) Операторы управления транзакциями
6) Операторы администрирования
В большинстве современных коммерческих СУБД значительно
расширяют набор операторов.
Защита информации в БД
К защите информации относится: парольная защита, защита на уровне
пользователя и шифрование.
Парольная защита является простым средством обеспечения защиты
БД, используемый при этом пароль называют паролем БД. Парольная защита
может использоваться в дополнение к защите на уровне пользователя. В этом
случае устанавливать парольную защиту может пользователь, обладающий
правами администратора БД. Защитить БД паролем, а затем защитить ее на
уровне пользователя нельзя!
Если парольная защита действует наряду с защитой на уровне
пользователя, то пользователю предоставляется возможность выполнять над
объектами БД действия, предусмотренные правами доступа. Парольная защита
является достаточно надежной, так как пароль шифруется и, к нему нет
прямого доступа.
Защита на уровне пользователя применяется в случае, если с БД
работают несколько пользователей или групп пользователей, имеющих разные
права доступа к объектам БД.
Данная защита осуществляется на основе двух подходов:
Избирательный подход – права назначаются (даются) пользователю
(человеку). Разные пользователи имеют разные права, но администратор
должен это все менять при переходе в другой отдел и так далее.
Обязательный подход. Каждому объекту БД присваивается некоторый
уровень доступа, потом человека приписывают к этому объекту БД.
Типы прав доступа: Открытие/запуск (открытие базы данных, формы
или отчета, запуск макроса), Монопольный доступ (открытие БД для
86

монопольного доступа), Чтение макета (просмотр объектов в режиме
конструктора), Изменение макета (просмотр и изменение маета объектов или
удаление объектов), Администратор (для БД установка пароля, репликация, и
изменение параметров запуска. Для объектов БД: полные права на объекты и
данные, в том числе предоставление прав доступа), Чтение данных (просмотр
данных), Обновление данных (просмотр и изменение данных без их вставки и
удаления), Вставка данных (просмотр и вставка данных без их изменения и
удаления), Удаление данных (просмотр и удаление данных без их изменения и
вставки).
Шифрование баз данных. Шифровать незащищенную БД большого
смысла нет, так как дешифровать БД может любой пользователь на этой или
другой ЭВМ, где установлена система. Более того, пользователь может открыть
и использовать зашифрованную БД как и обычную незашифрованную. Повидимому, шифрация применяется, чтобы изменить до неузнаваемости
стандартный формат файла БД. При выполнении процедуры
шифрация/дешифрация БД не нужно задавать ключ шифрации, невозможность
установить ключ самостоятельно и сводит на нет всю мощь механизма
шифрации.
Практическая работа №10
Использование SQL при работе с MS Access.
Цель работы: научиться создавать, удалять, изменять таблицы и индексы
в MS Access с помощью инструкций SQL; понять принципы взаимодействия с
базами данных.
SQL(Structured Query Language) – переводится как «структурированный
язык запросов».
Результатом данной лабораторной работы будет создание базы данных
Library. Эта база данных имитирует информационное хранилище домашней
библиотеки и состоит из 5 таблиц: authors (авторы), publishers (издательства),
typetitles (тип публикации), titleauthor (название-автор), titles (названия).
Замечание ко всем заданиям: для всех инструкций SQL необходимо
выполнить следующие действия:
1. В окне базы данных выберите Запросы в списке Объекты и нажмите
кнопку Создать на панели инструментов окна базы данных.
2. В диалоговом окне Новый запрос выберите Конструктор и нажмите
кнопку OK.
87

3. Не добавляя таблицы или запросы, нажмите кнопку Закрыть в
Имя столбца
Для чего
предназначен
Тип данных
Возможность
содержать
NULL
Значение по
умолчанию
Id
Первичный
ключ
COUNTER
Нет
Нет
Pubname
Название
издательства
varchar(40)
Нет
Нет
Country
Страна
Varchar(30)
Нет
«Россия»
City
Город
Varchar(40)
Нет
Нет
Имя столбца
Для чего
предназначен
Тип данных
Возможность
содержать
NULL
Значение по
умолчанию
Id
Первичный
ключ
COUNTER
Нет
Нет
Name
Название типа
публикации
varchar(40)
Нет
Нет
диалоговом окне Добавление таблицы.
4. В меню Запрос выберите команду Запрос SQL и подкоманду
Управление.
5. Введите инструкцию SQL для управляющего запроса. Каждый
управляющий запрос может содержать только одну управляющую инструкцию.
Для запуска запроса нажмите кнопку Запуск на Ленте вкладок.
Структуры таблиц.
Задание №1. Создание таблицы.
Задание №2. Изменение структуры таблицы.
Задание №3. Создание индексов.
Задание №4. Создание реляционных связей между таблицами.
Задание №5. Добавление, изменение, удаление записей таблицы.
Задание №6. Запросы к одной таблице с использованием агрегатных
функций и раздела GROUPBY.
Задание №7. Запросы с соединениями.
Структуры таблиц
Таблицы определены следующим образом:
Таблица authors
Таблица typetitles
88

Таблица titles
Имя
столбца
Для чего предназначен
Тип данных
Возможность
содержать
NULL
Значение по
умолчанию
Id
Первичный ключ
COUNTER
Нет
Нет
Title
Название публикации
varchar(40)
Нет
Нет
DatePub
Дата издания
DateTime
Нет
GETDATE()
Notes
Комментарии
Varchar(200)
Да
Нет
Typetitles
Тип публикации
(внешний ключ
ссылается на первичный
ключ TypeTitles)
LONG
нет
Нет
Publishers
Издательство (внешний
ключ ссылается на
первичный
ключPublishers)
LONG
Нет
Нет
Имя
столбца
Для чего предназначен
Тип данных
Возможность
содержать NULL
Значение по
умолчанию
Id
Первичный ключ
COUNTER
Нет
Нет
Title
Название публикации
(внешний ключ
ссылается на
первичный ключ titles)
LONG
Нет
Нет
Author
Автор (внешний ключ
ссылается на
первичный ключ
Author)
LONG
Нет
Нет
Таблица titleauthor
1. Создайте новую базу данных. Наша база данных пока не содержит ни
одного объекта (таблицы, индекса, запроса и т.п.)
2. Создайте таблицу authors, используя инструкцию для создания
таблицы:
CREATE TABLE <имя таблицы> (<имя столбца1> тип столбца,<имя
столбца2> тип столбца,…);
Возможно указание после типа столбца и до запятой следующих секций:
PRIMARY KEY (столбец является первичным ключом), UNIQUE (в столбце
не может содержаться повторяющихся значений), NOT NULL (столбец не
может содержать пустые (NULL)) значения, DEFAULT (значение по
Задание №1. Создание таблицы
89

умолчанию, если при добавлении записи не указано иное), CHECK
(ограничение на значение столбца).
Проанализируйте, какие секции потребуются, исходя из структуры
таблицы authors.
3. Занесите в таблицу две строки, не нарушая установленных
ограничений целостности. Попробуйте занести строки, содержимое которых
противоречит определенным ограничениям. Проверьте, что занесенные строки
действительно содержатся в таблице.
Задание №2. Изменение структуры таблицы
1. Может случиться, что при проектировании структуры таблицы были
учтены не все столбцы и требуется добавить еще один столбец. Для этой цели
используют следующую инструкцию SQL:
ALTER TABLE <имя таблицы>ADD COLUMN <имя столбца> тип
столбца;
2. Придумайте и добавьте подходящий столбец в таблицу authors.
3. Проверьте, что добавленный столбец действительно содержится в
таблице.
4 Для удаления столбца из структуры таблицы применяется следующая
инструкция:
ALTER TABLE <имя таблицы>DROP COLUMN <имя столбца> тип
столбца;
Задание №3. Создание индексов
Индексы – это объекты базы данных, которые позволяют при обращении
к таблице, по которой создан индекс, использовать определенный порядок
записей.
1. При указании ограничения PRIMARY KEY для какого-либо столбца в
базе данных автоматически генерируется индекс с уникальным для базы
данных именем по этому столбцу. Убедитесь в создании индекса. Для этого в
режиме конструктора таблицы authors нажмите кнопку Индексы на ленте
вкладок.
2. Если в первичный ключ должно входить несколько полей или
необходимо создать индекс с определенным именем, то используется
следующая инструкция:
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
