Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_пособие_СУБД_для_Москвы.doc
Скачиваний:
18
Добавлен:
31.07.2019
Размер:
9.45 Mб
Скачать

Лекция 2

  1. Использование языка sql ms access

Язык структурированных запросов (SQL) является стандартным средством для работы с базами данных и может использоваться как для интерактивной работы с базами данных, так и включаться в языки программирования. Применительно к CУБД Access SQL позволяет:

  • создавать, модифицировать или удалять таблицы в базе данных Access;

  • создавать или удалять индексы для таблиц в базе данных Access;

  • вставлять, удалять или модифицировать записи таблиц;

  • получать сводную информацию о данных в таблицах (число записей, суммы, средние, минимальные, максимальные значения и др.);

  • поиск данных в одной или более таблицах по запросу.

Рассмотрим основные операторы языка SQL для поиска информации в базе данных. Для этого используется оператор SELECT, синтаксис которого следующий:

SELECT список имен полей 1

FROM список имен таблиц

[WHERE условие]

[ORDER BY список имен полей 2]

[GROUP BY список имен полей 3]

где SELECT, FROM, WHERE, ORDER BY, GROUP BY - ключевые слова;

список имен полей - список имен полей, которые выбираются из одной или нескольких таблиц, указанных в списке имен таблиц, или вычисляемые поля, или агрегированные функции coutn, sum, min, max, avg и т.д. Для выбора всех полей вместо перечисления их имен можно использовать символ «*». Если имя поля таблицы содержит пробел, т.е. состоит из нескольких слов, то это имя должно заключаться в квадратные скобки;

список имен таблиц - список имен таблиц, из которых производится выбор.

Имена полей и таблиц нечувствительны к регистру клавиатуры.

Примеры:

SELECT * FROM Titles - выбор всех полей из таблицы Titles, для базы данных по библиографии.

SELECT Title, [Year Published] FROM Titles - выбор полей заголовков (Title) и года издания (Year Published) из таблицы Titles. Имя поля года издания берется в квадратные скобки (имеет пробел).

Для поиска информации, соответствующей некоторому условию, используется дополнение к оператору SELECT - WHERE, которое имеет следующий синтаксис:

SELECT список имен полей FROM список имен таблиц WHERE условие

где условие определяет критерий поиска информации.

В условии используются имена полей, операции сравнения (<, <=, =, >, >=, <>) и специальные операции сравнения IN, LIKE, BETWEЕN. Эти операции могут объединяться с помощью логических операций и задавать сложные условия поиска информации.

Примеры:

SELECT [Year Published], Title FROM Titles

WHERE [Year Published] > 1991 определяет выбор названий книг, год выпуска которых позже 1991.

SELECT [Last Name], [First Name] FROM Employees

WHERE [Last Name] = 'King' определяет выбор полей имен и фамилий из таблицы служащих, фамилии которых совпадают с фамилией King.

Операция IN сравнивает содержимое поля со списком значений, определяющих критерий поиска информации.

Примеры:

SELECT [Year Published], Title FROM Titles

WHERE [Year Published] IN (1995, 1996) определяет выбор книг, опубликованных в 1995 и в 1996 гг.

SELECT [Last Name], [First Name], City FROM Employees

WHERE City IN ('Interlaken', 'New York', 'Frankfurt') определяет выбор служащих, живущих в городах Interlaken, New York или Frankfurt.

Операция LIKE сравнивает содержимое поля со значением образца. Для записи образца используются строковые константы, символы шаблона и списки диапазона символов.

Символы шаблона следующие: *, ?, #. * - соответствует цепочке символов, ? - соответствует одному символу, # - соответствует одной цифре.

Примеры:

R* - возможные результаты поиска right, Roza.

AN? - возможные результаты поиска and, any.

12345# - возможные результаты поиска 123455, 123457.

Список диапазона заключается в квадратные скобки, первый и последний символы диапазона отделяются дефисом (-). Диапазон задается в возрастающем порядке.

Примеры:

SELECT [Last Name], [First Name] FROM Employees

WHERE [Last Name] LIKE 'S*' определяет выбор служащих, фамилии которых начинаются с буквы S.

SELECT Аuthor FROM Àuthors WHERE Àuthor LIKE [A-K] определяет выбор авторов, фамилии которых начинаются с букв от А до К.

SELECT Title FROM Titles

WHERE Title LIKE «*database*» AND [Year Publisher] = 1996 определяет выбор названий книг, в которых присутствует слово «database» и выпущенных в 1996 году.

Операция BETWEEN проверяет принадлежность значения поля диапазону значений и является включающим значением (выбираются записи, содержащие поле со значением, равным границе диапазона). Границы значений объединяются операцией AND.

Примеры:

SELECT [Order ID], [Order Date]

FROM Orders WHERE [Order Date] Between #1-1-94# And #6-30-94# определяет выбор документов первой половины 1994 года.

SELECT [Last Name], Salary FROM Employees

WHERE [Last Name] Between 'Lon' And 'Tol' определяет выбор зарплаты служащих, начальные буквы фамилий которых, расположенные в алфавитном порядке, находятся в диапазоне 'Lon' и 'Tol'.

Для определения порядка, в котором представляются результаты поиска записей, используется дополнение ORDER BY, синтаксис которого следующий:

SELECT список имен полей FROM список имен таблиц WHERE условие ORDER BY имя поля [DESC] [имя поля [DESC]]

где имя поля - поле, по которому производится упорядочение. Опция DESC устанавливает обратный порядок сортировки. Упорядочение может вестись по нескольким полям (сортировка, например, по фамилии, а затем по имени)

Пример:

SELECT Title FROM Titles WHERE Title LIKE «*database*» AND [Year Publisher] = 1996 ORDER BY Title

определяет выбор названий книг, в которых присутствует слово «database» и выпущенных в 1996 г., и упорядочивает названия в алфавитном порядке.

При работе с несколькими таблицами, каждое из рассмотренных дополнений условий выбора может быть применено для любой из таблиц. В общем случае при формировании запроса для нескольких таблиц указывается таблица, в которой ведется поиск полей и связь между таблицами. Синтаксис запроса для нескольких таблиц следующий:

SELECT список имен полей FROM список имен таблиц список связей

где список связей определяет, как таблицы в списке имен таблиц связаны между собой. В частности, для задания связи используется рассмотренное дополнение WHERE (WHERE имя_таблицы1.имя_поля1 = имя_таблицы2.имя_поля2).

Примеры:

SELECT Titles.Title, Publishers. [Company Name] FROM Titles, Publishers WHERE Titles.Pubid = Publishers.Pubid определяет выбор названий книг (Title) из таблицы названий (Titles) и названий издательств (Company Name) из таблицы издательств (Publishers). Дополнение WHERE определяет связь между таблицами (выбирается название книги и номер издательства из таблицы Titles, по номеру издательства в таблице издательств Publishers находится название издательства).

SELECT Titles.Title, Authors. Author, Publishers. [Company Name]

FROM Titles, Authors, Publishers WHERE Titles.au_id = Authors. au_id AND Titles.pubid = Publishers. Pubid определяет выбор из всех трех таблиц полной информации по книге (название, автор, издательство).

В целом, язык SQL имеет широкий набор средств для организации различных запросов, о которых можно более подробно узнать из литературы по SQL.