Лабораторная №2

Лабораторная работа №2

Тема: Microsoft Access - Работа с запросами
Цель: Научиться выполнять запросы на языке SQL

Теоретический материал:

Итак, Вы уже знаете, хотя и приблизительно, что такое запросы. Действительно, трудно представить себе работу с БД без использования запросов.
Как создать запрос в Access 2003? Для этого необходим в окне БД выбрать объект Запросы и вариант Создание запроса в режиме конструктора
[ Cкачайте файл, чтобы посмотреть картинку ]
Перед Вами, появиться окно Добавление таблицы с предложением выбрать таблицу или запрос. Можете смело отказаться от данного предложения, нажав кнопку отмена. Почему отказаться? Потому что данный вариант предлагает начать работу с QBE.
[ Cкачайте файл, чтобы посмотреть картинку ]
Наконец-то, для того чтобы перейти в режим SQL, Вам необходимо будет подвести указатель мышки в левый верхинй угол панели инструментов, где находиться кнопка, для перехода между различными вариантами работы с запросами. Нажмите кнопку для выбора режима SQL.
[ Cкачайте файл, чтобы посмотреть картинку ]
Все!!! Теперь остается только вводить запросы и проверять результаты. На рисунке, приведенном ниже, Вы можете увидеть текстовое поле для ввода запроса и кнопку на панели инструментов, содержащую восклицательный знак. После того, как Вы запишите SQL запрос, для его запуска необходмио будет воспользоваться указанной ранее кнопкой с восклицательным знаком.
[ Cкачайте файл, чтобы посмотреть картинку ]
Операторы языка SQL.
Команды языка SQL можно поделить на три категории:
DDL - Data Definition Language (Язык Определения Данных) - состоит из команд, которые создают объекты (таблицы, индексы, представления, и так далее) в базе данных.
DML - Data Manipulation Language (Язык Манипулирования Данными) - это набор команд, которые определяют какие значения представлены в таблицах в любой момент времени.
DCL - Data Control Language (Язык Управления Данными) - состоит из средств, которые определяют, разрешить ли пользователю выполнять определенные действия или нет.
Рассмотрим основные операторы DDL.
Выборка данных - оператор SELECT.
Замечание: SQL является регистронезависимым языком, то есть различия между большими и малыми буквами не существует.
Предположим у нас есть таблица, которая хранит информацию об имеющихся книгах и их атрибутах (см. рисунок).
[ Cкачайте файл, чтобы посмотреть картинку ]
Запрос, позволяющий отобразить всю таблицу (она называется Books) целиком, выглядит таким образом:
Select * From Books
Здесь: Select - оператор выборки данных; * - указывает, что должны выбираться все столбцы в том же порядке, как они определены в базе данных; ключевое слово From указывает откуда должны выбираться данные (имя таблицы).
Если же пользователю не нужна полная информация, он может указать какие столбцы необходимо выбирать и в каком порядке, расположив имена столбцов после инструкции Select, и разделив их запятыми.
Select Name, Author, Press, Pages
From Books
В этом случае пользователь выбирает только названия книг, их авторов, издательство и количество страниц.
Пользователь также имеет возможность форматировать вывод результата запроса на экран. Например, результат запроса
Select 'Book = ', Name, 'Press = ', Press
From Books
дает следующие результаты (см. рисунок).
[ Cкачайте файл, чтобы посмотреть картинку ]
Как можно заметить, у текстовых столбцов не очень понятное название (Expr2000 и т. п.). Так происходит потому, что таких столбцов в базе не существует и Access дает им собственные названия. Чтобы этого избежать, можно дать этим столбцам псевдонимы.
Select 'Book = ' as BookName, Name, 'Press = 'as PressName, Press
From Books
Результат представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
Кстати, такой псевдоним можно назначить даже существующему в таблице столбцу.
SQL также позволяет создавать "на лету" столбцы, значения в которых строятся на основе какого-либо выражения, в котором участвуют значения "реальных" столбцов, в каждой строке соответственно. Такой столбец называется вычислимым.
Например, вычислим общее количество страниц по имеющимся в наличии книгам.
Select Name, Quantity * Pages as TotalPages
From Books
Результат выполнения запроса представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
Бывают случаи, когда в результирующем наборе строк появляются дубликаты (идентичные строки). Например, рассмотрим следующий запрос:
Select Author From Books
Результат выполнения запроса представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
В данном случае мы получаем список всех авторов в таблице, но так как некоторые из них написали более одной книги, то в результирующем наборе встречаются одинаковые строки. Если нам это не нужно, то существует возможность исключить из результирующего набора строк дубликаты с помощью ключевого слова Distinct. Перепишем запрос:
Select Distinct Author From Books
Результат выполнения запроса представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
Как видите, строки-дубликаты больше не появляются пред наши светлы очи.
Однако, далеко не всегда нужно выбирать все строки таблицы. Если пользователю нужна какая-то конкретная информация, то он может ограничить результирующий набор строк, используя дополнительные условия (уточняя запрос).
Для установки условия используется ключевое слово Where и набор логических операторов:
> - больше
>= - больше либо равно
< - меньше
<= - меньше либо равно
= - равно
<> - не равно (в некоторых базах используется знак !=)
and - логическое "И" (умножение)
or - логическое "или" (сложение)
not - логическое "не" (отрицание)
between - принадлежность диапазону
in - проверка на членство в множестве
like - проверка на соответствие шаблону
is null - проверка на равенство значению NULL
Под значением NULL понимают неопределенное значение. Результатом логического выражения в SQL может быть либо истина, либо ложь, либо NULL (когда любая из частей выражения равна NULL). Строка будет включаться в результирующий набор только в том случае, если результат проверки условий отбора равен истине.
Приведем несколько примеров:
Запрос: необходимо вывести книги по программированию издательств "Питер" и "BHV"
Select Name as Название, Themes as Тематика, Press as Издательство
From Books
Where Themes = 'Программирование' and (Press = 'BHV' or Press = 'Питер')
Результат выполнения запроса представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
Замечание: строки в SQL берутся в одинарные кавычки
Запрос: отобразить все книги, у которых количество страниц лежит в пределах от 200 до 600
Select Name as Название, Pages as Страницы
From Books
Where Pages Between 200 And 600
Результат выполнения запроса представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
Запрос: отобразить все книги, имена авторов которых лежат в диапазоне от буквы 'В' до 'О'
Select Name as Название, Author as Автор
From Books
Where Name Between 'В' And 'О'
Результат выполнения запроса представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
Замечание: при сравнении с текстом, отбор осуществляется согласно ASCII-кодам символов
Запрос: выбрать книги, относящиеся к программированию или к базам данных, и издательства которых не 'Питер'и не 'Бином'
Select Name as Название, Themes as Тематика, Press as Издательство
From Books
Where Press not in ('Питер','Бином')
and
Themes in ('Программирование','Базы данных')
Результат выполнения запроса представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
Запрос: выбрать из таблицы тех авторов, у которых в имени и фамилии не менее трех букв 'а'
Select Name as Автор
From Books
Where Name Like '*а*а*а*'
Результат выполнения запроса представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
Оператор Like реализует поиск по шаблону:
* - означает, что данной позиции может присутствовать 0 или более любых символов (в других СУБД применяется символ %);
? - означает, что в данной позиции обязан присутствовать 1 любой символ (в других СУБД применяется символ _);
# - означает, что в данной позиции обязана присутствовать 1 любая цифра;
[a-z] - означает, что в данной позиции обязан присутствовать 1 символ из указанного диапазона;
[dfaf] - означает, что в данной позиции обязан присутствовать 1 символ из указанного множества;
[!safgwe] - означает, что в данной позиции обязан присутствовать 1 символ, не входящий в указанный диапазон.
Для сортировки результирующих строк используется оператор Order By с необязательным параметром Asc (стоит по умолчанию) - сортировка по возрастанию (по алфавиту для строк), или Desc - сортировка по убыванию.
Запрос: отобразить всех авторов и их книги, авторов отсортировать по возрастанию, а названия книг (по авторам) по убыванию (вторичная сортировка)
Select Author as Автор, Name as Название
From Books
Order By Author, Name Desc
Результат выполнения запроса представлен на рисунке.
[ Cкачайте файл, чтобы посмотреть картинку ]
Итог:
Запрос на выборку данных подчиняется строгой структуре:
Cначала указывается что выбрать и как отобразить (Select)
Затем откуда выбрать (From)
Как выбрать (Where)
Как сортировать (Order By)
Вставка данных - оператор INSERT.
Инструкция вставки работает по следующим правилам:
Insert Into Books
Values (100, 'Колобок', 10, 2001, 'Сказки', 'Народ', 'Москва', 1)
в данном случае значения вставляются во все столбцы таблицы в соответствии с их физическим порядком. Если необходимо вставить значения только в некоторые столбцы, то необходимо их явно указывать:
Insert Into Books (Id, Name, Themes, Quantity)
Values (1000, 'Колобок', 'Сказки', 1)
Значения столбцов должны идти в соответствующем порядке и быть соответствующего типа.
Модификация данных - оператор UPDATE.
Эта инструкция позволяет модифицировать существующие значения столбцов
Например:
Update Books
Set Quantity = 0
Where Themes = 'Web-дизайн'
данный запрос устанавливает количество книг по дизайну в 0.
В инструкции Set можно обновлять сразу несколько столбцов, перечислив их через запятую:
Update Books
Set Quantity = Quantity + 1, YearPress = 2002
Where Themes = 'Web-дизайн'
Также можно устанавливать новые значения, базируясь на предыдущих (см. предыдущий запрос).
Примечание: не забывайте ставить условие для обновления данных (Where), иначе инструкция Update установит новое значение для всего столбца.
Удаление данных - оператор DELETE.
А вот эту инструкцию следует использовать аккуратно. Например, запрос
Delete From Books
удалит содержимое всей таблицы
Опять-таки не забывайте ставить условия. Например, необходимо удалить из таблицы все записи для авторов с именем, которое начинается на букву 'А'
Delete
From Books
Where Author Like 'А*'
Примечание: инструкции Insert, Update, Delete не возвращают набора строк - они просто выполняются.

Ход работы:

Используя операторы языка SQL создать запросы для вашей базы данных:

Создать запрос отображения всех данных одной таблицы с оператором Select
Выбрать частичную информацию (3-4 поля) с одной таблицы помощью инструкции Select.
Выполнить запрос на вычисление
Создать 3-4 запроса используя логические операторы
Создать запрос на удаление. Не забываем работать с копией таблицы!!!
Запрос на вставку данных (оператор INSERT. )
Запрос на обновление

Вопросы:
Что такое SQL?
Категории языка SQL?
Как создать запрос в SQL?
Структура запроса на выборку
Логические операторы в SQL
Роль оператора Like?
Поиск по шаблону используя оператор like
Вставка данных - оператор INSERT.
Модификация данных - оператор UPDATE.
Удаление данных - оператор DELETE.




Создание запроса SQLЗапуск SQL-запроса Заголовок 1 Заголовок 3 Заголовок 415

Приложенные файлы

  • doc 106820
    Размер файла: 174 kB Загрузок: 0

Добавить комментарий