Получение подмножества строк из таблицы
Получение подмножества строк из таблицы
Базы данных не были бы такими интересными, если бы из них нельзя было получить некое подмножество данных. В SQL употребляется команда SELECT, в которую добавлено ключевое слово WHERE для определения условия:
USE sysadm
SELECT - FROM hosts WHERE blog = "Ma:r!'
В результате получаем:
name ipaddr aliases owner .\i--.r.
bldg room manuf model
shimmer 192.168.1,11 shim shimmy shimmydoodles David Cav.s but",-, -.-
Main 309 Sun Ultra60
sander 192.168 1.55 sandy iricky mickydoo Alex РоП.гь I"
Main 1101 Intergraph TD-325
Sulawesi 192.168.1.12 sula su-lee Ell"' Monk Се
Main 1116 Apple G3
С ключевым словом WHERE можно использовать стандартные условные операторы, применяемые в программировании:
=>>=<<=<>
В отличие от Perl, в SQL нет отдельных операторов для сравнения строк и чисел.
Условные операторы можно объединять посредством AND/OR и отрицать при помощи NOT. Проверить, является ли поле пустым, позволяет оператор IS NULL, а проверить обратное - IS NOT NULL. Например, этот фрагмент SQL-кода выведет список машин, для которых в таблице не указаны владельцы:
USE sysadm
SELECT name FROM hosts WHERE owner IS NULL
Если требуется найти все строки, в которых значения некоторого поля равны одному из указанных, можно использовать оператор IN для задания списка:
USE sysadm
SELECT name FROM nosts WHERE dept IN ('IT', 'Software')
Ответом будет список машин из отделов «IT» и «Software». SQL также позволяет получить строки, совпадающие с диапазоном значений (полезнее всего это применять с численными данными и датами), при помощи оператора BETWEEN. Вот пример запроса, возвращающий список машин, находящихся в основном здании на десятом этаже:
USE sysadm
SELECT name FROM hosts WHERE (bldg = 'Main') AND
(room BETWEEN '1000' AND '1999')
Наконец, ключевое слово WHERE можно использовать с LIKE для выбора строк при помощи слабого механизма соответствия шаблону (слабого в сравнении с регулярными выражениями в Perl). Например, следующий запрос выбирает все машины, в псевдонимах которых встречается строка «doodles»:
USE sysadm
SELECT name FROM nosts WHERE aliases LIKE '%dooales%'
Обратите внимание, какие метасимволы поддерживаются (табл. D.2).