Учебно-справочное пособие по СУБД Informix


5. Снова Оператор SELECT.



5. Снова Оператор SELECT.

Предложения INTO, INTO TEMP, FROM.

Выбрать все строки (нет предложения WHERE) из таблицы kadry, взять в них все столбцы (вместо перечисления столбцов стоит *), оставить только различные строки (ключевое слово UNIQUE) и поместить результат во временную таблицу (INTO TEMP) x, которая будет при этом создана с такими же столбцами, что и у kadry. SELECT UNIQUE * FROM kadry INTO TEMP x
Выбирать можно из нескольких таблиц. При этом берутся все возможные комбинации строк из первой таблицы со второй. Предположим, что таблице tab1 6 строк а в tab2 - 7 строк. Результат нижеприведенного примера - таблица, содержащая три столбца и 7*6=42 строки. SELECT tab1.a-tab2.b, tab1.a, tab2.b FROM tab1, tab2
Мы сейчас не будем уточнять, куда именно результирующая таблица помещается. Но использовать ее можно по разному: ее можно перегнать (INTO TEMP) во временную таблицу, ее можно отдать на обработку другому оператору (если выборку осуществлял подзапрос), для нее можно создать курсор ("буфер" с указателем на текущую строку), а можно положить ее (INTO) в простую программную переменную (если выбрано не более одной строки).
Выбранные строки можно упорядочить по возрастанию (убыванию) значения в столбце (столбцах) SELECT a,b,c,d+e FROM tabl ORDER BY b,c SELECT a,b,c,d+e FROM tabl ORDER BY 2,3
В ORDER BY предложении вместо имени столбца можно указывать его порядковый номер в списке выборки (select-list). Вышеприведенные операторы эквивалентны.
Поместить значения из столбцов в переменные: (Поскольку lname используется и как имя переменной, и как имя столбца, то имя столбца предваряется знаком (@) SELECT customer_num, @lname,city INTO cnum,lname,town FROM customer

Агрегатные функции.

К выбранным строкам можно применять агрегатные функции COUNT(*) - количество, MAX(column) и MIN(column) - максимальное и минимальное значение в столбце, SUM(column) - сумма всех значений в столбце, AVG(column) - среднее значение в столбце.
Поместить в переменную num количество строк в таблице orders, в которых столбец customer_num равен 101: SELECT COUNT(*) INTO num FROM orders WHERE customer_num=101



Начало  Назад  Вперед



Книжный магазин