Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка SQL(14) (оптимизация).docx
Скачиваний:
62
Добавлен:
17.03.2015
Размер:
452.16 Кб
Скачать

3.2.2. Выборка c использованием фразы where.

Раздел WHERE предназначен для ограничения количества строк, включаемых в результат выборки. Будут включены только те строки, которые удовлетворяют условию отбора строк.

WHERE условие_отбора_строк

где условие_отбора_строк – выражение логического типа(TRUE, FALSE). В условии можно использовать операторы сравнения = (равно), <> (не равно), < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), которые могут предваряться оператором NOT, создавая, например, отношения "не меньше" и "не больше".

условие_отбора_строк - предназначено для объединения множества логических условий, каждое из которых возвращает выражение логического типа. Объединение выполняется с помощью операторов AND или OR.

3.2.2.1. Использование операторов сравнения.

Пример 4.

Получить перечень продуктов, содержащих менее 50 г углеводов

SELECT Продукт, Белки, Жиры, Углеводы, K, Ca, Na, B2, PP, C

FROM Продукты

WHERE (Углеводы < 50);

и получить:

Результат

Продукт

Белки

Жиры

Углеводы

К

Са

Na

B2

PP

C

Майонез

31

670

26

480

280

NULL

NULL

NULL

NULL

Яйца

127

115

7

1530

550

710

4,4

1,9

NULL

Сметана

26

300

28

950

850

320

1

1

2

Молоко

28

32

47

1460

1210

1500

1,3

1

10

Творог

167

90

13

1120

1640

1410

2,7

4

5

Помидоры

6

NULL

42

290

140

400

0,4

5,3

250

Зелень

9

NULL

20

340

275

75

1,2

4

380

Кофе

127

36

9

9710

180

180

0,3

1,8

NULL

Пример 5.

Получить перечень продуктов, практически не содержащих углеводов и натрия

SELECT Продукт, Белки, Жиры, Углеводы, K, Ca, Na, B2, PP, C

FROM Продукты

WHERE (Углеводы = 0) AND (Na = 0);

Результат

Продукт

Белки

Жиры

Углеводы

К

Са

Na

B2

PP

C

результат запроса пуст.

3.2.2.2. Сравнение с null.

Заметим, что отсутствующие и пустые значения - это две большие разницы. Целое, значение которого отсутствует, это не то же самое, что целое, значение которого равно нулю. Неопределенная строка - это не то же самое, что строка нулевой длины или строка, содержащая одни пробелы. Эта разница важна, так как сравнения между пустыми и неопределенными значениями всегда будут неудачны. Фактически, NULL-значения даже не равны друг другу в таких сравнениях.

Возможность неопределенных значений в реляционных базах данных означает, что для любого сравнения возможны три результата: Истина (True), Ложь (False) или Неизвестно (Unknown). Это требует использования трехзначной логики.

AND

True

False

Unknown

True

True

False

Unknown

False

False

False

False

Unknown

Unknown

False

Unknown

OR

True

Fa

se

Unknown

True

True

True

Tr

e

False

True

False

Unknown

Unknown

True

Unknown

Unknown

NOT

True

False

Unknown

 

False

True

Unknown

Для выявления равенства значения некоторого столбца неопределенному, применя­ют специальные стандартные предикаты;

<Столбец> IS NULL и < Столбец > IS NOT NULL.

Пример 6.

Результат

Продукт

Говядина

Судак

Вывести все продукты, не содержащие углеводов

SELECT Продукт

FROM Продукты

WHERE (Углеводы IS NULL) OR (Углеводы = 0);