Microsoft SQL Server
Оператор SELECT
Поиск…
Вступление
В SQL SELECT
возвращают наборы результатов из коллекций данных, таких как таблицы или представления. Операторы SELECT
могут использоваться с различными другими предложениями, такими как WHERE
, GROUP BY
или ORDER BY
для дальнейшего уточнения желаемых результатов.
Basic SELECT из таблицы
Выберите все столбцы из какой-либо таблицы (в этом случае системная таблица):
SELECT *
FROM sys.objects
Или выберите только некоторые конкретные столбцы:
SELECT object_id, name, type, create_date
FROM sys.objects
Фильтровать строки, используя предложение WHERE
Предложение WHERE фильтрует только те строки, которые удовлетворяют некоторому условию:
SELECT *
FROM sys.objects
WHERE type = 'IT'
Сортировка результатов с помощью ORDER BY
Предложение ORDER BY сортирует строки в возвращаемом результирующем наборе с помощью некоторого столбца или выражения:
SELECT *
FROM sys.objects
ORDER BY create_date
Результат группы с использованием GROUP BY
Предложение GROUP BY группирует строки по некоторому значению:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
Вы можете применить некоторую функцию для каждой группы (агрегированную функцию) для вычисления суммы или количества записей в группе.
тип | с |
---|---|
SQ | 3 |
S | 72 |
ЭТО | 16 |
PK | 1 |
U | 5 |
Группы фильтров с использованием предложения HAVING
Предложение HAVING удаляет группы, которые не удовлетворяют условию:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
HAVING count(*) < 10
тип | с |
---|---|
SQ | 3 |
PK | 1 |
U | 5 |
Возвращение только первых N строк
Предложение TOP возвращает только первые N строк в результате:
SELECT TOP 10 *
FROM sys.objects
Разбиение страницы с помощью OFFSET FETCH
Предложение OFFSET FETCH - это более продвинутая версия TOP. Он позволяет пропустить строки N1 и взять следующие строки N2:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY
Вы можете использовать OFFSET без выборки, чтобы просто пропустить первые 50 строк:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS
SELECT без FROM (нет данных)
Оператор SELECT может быть выполнен без предложения FROM:
declare @var int = 17;
SELECT @var as c1, @var + 2 as c2, 'third' as c3
В этом случае возвращается одна строка со значениями / результатами выражений.