Основные операторы языка SQL
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

 

Оператор, предназначенный для выборки данных из таблиц – SELECT.

 

Подробно рассмотрим команду SELECT

 

Команда SELECT

SELECT * | { [DISTINCT | ALL] < список полей >. , ..}

FROM {< имя таблицы > [ алиас ] }. , ..

[ WHERE < предикат > ]

[ GROUP BY { < имя столбца > | < целое > } . , .. ]

[ HAVING < предикат > ]

[ ORDER BY { < имя столбца > | < целое > }. , .. ]

   

 

[{ UNION [ALL]

 

SELECT * | { [DISTINCT | ALL] < список полей >. , ..}

FROM {< имя таблицы > [ алиас ] }. , ..

[ WHERE < предикат > ]

[ GROUP BY { < имя столбца > | < целое > } . , .. ]

[ HAVING < предикат > ]

[ ORDER BY { < имя столбца > | < целое > }. , .. ]

} ] …

 

 

Элементы, используемые в команде SELECT

 

Элемент

 

Определение

  <список полей>

Список включающий имена столбцов

  <имя таблицы> <алиас> 

 

Имя или синоним для таблицы или представления. 

 

Временный синоним имени таблицы, определенный здесь и используемый только в этой команде. 

  <предикат>

Условие, которое может быть истинным или ложным для каждого столбца или комбинации столбцов из таблицы (таблиц), определенных предложением FROM. 

  <имя столбца> <целое> 

 

Имя столбца таблицы. 

 

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

             

 

 

Инструкция FROM

 

Инструкция FROM записывается в виде

                   FROM <имя таблицы>.,..

 

Список ссылок на таблицы не должен быть пустым. Пусть вычисление указанных табличных ссылок дает таблицы A,B,…,C. Тогда результат вычисления инструкции FROM будет таблицей, эквивалентной декартову произведению таблиц A,B,…,C.

Декартово произведение отдельной таблицы T определяется как эквивалентное T.

(т.е. инструкция FROM может содержать ссылку на одну таблицу).

 

 

Инструкция WHERE

 

Инструкция WHERE записывается в виде

                   WHERE <предикат>

 

Пусть T – результат вычисления предыдущей инструкции FROM. Тогда результатом инструкции WHERE будет таблица, производная от T исключающая все строки, для которых результат вычисления <предиката> дает значение ЛОЖ. Если инструкция WHERE опущена, результатом будет просто T.

 

 

Инструкция GROUP BY

 

Инструкция GROUP BY записывается в виде

                   GROUP BY { <имя столбца > | < целое > }. , ..

 

Список столбцов не должен быть пустым. Пусть T – результат вычисления предыдущих инструкций FROM и WHERE(если использовалась). Тогда результатом этой инструкции будет сгруппированная таблица, т.е. набор групп строк, производных от таблицы T с помощью перегруппировки таблицы T в минимальное количество таких групп, что в пределах одной группы все строки имеют одинаковое значение для комбинации столбцов, указанных в инструкции GROUP BY.

 

Инструкция HAVING

 

Инструкция HAVING записывается в виде

                   HAVING <предикат>.

 

Пусть G(сгруппированная таблица) – результат вычисления предыдущих инструкций FROM, WHERE(если использовалась) и инструкции GROUP BY(если она есть). Если инструкции GROUP BY нет, то в качестве G, берется результат выполнения предыдущей инструкции FROM или инструкции WHERE и рассматривается как сгруппированная таблица, состоящая не более чем из одной группы(т.е. подразумевается инструкция GROUP BY указывающая, что группируемых столбцов нет совсем). Результат инструкции HAVING - сгруппированная таблица, производная от G и исключающая все группы, для которых значение <предиката> ЛОЖ.

Инструкция ORDER BY

 

       Таблицы являются неупорядоченными множествами, и полученные из них данные необязательно представлены в какой - либо определенной последовательности. В SQL применяется команда ORDER BY, позволяющая упорядочить выходные данные запроса. Она их упорядочивает в соответствии со значениями одного или нескольких выбранных столбцов. Множество столбцов упорядочиваются один внутри другого, как в случае применения GROUP BY, и можно задать возрастающую (ASC) или убывающую (DESC) последовательность сортировки для каждого из столбцов. По умолчанию принята возрастающая последовательность сортировки.

select test_lb.uniq_id, fam.f_val as family, nam.nam_val as nam, otc.otc_val as otc,;

street.s_val as street, test_lb.bldn as bld, test_lb.bldn_kor as bld_k,;

test_lb.appr as appr, test_lb.telef as tel;

 

 from test_lb, fam, nam, street, otc;

 where                     nam.n_num=test_lb.name_ AND;

                              fam.f_num=test_lb.fam AND;

                                  street.s_num=test_lb.street AND;  

                              otc.otc_n=test_lb.sndname ;

                   ORDER BY Family;

            INTO table test

 

       Внутри уже проведенного упорядочения можно упорядочить таблицу и по другому столбцу

 

                   ORDER BY Family, Tel DESC ;

 

       Во всех случаях столбцы, по которым выполняется сортировка, входят в число выбранных. Этому требованию стандарта удовлетворяет большинство систем.

 

       ORDER BY может использоваться с GROUP BY для упорядочения групп. ORDER BY всегда выполняется последней.

 

select test_lb.uniq_id, fam.f_val as family, nam.nam_val as nam, otc.otc_val as otc,;

street.s_val as street, test_lb.bldn as bld, test_lb.bldn_kor as bld_k,;

test_lb.appr as appr, test_lb.telef as tel;

 from test_lb, fam, nam, street, otc;

 where                     nam.n_num=test_lb.name_ AND;

                              fam.f_num=test_lb.fam AND;

                                  street.s_num=test_lb.street AND;  

                              otc.otc_n=test_lb.sndname ;

                   GROUP BY Street;

                   ORDER BY Street;

            INTO table test

 

GROUP BY Street - группирует данные, но порядок групп в общем случае произвольный.

Добавление ORDER BY Street выстроит группы в алфавитном порядке.

 

Вместо имен столбцов для указания полей, по которым упорядочиваются выходные данные, можно использовать номера.(Номера столбцов в определении выходных данных, а не в исходных таблицах)

 

ORDER BY с NULL - значениями

 

Если в поле, которое используется для упорядочения выходных данных, существуют NULL-значения, то все они следуют в конце или предшествуют всем остальным значениям этого поля. Конкретный вариант зависит от системы.

 

 

Инструкция ORDER BY записывается в виде

                   ORDER BY { <имя столбца > | < целое > }[ASC | DESC]. , ..

 

Пусть H(сгруппированная таблица) – результат вычисления предыдущих инструкций FROM, WHERE(если использовалась) и инструкции GROUP BY(если она есть) и инструкции HAVING. Результат инструкции ORDER BY - упорядоченная таблица, полученная из H путем перестановки строк так, чтобы значения в указанном столбце(столбцах) располагались в возрастающем(ASC) или убывающем(DESC) порядке.

Инструкция SELECT

записывается в виде

SELECT [ ALL I DISTINCT ] select-item- commalist

Пояснения:

1. Список элементов выборки se l ect-item-commalist не должен быть пустым. Ниже элементы выборки рассматриваются подробно. 

2. Если ни ключевое слово ALL, ни DISTINCT не указаны, то подразумевается ALL.

3. В данный момент подразумевается, что вычисления для инструкций FROM, WHERE, GROUP BY и HAVING уже проведены. Не имеет значения, какая из этих инструкций указана, а какая опущена: концептуальный результат их вычисления всегда является таблицей (возможно, "сгруппированной" таблицей – см. ниже), на которую мы будем ссылаться как на таблицу T1 (хотя концептуальный результат в действительности не именован). 

4. Пусть Т2 будет таблицей, производной от таблицы TI путем вычисления указанного списка элементов по таблице T1 (см. ниже). 

5. Пусть Т3 будет таблицей, производной от таблицы Т2 в результате исключения лишних повторяющихся строк из таблицы Т2, если указано ключевое слово DISTINCT, или таблицей, идентичной Т2, в противном случае.

6. Таблица ТЗ будет конечным результатом. 

 

Дата: 2019-02-02, просмотров: 417.