Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_проектор - Лекции по БД.doc
Скачиваний:
12
Добавлен:
15.02.2015
Размер:
2.51 Mб
Скачать

Преимущества и недостатки

Преимущества:

  • независимость от конкретной СУБД;

  • наличие стандартов;

  • декларативность;

Недостатки:

  • несоответствие реляционной модели данных;

  • cложность;

  • отступления от стандартов;

  • cложность работы с иерархическими структурами.

Язык запросов Data Query Lanquaqe (DQL)

Оператор выбора SELECT

Синтаксис оператора SELECT имеет следующий вид:

SELECT[ALL|DISTINCT](<Список полей>|*)

FROM <Список таблиц>

[WHERE <Предикат-условие выборки или соединения>]

[GROUP BY <Список полей результата>]

[HAVING <Предикат-условие для группы>]

[ORDER BY <Список полей, по которым упорядочить вывод>]

Устранение дублирующих строк

Пример 1. Дана таблица Поступление товара, надо выяснить какие товары поступили на склад магазина.

Вариант 1

SELECT [ПОСТУПЛЕНИЕ ТОВАРА].[код товара] FROM [ПОСТУПЛЕНИЕ ТОВАРА];

Тогда на выходе получится

Вариант 2

SELECT DISTINCT [ПОСТУПЛЕНИЕ ТОВАРА].[код товара]

FROM [ПОСТУПЛЕНИЕ ТОВАРА];

Тогда на выходе получится

Выборка по условию. Раздел WHERE

Пример 2. Используя данные из таблицы Поступление товара, найти товары, поступившие на склад магазина 14.03.2007.

SELECT DISTINCT [ПОСТУПЛЕНИЕ ТОВАРА].[код товара], [ПОСТУПЛЕНИЕ ТОВАРА].[дата поступления]

FROM [ПОСТУПЛЕНИЕ ТОВАРА]

WHERE [ПОСТУПЛЕНИЕ ТОВАРА].[дата поступления]=#3/14/2007#;

#мм.дд.гг#

Результат выполнения запроса

Операторы Реляционные операторы

Оператор

Назначение

=

Равно

>

Больше,чем

<

Меньше,чем

>=

Больше или равно

<=

Меньше или равно

<>

Неравно

Булевы операторы

  • AND – берет два булевых выражения (в виде A и B) в качестве аргументов и дает в результате истину, если оба истинны.

  • OR – берет два булевых выражения (в виде A и B) в качестве аргументов и дает в результате истину, если хотя бы один из них истинен.

  • NOT берет единственное булево выражение (в виде not B) в качестве аргумента и изменяет его значение с истинного на ложное или с ложного на истинное.

  • XOR – берет два булевых выражения (в виде A и B) в качестве аргументов и дает в результате истину, если один из них истинен (исключающее ‘или’, строгая дизъюнкция).

Отличие XOR от OR (таблица истинности)

A

B

A or B

A xor B

0

0

0

0

0

1

1

1

1

0

1

1

1

1

1

0

Операция XOR, в отличие от OR, возвращает значение "ложь" (false) и в том случае, когда все связанные ей логические выражения истинны.

Пример 3. Используя данные таблицы Поступление товара, найти товары, поступившие на 14.03.2007, цена которых превышает 300 евро.

SELECT *

FROM [ПОСТУПЛЕНИЕ ТОВАРА]

WHERE [дата поступления]=#3/14/2007# AND цена>300;

Результат выполнения запроса

Оператор IN

Пример 4 .Используя данные таблиц Поставщики и Товары, найти товары, произведенные в Москве и в Спб.

SELECT ТОВАРЫ.[наименование товара], ПОСТАВЩИКИ.Адрес

FROM ПОСТАВЩИКИ, ТОВАРЫ

WHERE ПОСТАВЩИКИ.Адрес In ("Москва","СПб") AND ПОСТАВЩИКИ.[Код поставщика]=ТОВАРЫ.[код поставщика];

Таблица “Поставщики”

Таблица “Товары”

Результат выполнения запроса

Оператор Between

Синтаксическая конструкция этого оператора имеет вид:

<поле> BETWEEN <значение 1> and <значение 2>

Пример 5. Используя данные из таблицы Поступление товара, найти товары, стоимость которых от 300 евро до 500 евро.

SELECT *

FROM [ПОСТУПЛЕНИЕ ТОВАРА]

WHERE [ПОСТУПЛЕНИЕ ТОВАРА].[ЦЕНА] BETWEEN 300 AND 500;

или

SELECT *

FROM [ПОСТУПЛЕНИЕ ТОВАРА]

WHERE ЦЕНА Between 300 And 500;

Результат выполнения запроса

Оператор LIKE

Синтаксис этого оператора:

<поле> LIKE <шаблон>

Правила построения шаблона следующие:

Образец

В результирующей строке

?

Любой одиночный символ

*

Любое кол-во символов

#

Любая цифра от 0 до 9

[набор символов]

Любой одиночный символ, входящий в набор символов

[A-Z]

Любой одиночный символ от ‘A’ до ‘Z’

[A-Za-я]

Любой одиночный символ от ‘A’ до ‘Z’ или из диапазона от ‘а’ до ‘я’

P[A-Z]###

Первый символ ‘Р’, второй из диапазона от ‘A’ до ‘Z ‘и три цифры

Пример 6. Предположим, мы точно не знаем наименование поставщика. Требуется найти всех поставщиков в таблице Поставщики, наименование которых начинается на ‘ООО’

SELECT *

FROM ПОСТАВЩИКИ

WHERE Поставщик Like "ООО*";

Результат выполнения запроса

Пример 7. на основе таблицы Поступление товара выведите список товаров, поступивших на определенную дату (на одну и ту же дату), цена которых не больше 300 евро.

SELECT DISTINCT [a].[Код товара], [a].[Дата поступления], [a].[Цена]

FROM [ПОСТУПЛЕНИЕ ТОВАРА] as a,[ПОСТУПЛЕНИЕ ТОВАРА] as b

WHERE [a].[Дата поступления]=[b].[Дата поступления] AND [a].[Код товара]<>[b].[Код товара] AND a.Цена<=300;

Результат выполнения запроса

Здесь мы использовали псевдонимы для именования отношения Поступление товара a и b, так как для записи условий поиска нам необходимо работать сразу с двумя экземплярами данного отношения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]