Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по базам данных / Тесты ответы.doc
Скачиваний:
58
Добавлен:
02.05.2014
Размер:
174.59 Кб
Скачать

Операции left join, right join

Объединяют записи исходных таблиц при использовании в любом предложении FROM.

FROM таблица_1 [ LEFT | RIGHT ] JOIN таблица_2     ON таблица_1.поле_1 оператор таблица_2.поле_2

таблица_1, таблица_2Имена таблиц, записи которых подлежат объединению.

поле_1, поле_2Имена объединяемых полей. Поля должны иметь одинаковый тип данных и содержать данные одного рода, однако могут иметь разные имена.

ОператорЛюбой оператор сравнения: "=", "<", ">", "<=", ">=" или "<>".

Операция LEFT JOIN используется для создания левого внешнего объединения. Левое внешнее объединение включает все записи из первой (левой) таблицы, даже если нет совпадающих значений для записей из второй (правой) таблицы.

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

Например, операцию LEFT JOIN можно использовать с таблицей «Отделы» (левой) и «Сотрудники» (правой) для отбора всех отделов, включая те, в которых нет сотрудников. Чтобы отобрать всех сотрудников, включая не приписанных ни к какому отделу, используйте операцию RIGHT JOIN.

Следующая инструкция SQL объединяет таблицы «Типы» и «Товары» по полю «КодТипа». Результатом является список категорий, в том числе тех, которые не содержат ни одного товара:

SELECT Категория, Марка FROM Типы LEFT JOIN Товары ON Типы.КодТипа = Товары.КодТипа;

В предыдущем примере поле «КодТипа» используется для объединения таблиц, но не включается в результат выполнения запроса, поскольку это поле не включено в инструкцию SELECT. Чтобы включить связующее поле (в данном случае поле Типы.КодТипа) в результат выполнения запроса, включите имя этого поля в инструкцию SELECT. Отбирает названия всех отделов, в том числе и тех, в которых нет сотрудников.

SELECT [Название отдела], Имя & Chr(32) & Фамилия AS ФИО FROM Отделы LEFT JOIN Сотрудники ON Отделы.[Номер отдела] = Сотрудники.[Номер отдела] ORDER BY [Название отдела];

объединяет таблицы «Типы» и «Товары» по полю КодТипа

SELECT Категория, Марка FROM Типы INNER JOIN Товары ON Типы.КодТипа = Товары.КодТипа; 

Команда SELECT

Команда SELECT - наиболее часто употребляемая команда из всех восьми. Она используется для выборки данных из базы данных. Её синтаксис: SELECT [Предикат] Поля FROM Таблицы [IN БазаДанных] [WHERE ...] [GROUP BY ...] [HAVING ...] [ORDER BY ...]; Необязательные аргументы заключены в [ ].

› Предикат - одно из четырёх слов ALL, DISTINCT, DISTINCTROW, TOP. Если предикат не указан, то устанавливается ALL. Предикат ALL позволяет отобрать все записи. При использовании предиката DISTINCT, записи, которые содержат повторяющиеся значения в выбранных в запросе полях, исключаются. Предикат DISTINCTROW исключает из выборки записи, если повторяется вся запись, а не одно из полей. Предикат TOP позволяет отобрать определённое количество записей. Поля - имена одного или нескольких полей, выборка которых производится. Для выборки всех полей вместо имен полей можно поставить звёздочку [*].

› Таблицы - имена одной или нескольких таблиц, из которых производится выборка. БазаДанных - путь и имя внешней базы данных, в которой содержатся таблицы. Если таблицы находятся в текущей базе данных, то этот аргумент необязателен.

Минимальный синтаксис запроса на выборку выглядит так:

SELECT поле FROM Таблица; Если таблицы, из которых выбираются записи, содержат одноимённые поля, то перед именем поля нужно поставить название таблицы и точку [.].

Предложение WHERE позволяет установить критерии отбора записей. Например: SELECT * FROM Orders WHERE ID=5; В этом запросе происходит выборка всех полей таблицы Orders. Выбираются только те записи, значения поля ID которых равно 5. Вместо знака равно [=] можно также использовать знаки больше [>] и меньше [<]. SELECT * FROM Buyers WHERE Age>30; В этом запросе выбираются все записи из таблицы Buyers, в которых значение поля Age больше 30. Также возможно использование предложения WHERE вместе с операторами BETWEEN, IN и LIKE. Оператор BETWEEN позволяет отобрать записи, значение определённого поля которых находится в заданном диапазоне. Например: SELECT * FROM Orders WHERE ID BETWEEN 10 AND 20; Здесь выбираются все записи, значение поля ID которых находится между 10 и 20. Оператор IN позволяет отобрать записи, значение поля которых соответствует одному из значений, указанных в скобках. SELECT * FROM Orders WHERE ID IN ( 10, 12, 30, 45 ); Здесь отбираются все записи, значение поля ID которых соответствует одному из значений 10, 12, 30, 45.

Используя предложение WHERE совместно с оператором LIKE, возможен отбор записей, значение одного из полей которых совпадает с маской. Оператор LIKE применим только к текстовым полям. В маске можно использовать следующие символы:

Символ

Описание

Подчёркивание [_]

Замещает один любой символ.

Процент [%]

Замещает последовательность любого числа символов.

Например: SELECT * FROM Orders WHERE Name LIKE 'Ва_я%' Здесь выбираются все записи, поле Name которых соответствует маске Ва_я%. Обратите внимание, что значения текстового типа в SQL-запросах указываются в кавычках. Предложение GROUP BY позволяет объединять поля в запросе. Предложение ORDER BY позволяет упорядочивать выбираемые записи. При использовании совместно с предложением ключевого слова ASC можно определить возрастающий порядок, а используя DESC, определяется убывающий порядок. SELECT * FROM Orders ORDER BY Name ASC; Также можно упорядочивать записи по нескольким полям. Сначала записи упорядочиваются по первому полю, если в нём есть записи, имеющие одинаковые значения, то они упорядочиваются по следующему указанному в предложении ORDER BY полю и т.д. Имена полей пишутся через запятую [,]. SELECT * FROM Orders ORDER BY Name ASC, Email ASC;

Команда UPDATE

Команда UPDATE посылает запрос на изменение (обновление) записи. Синтаксис: UPDATE Таблица SET НовоеЗначение WHERE ...; Таблица - имена одной или нескольких таблиц, в которых изменяются записи. НовоеЗначение - новые значения для полей записи. Команду UPDATE удобно использовать, если изменяется сразу большое число записей или если изменяемые записи находятся в разных таблицах. Новые значения указываются через запятую для каждого поля. Использование предложения WHERE аналогично его использованию в команде SELECT. Пример: UPDATE Buyers SET Order='Ничего' WHERE ID=7; Устанавливаем значение поля покупки 'Ничего' у покупателя, номер которого равен 7. UPDATE Заказы SET СуммаЗаказа = СуммаЗаказа * 1.2, СтоимостьДоставки = СтоимостьДоставки * 1.1 WHEREСтрана='США'; Этот запрос немного сложнее. Он повышает сумму заказа на 20% и стоимость доставки на 10% для покупателей из США. Пример:

(UPDATE Имя_таблицы SET строка 1 = выражение 1

WHERE – условие, при котором будет обновляться).

Команда DELETE

Команда DELETE посылает запрос на удаление записей из таблицы. Синтаксис: DELETE [Таблица.*] FROM Таблица WHERE ...; Таблица - имя таблицы, из которой удаляются записи. Использование предложения WHERE аналогично его использованию в команде SELECT. Аргумент команды DELETE можно не указывать, поскольку он фактически дублируется в предложении FROM.

Пример: DELETE FROM Buyers WHERE ID=8; Этот запрос удаляет из таблицы Buyers запись, в которой ID равно 8. Для удаления не всей записи, а только ее поля, следует воспользоваться запросом на изменение записи (команда UPDATE) и поменять значения нужных полей на Null.

Удаление всей таблицы:

DROP TABLE Имя_таблицы.

FROM Имя_таблицы. Команда INSERT INTO

Команда INSERT INTO предназначена для добавления одной или нескольких записей в конец таблицы. Возможны 2 варианта использования этой команды. Первый вариант добавляет одну запись в таблицу, а второй вариант добавляет записи из одной таблицы в другую. Синтаксис первого варианта: INSERT INTO ТаблицаНазначения [(Поля)] VALUES (Значения); Синтаксис второго варианта: INSERT INTO ТаблицаНазначения [(Поля)] [IN БазаДанных] SELECT [Таблица.] Поля FROM Таблица; ТаблицаНазначения - таблица, в которую добавляются записи. Поля - названия полей. Таблица - имя таблицы, источника данных. БазаДанных - путь и имя внешней базы данных, в которой содержатся таблицы. Если таблицы находятся в текущей базе данных, то этот аргумент необязателен. Значения - значения полей добавляемой записи. Все поля записи и соответствующие им значения должны быть определены, иначе им будут присвоены значения Null. Если таблица, в которую добавляются записи, имеет ключевое поле, то в него должны добавляться уникальные, непустые значения. Иначе запись не будет добавлена. Пример: INSERT INTO Orders (ID, Name, Email, Order) VALUES (12, 'ВасяПупкин', 'vasya@pupkin.ru', 'Pentium II 450 MHz'); Добавляется новая запись, в которой полям ID, Name, Email, Order соответствуют значения 12, 'Вася Пупкин', 'vasya@pupkin.ru', 'Pentium II 450 MHz'. INSERT INTO Orders2001 (ID, Name, Email, Order) SELECT ID, Name, Email, Order FROM Orders2000; Этот запрос добавляет все записи из таблицы Orders2000 в таблицу Orders2001. Команда SELECT ... INTO

Команда SELECT ... INTO позволяет создать новую таблицу на основе данных из других таблиц. Эта команда используется для архивирования данных, резервного копирования таблиц. Синтаксис команды: SELECT Поля INTO НоваяТаблица [IN БазаДанных] FROM Таблицы; Поля - имена одного или нескольких полей, которые будут скопированы в новую таблицу. НоваяТаблица - Имя создаваемой таблицы БазаДанных - путь и имя внешней базы данных, в которой содержатся таблицы. Если таблицы находятся в текущей базе данных, то этот аргумент необязателен. Таблицы - имена таблиц, из которых выбираются записи. Если имя новой таблицы совпадает с именем уже существующей, то будет сгенерирована ошибка. Пример: SELECT ID, Name, Email, Order INTO CopyOfOrders FROM Orders;

Соседние файлы в папке Шпоры по базам данных