Использование редактора запросов SQL Borland SQL Explorer(TM)

advertisement
Лабораторная работа 3. Использование редактора запросов SQL Borland SQL Explorer(TM) для создания
запросов к данным с использованием языка SQL.
Требования к программному обеспечению:
1.
2.
3.
Компьютер с установленным на нем приложением Borland SQL Explorer.
Компьютер с установленным на нем СУБД MS SQL Server версии 7.0/2000/2003, и с установленной
учебной базой CIS.
СУБД MS SQL Server должна иметь запись о пользователе user (пароль-user) с привилегиями db_owner для
всех объектов у рабочем пространстве CIS.
Теоретические сведения:
1. Запросы SQL на выборку и изменение данных.
Инструкция SQL на добавление одной записи имеет вид:
INSERT INTO назначение [(поле_1[, поле_2[, ...]])]
VALUES (значение_1[, значение_2[, ...])
где:
назначение – имя таблицы или запроса, в который добавляются записи;
поле_i – имя поля в таблице; можно указывать только те поля, в которые будут внесены значения, но
обязательно указать все ключевые поля;
значение_i – значение, взятое из допустимых значения для поля_i
Для добавления нескольких записей:
INSERT INTO назначение
[(поле_1[, поле_2[, ...]])]
SELECT [источник.]поле_1[, поле_2[, ...]
FROM выражение
[WHERE…]
где:
назначение – имя таблицы или запроса, в который добавляются записи;
источник – имя таблицы или запроса, откуда копируются записи;
поле_i – имена полей для добавления данных, если они следуют за аргументом назначение; имена полей, из
которых берутся данные, если они следуют за аргументом источник;
выражение – имена таблицы или таблиц, откуда вставляются данные;
значение_i – значения, добавляемые в указанные поля новой записи. Каждое значение будет вставлено в
поле, занимающее то же положение в списке: значение_1 вставляется в поле_1 в новой записи,
значение_2 в поле_2 и т.д. Каждое значение текстового поля следует заключать в кавычки ' '; для
разделения значений используйте запятые.
Пример 1.
Добавить в таблицу Star информацию об Уильяме Смите (все, кроме его фотографии).
INSERT INTO Star (name, gender, birthday, address)
VALUES ('Уильям Смит', 'м', '19.09.1969', 'Калифорния');
Инструкция SELECT в запросах на изменение данных может содержать как имена полей, так и фиксированные
значения.
Пример 2.
Добавить в таблицу StarsIn информацию о том, что все кинозвезды, снявшиеся в фильме «Терминатор», снялись
также и в фильме «Терминатор-2»
INSERT INTO starsIn (starName, movieTitle, movieYear)
SELECT DISTINCT starName, 'Терминатор-2', 1997
FROM StarsIn
WHERE starName IN (
SELECT a.starName FROM starsIn a WHERE a.movieTitle = 'Терминатор');
Существует особая инструкция SQL на создание таблицы добавлением в нее записей:
SELECT поле_1[, поле_2[, ...]]
INTO новаяТаблица
FROM источник
[WHERE…]
где:
поле_i – имена полей, которые следует скопировать в новую таблицу;
новаяТаблица – имя создаваемой таблицы. Это имя должно удовлетворять стандартным правилам
именования. Если новаяТаблица совпадает с именем существующей таблицы, возникает
перехватываемая ошибка;
источник – имя существующей таблицы, из которой отбираются записи. Это может быть одна таблица,
несколько таблиц или запрос.
Пример 3.
Создать таблицу “Самые длинные фильмы на каждой студии”, в которой для каждой студии отобрать самые
длинные по продолжительности фильмы.
SELECT Movie.title, Movie.year, Movie.length, Movie.studioName
FROM Movie
INTO [Самые длинные фильмы на каждой студии]
WHERE Movie.length = (
SELECT MAX(a.length)
FROM Movie AS a
WHERE a.studioName = Movie.studioName
);
Здесь вложенный запрос является связанным и выполняется для каждой записи таблицы Movie, указанной во
внешнем запросе.
Инструкция SQL на удаление записей выглядит так:
DELETE [таблица.*]
FROM таблица
WHERE условиеОтбора
где:
таблица – имя таблицы, из которой удаляются записи;
условиеОтбора – выражение, определяющее удаляемые записи.
Пример 4.
Удалить из таблицы Movie все фильмы, выпущенные до 1930 года.
DELETE FROM Movie
WHERE year <=1930;
Инструкция SQL на обновление записей в таблице выглядит так:
UPDATE таблица
SET новоеЗначение
WHERE условиеОтбора;
где:
таблица – имя таблицы, данные в которой следует изменить;
новоеЗначение – выражение, определяющее значение, которое должно быть вставлено в указанное поле
обновленных записей.
условиеОтбора – выражение, отбирающее записи, которые должны быть изменены. При выполнении этой
инструкции будут изменены только записи, удовлетворяющие указанному условию.
Пример 5.
Обновить таблицу Studio так, чтобы у студии «New Line Cinema» был президентом Уильям Смит.
UPDATE Studio
SET Studio.presidentName = ‘Уильям Смит’
WHERE (((Studio.studioName) = ’New Line Cinema’ ));
Выборка предполагает отбор строк, удовлетворяющих набору условий, из одной или нескольких таблиц
Инструкция SQL на выборку из таблиц выглядит так:
SELECT [предикат] { * | таблица.* | [таблица.]поле_1
[AS псевдоним_1] [, [таблица.]поле_2 [AS псевдоним_2] [, ...]]}
FROM выражение [, ...] [IN внешняяБазаДанных]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
где:
предикат – ALL | DISTINCT[ROW] | [TOP n [PERCENT]]
ALL – выбираются все (в том числе повторяющиеся) строки;
DISTINCT[ROW] – выбираются только различные строки;
TOP n [PERCENT] – первые n записей;
TOP n PERCENT – первые n процентов записей;
таблица – имя таблицы, из которой должны быть отобраны записи;
поле_i – имена полей, из которых должны быть отобраны данные. Если включить несколько полей, они
будут извлекаться в указанном порядке. В качестве полей также могут служит и поля, отбираемые
самостоятельным запросом на выборку, и выражения, построенные на основании результатов
самостоятельных запросов;
псевдоним_i – имена, которые станут заголовками столбцов вместо исходных названий столбцов в таблице;
выражение – имена одной или нескольких таблиц, которые содержат отбираемые данные, или выражение,
использующее операторы INNER JOIN, LEFT JOIN, RIGHT JOIN.
Предложение FROM должно присутствовать в каждой инструкции SELECT. Порядок следования имен таблиц в
выражении не существенен.
Предложение WHERE определяет, какие записи из таблиц, перечисленных в предложении FROM, следует
включить в результат выполнения инструкции SELECT.
Предложение GROUP BY объединяет записи с одинаковыми значениями в указанном списке полей в одну группу.
Если инструкция SELECT содержит статистическую функцию SQL, например, SUM() или COUNT(), то для
каждой группы будет вычислено итоговое значение.
Предложение HAVING определяет, какие сгруппированные записи отображаются при использовании инструкции
SELECT с предложением GROUP BY. После того как записи будут сгруппированы с помощью предложения
GROUP BY, предложение HAVING отберет те группы записей, которые удовлетворяют условиям отбора,
указанным в предложении HAVING.
Предложение ORDER BY сортирует записи, полученные в результате запроса, в порядке возрастания (ASC) или
убывания (DESC) на основе значений указанного поля или полей.
2. Условие лабораторной работы
1. Записать запросы на создание таблиц на бумаге.
2. Открыть CIS в приложении Borland SQL Explorer.
3. В окне запросов ввести по очереди все запросы на создание таблиц, выполнить эти запросы.
4. Просмотреть результаты.
Download