SQL/Zapytania SQL: Różnice pomiędzy wersjami

Z Wikibooks, biblioteki wolnych podręczników.
< SQL
Usunięta treść Dodana treść
Znacznik: Wycofane
Znacznik: Wycofane
Linia 21: Linia 21:
Dane tekstowe muszą być zawsze ujęte w znaki pojedynczego cudzysłowu (').
Dane tekstowe muszą być zawsze ujęte w znaki pojedynczego cudzysłowu (').


 Pozwala na dodawanie, modyfikowanie i usuwanie struktur logicznych, które umożliwiają użytkownikom dostęp do danych,
w
Przykładowe polecenia:
Create (database, table) – tworzenie ( baz danych, tabel)
Alter (table) - modyfikacja (struktury tabeli)
Drop (database, table) - usuwanie (baz danych, tabel)


=== DCL ===
=== DCL ===

Wersja z 15:15, 16 lut 2024


Składnia SQL

Użycie SQL, zgodnie z jego nazwą, polega na zadawaniu zapytań do bazy danych. Zapytania można zaliczyć do jednego z czterech głównych podzbiorów:

  • SQL DML (ang. Data Manipulation Language – „język manipulacji danymi”),
  • SQL DDL (ang. Data Definition Language – „język definicji danych”),
  • SQL DCL (ang. Data Control Language – „język kontroli nad danymi”).
  • SQL DQL (ang. Data Query Language – „język definiowania zapytań”).

Instrukcje SQL w obrębie zapytań tradycyjnie zapisywane są wielkimi literami, jednak nie jest to wymóg. Każde zapytanie w SQL-u musi kończyć się znakiem średnika (;).

Dodatkowo, niektóre programy do łączenia się z silnikiem bazy danych (np. psql w przypadku PostgreSQL), używają swoich własnych instrukcji, spoza standardu SQL, które służą np. do połączenia się z bazą, wyświetlenia dokumentacji itp.

DML

DML (Data Manipulation Language) służy do wykonywania operacji na danych – do ich umieszczania w bazie, kasowania, przeglądania oraz dokonywania zmian. Najważniejsze polecenia z tego zbioru to:

  • INSERT – umieszczenie danych w bazie,
  • UPDATE – zmiana danych,
  • DELETE – usunięcie danych z bazy.

Dane tekstowe muszą być zawsze ujęte w znaki pojedynczego cudzysłowu (').

 Pozwala na dodawanie, modyfikowanie i usuwanie struktur logicznych, które umożliwiają użytkownikom dostęp do danych,

Przykładowe polecenia: Create (database, table) – tworzenie ( baz danych, tabel) Alter (table) - modyfikacja (struktury tabeli) Drop (database, table) - usuwanie (baz danych, tabel)

DCL

DCL (Data Control Language) ma zastosowanie do nadawania uprawnień do obiektów bazodanowych. Najważniejsze polecenia w tej grupie to:

  • GRANT - służące do nadawania uprawnień do pojedynczych obiektów lub globalnie konkretnemu użytkownikowi (np. GRANT ALL PRIVILEGES ON EMPLOYEE TO PIOTR WITH GRANT OPTION – przyznanie wszystkich praw do tabeli EMPLOYEE użytkownikowi PIOTR z opcją pozwalającą mu nadawać prawa do tej tabeli).
  • REVOKE – służące do odbierania wskazanych uprawnień konkretnemu użytkownikowi (np. REVOKE ALL PRIVILEGES ON EMPLOYEE FROM PIOTR - odebranie użytkownikowi wszystkich praw do tabeli EMPLOYEE).
  • DENY.

DQL

DQL (Data Query Language) to język formułowania zapytań do bazy danych. W zakres tego języka wchodzi jedno polecenie - SELECT. Często SELECT traktuje się jako część języka DML, ale to podejście nie wydaje się właściwe, ponieważ DML z definicji służy do manipulowania danymi - ich tworzenia, usuwania i uaktualniania.

Na pograniczu obu języków znajduje się polecenie SELECT INTO, które dodatkowo modyfikuje (przepisuje, tworzy) dane.

Przykładowe zapytania

Przykłady użycia wyżej wymienionych rodzajów zapytań:

SELECT *
    FROM pracownicy
    WHERE pensja > 2000
    ORDER BY staz DESC;
Zwraca tabelę (listę) utworzoną ze wszystkich kolumn (*) tabeli „pracownicy” (FROM pracownicy) zawierającą pracowników, których pensja jest większa niż 2000 (WHERE pensja > 2000) i sortuje wynik malejąco według parametru staz (ORDER BY staz DESC).
INSERT INTO pracownicy
    (imie, nazwisko, pensja, staz)
VALUES
    ('Jan', 'Kowalski', 5500, 1);
Dodaje do tabeli „pracownicy” (INTO pracownicy) wiersz (rekord) zawierający dane pojedynczego pracownika.
UPDATE pracownicy
    SET pensja = pensja * 1.1
    WHERE staz > 2;
Podwyższa o 10% pensję (SET pensja = pensja * 1.1) pracownikom, których staż jest większy niż 2 (np. lata).
DELETE FROM pracownicy
    WHERE imie = 'Jan' AND nazwisko = 'Kowalski';
Usuwa z tabeli „pracownicy” wszystkie wiersze (rekordy) dotyczące pracownika o imieniu „Jan” i nazwisku „Kowalski” (czyli takie, w których pole "imię" ma wartość Jan, a pole "nazwisko" – Kowalski).
CREATE TABLE pracownicy
(
    imie varchar(255), 
    nazwisko varchar(255), 
    pensja float,
    staz int
);
Tworzy tabelę „pracownicy” zawierającą pola tekstowe zmiennej długości (varchar) o nazwach „imie” (imię) i „nazwisko”, o maksymalnej długości 255 znaków, zapisaną za pomocą liczby rzeczywistej (float od ang. floating point) pensję oraz zapisany za pomocą liczby całkowitej (int od ang. integer) staż.
DROP TABLE pracownicy;
Usuwa z bazy tabelę „pracownicy”.
ALTER TABLE pracownicy
    ADD dzial varchar(255);
Dodaje do struktury tabeli „pracownicy” kolumnę „dzial” (dział), jako pole tekstowe o długości maks. 255 bajtów.


Zapytania SQL

Do pobierania danych z tabel w języku SQL używamy polecenia SELECT.

Podstawowe zapytanie wygląda następująco:

SELECT kolumna1, kolumna2, ..., kolumnaN 
FROM nazwaTabeli;

Wyobraźmy sobie, że mamy tabelę UZYTKOWNIK, a kolumnami będą: imie, nazwisko.

Zapytanie wyświetlające całą tabelę wygląda następująco:

SELECT * 
FROM UZYTKOWNIK;

i jest równoznaczne z zapytaniem:

SELECT imie, nazwisko 
FROM UZYTKOWNIK;

Jeśli chcemy wyświetlić wyłącznie jedną kolumnę, np. nazwisko piszemy:

SELECT nazwisko 
FROM UZYTKOWNICY;

Ponadto możemy zdecydować czy chcemy uszeregować nazwiska malejąco czy rosnąco. ASC - rosnąco; DESC - malejąco;

Dla uszeregowania malejącego, czyli od Z do A, zapytanie wygląda tak:

SELECT nazwisko 
FROM UZYTKOWNICY ORDER BY nazwisko DESC; 

Szeregowanie działa także na liczbach