Оператор SELECT

Порядок обработки предложений в операторе SELECT не соответсвует синтаксическому порядку представления оператора, который ближе к естественному языку.

Рассмотрим запрос:

SELECT count(articul),type
FROM tovar
WHERE firm='transcend'
GROUP BY type
HAVING count(articul)>1
ORDER BY type DESC;

Порядок обработки предложений в операторе SELECT на примере данного запроса:

1. FROMОбращение к таблице (tovar)
articul type firmdescription
100 usb flash drive kingston2Gb
101hddtranscend120Gb
102usb flash drive kingston4Gb
103 usb flash drive transcend2Gb
104hddtranscend160Gb
105hddtoshiba160Gb
106 usb flash drive transcend8Gb
107mp3 playertranscend4Gb
2. WHEREОтбор записей, удовлетворяющих условию (firm='transcend')
articul type firmdescription
101hddtranscend120Gb
103 usb flash drive transcend2Gb
104hddtranscend160Gb
106 usb flash drive transcend8Gb
107mp3 playertranscend4Gb
3. GROUP BYГруппировка отобранных записей по указанным полям (type)
articul type firmdescription
103 usb flash drive transcend2Gb
106 usb flash drive transcend8Gb
101hddtranscend120Gb
104hddtranscend160Gb
107mp3 playertranscend4Gb
4. HAVINGОтбор группы записей (HAVING count(articul)>1)
articul type firmdescription
103 usb flash drive transcend2Gb
106 usb flash drive transcend8Gb
101hddtranscend120Gb
104hddtranscend160Gb
5. SELECT Определение полей, которые войдут в результирующую таблицу (count(articul),type)
count(articul)type
2usb flash drive
2hdd
6. ORDER BYСортировка результирующей таблица по указанному полю (type — по умолчанию сортировка проводится порядке возрастания)
count(articul)type
2hdd
2usb flash drive
домой назад далее