funkcja sql z parametrami wejściowymi. Funkcje łańcuchowe SQL - przykłady użycia

Wbudowane funkcje SQL-a mające na celu ułatwienie i przyspieszenie przetwarzania danych. Cechą szczególną jest to, że można je określić bezpośrednio w wyrażeniu. Wszystkie wbudowane funkcje można podzielić na grupy.

Funkcje matematyczne:

    ABS(oznaczający) – zwraca wartość bezwzględną liczby;

    Okrągły(wartość, dokładność) – zwraca wartość liczbową zaokrągloną do wartości określonej argumentem dokładność liczba miejsc po przecinku;

    PODPISAĆ(oznaczający) – zwraca minus, jeśli liczba jest ujemna, a plus w przeciwnym razie;

    MOC(czyli stopień) – podnosi liczbę do potęgi;

    KWRT(oznaczający) – wyciąga pierwiastek kwadratowy z liczby;

    SUFIT(oznaczający)– zwraca najbliższą liczbę całkowitą większą lub równą wartości;

    - PODŁOGA(oznaczający)– zwraca najbliższą liczbę całkowitą mniejszą lub równą wartości.

Funkcje ciągów:

    ASCII(linia) - zwroty ASCII kod pierwszego znaku linii;

    CHAR(numer) – zwróć znak przez ASCII kod;

    LEN (linia) – zwraca długość ciągu znaków w znakach, z wyłączeniem końcowych spacji;

    LPRZYCINAĆ(linia)/ RTRIM(linia)- usuwa spacje z początku/końca linii;

    LEWY(ciąg, liczba)/ RPRAWO(ciąg, liczba)– zwraca podany argument numer liczba znaków w linii, zaczynając od lewej/prawej krawędzi;

    PODCIĄG(linia, pozycja, długość) – zwraca podciąg o określonej długości z ciągu, zaczynając od określonej pozycji;

    NIŻEJ(linia) /GÓRNY(linia) – zwraca ciąg znaków przekonwertowany na małe/wielkie litery itp.

Funkcje do pracy z datami:

    POBIERZ DATĘ() – zwraca wartość zawierającą datę i godzinę komputera, na którym działa instancja SQL Server;

    DZIEŃ(data_wartości)– zwraca liczbę z podanej daty;

    MIESIĄC(data_wartości)– zwraca numer miesiąca od podanej daty;

    ROK(data_wartości)– zwraca wartość roku od podanej daty;

    DATANY( część, data_wartości) – zwraca ciąg znaków reprezentujący określoną część ( Dzień, Miesiąc, Godzinaitp.) od określonej daty;

    CZĘŚĆ DATA( część, data_wartości) – zwraca liczbę całkowitą reprezentującą określoną część ( Dzień, Miesiąc, Godzinaitp.) od określonej daty.

Funkcje konwersji typów danych

    RZUCAĆ (oznaczający JAK typ danych)

    KONWERTOWAĆ(typ danych, oznaczający)

Argument oznaczający w funkcjach określa wartość, która ma zostać przekonwertowana.

7.3. Polecenia języka definicji danych

Język definicji danych zawiera polecenia używane do tworzenia, modyfikowania i usuwania bazy danych i jej obiektów.

Tworzenie tabeli

Tworzenie nowej tabeli odbywa się za pomocą polecenia UTWÓRZ TABELĘ. Polecenie opisuje strukturę tabeli, każdą kolumnę tabeli oraz ograniczenia integralności, które należy ustawić w tabeli.

Składnia polecenia:

UTWÓRZ TABELĘ nazwa_tabeli ((opis_kolumny |obliczona_nazwa_kolumny JAK wyrażenie | table_level_integrity_constraints) [, ...])

Nazwa tabeli jest identyfikatorem o długości nie większej niż 128 znaków.

Tabela może zawierać kolumnę obliczeniową, w którym to przypadku wartość kolumny jest określana przez wyrażenie zapisane w strukturze tabeli. Kolumny obliczeniowej nie można modyfikować, więc nie może mieć ograniczeń integralności NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY ani DEFAULT.

Składnia opisu kolumny tabeli jest następująca:

Nazwa kolumny typ danych[(rozmiar)]

[(DOMYŚLNA wartość_domyślna | TOŻSAMOŚĆ [(wartość, krok)]}]

[column_level_integrity_constraints]

DOMYŚLNE - umożliwia określenie wartości przypisanej do kolumny w nowo dodanym rekordzie.

TOŻSAMOŚĆ – wskazuje, że tworzona jest kolumna obsługująca automatyczne numerowanie (kolumna licznika). W tabeli można zdefiniować tylko jedną kolumnę licznika. Parametr value określa wartość początkową licznika, a parametr step określa krok przyrostu. Jeśli te parametry nie są określone, mają wartość 1. IDENTITY można określić tylko dla kolumn typu całkowitego lub dziesiętnego. Wstawianie wartości do kolumny IDENTITY jest niedozwolone.

Istnieją dwie grupy ograniczeń integralności przetwarzanych przez DBMS:

Deklaratywne ograniczenia integralności, które są deklarowane podczas tworzenia lub modyfikowania tabeli;

Ograniczenia integralności proceduralnej przetwarzane przez wyzwalacze.

Deklaratywne ograniczenia integralności mogą być ograniczeniami na poziomie tabeli lub ograniczeniami na poziomie tabeli. Ograniczenia na poziomie kolumny dotyczą tylko jednej kolumny. Każdemu deklaratywnemu ograniczeniu integralności można nadać nazwę.

Definicje ograniczeń na poziomie kolumn mają następującą składnię:

((KLUCZ PODSTAWOWY | UNIKALNY | NIE NULL ) | REFERENCJE KLUCZÓW OBCYCH nazwa_tabeli ( Nazwa kolumny)

|SPRAWDŹ wyrażenie_logiczne)

Nazwa ograniczenia integralności danych musi być unikalna w bazie danych. Przyjrzyjmy się ograniczeniom, które można zdefiniować na poziomie kolumny:

KLUCZ PODSTAWOWY – ograniczenie klucza podstawowego. Wszystkie wartości klucza podstawowego tabeli muszą być unikalne i różne od Null. Tabela może mieć tylko jeden klucz podstawowy. Jeśli jest złożony, ograniczenia integralności klucza podstawowego są określone na poziomie tabeli;

Ograniczenia dotyczące unikalności wartości kolumny UNIQUE. Oznacza to, że tabela nie może zawierać dwóch rekordów w tej kolumnie o tej samej wartości;

Ograniczenie NOT NULL, które zabrania przechowywania wartości NULL w kolumnie;

KLUCZ OBCY Ograniczenie klucza obcego (ograniczenie integralności referencyjnej). Dla kolumny będącej kluczem obcym REFERENCES określa nazwę tabeli, do której zostanie nawiązana relacja, oraz nazwę kolumny tej tabeli, na której zostanie nawiązana relacja. Tabela ta jest tabelą główną (nadrzędną) w stosunku do tabeli tworzonej. Główna kolumna tabeli, której wartości są łączone, musi mieć ustawione ograniczenie PRIMARY KEY.

Jeżeli klucz tabeli zewnętrznej składa się z kilku pól, wówczas ograniczenie KLUCZ OBCY należy określić na poziomie tabeli. W takim przypadku należy wymienić wszystkie kolumny zawarte w kluczu obcym, wskazać nazwę tabeli głównej oraz nazwy kolumn tabeli głównej, do których odwołuje się klucz obcy.

Integralność referencyjna ustanawia zasady dodawania i zmiany danych w tabeli przy użyciu klucza obcego i odpowiadającego mu ograniczenia klucza podstawowego. Klauzule ON UPDATE i ON DELETE dla klucza obcego definiują następujące zasady zmiany powiązanych danych:

BRAK AKCJI – umożliwia zmianę (usunięcie) tylko tych wartości w tabeli głównej, które nie mają odpowiadających wartości klucza obcego w tabeli podrzędnej. Ta reguła obowiązuje domyślnie;

KASKADA oznacza, że ​​każda wartość klucza obcego tabeli podrzędnej zostanie automatycznie zmieniona (usunięta) w przypadku modyfikacji wartości klucza podstawowego tabeli nadrzędnej;

SET NULL oznacza, że ​​jeśli klucz podstawowy tabeli nadrzędnej zostanie zmieniony (usunięty), we wszystkich wierszach tabeli podrzędnej, do których odwołuje się tabela podrzędna, wartościom klucza obcego zostaną automatycznie przypisane wartości NULL;

SET DEFAULT oznacza, że ​​jeśli klucz podstawowy tabeli nadrzędnej zostanie zmieniony (usunięty), we wszystkich wierszach tabeli podrzędnej, do których odwołuje się tabela podrzędna, wartościom klucza obcego zostaną automatycznie przypisane wartości domyślne.

Uzupełnijmy przykład bazy edukacyjnej „Uniwersytet”, której konstrukcję omówiono w rozdziale. 4.3 tabele DYSCYPLINA i RAPORT OGÓLNY. Tabele 6 i 7 opisują logiczną strukturę tabel.

Tabela 6

Struktura logiczna obiektu informacyjnego DYSCYPLINA

Tabela 7

Struktura logiczna obiektu informacyjnego OGÓLNE OŚWIADCZENIE

Kluczowy znak

Format pola

Nazwa

Dokładność

Numer księgi rekordów

Numer indeksu zarejestrowanego studenta

tekst

Kodeks dyscypliny

Kodeks dyscypliny

Liczbowy

Długa liczba całkowita

liczbowy

Przedstawmy prośby o utworzenie tabel zgodnie z pokazaną na ryc. 35 infologiczny model bazy danych.

Ryż. 35. Schemat bazy danych „Uniwersytet”

Jak widać ze schematu bazy danych, tabela FACULTY jest tabelą niezależną, więc tworzona jest jako pierwsza. Prośba o utworzenie tabeli z uwzględnieniem opisu struktury logicznej w tabeli. 4 (str. 61) będzie wyglądać następująco:

UTWÓRZ TABELI wykładowców

([numer działu] tinyint KLUCZ PODSTAWOWY, [nazwa działu] char(50))

Niezależny jest także stół SPECIALTY, który tworzymy jako drugi. Tworząc zapytanie wykorzystuje opis struktury logicznej w tabeli. 5 (str. 62).

UTWÓRZ TABELI [specjalność] (

[numer specjalny] int KLUCZ PODSTAWOWY,

[nazwa specjalizacji] char (60),

[koszt edukacji])

Tabela GRUPA jest tabelą zależną od WYDZIAŁU i SPECJALNOŚCI. Tworząc zapytanie korzystamy z tabeli 3 (s. 61) i uwzględniamy, że kolumny numer wydziału I numer specjalny są klucze obce:

UTWÓRZ TABELĘ [grupa] (

[numer grupy] smallint KLUCZ PODSTAWOWY,

[numer specjalności] int KLUCZOWE REFERENCJE ZAGRANICZNE specjalność( numer specjalny- ness)W PRZYPADKU USUŃ KASKADĘ W PRZYPADKU AKTUALIZACJI KASKADY,

[numer wydziału] tinyint KLUCZOWE REFERENCJE ZAGRANICZNE wydział( numer Wydział) ON DELETE CASCADE ON UPDADE CASCADE, [numer kursu] tinyint)

Tabela STUDENT jest tabelą zależną od GROUP. Na podstawie danych z tabeli 2 (s. 60) utworzymy zapytanie. Bierzemy również pod uwagę, że kolumna numer grupy są klucze obce:

UTWÓRZ TABELĘ [uczeń] (

[numer grupy] smallint NOT NULL KLUCZ OBCY ODNIESIENIA grupa( numer grupy) ,

[nazwisko] char(15) NOT NULL ,

[data urodzenia] datetime NOT NULL ,

[komercyjny] bit NOT NULL ,

[nazwa rejestracji] char(9))

Dane w tabeli RAPORT OGÓLNY zależą od tabel STUDENT i DYSCYPLINA. W tej tabeli klucz podstawowy jest złożony, a każda kolumna klucza podstawowego jest kluczem obcym (patrz Tabela 7 i Rysunek 35).

Skorzystajmy z opisu struktury logicznej tabeli dyscyplin podanego w tabeli 6 i utwórzmy zapytanie:

UTWÓRZ TABELI [dyscyplina] (

[kod dyscypliny] int KLUCZ PODSTAWOWY,

[nazwa dyscypliny] char(50))

Teraz możesz utworzyć zapytanie, aby utworzyć tabelę instrukcji ogólnych. Ponieważ klucz podstawowy tabeli jest złożony, ograniczenie KLUCZ PODSTAWOWY należy określić na poziomie tabeli. Na przykład ustawmy ograniczenia KLUCZ OBCY również na poziomie tabeli. Żądanie będzie wyglądać następująco:

UTWÓRZ TABELĘ [instrukcja ogólna] (

[kod dyscypliny] int,

[numer dziennika ocen] char(8),

[ocena] NOT NULL , KLUCZ PODSTAWOWY ([kod dyscypliny], [numer księgi ocen]), KLUCZ OBCY ([kod dyscypliny]) REFERENCJE [dyscyplina] ([kod dyscypliny]), KLUCZ OBCY ([numer księgi ocen]) REFERENCJE [uczeń] ([numer księgi ocen]))

Zmiana struktury tabeli

Zmiana struktury tabeli odbywa się za pomocą polecenia ALTER TABLE. Za pomocą polecenia można zmieniać właściwości istniejących kolumn, usuwać je lub dodawać nowe kolumny do tabeli, a także zarządzać ograniczeniami integralności zarówno na poziomie kolumn, jak i na poziomie tabeli. Znaczenie wielu parametrów i słów kluczowych jest takie samo, jak odpowiednich parametrów i słów kluczowych polecenia CREATE TABLE.

Usuwanie tabeli

Upuszczenie tabeli odbywa się za pomocą polecenia DROP TABLE. Składnia polecenia:

UPUŚĆ STOLIK tabela

Przykładowo żądanie usunięcia tabeli STUDENT wygląda następująco:

UPUŚĆ STOLIK Student

Usuwając tabelę NALEŻY wziąć pod uwagę utworzone w bazie danych relacje pomiędzy tabelami. Jeżeli do usuwanej tabeli odwołuje się inna tabela korzystająca z ograniczenia integralności KLUCZ OBCY, system DBMS nie pozwoli na jej usunięcie.

Tworzenie indeksu

Indeksy służą do przyspieszenia dostępu do określonych danych w tabeli bazy danych. Indeks to struktura porządkująca wartości w jednej lub większej liczbie kolumn tabeli bazy danych, np. kolumna Nazwiska tabeli STUDENT. Jeśli szukasz konkretnego ucznia według nazwiska, indeks pomoże Ci uzyskać potrzebne informacje szybciej niż przeszukiwanie wszystkich wierszy tabeli.

Indeks zapewnia wskaźniki do wartości danych przechowywanych w określonych kolumnach tabeli i porządkuje te wskaźniki zgodnie z określonym porządkiem sortowania. Wyszukiwanie danych w tabeli za pomocą indeksu jest podobne do wyszukiwania indeksu w książce. Najpierw przeszukiwany jest indeks pod kątem określonej wartości, a następnie odpowiedni wskaźnik przesuwany jest do wiersza zawierającego tę wartość.

Indeks tworzony jest za pomocą polecenia CREATE INDEX:

UTWÓRZ INDEKS

Nazwa_ indeks NA nazwa _tabele(kolumna [,...])

gdzie UNIQUE określa, że ​​indeks powinien przechowywać tylko unikalne wartości.

Indeks można utworzyć na jednej lub kilku kolumnach (indeks złożony). Indeksy złożone pozwalają na rozróżnienie rekordów, które mają te same wartości w tej samej kolumnie.

Przykład: Utwórz indeks złożony w tabeli STUDENT w polach Nazwisko i Data urodzenia

UTWÓRZ INDEKS Ind_Fam WŁ

Student(Nazwisko, [Data urodzenia] DESC)

Indeks w tabeli należy utworzyć tylko wtedy, gdy przewiduje się częste wykonywanie zapytań o dane w indeksowanych kolumnach. Indeksy zajmują miejsce na dysku i spowalniają operacje dodawania, usuwania i aktualizacji wierszy.

Usuwanie indeksu tabeli

Polecenie DROP usuwa indeks z tabeli. Składnia polecenia DROP służącego do usunięcia indeksu jest następująca:

SPADEK INDEKS indeks NA tabela

Zanim będzie można usunąć indeks z tabeli lub z samej tabeli, należy ją zamknąć.

Przykład: Usuń indeks Ind_Fam z tabeli STUDENT

DROP INDEX Ind_Fam ON Student

Tabela 8.2. Funkcje matematyczne SQL
Funkcja matematyczna Opis
ABS(X) Zwraca wartość bezwzględną liczby X
ACOS (X) Zwraca arcus cosinus X
ASIN(X) Zwraca arcus sinus liczby X
ATAN(X) Zwraca arcus tangens X
COS(X) Zwraca cosinus liczby X
EXP(X) Zwraca wykładnik X
ZNAK(X) Zwraca -1, jeśli X<0,0, если Х=0, +1 , если Х>0
LN(X) Zwroty naturalny logarytm liczby X
MOD(X,Y) Zwraca resztę z dzielenia X przez Y
CEIL (X) Zwraca najmniejszą liczbę całkowitą większą lub równą X
OKRĄG(X,n) Zaokrągla liczbę X do liczby z n miejscami po przecinku
GRZECH(X) Zwraca sinus X
KWRT(X) Zwraca pierwiastek kwadratowy z liczby X
opalenizna(X) Zwraca tangens X
PIĘTRO (X) Zwraca największą liczbę całkowitą mniejszą lub równą X
LOG(a,X) Zwraca logarytm X o podstawie A
SINH(X) Zwraca sinus hiperboliczny X
COSH(X) Zwraca cosinus hiperboliczny X
TANH(X) Zwraca tangens hiperboliczny X
TRANS(X,n) Obcina liczbę X do liczby zawierającej n cyfr po przecinku
MOC(A,X) Zwraca wartość A podniesioną do potęgi X

Zestaw wbudowanych funkcji może się różnić w zależności od wersji SZBD jednego producenta, a także w SZBD różnych producentów. Na przykład w SQLBase DBMS firma Century Inc. Istnieje funkcja @ATAN2(X,Y), która zwraca arcus tangens Y/X, ale nie ma funkcji SIGN(X) .

Wyrażenia arytmetyczne są potrzebne do uzyskania danych, które nie są bezpośrednio przechowywane w kolumnach tabel bazy danych, ale których wartości są wymagane przez użytkownika. Załóżmy, że potrzebujesz listy pracowników pokazującej wynagrodzenie otrzymane przez każdego pracownika, w tym premie i kary.

WYBIERZ ENAME, SAL, COMM, FINE, SAL + COMM - FINE OD ZAMÓWIENIA PRACOWNIKA PRZEZ DEPNO;

Wyrażenie arytmetyczne SAL + COMM - FINE jest wyprowadzane jako nowa kolumna w tabeli wynikowej, która jest obliczana w wyniku zapytania. Takie kolumny nazywane są także atrybutami pochodnymi (obliczonymi) lub polami.

Funkcje przetwarzania ciągów

SQL zapewnia szeroką gamę funkcji do manipulowania danymi łańcuchowymi (łączenie ciągów, CHR, LENGTH, INSTR i inne). Listę głównych funkcji przetwarzania danych łańcuchowych podano w tabeli 8.3.

Tabela 8.3. Funkcje SQL do przetwarzania ciągów
Funkcjonować Opis
CHR(N) Zwraca znak kodu ASCII dla kodu dziesiętnego N
ASCII(S) Zwraca dziesiętny kod ASCII pierwszego znaku ciągu
INSTR(S2.S1.pos[,N] Zwraca pozycję łańcucha S1 w ciągu S2 większą lub równą pozycji N - liczba wystąpień
DŁUGOŚĆ Zwraca długość ciągu
DOLNE(Y) Zamienia wszystkie znaki w ciągu na wielkie litery
INITCAP(Y) Ustawia pierwszy znak każdego słowa w ciągu na wielkie litery, a pozostałe znaki każdego słowa na wielkie
PODSTR(S, pozycja, [, dł.]) Wybiera podciąg o długości len w ciągu S, zaczynając od pozycji poz
GÓRNA(E) Konwertuje wielkie litery w ciągu znaków na wielkie litery
LPAD(S,N[,A]) Zwraca ciąg S uzupełniony od A do N znaków. Znak - domyślny wypełniacz - spacja
Rpad(S,N[,A]) Zwraca ciąg S, uzupełniony w prawo znakami A do liczby znaków N. Znak - domyślny wypełniacz - spacja
LTRIM(S,) Zwraca ciąg znaków skrócony do lewej strony S. Znaki są usuwane pod warunkiem, że usuwany znak znajduje się w ciągu znaków - wzór S1 (domyślnie - spacja)
RTRIM(S,) Zwraca ciąg znaków obcięty w prawo S. Znaki są usuwane pod warunkiem, że usuwany znak znajduje się w ciągu znaków - wzór S1 (domyślnie - spacja
PRZETŁUMACZ(S,S1,S2) Zwraca ciąg S, w którym wszystkie wystąpienia ciągu S1 zostają zastąpione ciągiem S2. Jeśli S1<>S2 , wówczas znaki, które nie pasują, są wykluczane z wynikowego ciągu
ZAMIEŃ(S,S1,[,S2]) Zwraca ciąg S, dla którego wszystkie wystąpienia ciągu S1 są zastępowane przez podciąg S2. Jeśli nie określono S2, wówczas z wynikowego ciągu usuwane są wszystkie wystąpienia podłańcucha S1
NVL(X,Y) Jeśli X ma wartość NULL , zwraca Y ciąg znaków, liczbę lub datę, w zależności od pierwotnego typu Y

Nazwy tych samych funkcji mogą się różnić w różnych systemach DBMS. Na przykład funkcja Oracle DBMS SUBSTR(S, pos, [, len]) w SQLBase DBMS nosi nazwę @SUBSTRING(S, pos, len) . SQLBase DBMS posiada funkcje, które nie są dostępne w Oracle DBMS (patrz.

Poniżej przedstawiono główną funkcjonalność języka SQL.

Definicja danych. Ta funkcja SQL jest opisem struktury obsługiwanych danych i organizacji relacji relacyjnych (tabele). Do jej implementacji przeznaczone są operatory służące do tworzenia bazy danych, tworzenia tabel i dostępu do danych.

Tworzenie bazy danych. Aby utworzyć nową bazę danych, użyj instrukcji CREATE DATABASE. Struktura instrukcji określa nazwę tworzonej bazy danych.

Tworzenie tabel. Tabela podstawowa jest tworzona za pomocą instrukcji CREATE TABLE. Ta instrukcja określa nazwy pól, ich typy danych i długość (w przypadku niektórych typów danych). SQL wykorzystuje następujące typy danych:

INTEGER – liczba całkowita;

CHAR – wartość znaku;

VARCHAR – wartość znaku, zapisywane są tylko znaki niepuste;

DECIMAL – liczba dziesiętna;

FLOAT – liczba zmiennoprzecinkowa;

DOUBLE PRECISION – zmiennoprzecinkowy podwójnej precyzji;

DATETIME – data i godzina;

BOOL – wartość logiczna.

Instrukcja tworzenia tabeli określa ograniczenia dotyczące wartości kolumn i tabeli. Możliwe ograniczenia przedstawiono w tabeli. 4.8

Tabela 4.8 Ograniczenia zdefiniowanych danych

W przypadku relacyjnego modelu danych niezbędne jest określenie klucza obcego (FOREIGNKEY). Deklarując klucze obce należy nałożyć na kolumnę odpowiednie ograniczenia, np. NOT NULL.

W instrukcji SQL CHECK oznacza ograniczenia semantyczne zapewniające integralność danych, takie jak ograniczenie zestawu prawidłowych wartości dla konkretnej kolumny.

Nie możesz użyć instrukcji tworzenia tabeli więcej niż raz w tej samej tabeli. Jeżeli po jego utworzeniu zostaną odkryte nieścisłości w jego definicji, wówczas można dokonać zmian za pomocą instrukcji ALTER TABLE. Ta instrukcja ma na celu zmianę struktury istniejącej tabeli: możesz usunąć lub dodać pole do istniejącej tabeli.

Manipulacja danymi. SQL umożliwia użytkownikowi lub aplikacji zmianę zawartości bazy danych poprzez wstawienie nowych danych, usunięcie lub modyfikację istniejących danych.

Wstawianie nowych danych to procedura dodawania wierszy do bazy danych, wykonywana za pomocą instrukcji INSERT.

Modyfikacja danych polega na zmianie wartości w jednej lub większej liczbie kolumn tabeli i odbywa się za pomocą instrukcji UPDATE. Przykład:

USTAW kwotę=kwota+1000,00

GDZIE ilość>0

Usuwanie wierszy z tabeli za pomocą instrukcji DELETE. Składnia operatora jest następująca:

ZE stołu

Klauzula WHERE jest opcjonalna, jeżeli jednak nie zostanie uwzględniona, wszystkie wpisy w tabeli zostaną usunięte. Przydatne jest użycie instrukcji SELECT z taką samą składnią jak instrukcja DELETE, aby wstępnie sprawdzić, które rekordy zostaną usunięte.

Zapewnienie integralności danych. Język SQL pozwala na zdefiniowanie dość skomplikowanych ograniczeń integralności, których spełnienie będzie sprawdzane przy każdej modyfikacji bazy danych. Monitorowanie wyników transakcji, przetwarzanie występujących błędów oraz koordynację równoległej pracy z bazą danych kilku aplikacji lub użytkowników zapewnia COMMIT (rejestruje pomyślne zakończenie bieżącej transakcji i początek nowej) oraz ROLLBACK (konieczność w przypadku rollbacku – automatyczne przywrócenie stanu bazy danych do początku transakcji) operatorzy.

Próbkowanie danych to jedna z najważniejszych funkcji bazy danych odpowiadająca instrukcji SELECT. Przykład użycia operatora został omówiony w poprzedniej sekcji.

W SQL można tworzyć zagnieżdżone sekwencje zapytań (podzapytań). Istnieją pewne typy zapytań, które najlepiej implementować za pomocą podzapytań. Zapytania te obejmują tak zwane kontrole istnienia. Załóżmy, że chcesz uzyskać dane o uczniach, którzy nie mają ocen siedmiopunktowych. Jeśli zostanie zwrócony pusty zbiór, oznacza to tylko jedno – każdy uczeń ma przynajmniej jedną taką ocenę.

Łączenie tabel. Instrukcje SQL umożliwiają pobieranie danych z więcej niż jednej tabeli. Jednym ze sposobów osiągnięcia tego jest połączenie tabel przy użyciu jednego wspólnego pola.

Instrukcja SELECT musi zawierać ograniczenie dopasowania wartości konkretnej kolumny (pola). Następnie z powiązanych tabel zostaną pobrane tylko te wiersze, w których pasują wartości określonej kolumny. Nazwa kolumny jest wskazywana tylko razem z nazwą tabeli; w przeciwnym razie stwierdzenie będzie niejednoznaczne.

Można zastosować inne rodzaje łączenia tabel: operator INTER JOIN (łączenie wewnętrzne) dba o to, aby powstały zestaw rekordów zawierał pasujące wartości w powiązanych polach. Złączenia zewnętrzne (OUTER JOIN) umożliwiają uwzględnienie w wyniku zapytania wszystkich wierszy z jednej tabeli i odpowiadających im wierszy z drugiej

Kontrola dostępu. SQL zapewnia synchronizację przetwarzania baz danych przez różne programy aplikacyjne, chroniąc dane przed nieuprawnionym dostępem.

Dostęp do danych w środowisku wielu użytkowników jest kontrolowany za pomocą instrukcji GRANT i REVOKE. W każdym zestawieniu należy określić użytkownika, obiekt (tabelę, widok) w stosunku do którego ustawiane są uprawnienia oraz same uprawnienia. Na przykład instrukcja GRANT daje użytkownikowi X możliwość pobrania danych z tabeli PRODUCT:

PRZYZNAJ WYBÓR PRODUKTU DO X

Instrukcja REVOKE odwołuje wszystkie wcześniej przyznane uprawnienia.

Osadzanie języka SQL w programach użytkowych. Prawdziwe aplikacje są zwykle pisane w innych językach, które generują kod SQL i przekazują go do systemu DBMS jako tekst ASCII.

Standard IBM dotyczący produktów SQL reguluje użycie wbudowanego języka SQL. Podczas pisania programu aplikacyjnego jego tekst jest mieszaniną poleceń z głównego języka programowania (na przykład C, Pascal, Cobol, Fortran, Assembler) i poleceń SQL ze specjalnym przedrostkiem, na przykład. ExecSQL. Struktura instrukcji SQL została rozszerzona, aby uwzględnić zmienne języka hosta w konstrukcji SQL.

Procesor SQL modyfikuje typ programu zgodnie z wymaganiami kompilatora głównego języka programowania. Zadaniem kompilatora jest tłumaczenie (tłumaczenie) programu ze źródłowego języka programowania na język zbliżony do języka maszynowego. Po skompilowaniu program użytkowy (aplikacja) stanowi niezależny moduł.

Dialekty SQL

Nowoczesne relacyjne systemy DBMS wykorzystują dialekty języka SQL do opisywania danych i manipulowania nimi. Podzbiór języka SQL, który umożliwia tworzenie i opisywanie baz danych, nazywa się DDL (język definicji danych).

Początkowo język SQL nazywał się SEQUEL (Structured English Query Language), następnie SEQUEL/2, a następnie po prostu SQL. Obecnie SQL jest de facto standardem dla relacyjnych systemów DBMS.

Pierwszy standard językowy pojawił się w 1989 roku - SQL-89 i był obsługiwany przez prawie wszystkie komercyjne relacyjne systemy DBMS. Miało ono charakter ogólny i podlegało szerokiej interpretacji. Zaletę SQL-89 można uznać za standaryzację składni i semantyki operatorów do próbkowania i manipulacji danymi, a także utrwalenie środków ograniczających integralność bazy danych. Brakowało jednak tak ważnej sekcji jak manipulacja schematem bazy danych. Niekompletność standardu SQL-89 doprowadziła do pojawienia się w 1992 roku. kolejna wersja języka SQL.

SQL2 (lub SQL-92) obejmuje niemal wszystkie niezbędne zagadnienia: manipulację schematem bazy danych, zarządzanie transakcjami i sesjami, obsługę architektur klient-serwer czy narzędzia do tworzenia aplikacji.

Kolejnym krokiem w rozwoju języka jest wersja SQL 3. Uzupełnieniem tej wersji języka jest mechanizm wyzwalający, definicja dowolnego typu danych oraz rozszerzenie obiektowe.

Obecnie istnieją trzy poziomy języka: podstawowy, średniozaawansowany i kompletny. Wielu producentów swoich systemów DBMS korzysta z własnych implementacji SQL, opartych przynajmniej na początkowym poziomie odpowiedniego standardu ANSI i zawierających pewne rozszerzenia specyficzne dla konkretnego systemu DBMS. W tabeli 4.9 zawiera przykłady dialektów SQL.

Tabela 4.9 Dialekty SQL

DBMS Język zapytań
System R DBMS SQL-a
DB2 SQL-a
Dostęp SQL-a
SYBASE SQL w dowolnym miejscu Watcom-SQL
Serwer SQL SYBASE Transact_SQL
Mój SQL SQL-a
Wyrocznia PL/SQL

Obiektowe bazy danych korzystają z języka zapytań obiektowych OQL (Object Query Language). Język OQL został oparty na poleceniu SELECT języka SQL2 i dodał możliwość skierowania zapytania do obiektu lub zbioru obiektów, a także możliwość wywoływania metod w ramach pojedynczego zapytania.

Zgodność wielu używanych dialektów SQL określa kompatybilność SZBD. Zatem system DBMS SQL Anywhere SYBASE jest możliwie najbardziej kompatybilny dla systemu DBMS tej klasy z systemem DBMS SYBASE SQL Server. Jednym z aspektów tej kompatybilności jest obsługa w SYBASE SQL Anywhere takiego dialektu języka SQL jak Transact-SQL. Ten dialekt jest używany w SYBASE SQL Server i może być używany w SYBASE SQL Anywhere wraz z natywnym dialektem SQL - Watcom-SQL.

Pytania kontrolne

1. Jak można sklasyfikować DBMS?

2. Jakie istnieją modele baz danych?

3. Jakie są główne elementy modeli informacyjnych?

4. Jakie rodzaje relacji pomiędzy podmiotami istnieją?

5. Czym są diagramy ER i do czego służą?

6. Na co pozwala procedura normalizacji tabeli?

7. Jaki jest język i narzędzia programowe systemu DBMS?

8. Jaki to typ DBMS MS Access?

9. Jakie są główne cele DBMS MS Access?

10. Do czego służą główne operatory SQL?

Nauczmy się podsumowywać. Nie, to nie są wyniki nauki SQL, ale wyniki wartości kolumn tabel bazy danych. Funkcje agregujące SQL działają na wartościach kolumny, aby wygenerować pojedynczą wartość wynikową. Najczęściej używanymi funkcjami agregującymi SQL są SUM, MIN, MAX, AVG i COUNT. Należy rozróżnić dwa przypadki wykorzystania funkcji agregujących. Po pierwsze, funkcje agregujące są używane samodzielnie i zwracają pojedynczą wartość wynikową. Po drugie, funkcje agregujące wykorzystywane są wraz z klauzulą ​​SQL GROUP BY, czyli grupowanie według pól (kolumn) w celu uzyskania wartości wynikowych w każdej grupie. Rozważmy najpierw przypadki użycia funkcji agregujących bez grupowania.

Funkcja SUMA SQL

Funkcja SQL SUM zwraca sumę wartości w kolumnie tabeli bazy danych. Można go zastosować tylko do kolumn, których wartości są liczbami. Zapytania SQL mające na celu uzyskanie wynikowej sumy zaczynają się w następujący sposób:

WYBIERZ SUMĘ (NAZWA KOLUMNY)...

Po tym wyrażeniu następuje FROM (TABLE_NAME), a następnie można określić warunek za pomocą klauzuli WHERE. Dodatkowo nazwę kolumny można poprzedzić DISTINCT, co oznacza, że ​​liczone będą tylko unikalne wartości. Domyślnie brane są pod uwagę wszystkie wartości (w tym celu możesz konkretnie określić nie DISTINCT, ale ALL, ale słowo ALL nie jest wymagane).

Przykład 1. Istnieje baza danych firmy zawierająca dane o jej oddziałach i pracownikach. W tabeli Pracownicy znajduje się także kolumna zawierająca dane dotyczące wynagrodzeń pracowników. Wybór z tabeli wygląda następująco (aby powiększyć obrazek należy kliknąć na niego lewym przyciskiem myszy):

Aby uzyskać sumę wszystkich wynagrodzeń, użyj następującego zapytania:

WYBIERZ SUMĘ (wynagrodzenie) Z personelu

To zapytanie zwróci wartość 287664,63.

I teraz . Na ćwiczeniach już zaczynamy komplikować zadania, przybliżając je do tych spotykanych w praktyce.

Funkcja SQL MIN

Funkcja SQL MIN działa również na kolumnach, których wartości są liczbami i zwraca minimum ze wszystkich wartości w kolumnie. Funkcja ta ma składnię podobną do funkcji SUMA.

Przykład 3. Baza danych i tabela są takie same jak w przykładzie 1.

Musimy dowiedzieć się, jaka jest płaca minimalna dla pracowników działu nr 42. Aby to zrobić, napisz następującą prośbę:

Zapytanie zwróci wartość 10505,90.

I jeszcze raz ćwiczenie do samodzielnego rozwiązania. W tym i kilku innych ćwiczeniach będziesz potrzebować nie tylko tabeli Personel, ale także tabeli Org, zawierającej dane o oddziałach firmy:


Przykład 4. Do tabeli Personel dodawana jest tabela Organizacja, zawierająca dane o działach firmy. Wydrukuj minimalną liczbę lat przepracowanych przez jednego pracownika w dziale zlokalizowanym w Bostonie.

Funkcja SQLMAX

Funkcja SQL MAX działa podobnie i ma podobną składnię, którą stosuje się, gdy trzeba określić maksymalną wartość spośród wszystkich wartości w kolumnie.

Przykład 5.

Musisz dowiedzieć się, jakie jest maksymalne wynagrodzenie pracowników działu nr 42. Aby to zrobić, napisz następującą prośbę:

Zapytanie zwróci wartość 18352,80

Już czas ćwiczenia do samodzielnego rozwiązania.

Przykład 6. Ponownie pracujemy z dwiema tabelami - Staff i Org. Wyświetla nazwę działu oraz maksymalną wartość prowizji otrzymanej przez jednego pracownika w dziale należącym do grupy działów (Dywizja) Wschodnia. Używać JOIN (łączenie tabel) .

Funkcja SQL AVG

To, co zostało powiedziane odnośnie składni opisanych wcześniej funkcji, dotyczy również funkcji SQL AVG. Ta funkcja zwraca średnią wszystkich wartości w kolumnie.

Przykład 7. Baza danych i tabela są takie same jak w poprzednich przykładach.

Załóżmy, że chcesz sprawdzić średni staż pracy pracowników działu nr 42. Aby to zrobić, napisz następujące zapytanie:

Wynik wyniesie 6,33

Przykład 8. Pracujemy przy jednym stole – Personel. Wyświetl średnie wynagrodzenie pracowników z 4 do 6-letnim stażem pracy.

Funkcja SQL COUNT

Funkcja SQL COUNT zwraca liczbę rekordów w tabeli bazy danych. Jeśli w zapytaniu określisz SELECT COUNT(COLUMN_NAME) ..., wynikiem będzie liczba rekordów bez uwzględnienia tych rekordów, w których wartość kolumny wynosi NULL (niezdefiniowana). Jeśli użyjesz gwiazdki jako argumentu i uruchomisz zapytanie SELECT COUNT(*) ..., wynikiem będzie liczba wszystkich rekordów (wierszy) tabeli.

Przykład 9. Baza danych i tabela są takie same jak w poprzednich przykładach.

Chcesz poznać liczbę wszystkich pracowników, którzy otrzymują prowizje. Liczba pracowników, których wartości w kolumnie Comm są różne od NULL, zostanie zwrócona następującym zapytaniem:

WYBIERZ LICZBĘ (komunikacja) Z personelu

Wynik będzie 11.

Przykład 10. Baza danych i tabela są takie same jak w poprzednich przykładach.

Jeśli chcesz poznać całkowitą liczbę rekordów w tabeli, użyj zapytania z gwiazdką jako argumentu funkcji COUNT:

WYBIERZ LICZBĘ (*) Z Personelu

Wynik będzie 17.

W następnym ćwiczenie samodzielnego rozwiązania będziesz musiał użyć podzapytania.

Przykład 11. Pracujemy przy jednym stole – Personel. Wyświetl liczbę pracowników w dziale planowania (Plains).

Funkcje agregujące za pomocą SQL GROUP BY

Przyjrzyjmy się teraz użyciu funkcji agregujących wraz z instrukcją SQL GROUP BY. Instrukcja SQL GROUP BY służy do grupowania wartości wynikowych według kolumn w tabeli bazy danych. Strona posiada lekcja poświęcona temu operatorowi osobno .

Przykład 12. Istnieje baza danych portalu ogłoszeniowego. Zawiera tabelę Reklam zawierającą dane o reklamach przesłanych w danym tygodniu. Kolumna Kategoria zawiera dane o dużych kategoriach ogłoszeń (np. Nieruchomości), a kolumna Części zawiera dane o mniejszych częściach wchodzących w skład kategorii (np. części Mieszkania i Domki letniskowe wchodzą w skład kategorii Nieruchomości). Kolumna Jednostki zawiera dane o liczbie przesłanych ogłoszeń, natomiast kolumna Pieniądze zawiera dane o kwocie otrzymanej za przesłanie ogłoszeń.

KategoriaCzęśćJednostkiPieniądze
TransportSamochody110 17600
NieruchomośćMieszkanie89 18690
NieruchomośćDacza57 11970
TransportMotocykle131 20960
Materiały budowlaneDeski68 7140
Inżynieria elektrycznaTelewizory127 8255
Inżynieria elektrycznaLodówki137 8905
Materiały budowlaneReg112 11760
WypoczynekKsiążki96 6240
NieruchomośćW domu47 9870
WypoczynekMuzyka117 7605
WypoczynekGry41 2665

Korzystając z instrukcji SQL GROUP BY, znajdź kwotę zarobioną na zamieszczaniu reklam w każdej kategorii. Piszemy następującą prośbę:

WYBIERZ kategorię, SUMĘ (Pieniądze) JAKO Pieniądze Z GRUPY REKLAM WEDŁUG Kategorii

Przykład 13. Baza danych i tabela są takie same jak w poprzednim przykładzie.

Korzystając z instrukcji SQL GROUP BY, dowiedz się, która część każdej kategorii zawierała najwięcej wpisów. Piszemy następującą prośbę:

WYBIERZ kategorię, część, MAX (jednostki) jako maksimum z grupy reklam według kategorii

Wynikiem będzie następująca tabela:

Wartości całkowite i indywidualne można uzyskać w jednej tabeli łączenie wyników zapytania za pomocą operatora UNION .

Relacyjne bazy danych i język SQL

Podstawowe polecenia SQL, które powinien znać każdy programista

SQL lub Structured Query Language to język używany do zarządzania danymi w systemie relacyjnej bazy danych (RDBMS). W tym artykule omówimy powszechnie używane polecenia SQL, które powinien znać każdy programista. Ten materiał jest idealny dla tych, którzy chcą odświeżyć swoją wiedzę z zakresu SQL przed rozmową kwalifikacyjną. Aby to zrobić, spójrz na przykłady podane w artykule i pamiętaj, że bazy danych uczyłeś się w parach.

Należy pamiętać, że niektóre systemy baz danych wymagają średnika na końcu każdej instrukcji. Średnik jest standardowym wskaźnikiem na koniec każdej instrukcji SQL. W przykładach używany jest MySQL, dlatego wymagany jest średnik.

Konfiguracja bazy danych z przykładami

Utwórz bazę danych, aby zademonstrować, jak działają zespoły. Do pracy będziesz musiał pobrać dwa pliki: DLL.sql i InsertStatements.sql. Następnie otwórz terminal i zaloguj się do konsoli MySQL za pomocą następującego polecenia (w artykule założono, że MySQL jest już zainstalowany w systemie):

Mysql -u root -p

Następnie wprowadź swoje hasło.

Uruchom następujące polecenie. Nazwijmy bazę danych „uniwersytetem”:

UTWÓRZ BAZY DANYCH uniwersytet; KORZYSTAJ z uniwersytetu; ŹRÓDŁO ; ŹRÓDŁO

Polecenia do pracy z bazami danych

1. Zobacz dostępne bazy danych

POKAŻ BAZY DANYCH;

2. Utwórz nową bazę danych

UTWÓRZ BAZY DANYCH;

3. Wybór bazy danych do wykorzystania

UŻYWAĆ ;

4. Zaimportuj polecenia SQL z pliku .sql

ŹRÓDŁO ;

5. Usuń bazę danych

USUŃ BAZY DANYCH ;

Praca z tabelami

6. Przejrzyj tabele dostępne w bazie danych

POKAŻ TABELE;

7. Utwórz nową tabelę

UTWÓRZ TABELĘ ( , , GŁÓWNY KLUCZ ( ), KLUCZ OBCY ( ) BIBLIOGRAFIA ());

Ograniczenia integralności podczas korzystania z funkcji UTWÓRZ TABELĘ

Może być konieczne utworzenie ograniczeń dla niektórych kolumn w tabeli. Tworząc tabelę, możesz ustawić następujące ograniczenia:

  • komórka tabeli nie może mieć wartości NULL;
  • klucz podstawowy - KLUCZ PODSTAWOWY (nazwa_kolumny1, nazwa_kolumny2, ...) ;
  • klucz obcy - KLUCZ OBCY (nazwa_kolumnyx1, …, nazwa_kolumnyxn) REFERENCJE nazwa_tabeli(nazwa_kolumny1, …, nazwa_kolumnyxn) .

Można określić więcej niż jeden klucz podstawowy. W takim przypadku otrzymasz złożony klucz podstawowy.

Przykład

Utwórz tabelę „instruktor”:

UTWÓRZ TABELĘ instruktor (ID CHAR(5), nazwa VARCHAR(20) NOT NULL, nazwa_działu VARCHAR(20), wynagrodzenie NUMERIC(8,2), KLUCZ PODSTAWOWY (ID), KLUCZ OBCY (nazwa_działu) REFERENCJE dział(nazwa_działu));

8. Informacje o tabeli

Możesz wyświetlić różne informacje (typ wartości, klucz lub nie) o kolumnach tabeli za pomocą następującego polecenia:

OPISAĆ ;

9. Dodawanie danych do tabeli

WŁÓŻ W (, , , ...) WARTOŚCI ( , , , …);

Kiedy dodajesz dane do każdej kolumny w tabeli, nie musisz podawać nazw kolumn.

WŁÓŻ W WARTOŚCI ( , , , …);

10. Aktualizacja danych tabeli

AKTUALIZACJA USTAWIĆ = , = , ... GDZIE ;

11. Usuwanie wszystkich danych z tabeli

USUŃ Z ;

12. Usuń tabelę

UPUŚĆ STOLIK ;

Polecenia do tworzenia zapytań

13. WYBIERZ

SELECT służy do pobierania danych z określonej tabeli:

WYBIERAĆ , , … Z ;

Poniższe polecenie może wyświetlić wszystkie dane z tabeli:

WYBIERZ SPOŚRÓD ;

14. WYBIERZ WYRÓŻNIONE

Kolumny tabeli mogą zawierać zduplikowane dane. Użyj SELECT DISTINCT, aby pobrać tylko nieduplikowane dane.

WYBIERZ WYRÓŻNIONY , , … Z ;

15. GDZIE

Możesz użyć słowa kluczowego WHERE w SELECT, aby określić warunki w zapytaniu:

WYBIERAĆ , , … Z GDZIE ;

W żądaniu można określić następujące warunki:

  • porównanie tekstu;
  • porównanie wartości liczbowych;
  • operatory logiczne AND (i), OR (lub) i NOT (negacja).

Przykład

Wypróbuj następujące polecenia. Zwróć uwagę na warunki określone w WHERE:

WYBIERZ * Z kursu GDZIE dept_name=’Comp. Nauka.'; WYBIERZ * Z kursu GDZIE punkty>3; WYBIERZ * Z kursu GDZIE dept_name="Comp.Sci." ORAZ kredyty>3;

16. GRUPUJ WG

Operator GROUP BY jest często używany z funkcjami agregującymi, takimi jak COUNT, MAX, MIN, SUM i AVG, w celu grupowania wartości wyjściowych.

WYBIERAĆ , , … Z GRUPUJ WEDŁUG ;

Przykład

Wyświetlmy liczbę kursów dla każdego wydziału:

WYBIERZ COUNT(id_kursu), nazwa_działu Z GRUPY kursu WG nazwy działu;

17. POSIADAĆ

Słowo kluczowe HAVING zostało dodane do SQL, ponieważ WHERE nie można używać z funkcjami agregującymi.

WYBIERAĆ , , ... Z GRUPUJ WEDŁUG MAJĄCY

Przykład

Wyświetlmy listę wydziałów, które mają więcej niż jeden kierunek:

WYBIERZ COUNT(id_kursu), nazwa_działu Z kursu GROUP WG nazwy działu HAVING COUNT(id_kursu)>1;

18. ZAMÓW PRZEZ

ORDER BY służy do sortowania wyników zapytania w kolejności malejącej lub rosnącej. ORDER BY sortuje w kolejności rosnącej, chyba że określono ASC lub DESC.

WYBIERAĆ , , … Z ZAMÓW PRZEZ , , …ASC|DESC;

Przykład

Wyświetlmy listę kursów w rosnącej i malejącej kolejności punktów:

WYBIERZ * Z kursu ZAMÓW PRZEZ punkty; WYBIERZ * Z kursu ZAMÓW WEDŁUG punktów DESC;

19. POMIĘDZY

BETWEEN służy do wybierania wartości danych z określonego zakresu. Można używać wartości numerycznych i tekstowych, a także dat.

WYBIERAĆ , , … Z GDZIE MIĘDZY I ;

Przykład

Wyświetlmy listę instruktorów, których pensja jest większa niż 50 000, ale mniejsza niż 100 000:

WYBIERZ * OD instruktora GDZIE wynagrodzenie MIĘDZY 50000 A 100000;

20. LUBIĘ

Operator LIKE jest używany w WHERE do określenia wzorca wyszukiwania podobnej wartości.

W LIKE używane są dwa darmowe operatory:

  • % (brak, jeden lub więcej znaków);
  • _ (jeden znak).
WYBIERAĆ , , … Z GDZIE TAK JAK ;

Przykład

Wyświetlmy listę kursów, których nazwy zawierają „do” oraz listę kursów, których nazwy zaczynają się od „CS-”:

WYBIERZ * Z kursu GDZIE tytuł LIKE „% do%”; WYBIERZ * Z kursu GDZIE id_kursu LIKE "CS-___";

21. W

Za pomocą IN możesz określić wiele wartości klauzuli WHERE:

WYBIERAĆ , , … Z GDZIE W ( , , …);

Przykład

Wyświetlmy listę studentów z kierunków informatycznych. Nauka, fizyka i elektronika. Inż.:

WYBIERZ * OD studenta WHERE nazwa_wydziału IN ('Comp. Sci.', 'Fizyka', 'Elec. Inż.');

22. DOŁĄCZ

JOIN służy do łączenia dwóch lub więcej tabel przy użyciu wspólnych atrybutów w nich zawartych. Poniższy obrazek przedstawia różne sposoby dołączania w SQL. Zwróć uwagę na różnicę między lewym złączem zewnętrznym a prawym złączem zewnętrznym:

WYBIERAĆ , , … Z DOŁĄCZYĆ NA = ;

Przykład 1

Wyświetlimy listę wszystkich kursów i istotne informacje o wydziałach:

WYBIERZ * Z kursu DOŁĄCZ do działu NA kurs.nazwa_działu=nazwa_wydziału;

Przykład 2

Wyświetlimy listę wszystkich wymaganych kursów i szczegółowe informacje na ich temat:

SELECT prereq.course_id, tytuł, nazwa_wydziału, kredyty, prereq_id Z prereq LEFT OUTER DOŁĄCZ do kursu ON prereq.course_id=kursu.id_kursu;

Przykład 3

Wyświetlimy listę wszystkich kursów, niezależnie od tego, czy są wymagane, czy nie:

WYBIERZ kurs.id_kursu, tytuł, nazwa_działu, kredyty, identyfikator_wymagania Z prereq PRAWY ZEWNĘTRZNY DOŁĄCZ do kursu ON prereq.course_id=kursu.id;

23. Widok

Widok to wirtualna tabela SQL utworzona w wyniku wykonania wyrażenia. Zawiera wiersze i kolumny i jest bardzo podobna do zwykłej tabeli SQL. Widok zawsze pokazuje najnowsze informacje z bazy danych.

kreacja

UTWÓRZ WIDOK JAK WYBIERZ , , … Z GDZIE ;

Usuwanie

WIDOK UPADKU ;

Przykład

Stwórzmy widok składający się z kursów z 3 punktami:

24. Funkcje agregujące

Funkcje te służą do uzyskania zagregowanego wyniku dotyczącego danych. Poniżej znajdują się powszechnie używane funkcje agregujące:

  • COUNT (nazwa_kolumny) - zwraca liczbę wierszy;
  • SUM (nazwa_kolumny) - zwraca sumę wartości w tej kolumnie;
  • AVG (nazwa_kolumny) - zwraca średnią wartość danej kolumny;
  • MIN (nazwa_kolumny) - zwraca najmniejszą wartość danej kolumny;
  • MAX (nazwa_kolumny) - Zwraca największą wartość z danej kolumny.

25. Zagnieżdżone podzapytania

Podzapytania zagnieżdżone to zapytania SQL zawierające klauzule SELECT, FROM i WHERE zagnieżdżone w innym zapytaniu.

Przykład

Znajdźmy kursy, które były prowadzone jesienią 2009 i wiosną 2010:

WYBIERZ ROZRÓŻNIJ identyfikator_kursu Z sekcji WHERE semestr = 'Jesień' ORAZ rok= 2009 ORAZ identyfikator kursu IN (WYBIERZ identyfikator kursu Z sekcji WHERE semestr = 'Wiosna' ORAZ rok= 2010);