Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Язык запросов SQL
Теоретические сведения
1. Предназначение языка SQL
Язык SQL предназначен для построения баз данных и управления ими, а также для создания разнообразных запросов с целью поиска нужных данных. Язык SQL имеет большие возможности, является более универсальным, чем технология QBE (Query by Example создание запросов с помощью конструктора). Стандарт язык SQL ANSI 92 реализован в разных программных средах и на разных компьютерных платформах. В программе MS Access язык используется в видоизмененном и не полностью совместимом со стандартом варианте и называется SQL Microsoft Jet.
При помощи команд языка можно создать объекты БД, например, таблицы, модифицировать структуру ранее созданных объектов, построить запросы на выборку записей, в том числе, параметрические, перекрестные, на создание новой таблицы, на вычисления в таблицах и т. д.
2. Управление таблицами
Чтобы перейти в режим SQL, нужно открыть любую БД или при создании новой БД перейти на закладку ЗАПРОСЫ и выполнить команду СОЗДАТЬ ЗАПРОС С ПОМОЩЬЮ КОНСТРУКТОРА. После этого переходим в режим SQL с помощью команд главного меню ВИД→ЯЗЫК SQL. Получим окно для построения запроса средствами языка, куда вводят предложения языка.
Предложение может начинаться со слов CREATE, SELECT, INSERT, UPDATE, DELETE, ALTER, DROP и т. д. Полное предложение называют конструкцией SQL (или запросом SQL). Оно состоит из одной или нескольких команд и заканчивается символом «;».
Выполняют конструкцию командой ВЫПОЛНИТЬ или нажимают на кнопку запуска на панели инструментов.
Рассмотрим главные команды и конструкции языка.
Для создания новой таблицы следует ввести команду
CREATE TABLE таблица(поле1 тип1, поле2 тип2, …);
Имена таблице и полям дает пользователь. Типы полей есть такие:
Тип поля |
Описание |
Integer |
Целые числовые данные |
Char или Text(n) |
Текстовые данные, где n длина данного |
Real |
Короткие действительные числовые данные |
Float |
Длинные действительные числовые данные |
Binary(n) |
Логические данные со значениями true, false с указанием длины данного |
Bit |
Логические данные со значениями 1, 0 |
Counter |
Счетчик |
Datetime |
Дата и время |
Money |
Денежные данные |
Image |
Картинка |
Одно из полей можно сделать ключевым, дописав после указания его типа служебные слова PRIMARY KEY.
Если имя таблицы или поля содержит пробел или другой разделительный символ, то его записывают в квадратных скобках:
CREATE TABLE Склад1([Номер товара] integer, [Название товара] text(30), Цена real, Количество integer, Импорт bit, Картинка image);
Модифицировать структуру таблицы можно командой
ALTER TABLE таблица действиеCOLOMN поле тип;
Над полем определены такие действия:
ADD добавить, DROP удалить, ALTER поменять тип поля.
Чтобы удалить всю таблицу из БД, выполняют команду:
DROP TABLE таблица;
Добавить запись в конец созданной таблицы можно так:
INSERT INTO таблица(поле1, поле2…);
VALUES(значение1, значение2,…);
Пустую таблицу заполняют данными в визуальном режиме, перейдя на закладку ТАБЛИЦЫ и открыв нужную таблицу для ввода данных. Для замены данных в полях существующей таблицы служит команда
UPDATE таблица SET поле=выражение WHERE условие;
Пример 1. Внести изменения в таблицу ТОВАРЫ, если цена одного из наименований товаров (например, телевизоров) уменьшилась на 10%:
UPDATE Товары SET Цена=Цена*0.9
WHERE Наименование= «телевизор»;
Записи удаляют из таблицы с помощью команды
DELETE FROM Таблица WHERE условие;
Значение поля можно удалять путем создания запроса на обновление поля значением Null.
3. Создание запросов на выборку записей
Выборка это динамический набор данных из базы, отображающийся на экране компьютера. Выборку записей создают при помощи конструкции SELECT:
SELECT предикат список полей
FROM таблица {IN адрес внешней БД на диске}
{WHERE условие поиска}
{GROUP BY поле для группировки записей}
{HAVING дополнительное условие поиска в группе}
{ORDER BY список полей для сортировки};
Команды, приведенные в фигурных скобках, необязательны.
Предикатом может быть служебное слово ALL (показать все найденные записи), TOP n показать первые n записей, TOP n PERCENT показать первые n% записей; DISTINCT показать только различные записи.
Список полей содержит имена полей, отображаемых в выборке. Элементы списков отделяются запятыми. Все поля таблицы обозначаются так: таблица .* или *, если рассматривается одна таблица.
Источником данных может быть одна или несколько таблиц текущей или внешней базы данных.
Имена полей из разных таблиц должны быть дополнены именами таблиц. Между именами записывают точку, например Склад1.Цена, Товары.Цена.
Если таблиц несколько, то их объявляют списком в команде FROM. Если между двумя таблицами установлена внутренняя связь по некоторому полю, например, [Номер товара], то команду FROM надо писать так:
FROM таблица1 INNER JOIN таблица2
ON таблица1.[Номер товара]=таблица2.[Номер товара].
Команда ORDER BY служит для сортировки полученных записей по возрастанию или по убыванию. соответствующее направления сортировки задается предикатами ASC или DESC, которые записывают после имени поля.
Пример 2. Из таблицы ТОВАРЫ выбрать первые три записи со всеми полями о товарах дешевле 100 грн. Решение:
SELECT TOP 3 *
FROM Товары
WHERE Цена<100;
4. Поиск данных в БД
Команда WHERE является важнейшей в конструкции SELECT. Она служит для отбора нужных записей согласно некоторому критерию (условию поиска). Условие поиска это простое или составное логическое выражение. Простое логическое выражение это два выражения, соединенные операцией отношения: =, <, >, <>, <=, >=, !=.
Выражения могут содержать имена полей и постоянные величины, соединенные допустимыми операциями. Составные логические выражения образовывают из простых или при помощи логических операций NOT, AND, OR и других, как это принято в языках программирования.
Рассмотрим примеры условий поиска:
1) [Название товара]= «телефон»;
2) [Дата изготовления]=#5/21/05#;
3) NOT Продавец= «Афоня» или Продавец != «Афоня»;
4) Мат>3 and Физ>3 and Инф>3;
5) [Цена товара] >20.5 AND [Цена товара]<80.2.
Для последнего примера определена более удобная и компактная конструкция:
[Цена товара] BETWEEN 20.5 AND 80.2.
Все даты за последние 30 дней:
Дата BETWEEN day()-30 AND day().
Даты следует записывать в американском формате месяц/день/год.
Для поиска данных в текстовых полях также полезна операция сравнения LIKE.
Пример 3. Из некоторой таблицы выбрать все записи о фирмах, названия которых начинаются на «Д» и офисы которых зарегистрированы в городах, названия которых начинаются от «А» до «Ж». Сгруппировать фирмы по городам, а города отсортировать по алфавиту.
Решение:
SELECT *
FROM [Конкретная таблица]
WHERE Фирма LIKE «Д*» AND Город LIKE [А-Ж]
GROUP BY Город
ORDER BY Город;
Условия конструируют так же, как и в QBE, только в логических выражениях SQL указывают имена полей.
Приведенная выше конструкция SELECT предназначена для создания запросов на выборку записей из БД.
5. Применение команды SELECT
Рассмотрим такие применения команды SELECT:
1) для статических вычислений в выборке;
2) для построения параметрических запросов;
3) для создания нового вычислительного поля;
4) запрос на создание новой таблицы;
5) запрос на добавление записей в таблицу.
1) Статистические функции. Команду SELECT используют для вычисления и вывода на экран значений статистических функций по полям выборки. Первое предложение в конструкции должно быть таким:
SELECT список функций.
Рассмотрим некоторые статистические функции:
COUNT(поле) вычисляет количество записей с непустым полем, т. е. NOT Null, Null признак пустого поля;
SUM(поле) вычисляет сумму всех числовых значений поля;
FIRST(поле), LAST(поле) значения полей в первой и последней записях таблицы;
MIN(поле), MAX(поле) минимальное и максимальное значения в этих полях;
AVG(поле) среднее арифметическое значение поля;
Пример 4. Определить среднюю цену товаров, находящихся на складе:
SELECT AVG(Цена) AS t
FROM Склад;
Результат t нужно переписать с экрана.
2) Запрос с параметром. Чтобы вывести на экран выборку всех товаров, цена которых меньше средней, нужно выполнить такой параметрический запрос:
SELECT *
FROM Склад
WHERE Цена<z;
Если некоторое имя (z) в команде WHERE не совпадает с именем поля текущей БД, то оно рассматривается как имя параметра в параметрическом запросе. Откроется окно, куда следует ввести значение параметра (в нашем случае это значение берем из предыдущего примера t). Обратите внимание в команде WHERE нельзя применять статистические функции.
3) Запрос на создание нового вычисляемого поля. Следующее применение команды SELECT это создание нового вычисляемого поля, например, СУММА:
SELECT Цена, Количество, Цена*Количество AS Сумма
FROM Склад;
Если вычисление содержит ветвление, то используют функцию IF. Общий вид этой функции такой: IF(условие, значение1, значение2), где значение1 присваивается полю, если условие истинно, а значение2 если лоно. Значение в поле может меняться в зависимости от некоторого условия. Например, если некоторое числовое поле Количество в выборке не содержит ни одного значения, то его можно продублировать полем Новое-Количество так, чтобы на месте пустых значений поля было написано число 0:
SELECT Цена, Количество, IF(Количество IS NULL, 0, Количество) AS Новое-Количество
FROM Склад;
4) Запрос на создание новой таблицы. Новую таблицу можно создать с помощью такого запроса:
SELECT список полей таблицы-источника
INTO новая таблица {IN внешняя БД}
FROM таблица-источник
{WHERE условие};
5) Запрос на добавление записей. Такой запрос на добавление записей из таблицы1 в таблицу2 имеет вид:
INSERT INTO таблица1(поле1, поле2,…)
SELECT поле1таблицы2, поле2таблицы2,…
FROM таблица2
{WHERE условие};
Методику создания некоторых других запросов языком SQL можно изучить путем конструирования соответствующего запроса QBE и преобразования его в запрос SQL. Информацию о новых служебных словах языка SQL можно получить из файлов справок.
Практическая работа № 6
«Создание запросов с помощью языка SQL»
Цель: Уметь составлять запросы, используя язык SQL.
Задание
Создайте запросы, рассмотренные в уроке.