Microsoft SQL Server
Instrukcja SELECT
Szukaj…
Wprowadzenie
W SQL instrukcje SELECT zwracają zestawy wyników ze zbiorów danych, takich jak tabele lub widoki. Instrukcje SELECT mogą być używane z różnymi innymi klauzulami, takimi jak WHERE , GROUP BY lub ORDER BY aby dodatkowo zawęzić pożądane wyniki.
Podstawowy WYBIERZ z tabeli
Wybierz wszystkie kolumny z jakiejś tabeli (w tym przypadku tabeli systemowej):
SELECT *
FROM sys.objects
Lub wybierz tylko niektóre konkretne kolumny:
SELECT object_id, name, type, create_date
FROM sys.objects
Filtruj wiersze za pomocą klauzuli WHERE
Klauzula WHERE filtruje tylko te wiersze, które spełniają pewien warunek:
SELECT *
FROM sys.objects
WHERE type = 'IT'
Sortuj wyniki za pomocą ORDER BY
Klauzula ORDER BY sortuje wiersze w zwróconym zestawie wyników według jakiejś kolumny lub wyrażenia:
SELECT *
FROM sys.objects
ORDER BY create_date
Wynik grupy za pomocą GROUP BY
Klauzula GROUP BY grupuje wiersze według pewnej wartości:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
Możesz zastosować jakąś funkcję dla każdej grupy (funkcja agregująca), aby obliczyć sumę lub liczbę rekordów w grupie.
| rodzaj | do |
|---|---|
| SQ | 3) |
| S. | 72 |
| TO | 16 |
| PK | 1 |
| U | 5 |
Filtruj grupy za pomocą klauzuli HAVING
Klauzula HAVING usuwa grupy niespełniające warunku:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
HAVING count(*) < 10
| rodzaj | do |
|---|---|
| SQ | 3) |
| PK | 1 |
| U | 5 |
Zwracane tylko pierwsze N wierszy
Klauzula TOP zwraca tylko pierwsze N wierszy w wyniku:
SELECT TOP 10 *
FROM sys.objects
Podział na strony przy użyciu funkcji OFFSET FETCH
Klauzula OFFSET FETCH jest bardziej zaawansowaną wersją TOP. Umożliwia pominięcie wierszy N1 i zrobienie kolejnych wierszy N2:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY
Możesz użyć opcji PRZESUNIĘCIE bez pobierania, aby pominąć pierwsze 50 wierszy:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS
WYBIERZ bez FROM (bez souce danych)
Instrukcja SELECT może być wykonana bez klauzuli FROM:
declare @var int = 17;
SELECT @var as c1, @var + 2 as c2, 'third' as c3
W takim przypadku zwracany jest jeden wiersz z wartościami / wynikami wyrażeń.