Оператор SQL SELECT: примеры, синтаксис
Оператор SQL SELECT является одним из основных операторов языка SQL. Именно с его помощью происходит выборка значений, хранящихся в базе данных. В структуру запроса оператора SQL SELECT могут быть включены многие дополнительные операторы: уточняющие условие выборки, производящие группировку, сортировку выходных значений и т.д.
Оператор SQL SELECT имеет следующий синтаксис:
SELECT column_list FROM table_name [WHERE сondition GROUP BY expression HAVING condition ORDER BY expression]
Необязательные операторы обрамлены квадратными скобками [].
В параметре column_list указываются названия столбцов таблицы, которые необходимо вывести, либо символ “*”, позволяющий вывести все столбцы таблицы. Ключевым словом FROM задается название таблицы или таблиц, из которых следует брать столбцы. Оператор SQL WHERE задает дополнительные условия выборки. Оператор SQL GROUP BY используют для группирования результата по столбцу или по нескольким столбцам.
Примеры оператора SQL SELECT. Имеется следующая таблица Planets:
ID | PlanetName | Radius | SunSeason | OpeningYear | HavingRings | Opener |
1 | Mars | 3396 | 687 | 1659 | No | Christiaan Huygens |
2 | Saturn | 60268 | 10759.22 | — | Yes | — |
3 | Neptune | 24764 | 60190 | 1846 | Yes | John Couch Adams |
4 | Mercury | 2439 | 115. 88 | 1631 | No | Nicolaus Copernicus |
5 | Venus | 6051 | 243 | 1610 | No | Galileo Galilei |
Пример 1. С помощью оператора SQL SELECT вывести названия планет (Name):
SELECT PlanetName FROM Planets
Результат:
PlanetName |
Mars |
Saturn |
Neptune |
Mercury |
Venus |
Пример 2. С помощью оператора SQL SELECT вывести названия планет, у которых есть кольца (HavingRings):
SELECT PlanetName FROM Planet WHERE HavingRings = 'Yes'
Результат:
PlanetName |
Saturn |
Neptune |
Пример 3. С помощью оператора SQL SELECT вывести информацию о планете Нептун:
SELECT * FROM Planets WHERE PlanetName = 'Neptune'
Результат:
ID | PlanetName | Radius | SunSeason | OpeningYear | HavingRings | Opener |
3 | Neptune | 24764 | 60190 | 1846 | Yes | John Couch Adams |
Синтаксис — Учебник SQL — Schoolsw3.com
schoolsw3.com
САМОСТОЯТЕЛЬНОЕ ОБУЧЕНИЕ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ
❮ Назад Далее ❯
Таблица базы данных
База данных чаще всего содержит одну или несколько таблиц. Каждая таблица идентифицируется по имени (например, «клиенты» или «заказы»). Таблицы содержат записи (строки) с данными.
В этом уроке мы будем использовать хорошо известный образец базы данных Northwind (входит в MS Access и MS SQL Server).
Ниже приведен выбор из таблицы «клиенты»:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | 120 Hanover Sq. | London | WA1 1DP | UK | |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Приведенная выше таблица содержит пять записей (по одной для каждого клиента) и семь столбцов (CustomerID, CustomerName, ContactName, Address, City, PostalCode и Country).
Инструкций
Большинство действий, которые необходимо выполнить с базой данных, выполняются с помощью инструкций SQL.
Следующая инструкция SQL выбирает все записи в таблице «клиенты»:
Пример
SELECT * FROM Customers;
Попробуйте сами »
В этом уроке мы расскажем вам все о различных SQL инструкций.
Имейте в виду, что…
- Ключевые слова SQL не чувствительны к регистру: select — это то же самое, что SELECT
В этом уроке мы напишем все ключевые слова SQL в верхнем регистре.
Точка с запятой после инструкций SQL?
Некоторые системы баз данных требуют точку с запятой в конце каждой инструкции SQL.
Точка с запятой — это стандартный способ разделения каждой инструкции SQL в системах баз данных, которые позволяют выполнять несколько инструкций SQL в одном вызове сервера.
В этом учебнике мы будем использовать точку с запятой в конце каждой инструкции SQL.
Некоторые из наиболее важных команд SQL
- SELECT — извлечение данных из базы данных
- UPDATE — обновление данных в базе данных
- DELETE — удаляет данные из базы данных
- INSERT INTO — вставка новых данных в базу данных
- CREATE DATABASE — создает новую базу данных
- ALTER DATABASE — изменяет базу данных
- CREATE TABLE — создает новую таблицу
- ALTER TABLE — изменения в таблице
- DROP TABLE — удаляет таблицу
- CREATE INDEX — создает индекс (ключ поиска)
- DROP INDEX — удаляет индекс
❮ Назад Далее ❯
ВЫБОР ЦВЕТА
ТОП Учебники
HTML УчебникJavaScript Учебник
КАК Учебник
SQL Учебник
Python Учебник
W3.CSS Учебник
Bootstrap Учебник
PHP Учебник
Java Учебник
C++ Учебник
jQuery Учебник
ТОП Справочники
HTML СправочникCSS Справочник
JavaScript Справочник
SQL Справочник
Python Справочник
W3. CSS Справочник
Bootstrap Справочник
PHP Справочник
HTML Цвета
Java Справочник
Angular Справочник
jQuery Справочник
ТОП Примеры
HTML ПримерыCSS Примеры
JavaScript Примеры
КАК Примеры
SQL Примеры
Python Примеры
W3.CSS Примеры
Bootstrap Примеры
Java Примеры
XML Примеры
jQuery Примеры
Форум | О SchoolsW3
SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.
Авторское право 1999- Все права защищены.
SchoolsW3 работает на площадке от SW3.CSS.
SELECT Синтаксис | Couchbase Документы
- номер
Эта страница позволяет детализировать синтаксис запроса SELECT.
select ::= select-term ( set-op select-term )* по пунктам? ограничительная оговорка? оговорка о смещении?
термин выбора ::= подвыбор | '('выбрать')'
подвыборка ::= выбор-из | from-select
select-from ::= with-clause? пункт выбора из пункта? пусть пункт? где пункт? по пунктам? пункт окна?
from-select ::= with-clause? из пункта дай пункта? где пункт? по пунктам? пункт окна? пункт выбора
set-op ::= ('ОБЪЕДИНЕНИЕ' | 'ПЕРЕСЕЧЕНИЕ' | 'ИСКЛЮЧАЯ') 'ВСЕ'?
WITH Clause
with-clause ::= 'WITH' псевдоним 'AS' '(' (выбор | выражение) ')' ( ',' псевдоним 'AS' '(' (выбор | выражение) ')' )*
псевдоним ::= идентификатор
Пункт SELECT
пункт выбора ::= 'SELECT' подсказка-комментарий? проекция
проекция ::= ('ВСЕ' | 'ОТДЕЛЬНЫЕ')? ( результат-выражение ( ',' результат-выражение )* | ('СЫРЬЕ' | 'ЭЛЕМЕНТ' | 'ЗНАЧ') выражение ('КАК'? псевдоним)? )
результат-выражение ::= ( ( путь '. ' )? '*' | выражение ( 'AS'? псевдоним )? )
путь ::= идентификатор ( '[' выражение ']' )* ( ' .' идентификатор ( '[' выражение ']' )* )*
FROM Пункт
from-clause ::= 'FROM' from-terms
from-terms ::= ( from-keyspace | from-subquery | from-generic ) (присоединение-предложение | вложенное-предложение | не вложенное-предложение)* объединение-разделение-запятая*
from-keyspace ::= keyspace-ref ('AS'? псевдоним)? пункт использования?
keyspace-ref ::= keyspace-path | keyspace-partial
keyspace-path ::= ( namespace ':' )? ведро ('.' область действия '.' коллекция)?
keyspace-partial ::= коллекция
namespace ::= идентификатор
ведро ::= идентификатор
область видимости ::= идентификатор
коллекция ::= идентификатор
from-subquery ::= subquery-expr 'AS '? псевдоним
подзапрос-выражение ::= '('выбрать')'
from-generic ::= expr (псевдоним 'AS')?
JOIN Clause
join-clause ::= ansi-join-clause | предложение поиска-объединения | index-join-clause
ANSI JOIN
ansi-join-clause ::= ansi-join-type? 'JOIN' ansi-join-rhs ansi-join-predicate
ansi-join-type ::= 'INNER' | ( 'ЛЕВЫЙ' 'ВНЕШНИЙ'? ) | ( 'ПРАВО' 'ВНЕШНИЙ'? )
ansi-join-rhs ::= rhs-keyspace | rhs-подзапрос | rhs-generic
rhs-keyspace ::= keyspace-ref ('AS'? Псевдоним)? ansi-join-подсказки?
rhs-subquery ::= subquery-expr 'AS'? псевдоним
rhs-generic ::= выражение ('AS'? псевдоним)?
ansi-join-hints ::= use-hash-hint | использовать-nl-подсказка | множественные подсказки
подсказка-хэша ::= 'USE' use-hash-term
use-hash-term ::= 'HASH' '(' ( 'BUILD' | 'PROBE' ) ')'
use-nl-hint ::= 'USE' use-nl-term
use-nl-term ::= 'NL'
multi-hints ::= 'USE' ( ansi-hint-terms other-hint -термины ) | ( другие термины-подсказки и термины-подсказки )
ansi-hint-terms ::= use-hash-term | use-nl-term
другие термины-подсказки ::= use-index-term | use-keys-term
ansi-join-predicate ::= 'ON' expr
Lookup JOIN
lookup-join-clause ::= lookup-join-type? 'JOIN' lookup-join-rhs lookup-join-predicate
lookup-join-type ::= 'INNER' | ( 'LEFT' 'OUTER'? )
lookup-join-rhs ::= keyspace-ref ('AS'? псевдоним)?
предикат поиска-соединения ::= 'ВКЛ' 'ПЕРВИЧНЫЙ'? 'KEYS' expr
Index JOIN
пункт-объединения-индекса ::= тип-объединения-индекса? 'JOIN' index-join-rhs index-join-predicate
index-join-type ::= 'INNER' | ( 'LEFT' 'OUTER'? )
index-join-rhs ::= keyspace-ref ('AS'? псевдоним)?
index-join-predicate ::= 'ON' 'PRIMARY'? 'KEY' expr 'FOR' псевдоним
NEST Clause
гнездо-предложение ::= ansi-nest-clause | поиск-гнездо-предложение | index-nest-clause
ANSI NEST
ansi-nest-clause ::= ansi-nest-type? 'NEST' ansi-nest-rhs ansi-nest-predicate
ansi-nest-type ::= 'INNER' | ( 'LEFT' 'OUTER'? )
ansi-nest-rhs ::= keyspace-ref ( 'AS'? псевдоним)?
ansi-nest-predicate ::= 'ON' expr
Lookup NEST
lookup-nest-clause ::= lookup-nest-type? 'NEST' lookup-nest-rhs lookup-nest-predicate
lookup-nest-type ::= 'INNER' | ( 'LEFT' 'OUTER'? )
lookup-nest-rhs ::= keyspace-ref ('AS'? псевдоним)?
lookup-nest-predicate ::= 'ON' 'KEYS' expr
Index NEST
индекс-гнездо-клауз ::= индекс-гнездо-тип? 'NEST' index-nest-rhs index-nest-predicate
index-nest-type ::= 'INNER' | ( 'LEFT' 'OUTER'? )
index-nest-rhs ::= keyspace-ref ('AS'? псевдоним)?
index-nest-predicate ::= 'ON' 'KEY' expr 'FOR' псевдоним
UNNEST Clause
unnest-clause ::= unnest-type? ( 'UNNEST' | 'FLATTEN' ) expr ( 'AS'? псевдоним )?
не вложенный тип ::= 'INNER' | («ЛЕВЫЙ» «ВНЕШНИЙ»?)
Объединение через запятую
-comma-separated-join ::= ',' ( rhs-keyspace | rhs-subquery | rhs-generic )
USE Clause
use-clause ::= use-keys-clause | use-index-clause
use-keys-clause ::= 'USE' use-keys-term
use-keys-term ::= 'PRIMARY'? 'KEYS' expr
use-index-clause ::= 'USE' use-index-term
use-index-term ::= 'INDEX' '(' index-ref ( ',' index-ref )* ')'
ссылка-индекса ::= имя-индекса? индексный тип?
имя-индекса ::= идентификатор
тип индекса ::= 'ИСПОЛЬЗОВАНИЕ' ('GSI' | 'FTS')
LET Clause
let-clause ::= 'LET' alias '=' expr ( ',' alias '=' expr )*
WHERE Clause
where-clause ::= 'WHERE' cond
cond ::= expr
GROUP BY Пункт
group-by-clause ::= 'GROUP' 'BY' expr ( ',' expr )* letting-clause? наличие пункта? | letting-clause
letting-clause ::= 'LETTING' alias '=' expr ( ',' alias '=' expr )*
have-clause ::= 'HAVING' cond
WINDOW Clause
window-clause ::= 'WINDOW' объявление окна ( ',' объявление окна )*
объявление окна ::= имя окна 'AS' '(' определение окна ')'
имя-окна ::= идентификатор
определение-окна ::= ссылка-окна? пункт окна-раздела? Пункт заказа окна? пункт оконной рамы?
window-ref ::= идентификатор
window-partition-clause ::= 'PARTITION' 'BY' expr ( ',' expr )*
window-order-clause ::= 'ORDER' 'BY' упорядочение -термин ( ',' термин заказа )*
пункт окна-фрейма ::= ( 'СТРОКИ' | 'ДИАПАЗОН' | 'ГРУППЫ' ) экстент окна-фрейма исключение окна-фрейма?
оконная рама ::= 'БЕЗ ГРАНИЦЫ' 'ПРЕДШЕСТВУЮЩАЯ' | valexpr 'ПРЕДЫДУЩИЕ' | 'ТЕКУЩАЯ' 'СТРОКА' | 'МЕЖДУ' ( 'НЕОГРАНИЧЕННЫЙ' 'ПРЕДЫДУЩИЙ' | 'ТЕКУЩИЙ' 'СТРОКА' | valexpr ('ПРЕДЫДУЩИЙ' | 'СЛЕДУЮЩИЙ')) 'И' ( 'НЕОГРАНИЧЕННЫЙ' 'СЛЕДУЮЩИЙ' | 'ТЕКУЩАЯ СТРОКА' | valexpr ('ПРЕДЫДУЩИЙ' | 'СЛЕДУЮЩИЙ') )
исключение оконной рамы ::= 'ИСКЛЮЧИТЬ' ('ТЕКУЩАЯ' 'СТРОКА' | 'ГРУППА' | 'СВЯЗИ' | 'НЕТ' 'ДРУГИЕ')
ORDER BY Статья
Порядок-за-пунктом ::= 'ORDER' 'BY' срок-заказа ( ',' срок-заказа )*
-термин-заказа ::= выражение ('ASC' | 'DESC') ? ( 'НУЛИ' ( 'ПЕРВЫЙ' | 'ПОСЛЕДНИЙ' ))?
LIMIT Clause
limit-clause ::= 'LIMIT' expr
OFFSET Clause
offset-clause ::= 'OFFSET' expr
Соглашения
SELECT — документация Arrow DataFusion
Запросы в DataFusion сканируют данные из таблиц и возвращают 0 или более строк. Имейте в виду, что имена столбцов в запросах пишутся в нижнем регистре, но не в предполагаемой схеме. Соответственно, если вы хотите запросить поле с заглавной буквы, обязательно используйте двойные кавычки. Пожалуйста, посмотрите это пример для пояснения. В этой документации мы описываем синтаксис SQL в DataFusion.
DataFusion поддерживает следующий синтаксис запросов:
[ WITH with_query [ …] ]
ВЫБЕРИТЕ [ ВСЕ | DISTINCT ] select_expr [ …]
[ FROM from_item [ …] ]
[ JOIN join_item [ …] ]
[ WHERE условие ]
[ GROUP BY grouping_element [ …] ]
[ HAVING condition]
[ UNION [ ALL | выберите ]
[ ORDER BY выражение [ ASC | DESC ][ …] ]
[ LIMIT count ]
С пунктом
Предложение with позволяет давать имена запросам и ссылаться на них по имени.
С x AS (ВЫБЕРИТЕ a, MAX(b) AS b FROM t GROUP BY a) ВЫБЕРИТЕ a, b ИЗ x;
Предложение SELECT
Пример:
ВЫБРАТЬ a, b, a + b ИЗ таблицы
Можно добавить квантификатор DISTINCT
, чтобы запрос возвращал все отдельные строки. По умолчанию будет использоваться ВСЕ
, что возвращает все строки.
ВЫБЕРИТЕ ОТЛИЧНОЕ лицо, возраст ОТ сотрудников
ИЗ пункта
Пример:
ВЫБРАТЬ t.a ИЗ таблицы AS t
ГДЕ пункт
Пример:
ВЫБЕРИТЕ ИЗ таблицы, ГДЕ > 10
Пункт ПРИСОЕДИНЕНИЯ
DataFusion поддерживает INNER JOIN
, LEFT OUTER JOIN
, RIGHT OUTER JOIN
, FULL OUTER JOIN
, NATURAL JOIN
и CROSS JOIN
.
Следующие примеры основаны на этой таблице:
выберите * из х; +----------+----------+ | столбец_1 | столбец_2 | +----------+----------+ | 1 | 2 | +----------+----------+
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Ключевые слова JOIN
или INNER JOIN
определяют объединение, которое показывает только те строки, в которых есть совпадения в обеих таблицах.
❯ выберите * из x внутреннего соединения x y ON x. column_1 = y.column_1; +----------+----------+-----------+----------+ | столбец_1 | столбец_2 | столбец_1 | столбец_2 | +----------+----------+-----------+----------+ | 1 | 2 | 1 | 2 | +----------+----------+-----------+----------+
ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
Ключевые слова ЛЕВОЕ СОЕДИНЕНИЕ
или LEFT OUTER JOIN
определить соединение, которое включает все строки из левой таблицы, даже если
не совпадает в правильной таблице. Если совпадений нет, для правой стороны соединения создаются нулевые значения.
❯ выберите * из x левого соединения x y ON x.column_1 = y.column_2; +----------+----------+-----------+----------+ | столбец_1 | столбец_2 | столбец_1 | столбец_2 | +----------+----------+-----------+----------+ | 1 | 2 | | | +----------+----------+-----------+----------+
ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
Ключевые слова RIGHT JOIN
или RIGHT OUTER JOIN
определяют объединение, которое включает все строки из правой таблицы, даже если
не совпадает в левой таблице. Если совпадений нет, для левой стороны соединения создаются нулевые значения.
❯ выберите * из x правого соединения x y ON x.column_1 = y.column_2; +----------+----------+-----------+----------+ | столбец_1 | столбец_2 | столбец_1 | столбец_2 | +----------+----------+-----------+----------+ | | | 1 | 2 | +----------+----------+-----------+----------+
ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
Ключевые слова FULL JOIN
или FULL OUTER JOIN
определяют объединение, которое фактически является объединением LEFT OUTER JOIN
и ПРАВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
. Он покажет все строки с левой и правой стороны соединения и выдаст нулевые значения на
любой стороне соединения, где нет совпадения.
❯ выберите * из x полное внешнее соединение x y ON x.column_1 = y.column_2; +----------+----------+-----------+----------+ | столбец_1 | столбец_2 | столбец_1 | столбец_2 | +----------+----------+-----------+----------+ | 1 | 2 | | | | | | 1 | 2 | +----------+----------+-----------+----------+
НАТУРАЛЬНОЕ СОЕДИНЕНИЕ
Естественное соединение определяет внутреннее соединение на основе общих имен столбцов, найденных во входных таблицах. Когда нет общего имена столбцов найдены, он ведет себя как перекрестное соединение.
❯ выберите * из x естественное соединение x y; +----------+----------+ | столбец_1 | столбец_2 | +----------+----------+ | 1 | 2 | +----------+----------+
ПОПЕРЕЧНОЕ СОЕДИНЕНИЕ
Перекрестное соединение создает декартово произведение, которое соответствует каждой строке в левой части соединения каждой строке в правая сторона соединения.
❯ выберите * из x перекрестного соединения x y; +----------+----------+-----------+----------+ | столбец_1 | столбец_2 | столбец_1 | столбец_2 | +----------+----------+-----------+----------+ | 1 | 2 | 1 | 2 | +----------+----------+-----------+----------+
GROUP BY пункт
Пример:
SELECT a, b, MAX(c) FROM table GROUP BY a, b
ИМЕЕТ пункт
Пример:
SELECT a, b, MAX(c) FROM table GROUP BY a, b HAVING MAX(c) > 10
СОЮЗ пункт
Пример:
ВЫБЕРИТЕ а, б, с ИЗ таблицы1 СОЮЗ ВСЕХ ВЫБИРАТЬ а, б, с ИЗ таблицы2
ORDER BY пункт
Упорядочивает результаты по указанному выражению.