Składnia języka SQL
Technikum » SBD » SQL » Składnia języka SQL
Język SQL realizuje trzy podstawowe typy zadań — definiowanie danych, manipulowanie danymi i kontrolowanie danych. W związku z tym jego instrukcje można podzielić na trzy kategorie:
- Instrukcje DDL (ang. Data Definition Language) — tworzą język definiowania danych i służą do tworzenia, modyfikowania i usuwania obiektów bazy danych.
- Instrukcje DML (ang. Data Manipulation Language) — tworzą język manipulowania danymi i służą do odczytywania i modyfikowania danych.
- Instrukcje DCL (ang. Data Control Language) — tworzą język kontroli dostępu do danych i umożliwiają nadawanie i odbieranie uprawnień użytkownikom.
W języku SQL nie rozróżnia się dużych i małych liter. Wszystkie słowa kluczowe i nazwy (np. relacji i atrybutów) w języku SQL można pisać zarówno dużymi jak i małymi literami.
Instrukcje języka SQL
Instrukcje języka SQL składają się z wyrażeń, klauzul i warunków. Wyrażenie jest poleceniem, które mówi, co należy zrobić.
Klauzula określa ograniczenia dla danego polecenia i jest definiowana w formie warunków (na przykład klauzula WHERE).
Przykład
SELECT nazwisko, Imię
FROM Klient
WHERE miejscowosc="Warszawa"
Wyrażenie SELECT mówi, że trzeba wybrać z bazy dane, które zostały wymienione za poleceniem. W następnej linii zostało określone miejsce, z którego mają pochodzić dane. W ostatniej linii został zdefiniowany warunek, który musi zostać spełniony przy wybieraniu danych. Polecenie kończy się średnikiem.
Składnia języka jest zbiorem reguł, których należy przestrzegać. W języku SQL stosuje się trzy kategorie pojęć składniowych:
- identyfikatory
- literały
- operatory
Identyfikator jednoznacznie definiuje obiekt bazy danych. Każdy obiekt bazy danych (baza, tabela, kolumna) musi posiadać niepowtarzalną nazwę. Identyfikatory muszą być zgodne ze zdefiniowanymi w standardzie regułami:
- nie mogą być dłuższe niż 128 znaków;
- mogą zawierać litery, cyfry oraz znaki: @, $, #;
- nie mogą zawierać spacji ani innych znaków specjalnych;
- muszą zaczynać się literą;
- nie mogą być słowami kluczowymi języka SQL
Dodatkowo zaleca się, aby nazwy były krótkie, ale jednoznacznie opisywały obiekt. Wielkość liter powinna być zgodna z przyjętymi regułami.
Literał jest stałą wartością. Wszystkie wartości liczbowe, ciągi znaków i daty, jeżeli nie są identyfikatorami, są traktowane jako stałe, czyli literały.
- Typy liczbowe mają dopuszczalną postać liczby, na przykład: 150, -375, 5.39, 3E4.
- Ciągi znaków muszą być umieszczone w apostrofach, na przykład: 'Gdańsk', 'KOMPUTER ' .
- Typy daty muszą być umieszczone w apostrofach, na przykład: '20-09-2012', '2010-02-13'.
Operatory odgrywają rolę łączników. Ze względu na zastosowanie zostały podzielone na:
- arytmetyczne — suma +, różnica -, iloczyn *, iloraz /, modulo %;
- znakowe — konkatenacja (złączenie ciągu znaków) +, symbol zastępujący dowolny ciąg znaków %, symbol zastępujący jeden znak _;
- logiczne — koniunkcja AND, alternatywa OR, negacja NOT;
- porównania — =, <, >, <=, >=, <>;
- operatory specjalne (zależą od systemu bazodanowego) — IN (przynależność do listy wartości), BETWEEN . . . AND . . . (przynależność do domkniętego przedziału), LIKE (zgodność ze wzorem).
Słowa kluczowe to wyrazy zastrzeżone, interpretowane w ściśle określony sposób. W systemie baz danych mają dokładnie określone znaczenie. Do słów kluczowych należą:
- instrukcje języka SQL,
- klauzule języka SQL,
- nazwy typów danych,
- nazwy funkcji systemowych,
- terminy zarezerwowane do późniejszego użycia w systemie.
Typy danych
Typy danych, jak wiemy, określają rodzaj informacji przechowywanej w kolumnach tabeli. Określają również, jakiego rodzaju dane mogą być przekazywane jako parametry do procedur i funkcji, lub jakie dane mogą być przechowywane w zmiennych. Typy danych mogą różnić się nieznacznie od standardowych typów w różnych systemach baz danych, nawet jeżeli mają takie same nazwy. Możemy je podzielić według kategorii na:
- typy liczbowe,
- typy daty i czasu,
- typy znakowe,
- typy waluty,
- typy binarne,
- typy specjalne.
Wartość NULL
NULL jest wartością specjalną. Oznacza wartość pustą (w komórce tabeli nie została umieszczona żadna wartość). Wartość NULL reprezentuje w bazie danych nieznaną lub nieistotną wartość. Jest ona różna od wartości 0 i od pustego ciągu znaków. Ze względu na to, że systemy bazodanowe muszą przetwarzać wartość NULL jako brakującą informację, obowiązuje w nich logika trójwartościowa. Oznacza to, że w wyniku porównania wartości NULL z inną wartością otrzymamy wartość nieznaną (ang. Unknown). Wynikiem dowolnej operacji wykonanej na wartości NULL jest zawsze wartość NULL.
Hierarchia obiektów bazy danych
Obiekty dostępne na serwerze bazodanowym tworzą hierarchię. Serwer zawiera wiele baz danych, baza danych może zawierać wiele schematów, w każdym schemacie może występować wiele tabel, a każda tabela może składać się z wielu kolumn. Każdy z tych obiektów powinien mieć nadaną niepowtarzalną nazwę (ang. Alias). Przy odwoływaniu się w instrukcjach do obiektu pełna jego nazwa powinna zawierać następujące elementy:
nazwa_serwera.nazwa_bazy_danych.nazwa_schematu.nazwa_obiektu
W praktyce niektóre z tych elementów mogą zostać pominięte.
- Nazwa serwera wskazuje serwer bazodanowy, na którym znajduje się obiekt. Jeżeli ten element zostanie pominięty, to instrukcja zostanie wykonana przez serwer, z którym jesteśmy połączeni.
- Nazwa bazy danych wskazuje bazę danych, w której znajduje się obiekt. Jeżeli pominiemy tę nazwę, serwer wykona instrukcję w bazie danych, z którą jesteśmy połączeni.
- Nazwa schematu wskazuje schemat, w którym znajduje się obiekt. Schemat jest zbiorem powiązanych ze sobą obiektów,tworzonym w bazie danych przez użytkownika w celu usprawnienia administrowania bazami danych. Jeżeli nazwa schematu zostanie pominięta, serwer przyjmie, że obiekt znajduje się w domyślnym schemacie użytkownika wykonującego instrukcję. Jeżeli nie zadeklarujemy schematu, domyślnym schematem użytkownika staje się schemat dbo.
Różni użytkownicy bazy danych mogą mieć przypisane różne schematy domyślne, dlatego podając nazwę schematu, unikniemy ewentualnych błędów. Poza tym posługiwanie się nazwami schematów skraca czas wykonania instrukcji.