Instrukcja SQL SELECT
Pobieranie danych za pomocą instrukcji SQL Select
SQL to wszechstronny język baz danych. SQL, wymawiane jako Sequel lub po prostu SQL, to język programowania komputerowego używany do wykonywania zapytań w relacyjnych bazach danych zgodnie z podejściem nieproceduralnym. Podczas wyodrębniania informacji z bazy danych za pomocą języka SQL jest to nazywane zapytaniem do bazy danych.
Relacyjna baza danych jest wdrażana przy użyciu systemu zarządzania relacyjnymi bazami danych (RDBMS). RDBMS wykonuje wszystkie podstawowe funkcje oprogramowania DBMS, o których mowa powyżej, wraz z wieloma innymi funkcjami, które sprawiają, że model relacyjny jest łatwiejszy do zrozumienia i wdrożenia. Użytkownicy RDBMS manipulują danymi przy użyciu specjalnego języka manipulacji danymi. Struktury baz danych są definiowane za pomocą języka definicji danych. Polecenia, które użytkownicy systemu wykonują w celu przechowywania i pobierania danych, można wprowadzać na terminalu z interfejsem RDBMS, wpisując polecenia, lub wprowadzać za pomocą pewnego typu interfejsu graficznego. DBMS przetwarza następnie polecenia.
Możliwości instrukcji SELECT
Pobieranie danych z bazy danych odbywa się poprzez odpowiednie i efektywne wykorzystanie języka SQL. Trzy pojęcia z teorii relacyjnej obejmują zdolność wyrażenia SELECT: rzutowanie, selekcja i łączenie.
Projekcja: operacja projektu wybiera tylko określone kolumny (pola) z tabeli. Tabela wynikowa zawiera podzbiór dostępnych kolumn i może zawierać wszystko, od pojedynczej kolumny do wszystkich dostępnych kolumn.
Selekcja: operacja selekcji wybiera podzbiór wierszy (rekordów) w tabeli (relacja), które spełniają warunek selekcji. Możliwość wybierania wierszy z całego zestawu wyników nosi nazwę Selection. Obejmuje filtrowanie warunkowe i przemieszczanie danych. Podzbiór może wynosić od braku wierszy, jeśli żaden z wierszy nie spełnia warunku wyboru, do wszystkich wierszy w tabeli.
Łączenie: operacja łączenia łączy dane z co najmniej dwóch tabel w oparciu o jedną lub więcej wspólnych wartości kolumn. Operacja łączenia umożliwia użytkownikowi systemu informacyjnego przetwarzanie relacji, które istnieją między tabelami. Operacja łączenia ma bardzo duże możliwości, ponieważ umożliwia użytkownikom systemu badanie relacji między elementami danych, których nie można było przewidzieć w momencie projektowania bazy danych.
Rozważ powyższe struktury tabel. Pobieranie imię i nazwisko, identyfikator działu i pensja dla pojedynczego pracownika z tabeli EMPLOYEES to Projekcja. Pobieranie danych pracownika, którego wynagrodzenie jest mniejsze niż 5000, z tabeli PRACOWNICY to Wybór. Pobieranie imienia pracownika, nazwy działu poprzez dołączenie do PRACOWNIKÓW i DZIAŁÓW to Dołączanie.
Podstawowa instrukcja SELECT
Poniżej przedstawiono podstawową składnię instrukcji SELECT.
SELECT [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name}
[{table_name [alias] | view_name}]...
[WHERE condition]
[GROUP BY condition_list]
[HAVING condition]
[ORDER BY {column_name | column_# [ ASC | DESC ] } ...
Klauzula SELECT jest obowiązkowa i wykonuje relacyjną operację projektu.
Klauzula FROM jest również obowiązkowa. Identyfikuje jedną lub więcej tabel i / lub widoków, z których należy pobrać dane kolumny wyświetlane w tabeli wynikowej.
Klauzula WHERE jest opcjonalna i wykonuje relacyjną operację wyboru. Określa, które wiersze mają zostać wybrane.
Klauzula GROUP BY jest opcjonalna. Porządkuje dane w grupy według jednej lub więcej nazw kolumn wymienionych w klauzuli SELECT.
Opcjonalna klauzula HAVING określa warunki dotyczące grup, które mają zostać uwzględnione w tabeli wynikowej. Grupy określa klauzula GROUP BY.
Klauzula ORDER BY jest opcjonalna. Sortuje wyniki zapytania według co najmniej jednej kolumny w kolejności rosnącej lub malejącej.
Wyrażenia arytmetyczne i wartości NULL w instrukcji SELECT
Wyrażenie arytmetyczne można utworzyć za pomocą nazw kolumn, operatorów i wartości stałych w celu osadzenia wyrażenia w instrukcji SELECT. Operator mający zastosowanie do kolumny zależy od typu danych kolumny. Na przykład operatory arytmetyczne nie będą pasować do wartości literałów znakowych. Na przykład,
SELECT employee_id, sal * 12 ANNUAL_SAL
FROM employees;
Powyższe zapytanie zawiera wyrażenie arytmetyczne (sal * 12) do obliczenia rocznego wynagrodzenia każdego pracownika.
Operatory arytmetyczne
Operatory działają na kolumnach (nazywanych operandami), dając inny wynik. W przypadku wielu operatorów w wyrażeniu o kolejności ewaluacji decyduje pierwszeństwo operatorów. Oto podstawowe zasady pierwszeństwa -
Mnożenie i dzielenie następuje przed dodawaniem i odejmowaniem.
Operatory o tym samym priorytecie są oceniane od lewej do prawej.
Użyj parethes, aby zastąpić domyślne zachowanie operatorów.
Poniższa tabela przedstawia pierwszeństwo operatorów w takich przypadkach. Operacja operatora na poziomie pierwszeństwa
Description Operator Precedence
Addition + Lowest
Subtraction - Lowest
Multiplication * Medium
Division / Medium
Brackets ( ) Highest
Przeanalizuj poniższe pytania (a), (b) i (c)
SQL> SELECT 2*35 FROM DUAL;
SQL> SELECT salary + 1500 FROM employees;
SQL> SELECT first_name, salary, salary + (commission_pct* salary) FROM employees;
Zapytanie (a) mnoży dwie liczby, podczas gdy (b) pokazuje dodanie 1500 dolarów do wynagrodzeń wszystkich pracowników. Zapytanie (c) pokazuje dodanie składnika prowizji do wynagrodzenia pracownika. Zgodnie z pierwszeństwem pierwsza prowizja byłaby naliczana od wynagrodzenia, a następnie dodawana do wynagrodzenia.
Alias kolumny
Alias służy do zmiany nazwy kolumny lub wyrażenia podczas wyświetlania. Alias do kolumny lub wyrażenia pojawia się jako nagłówek w danych wyjściowych zapytania. Przydaje się do dostarczania znaczącego nagłówka do długich wyrażeń w zapytaniu SELECT. Domyślnie alias pojawia się w wynikach zapytania wielkimi literami bez spacji. Aby zmienić to zachowanie, alias musi być ujęty w podwójne cudzysłowy, aby zachować wielkość liter i spacje w nazwie aliasu.
SELECT price * 2 as DOUBLE_PRICE, price * 10 "Double Price"
FROM products;
DOUBLE_PRICE Double Price
------------ ------------
39.9 39.9
60 60
51.98 51.98
Operatory konkatenacji
Operator konkatenacji może służyć do łączenia dwóch wartości łańcuchowych lub wyrażeń w zapytaniu SELECT. Symbol podwójnej pionowej kreski jest używany jako operator konkatenacji ciągów. Ma zastosowanie tylko do wartości kolumn znakowych i łańcuchowych, których wynikiem jest nowe wyrażenie znakowe. Przykład
SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM dual;
Powyższe zapytanie pokazuje konkatenację dwóch wartości literałów znakowych.
Literały
Każda wartość zakodowana na stałe, która nie jest przechowywana w bazie danych, w klauzuli SELECT, jest znana jako Literal. Może to być liczba, znak lub wartość daty. Wartości znaków i dat muszą być umieszczone w cudzysłowie. Rozważ poniższe zapytania SQL - przykłady użycia literałów różnych typów danych w zapytaniach SQL.
Poniższe zapytanie używa dwóch literałów znakowych, aby połączyć je ze sobą.
SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM DUAL
Poniższe zapytanie używa literałów znakowych, aby ładnie wydrukować wynagrodzenie pracownika.
SQL> SELECT first_name ||'earns'|| salary||' as of '|||sysdate
FROM employees
Operator wyceny
Operator cudzysłowu służy do określenia własnego separatora cudzysłowu. Możesz wybrać wygodny separator, w zależności od danych.
SELECT department_name|| ' Department' ||q'['s Manager Id: ]'|| manager_id
FROM departments;
ZERO
Jeśli kolumna nie ma określonej wartości, jest uważana za NULL. Wartość NULL oznacza nieznaną lub niedostępną. Nie jest zerem dla wartości liczbowych, nie jest pustym miejscem dla wartości znakowych.
Kolumny z wartością NULL można wybierać w zapytaniu SELECT i mogą być częścią wyrażenia arytmetycznego. Każde wyrażenie arytmetyczne używające wartości NULL daje wynik NULL. Z tego powodu kolumny z wartością NULL muszą być obsługiwane inaczej, określając ich wartości alternatywne za pomocą funkcji dostarczonych przez Oracle, takich jak NVL lub NULLIF.
SQL> SELECT NULL + 1000 NUM
FROM DUAL;
NUM
--------
Słowo kluczowe DISTINCT
Jeśli oczekuje się, że dane będą miały zduplikowane wyniki, użyj słowa kluczowego DISTINCT, aby wyeliminować duplikaty i wyświetlić tylko unikalne wyniki w wyniku zapytania. Tylko wybrane kolumny są sprawdzane pod kątem duplikacji, a wiersze zostaną logicznie usunięte z wyniku zapytania. Należy zauważyć, że słowo kluczowe DISTINCT musi występować tuż po klauzuli SELECT.
Poniższe proste zapytanie demonstruje użycie DISTINCT do wyświetlenia unikalnych identyfikatorów działów z tabeli EMPLOYEES.
SQL> SELECT DISTINCT DEPARTMENT_ID
FROM employees;
DEPARTMENT_ID
---------------
10
20
30
40
Polecenie DESCRIBE
Strukturalne metadane tabeli można uzyskać, odpytując bazę danych o listę kolumn, które ją tworzą, za pomocą polecenia DESCRIBE. Wyświetli listę używanych nazw kolumn, ich właściwości null i typu danych.
Syntax:
DESC[RIBE] [SCHEMA].object name
Na przykład,
DESC EMPLOYEE
wyświetli strukturę tabeli EMPLOYEE, tj. kolumny, ich typy danych, dokładność i właściwość dopuszczającą wartość null.