MySQL – Dane

INSERT INTO

Dodaje rekord do tabeli

INSERT INTO nazwa_tabeli (kolumna1, kolumna2, kolumna3, ...)
  VALUES (wartosc1, wartosc2, wartosc3, ...);

Przykład:

/*
CREATE TABLE uczen(
    uczen_id INT NOT NULL AUTO_INCREMENT,
    imie VARCHAR(40) NOT NULL,
    nazwisko VARCHAR(60) NOT NULL,
    data_urodzenia DATE,
    srednia_ocen DECIMAL(10,2),
    adres TEXT,
    PRIMARY KEY (uczen_id)
);
*/

INSERT INTO uczen ( imie, nazwisko, data_urodzenia, adres )
  VALUES ( 'Mateusz', 'Kifner', '2000-01-01', Null );

INSERT INTO uczen
  VALUES ( 1,'Mateusz', 'Kifner', '2000-01-01', Null, Null );

INSERT INTO uczen VALUES 
  ( 3, 'Mateusz', 'Kifner', '2000-01-01', Null, Null ),
  ( 4, 'Jan', 'Kowalski', '2000-01-01', 4.2, 'ul. Kameliowa 123/45' );

SELECT

Polecenie to służy do pobierania danych z bazy danych.

-- Pobierz wszystkie dane z tabeli
SELECT * FROM nazwa_tabeli;

-- Pobierz dane z kolumn kolumna1, kolumna2, kolumna3, ... z tabeli
SELECT kolumna1, kolumna2, kolumna3, ... FROM nazwa_tabeli;

Przykład:

-- Pobierz wszystkie dane z tabeli przyklad
SELECT * FROM `przyklad`;

-- Pobierz dane z kolumn imie, nazwisko, adres z tabeli przyklad
SELECT imie, nazwisko, adres FROM przyklad;

SELECT – DISTINCT

Klauzula jest używana do usuwania duplikujących się wyników w zapytaniach. Pozwala na zwrócenie tylko unikalnych wartości w kolumnie lub zestawie kolumn.

-- Pobierz wszystkie dane z tabeli
SELECT DISTINCT * FROM nazwa_tabeli;

-- Pobierz dane z kolumn kolumna1, kolumna2, kolumna3, ... z tabeli
SELECT DISTINCT kolumna1, kolumna2, kolumna3, ... FROM nazwa_tabeli;

Przykład:

-- Pobierz wszystkie dane z tabeli przyklad
SELECT DISTINCT * FROM `przyklad`;

-- Pobierz dane z kolumn imie, nazwisko, adres z tabeli przyklad
SELECT DISTINCT imie, nazwisko, adres FROM przyklad;

SELECT – WHERE

Klauzula która służy do filtrowania danych na podstawie określonych warunków. Umożliwia pobieranie tylko tych rekordów, które spełniają podane kryteria.

-- Pobierz wszystkie dane z tabeli, które spełniają warunek
SELECT * FROM nazwa_tabeli WHERE warunek;

-- Pobierz dane z kolumn kolumna1, kolumna2, kolumna3, ... z tabeli, które spełniają warunek
SELECT kolumna1, kolumna2, kolumna3, ... 
  FROM nazwa_tabeli 
  WHERE warunek;

Przykład:

-- Pobierz wszystkie dane z tabeli uczen, które spełniają warunek srednia_ocen > 3
SELECT * 
  FROM `uczen` 
  WHERE srednia_ocen > 3;

-- Pobierz dane z kolumn imie, nazwisko, adres z tabeli przyklad, które spełniają warunek srednia_ocen > 3
SELECT imie, nazwisko, adres 
  FROM uczen 
  WHERE srednia_ocen > 3;

SELECT – WHERE – BETWEEN

Klauzula BETWEEN służy do wyszukiwania wartości w określonym zakresie (np. liczbowym, datowym). Zawiera wartości początkową i końcową (włącznie).

SELECT kolumna1, kolumna2, ...
FROM nazwa_tabeli
WHERE kolumna BETWEEN value1 AND value2;

Przykład:

SELECT * 
  FROM `uczen` 
  WHERE srednia_ocen BETWEEN 2 AND 3;

SELECT – WHERE – IN

Klauzula IN służy do sprawdzania, czy wartość należy do określonego zbioru wartości. Działa jak wiele operatorów OR, ale jest czytelniejsza i bardziej wydajna.

SELECT kolumna1, kolumna2, ...
  FROM nazwa_tabeli
  WHERE kolumna IN (value1, value2, ...);

Przykład:

SELECT * 
  FROM `uczen` 
  WHERE srednia_ocen IN (2,4);

SELECT * FROM `uczen`
  WHERE IdUcznia IN (SELECT IdUcznia FROM ewidencja);

SELECT – WHERE – LIKE

Operator LIKE w MySQL służy do wyszukiwania danych w kolumnach tekstowych na podstawie wzorca. Jest często używany z symbolem wieloznacznym (% lub _) do dopasowywania częściowego.

  • % zastępuje zero lub więcej znaków
  • _ zastępuje dokładnie jeden znak
SELECT kolumna1, kolumna2, ...
  FROM nazwa_tabeli
  WHERE kolumna LIKE 'wzorzec'; 

Przykład:

SELECT * FROM `uczen`
  WHERE imie LIKE 'J%';

SELECT * FROM `uczen`
  WHERE imie LIKE 'J__';

SELECT * FROM uczen 
  WHERE nazwisko NOT LIKE '%ski';

SELECT – WHERE – NULL, NOT NULL

NULL w SQL oznacza brak wartości lub brak danych w kolumnie. Jest to specjalna wartość, która wskazuje, że brak jest konkretnej wartości (np. dla daty urodzenia osoby, której data nie została wprowadzona).

SELECT kolumna1, kolumna2, ...
  FROM nazwa_tabeli
  WHERE kolumna IS NULL;

SELECT kolumna1, kolumna2, ...
  FROM nazwa_tabeli
  WHERE kolumna IS NOT NULL;

Przykład:

SELECT * FROM `uczen`
  WHERE data_urodzenia IS NULL;

SELECT * FROM `uczen`
  WHERE data_urodzenia IS NOT NULL;

SELECT – WHERE – NULL, NOT NULL

NULL w SQL oznacza brak wartości lub brak danych w kolumnie. Jest to specjalna wartość, która wskazuje, że brak jest konkretnej wartości (np. dla daty urodzenia osoby, której data nie została wprowadzona).

SELECT kolumna1, kolumna2, ...
  FROM nazwa_tabeli
  WHERE kolumna IS NULL;

SELECT kolumna1, kolumna2, ...
  FROM nazwa_tabeli
  WHERE kolumna IS NOT NULL;

Przykład:

SELECT * FROM `uczen`
  WHERE data_urodzenia IS NULL;

SELECT * FROM `uczen`
  WHERE data_urodzenia IS NOT NULL;

Operatory

Matematyczne

OperatorOpis
=równość
!=nierówność
>większe
<mniejsze
>=większe równe
<=mniejsze równe

Logiczne

OperatorOpis
ANDi (oba warunki muszą być spełnione)
ORlub (przynajmniej jeden warunek musi być spełniony)
NOTnie (negacja warunku)

UPDATE

Polecenie to służy do modyfikowania istniejących rekordów w tabeli bazy danych. Pozwala na zmianę wartości w jednej lub kilku kolumnach, a warunek WHERE określa, które wiersze mają zostać zaktualizowane. W przypadku pominięcia klauzuli WHERE zmodyfikowane zostaną wszystkie rekordy.

UPDATE nazwa_tabeli
SET kolumna1 = wartosc1, kolumna2 = wartosc2, ...
WHERE warunek;

Przykład:

UPDATE uczen SET imie = 'Jan', nazwisko = 'Kowalski' WHERE id = 1;

UPDATE uczen 
  SET srednia_ocen = srednia_ocen + 1 
  WHERE imie = 'Jan';

DELETE

Polecenie to służy do usuwania rekordów z tabeli bazy danych. Możesz usunąć wybrane wiersze przy użyciu klauzuli WHERE. W przypadku pominięcia klauzuli WHERE usunięte zostaną wszystkie rekordy.

DELETE FROM table_name WHERE condition; 

Przykład:

DELETE FROM uczen WHERE id = 1;

DELETE FROM uczen WHERE imie = 'Jan';

Zadanie

  • Dodaj 3 rekordy do tabeli `uczen`
  • Usuń przedostatni rekord z użyciem id

SELECT – LIMIT

Klauzula ta służy do ograniczenia liczby rekordów które zostaną zwrócone.

-- ogranicz liczbę rekordów
SELECT kolumna1, kolumna2, kolumna3, ... 
  FROM nazwa_tabeli 
  WHERE warunek
  LIMIT liczba_rekordow;

-- ogranicz liczbę rekordów oraz pomiń pewną ilość pierwszych
SELECT kolumna1, kolumna2, kolumna3, ... 
  FROM nazwa_tabeli 
  WHERE warunek 
  LIMIT liczba_rekordow OFFSET ilosc_rekordow_do_pominiencia; 

Przykład:

-- Pobierz pierwsze 10 rekordów z tabeli uczen, 
-- które spełniają warunek srednia_ocen > 3
SELECT * 
  FROM `uczen` 
  WHERE srednia_ocen > 3
  LIMIT 10;

-- Pobierz 10 rekordów z tabeli uczen zaczynając od 11, które spełniają warunek srednia_ocen > 3
SELECT imie, nazwisko, adres 
  FROM uczen 
  WHERE srednia_ocen > 3;
  LIMIT 10 OFFSET 10;

SELECT – table aliasy

Alias w SQL to tymczasowa nazwa nadana tabeli lub kolumnie w celu ułatwienia odczytu i skrócenia zapytań. Alias nie zmienia struktury bazy danych – działa tylko podczas wykonywania zapytania.

-- Alias kolumny
SELECT kolumna AS alias FROM tabela;

-- Alias tabeli
SELECT alias1.kolumna1, alias2.kolumna2 
  FROM tabela1 AS alias1, tabela2 AS alias2;

Przykład:

SELECT imie AS 'Imię' FROM uczen;

SELECT u.imie, u.nazwisko, k.profil_klasy
  FROM uczen as u, klasa as k;

SELECT – ORDER BY

Klauzula służy do sortowania wyników zapytania w porządku rosnącym (domyślnie) lub malejącym. Można go używać zarówno do sortowania po jednej, jak i po wielu kolumnach.

SELECT kolumna1, kolumna2, ...
FROM nazwa_tabeli
ORDER BY kolumna1, kolumna2, ... ;

SELECT kolumna1, kolumna2, ...
FROM nazwa_tabeli
ORDER BY kolumna1, kolumna2, ... DESC;

Przykład:

SELECT * 
  FROM `uczen` 
  ORDER BY imie;

SELECT * 
  FROM `uczen` 
  ORDER BY nazwisko ASC;

SELECT imie, nazwisko, adres 
  FROM uczen 
  ORDER BY imie, nazwisko DESC;

Funkcje

Agregujące

OperatorOpis
COUNT()Liczy liczbę wierszy w zbiorze danych.
SUM()Oblicza sumę wartości w kolumnie numerycznej.
AVG()Oblicza średnią wartość w kolumnie numerycznej.
MIN()Zwraca najmniejszą wartość w kolumnie.
MAX()Zwraca największą wartość w kolumnie.
GROUP_CONCAT()Łączy wartości z wielu wierszy w jedną, tworząc ciąg znaków.

Logiczne

OperatorOpis
ASCII(znak) Zwraca kod ASCII pierwszego znaku w ciągu znaków.
CHAR(kod)Zamienia kod ASCII na odpowiadający mu znak.
LENGTH(tekst)Zwraca długość ciągu znaków.
CONCAT(napis1, …)Łączy dwa lub więcej ciągów znaków w jeden.
UPPER(tekst) zamienia wszystkie litery w ciągu znaków na wielkie litery
LOWER(tekst)zamienia wszystkie litery w ciągu znaków na małe litery.
TRIM(tekst)
NOW()zwraca bieżącą datę i godzinę.
SUBSTRING(tekst, poczatek, dlugosc)zwraca część ciągu znaków, zaczynając od określonej pozycji.
ROUND(liczba, miejsca_po_przecinku);zaokrągla liczbę do określonej liczby miejsc po przecinku.
SIN(kat)oblicza sinus kąta w radianach.

SELECT – GROUP BY

Klauzula jest używana do grupowania wyników na podstawie wartości jednej lub kilku kolumn. Jest szczególnie przydatne w połączeniu z funkcjami agregującymi, takimi jak COUNT(), SUM(), AVG(), MAX(), MIN(), które operują na grupach danych.

SELECT kolumna1, kolumna2, ...
  FROM nazwa_tabeli
  GROUP BY kolumna1, kolumna2, ...;

SELECT kolumna1, kolumna2, ...
  FROM nazwa_tabeli
  GROUP BY kolumna1, kolumna2, ...
  ORDER BY kolumna1, kolumna2, ...;

Przykład:

SELECT Count(*), sreadnia_ocen
  FROM `uczen`
  GROUP BY srednia_ocen
  ORDER BY imie;

SELECT – INNER JOIN

INNER JOIN to typ łączenia tabel, który zwraca tylko te rekordy, które mają pasujące dane w obu tabelach na podstawie określonego warunku.

SELECT kolumna1, kolumna2, ...
FROM tabela1
INNER JOIN tabela2
ON tabela1.kolumna1 = tabela2.kolumna1; 

Przykład:

SELECT u.imie, u.nazwisko, e.profil_klasy
FROM uczen AS u
JOIN ewidencja AS e ON u.uczen_id = e.uczen_id;

SELECT – LEFT JOIN

Zwróci wszystkie rekordy z tabeli po lewej (np. uczen), nawet jeśli nie ma pasujących rekordów w tabeli po prawej (np. ewidencja).

SELECT kolumna1, kolumna2, ...
FROM tabela1
LEFT JOIN tabela2
ON tabela1.kolumna1 = tabela2.kolumna2; 

Przykład:

SELECT u.imie, u.nazwisko, e.profil_klasy
FROM uczen AS u
LEFT JOIN ewidencja AS e ON u.uczen_id = e.uczen_id;

SELECT – RIGHT JOIN

Zwróci wszystkie rekordy z tabeli po prawej (np. ewidencja), nawet jeśli nie ma pasujących rekordów w tabeli po lewej (np. uczen).

SELECT kolumna1, kolumna2, ...
FROM tabela1
RIGHT JOIN tabela2
ON tabela1.kolumna1 = tabela2.kolumna2; 

Przykład:

SELECT u.imie, u.nazwisko, e.profil_klasy
FROM uczen AS u
RIGHT JOIN ewidencja AS e ON u.uczen_id = e.uczen_id;

SELECT – CROSS JOIN

Klauzula ta CROSS JOIN to typ łączenia tabel, który zwraca iloczyn kartezjański obu tabel, czyli wszystkie możliwe kombinacje rekordów z obu tabel, bez względu na warunki dopasowania. do ograniczenia liczby rekordów które zostaną zwrócone.

SELECT kolumna1, kolumna2, ...
FROM tabela1
CROSS JOIN tabela2; 

Przykład:

SELECT u.imie, u.nazwisko, e.profil_klasy
FROM uczen AS u
RIGHT JOIN ewidencja AS e;

SELECT – FULL OUTER JOIN —-

FULL OUTER JOIN to typ łączenia tabel, który zwraca wszystkie rekordy z obu tabel, łącząc je na podstawie warunku, a dla rekordów, które nie mają pasujących danych w drugiej tabeli, wstawia wartości NULL.

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
WHERE t1.id IS NULL

Przykład:

SELECT – Podzapytania

Podzapytania to zapytania, które są osadzone w innym zapytaniu, a ich wyniki mogą być używane w klauzulach SELECT, WHERE, FROM lub HAVING. Podzapytania umożliwiają bardziej złożone operacje i analizy na danych, umożliwiając wplecenie wyników zapytania w inne zapytanie.

SELECT * FROM tabela1, (SELECT kolumna1 FROM tabela2) as kolumna;

SELECT * FROM tabela1 WHERE kolumna1 in (SELECT kolumna1 FROM tabela2);

Przykład:

SELECT imie, 
       (SELECT AVG(ocena) FROM ewidencja WHERE id_uczen = uczen.id_uczen) AS srednia_ocena
FROM uczen;

SELECT imie, nazwisko
FROM uczen
WHERE id_uczen IN 
   (SELECT id_uczen
    FROM ewidencja
    GROUP BY id_uczen
    HAVING AVG(ocena) > 4.0);

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *