Perl для системного администрирования

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



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

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



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