Получение подмножества строк из таблицы



Получение подмножества строк из таблицы

Базы данных не были бы такими интересными, если бы из них нельзя было получить некое подмножество данных. В 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).



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