, извлекающего данные всех столбцов из таблицы dept.
(рис 3.1) выполнение оператора SELECT
Если оператор выполняется из приложения на другом языке программирования, то формируется результирующий набор, размещаемый в памяти приложения или сервера БД, а затем приложение извлекает данные из результирующего набора в свои переменные.
Оператор имеет в стандарте SQL92 следующее формальное описание:
SELECT [DISTINCT]
{ {function_agregate | expr [AS new_field_name] } .,:
| specification.*
| *
[INTO list_variable]
FROM {{ имя_таблицы [AS] [table_alias] [(field .,:)]}
| {subquery [AS] subquery_alas [(field .,:)]}
| union_table
| constructor_of_table_value
| {TABLE имя_таблицы [AS] alias [(field .,:)]}
} .,:
[WHERE condition]
[GROUP BY {{ имя_таблицы | alias }.field} .,: {COLLATE name}]
[HAVING condition]
[{ UNION | INTERSECT | EXCEPT } [ALL]
[CORRESPONDING [BY (field.,:)]]
SELECT_operator | {TABLE имя_таблицы} | constructor_of_table_value
[ORDER BY] {{field_result [ASC|DESC]}.,:}
|{{ integer [ASC|DESC]}.,:} ;
Для выполнения запроса требуется SELECT на все таблицы, участвующие в запросе.
После фразы указывается список выражений, определяющий значения, формируемые запросом. В самом простом случае список выражений является списком полей таблицы. Если требуется извлечение значений всех полей, то вместо списка полей можно указать символ *. Например:
SELECT * FROM tbl1;
Имя поля может быть квалифицировано именем таблицы, указываемым через точку. Например:
SELECT tbl1.f1, tbl2.f1 FROM tbl1, tbl2;
FROM определяет одну или несколько таблиц или подзапросов, используемых для извлечения данных.INTO используется только во встроенном SQL, указывая переменные, в которые записывается результат запроса. При этом формируемый результирующий набор может содержать только одну строку.WHERE определяет условие, которому должны удовлетворять все строки, используемые для формирования результирующего набора.Во всех операциях сравнения языка SQL применяется WHERE, может принимать одно из следующих значений: TRUE, FALSE или UNKNOWN. Значение UNKNOWN получается при сравнении значения NULL с любым другим значением, включая значение NULL.
Предикат содержит одно или несколько выражений, выполняющих сравнения. В выражениях могут участвовать имена столбцов, функции
Кроме стандартных операторов сравнения, таких как =, <>, >, <, >=, <= могут быть использованы следующие операторы:
BETWEEN - возвращает TRUE, если значение находится в указанном диапазоне. Например:x BETWEEN y AND z
(x<=z) AND (x>=y).
IN - совпадает с одним из перечисленных в списке. Например:x IN (a,b,c).
LIKE - возвращает TRUE для значений, совпадающих с указанной подстрокой символов. Например:x LIKE 'abc'.
IS NULL - возвращает TRUE, если значение равно NULL. Этот предикат возвращает только значение TRUE или FALSE. Например:x IS NULL.
EXISTS - предикат существования, возвращающий значение TRUE, если указанный в нем SELECT * FROM tbl1 t_out
WHERE EXISTS (SELECT * FROM tbl1 t_in
WHERE t_in.f1= t_out.f1).
UNIQUE - предикат уникальности, возвращающий значение TRUE, если указанный в нем MATCH - предикат совпадения, возвращающий значение TRUE, если при частичном совпадении (указана фраза PARTIAL ) все значения сравниваемой строки равны NULL или существует хотя бы одна строка OVERLAPS - предикат перекрытия, возвращающий значение TRUE, если сравниваемый период времени перекрывает другие указанные периоды. Тип сравниваемых данных может быть DATETIME или INTERVAL (допустим только для второго значения). SOME, ANY или ALL - предикаты количественного сравнения, для которых существуют следующие правила:| Вариант сравнения | Предикат | ||
|---|---|---|---|
| SOME | ANY | All | |
Результат сравнения конструктора значений строки с каждой строкой из набора строк, полученных как TRUE |
TRUE |
TRUE |
TRUE |
| Результат выполнения |
FALSE |
FALSE |
TRUE |
Результат сравнения конструктора значений строки с каждой строкой из набора строк, полученных как FALSE |
FALSE |
FALSE |
FALSE |
Хотя бы один из результатов сравнения конструктора значений строки со строкой из набора строк, полученных как TRUE |
TRUE |
TRUE |
UNKNOWN |
Для примера обозначим TRUE:
(10, 1)> ANY (12, 2 0, NULL 5, 20),
так как первая строка из
(NULL, NULL) = ANY (12, 2 NULL, NULL 5, 20)
вернет значение UNKNOWN, так как сравнение NULL c NULL в результате дает UNKNOWN. Предикат
(10, 1)> ALL (12, 0 0, NULL 5, 20)
вернет значение FALSE, так как сравнение строки (10,1) с каждой строкой FALSE.
Фраза GROUP BY оператора указана фраза GROUP BY, то все имена столбцов, указываемые в списке для определения создаваемого результирующего набора, должны быть указаны с функциями
К функциям
COUNT - подсчет количества всех значений столбцов, за исключением значения NULL и с учетом указания фраз ALL или DISTINCT .COUNT (*) - подсчет количества всех значений столбцов в группе.AVG - определение среднего значения.SUM - подсчет суммы всех значений группы. Если при этом получаемое значение выходит за пределы суммируемого типа данных, то инициируется ошибка выполнения SQL-оператора.MAX - определение максимального значения из группы.MIN - определение минимального значения из группы.Фраза HAVING оператора определяет предикат аналогично фразе WHERE, но применяемый к строкам, полученным в результате выполнения функций
Приведем пример выбора с применением групп. Столбец имеет всего три различных значения: 11, 22 и 33. Для каждой из трех групп находится минимальное и максимальное значение столбца f2:
SELECT dno, MIN(f2), MAX(f2)
FROM tbl1
GROUP BY dno;
Результатом выполнения этого SQL-оператора будет формирование следующих строк:
DNO MIN(f2) MAX(f2) 11 125 200 22 200 2300 33 100 150
При выборе с применением групп и с дополнительным ограничением на значение в столбце MAX(f2):
SELECT dno, MIN(f2), MAX(f2)
FROM tbl1
GROUP BY dno
HAVING MAX(f2) < 1000;
В результате выполнения этого SQL-оператора будут возвращены только две строки - первая и последняя:
DNO MIN(f2) MAX(f2) 11 125 200 33 100 150
Фраза ORDER BY применяется для упорядочивания результирующего набора, которое выполняется в соответствии со значениями столбцов, указанных в списке после фразы ORDER BY. Сначала производится упорядочивание по первому указанному столбцу, потом по второму и т.д. При упорядочивании можно указать опцию (по возрастанию) или (по убыванию).
Например:
SELECT f1,f2 FROM tbl1 ORDER BY f2;
Стандарт SQL-99 вводит поддержку создания таблиц по образцу, позволяя копировать структуру таблицы, создавая новую таблицу, имеющую количество столбцов и их типы, полностью идентичные исходной таблице. Создаваемая по образцу таблица указывается фразой LIKE.
Например:
CREATE TABLE tbl2 LIKE tbl1;.
Для соединения таблиц с одноименными столбцами или таблицы с самой собой используются FROM через пробел после имени таблицы.
Например:
select t1.f1, t1.f2, t2.f1, t2.f2
from tbl1 t1, tbl1 t2
where t1.f1= t2.f2;
Если фраза FROM определяет более одной таблицы или ), называемое также
Следующие два оператора эквивалентны:
SELECT tbl1.f1, tbl2.f1 FROM tbl1, tbl2;
SELECT tbl1.f1, tbl2.f1
FROM tbl1 CROSS JOIN tbl2;
Рассмотрим случай, когда таблицы tbl1 и tbl2 имеют строки, отображенные операторами на рис. 3.2.
(рис 3.2) Строки таблиц tbl1 и tbl2
tbl1 и tbl2 оператором
(рис 3.3) Перекрестное соединение (cross JOIN)
Таким образом,
Соединения позволяют выполнять временное объединение данных, не предусмотренное схемой (родительскими и
Соединяемые таблицы перечисляются через запятую во фразе FROM оператора
Во фразе FROM можно использовать следующие
CROSS JOIN - NATURAL JOIN - INNER JOIN - внутреннее соединение, используется по умолчанию.LEFT JOIN [OUTER ] - RIGHT JOIN [OUTER ] - FULL JOIN [OUTER ] - UNION JOIN - При внутреннем естественном соединении группируются только те строки, значения которых по соединяемым (одноименным) столбцам совпадают. Результат внутреннего соединения двух таблиц показан на рис. 3.4.
(рис 3.4) Внутреннее соединение (INNER JOIN)
При внешнем NULL.
(рис 3.5) Внешнее левое соединение LEFT JOIN [OUTER]
При внешнем правом соединении в результирующий набор будут выбраны все строки из правой таблицы (указываемой второй). При совпадении значений по соединяемым (одноименным) столбцам значения первой таблицы заносятся в результирующий набор в соответствующие строки (рис. 3.6). При отсутствии совпадений в качестве значений первой таблицы проставляется значение NULL.
(рис 3.6) Внешнее правое соединение RIGHT JOIN [OUTER]
При полном внешем соединении в результирующий набор будут выбраны все строки - как из правой, так и из левой таблицы. При совпадении значений по соединяемым (одноименным) столбцам строка содержит значения как из левой, так и из правой таблицы (рис. 3.7). В противном случае, вместо отсутствующих значений в столбцы таблицы (левой или правой) заносится значение NULL.
(рис 3.7) Полное внешнее соединение FULL JOIN [OUTER]
Фраза USING позволяет выполнить USING.
Например:
select t1.f1, t1.f2, t2.f1
from tbl1 t1 join tbl2 t2 using f2;
ON. В результирующий набор выбираются строки, удовлетворяющие заданному условиюWHERE.
Например:
select t1.f1, t1.f2, t2.f1, t2.f2 from tbl1 t1 join tbl2 t2 on t1.f1= t2.f2;
, извлекающего данные всех столбцов из таблицы dept.
(рис 3.1) выполнение оператора SELECT
Если оператор выполняется из приложения на другом языке программирования, то формируется результирующий набор, размещаемый в памяти приложения или сервера БД, а затем приложение извлекает данные из результирующего набора в свои переменные.
Оператор имеет в стандарте SQL92 следующее формальное описание:
SELECT [DISTINCT]
{ {function_agregate | expr [AS new_field_name] } .,:
| specification.*
| *
[INTO list_variable]
FROM {{ имя_таблицы [AS] [table_alias] [(field .,:)]}
| {subquery [AS] subquery_alas [(field .,:)]}
| union_table
| constructor_of_table_value
| {TABLE имя_таблицы [AS] alias [(field .,:)]}
} .,:
[WHERE condition]
[GROUP BY {{ имя_таблицы | alias }.field} .,: {COLLATE name}]
[HAVING condition]
[{ UNION | INTERSECT | EXCEPT } [ALL]
[CORRESPONDING [BY (field.,:)]]
SELECT_operator | {TABLE имя_таблицы} | constructor_of_table_value
[ORDER BY] {{field_result [ASC|DESC]}.,:}
|{{ integer [ASC|DESC]}.,:} ;
Для выполнения запроса требуется SELECT на все таблицы, участвующие в запросе.
После фразы указывается список выражений, определяющий значения, формируемые запросом. В самом простом случае список выражений является списком полей таблицы. Если требуется извлечение значений всех полей, то вместо списка полей можно указать символ *. Например:
SELECT * FROM tbl1;
Имя поля может быть квалифицировано именем таблицы, указываемым через точку. Например:
SELECT tbl1.f1, tbl2.f1 FROM tbl1, tbl2;
FROM определяет одну или несколько таблиц или подзапросов, используемых для извлечения данных.INTO используется только во встроенном SQL, указывая переменные, в которые записывается результат запроса. При этом формируемый результирующий набор может содержать только одну строку.WHERE определяет условие, которому должны удовлетворять все строки, используемые для формирования результирующего набора.Во всех операциях сравнения языка SQL применяется WHERE, может принимать одно из следующих значений: TRUE, FALSE или UNKNOWN. Значение UNKNOWN получается при сравнении значения NULL с любым другим значением, включая значение NULL.
Предикат содержит одно или несколько выражений, выполняющих сравнения. В выражениях могут участвовать имена столбцов, функции
Кроме стандартных операторов сравнения, таких как =, <>, >, <, >=, <= могут быть использованы следующие операторы:
BETWEEN - возвращает TRUE, если значение находится в указанном диапазоне. Например:x BETWEEN y AND z
(x<=z) AND (x>=y).
IN - совпадает с одним из перечисленных в списке. Например:x IN (a,b,c).
LIKE - возвращает TRUE для значений, совпадающих с указанной подстрокой символов. Например:x LIKE 'abc'.
IS NULL - возвращает TRUE, если значение равно NULL. Этот предикат возвращает только значение TRUE или FALSE. Например:x IS NULL.
EXISTS - предикат существования, возвращающий значение TRUE, если указанный в нем SELECT * FROM tbl1 t_out
WHERE EXISTS (SELECT * FROM tbl1 t_in
WHERE t_in.f1= t_out.f1).
UNIQUE - предикат уникальности, возвращающий значение TRUE, если указанный в нем MATCH - предикат совпадения, возвращающий значение TRUE, если при частичном совпадении (указана фраза PARTIAL ) все значения сравниваемой строки равны NULL или существует хотя бы одна строка OVERLAPS - предикат перекрытия, возвращающий значение TRUE, если сравниваемый период времени перекрывает другие указанные периоды. Тип сравниваемых данных может быть DATETIME или INTERVAL (допустим только для второго значения). SOME, ANY или ALL - предикаты количественного сравнения, для которых существуют следующие правила:| Вариант сравнения | Предикат | ||
|---|---|---|---|
| SOME | ANY | All | |
Результат сравнения конструктора значений строки с каждой строкой из набора строк, полученных как TRUE |
TRUE |
TRUE |
TRUE |
| Результат выполнения |
FALSE |
FALSE |
TRUE |
Результат сравнения конструктора значений строки с каждой строкой из набора строк, полученных как FALSE |
FALSE |
FALSE |
FALSE |
Хотя бы один из результатов сравнения конструктора значений строки со строкой из набора строк, полученных как TRUE |
TRUE |
TRUE |
UNKNOWN |
Для примера обозначим TRUE:
(10, 1)> ANY (12, 2 0, NULL 5, 20),
так как первая строка из
(NULL, NULL) = ANY (12, 2 NULL, NULL 5, 20)
вернет значение UNKNOWN, так как сравнение NULL c NULL в результате дает UNKNOWN. Предикат
(10, 1)> ALL (12, 0 0, NULL 5, 20)
вернет значение FALSE, так как сравнение строки (10,1) с каждой строкой FALSE.
Фраза GROUP BY оператора указана фраза GROUP BY, то все имена столбцов, указываемые в списке для определения создаваемого результирующего набора, должны быть указаны с функциями
К функциям
COUNT - подсчет количества всех значений столбцов, за исключением значения NULL и с учетом указания фраз ALL или DISTINCT .COUNT (*) - подсчет количества всех значений столбцов в группе.AVG - определение среднего значения.SUM - подсчет суммы всех значений группы. Если при этом получаемое значение выходит за пределы суммируемого типа данных, то инициируется ошибка выполнения SQL-оператора.MAX - определение максимального значения из группы.MIN - определение минимального значения из группы.Фраза HAVING оператора определяет предикат аналогично фразе WHERE, но применяемый к строкам, полученным в результате выполнения функций
Приведем пример выбора с применением групп. Столбец имеет всего три различных значения: 11, 22 и 33. Для каждой из трех групп находится минимальное и максимальное значение столбца f2:
SELECT dno, MIN(f2), MAX(f2)
FROM tbl1
GROUP BY dno;
Результатом выполнения этого SQL-оператора будет формирование следующих строк:
DNO MIN(f2) MAX(f2) 11 125 200 22 200 2300 33 100 150
При выборе с применением групп и с дополнительным ограничением на значение в столбце MAX(f2):
SELECT dno, MIN(f2), MAX(f2)
FROM tbl1
GROUP BY dno
HAVING MAX(f2) < 1000;
В результате выполнения этого SQL-оператора будут возвращены только две строки - первая и последняя:
DNO MIN(f2) MAX(f2) 11 125 200 33 100 150
Фраза ORDER BY применяется для упорядочивания результирующего набора, которое выполняется в соответствии со значениями столбцов, указанных в списке после фразы ORDER BY. Сначала производится упорядочивание по первому указанному столбцу, потом по второму и т.д. При упорядочивании можно указать опцию (по возрастанию) или (по убыванию).
Например:
SELECT f1,f2 FROM tbl1 ORDER BY f2;
Стандарт SQL-99 вводит поддержку создания таблиц по образцу, позволяя копировать структуру таблицы, создавая новую таблицу, имеющую количество столбцов и их типы, полностью идентичные исходной таблице. Создаваемая по образцу таблица указывается фразой LIKE.
Например:
CREATE TABLE tbl2 LIKE tbl1;.
Для соединения таблиц с одноименными столбцами или таблицы с самой собой используются FROM через пробел после имени таблицы.
Например:
select t1.f1, t1.f2, t2.f1, t2.f2
from tbl1 t1, tbl1 t2
where t1.f1= t2.f2;
Если фраза FROM определяет более одной таблицы или ), называемое также
Следующие два оператора эквивалентны:
SELECT tbl1.f1, tbl2.f1 FROM tbl1, tbl2;
SELECT tbl1.f1, tbl2.f1
FROM tbl1 CROSS JOIN tbl2;
Рассмотрим случай, когда таблицы tbl1 и tbl2 имеют строки, отображенные операторами на рис. 3.2.
(рис 3.2) Строки таблиц tbl1 и tbl2
tbl1 и tbl2 оператором
(рис 3.3) Перекрестное соединение (cross JOIN)
Таким образом,
Соединения позволяют выполнять временное объединение данных, не предусмотренное схемой (родительскими и
Соединяемые таблицы перечисляются через запятую во фразе FROM оператора
Во фразе FROM можно использовать следующие
CROSS JOIN - NATURAL JOIN - INNER JOIN - внутреннее соединение, используется по умолчанию.LEFT JOIN [OUTER ] - RIGHT JOIN [OUTER ] - FULL JOIN [OUTER ] - UNION JOIN - При внутреннем естественном соединении группируются только те строки, значения которых по соединяемым (одноименным) столбцам совпадают. Результат внутреннего соединения двух таблиц показан на рис. 3.4.
(рис 3.4) Внутреннее соединение (INNER JOIN)
При внешнем NULL.
(рис 3.5) Внешнее левое соединение LEFT JOIN [OUTER]
При внешнем правом соединении в результирующий набор будут выбраны все строки из правой таблицы (указываемой второй). При совпадении значений по соединяемым (одноименным) столбцам значения первой таблицы заносятся в результирующий набор в соответствующие строки (рис. 3.6). При отсутствии совпадений в качестве значений первой таблицы проставляется значение NULL.
(рис 3.6) Внешнее правое соединение RIGHT JOIN [OUTER]
При полном внешем соединении в результирующий набор будут выбраны все строки - как из правой, так и из левой таблицы. При совпадении значений по соединяемым (одноименным) столбцам строка содержит значения как из левой, так и из правой таблицы (рис. 3.7). В противном случае, вместо отсутствующих значений в столбцы таблицы (левой или правой) заносится значение NULL.
(рис 3.7) Полное внешнее соединение FULL JOIN [OUTER]
Фраза USING позволяет выполнить USING.
Например:
select t1.f1, t1.f2, t2.f1
from tbl1 t1 join tbl2 t2 using f2;
ON. В результирующий набор выбираются строки, удовлетворяющие заданному условиюWHERE.
Например:
select t1.f1, t1.f2, t2.f1, t2.f2 from tbl1 t1 join tbl2 t2 on t1.f1= t2.f2;
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.