SQLсервер в Linux -самостоятельное освоение пакета

       

Выборка по логическому значению false



Листинг 3.20. Выборка по логическому значению false

booktown=# SELECT * FROM dailyjnventory WHERE in_stock = 'no';

isbn | in_stock

0451198492 f 0394900014 f (2 rows)

booktown=# SELECT * FROM dailyjnventory

WHERE NOT in_stock:

isbn | in_stock

0451198492 | f

0394900014 | f

(2 rows)

Этот пример убедительно доказывает, что при проектировании языка SQL учитывался фактор наглядности и удобочитаемости программ. При грамотном выборе имен таблиц и полей запрос почти не отличается от обычной фразы на английском языке.

Сравнение значений логических полей с константами из табл. 3.11 может осуществляться при помощи оператора неравенства != (например, WHERE in_stock != 't'). Таким образом, следующие три синтаксические формы эквивалентны:

SELECT * FROM daily_iinventory



WHERE NOT injtock: SELECT * FROM

dailyjnventory WHERE in_stock = 'no1:

SELECT * FROM dailyjnventory WHERE in_stock != 't':

Возможно, вы обратили внимание на то, что в листинге 3.17 в таблицу вставляется семь записей, а суммарное количество записей при двух выборках (для поля i n_stock, равного true и fal se) только шесть. Дело в том, что в последней операции вставки в листинге 3.17 значение поля i n_stock не указано, поэтому в записи книги с кодом ISBN равным 0451160916 поле in_stock равно NULL.

Как упоминалось выше, величина NULL не интерпретируется как true или fal se, поэтому для выборки по значению NULL необходимо использовать условие IS NULL. Также можно воспользоваться оператором ! =, но тогда возникают проблемы с адаптацией программы для других СУБД. Пример запроса SQL с условием IS NULL:

booktown=# SELECT * FROM

dailyjnventory WHERE in_stock IS NULL:

isbn | 1n_stock

0451160916 |

(1 row)

Поскольку IS NULL является обычным условием SQL, для обновления всех случайных значений NULL в поле in_stock можно воспользоваться командой UPDATE, приведенной в листинге 3.21.



Содержание раздела