Podstawy tworzenia zapytań SQL (mySQL)

SQL jest językiem wysokiego poziomu do zarządzania bazami danych. Jest łatwy do nauki, ale stanowi również potężne narzędzie dla profesjonalistów.

 



Wstęp:


Język SQL (Structured Query Language) powstał w latach 70, został stworzony przez IBM. Mimo tego że ojcem SQL'a był IBM implementacja sprzętowa została stworzona przez firmę Oracle. Międzynarodowa wersja pierwszego standardu SQL została zatwierdzona przez ISO w 1987 roku.

SQL jest językiem wysokiego poziomu do zarządzania bazami danych o bardzo dużych możliwościach, ale z niewielką ilością instukcji. Jest łatwy do nauki, ale stanowi również potężne narzędzie dla profesjonalistów.

Uwaga, ten tekst nie należy traktować jako kompletny kurs SQL'a, proszę potraktować go raczej jako skrótowy spis podstawowych instrukcji SQL. W internecie istnieje kilka kompletnych tutoriali SQL'a po polsku, myślę, że ten tekst może stanowić usystematyzowanie wiedzy zdobytej na temat SQL'a.

MySQL:

Przedstawione przykłady będą opierały się o bazę danych MySQL. Aby poćwiczyć tworzenie zapytań, należy zalogować się do bazy danych: aby zalogować się do bazy danych mySQL należy w konsoli przejść do katalogu gdzie zainstalowaliśmy mySQL, następnie do katalogu bin i wpisać polecenie:
mysql -u <nazwa_użytkownika> -p
Po wpisaniu hasła będziemy już mogli wykonywać różne zapytania w naszej bazie danych. Na początek będziemy musieli utworzyć bazę danych i ją aktywować (patrz: Praca z bazami danych).


Ogólne zasady budowania zapytań SQL:
  • Każde zapytanie powinno kończyć się średnikiem.
  • Zapytania nie muszą znajdować się w jednej linii.
  • Jeśli nazwa pola/wartości pola, którą wprowadzamy do tablicy zawiera, chociaż jedną spację musimy to wyrażenie umieścić w apostrofach, np. 'złota lampa'
  • Polecenia można pisać dużymi, jak i małymi literami, jednak zaleca się przyjęcie standardu.


Praca z bazami danych i tabelami (DDL):
  • USE <nazwa_bazy_danych> - wybieramy na której bazie danych chcemy pracować
  • SHOW TABLES - służy do pokazania wyświetlenia wszystkich tabeli z uprzednio wybranej bazy danych
  • SHOW DATABASES - wyświetla wszystkie bazy danych
  • CREATE DATABASE <nazwa> - tworzy nową bazę danych
  • CREATE TABLE <nazwa> ([kolumny]); - tworzy nową tabelę, między nawiasami powinna znajdować się definicja kolumn o następującej składni:
  • <nazwa_kolumny> <typ_pola> [dodatkowe_właściwośći],
  • NOT NULL - pole nie może być puste
  • DEFAULT '<wartość>' - domyślna wartość dla pola
  • PRIMARY KEY (<nazwa>) - ustawienie klucza głównego
  • AUTO_INCREMENT - właściwość, dzięki której pole przy dodawaniu rekordów będzie automatycznie inkrementowane (najczęściej stosowane dla klucza głównego, bo pozwala w automatyczny sposób uzyskać niepowtarzalną wartość w polu, moża go stosować tylko dla typu liczbowego całkowitego).
CREATE TABLE projekty
(
id_projekt INT NOT NULL auto_increment,
opis_krotki BLOB NOT NULL,
opis_dlugi BLOB NOT NULL,
data_dodania DATE NOT NULL,
PRIMARY KEY (id_projekt)
);

  • DROP DATABASE <nazwa> - usuwa bazę danych
  • DROP TABLE <nazwa> - usuwa tablicę
  • DESCRIBE <nazwa_tabeli> - wyświetla dokładny opis tabeli
  • ALTER TABLE <nazwa_tabeli> - modyfikacja tabeli
  • ADD <definicja_nowej_kolumny> - dodanie nowej kolumny na końcu,
  • ADD <definicja_nowej_kolumny> AFTER <pole> - dodanie nowej kolumny po wyznaczonej kolumnie
  • ADD <definicja_nowej_kolumny> FIRST - dodanie nowej kolumny na początku
  • CHANGE <nazwa_kolumny> <definicja_nowego pola> - zmienia całkowicie kolumnę
  • MODIFY <nazwa_kolumny> - zmiana tylko właściwości kolumny
  • DROP COLUMN <nazwa_kolumny> - usunięcie kolumny
  • RENAME <nowa_nazwa_tabeli> - zmiana nazwy tabeli


Praca z rekordami (DDM):
  • INSERT INTO < nazwa_tabeli > VALUES (< wartości_dla_pól >); - dodanie nowego wiersza do tabeli, w nawiasie muszą znajdować się wartości dla wszystkich pól
  • INSERT INTO < nazwa_tabeli > ( nazwy_pól) VALUES (wartości_dla_pól); - dodanie nowego wiersza do tabeli, w przeciwieństwie do polecenia powyżej, tylko takie wartości dla pól muszą być wprowadzone jakie zostały wcześniej napisane w liście pól
  • SELECT < lista_pól > FROM < nazwa_tabeli > [WHERE < warunek >] - wybieranie odpowiednich rekordów z tabeli, w liście pól mogą znajdować się również takie funkcje:
  • MAX(<nazwa_kolumny>) - zwraca największą wartość
  • MIN(<nazwa_kolumny>) - zwraca najmniejszą wartość
  • COUNT(*) - łączna liczba rekordów
  • SUM(<nazwa_kolumny>) - suma wartości pól podanej kolumny
  • AVG(<nazwa_kolumny>) - średnia wartości pól podanej kolumny

  • do łączenia warunków służą polecenia AND i OR
  • do grupowania warunków służą nawiasy
  • operatory dla warunków: ‘=’ ‘<>’ ‘!=’ ‘<’ ‘>’ ‘<=’ ‘>=’
  • <nazwa_kolumny> IN (<wartości>) - dzięki temu wyrażeniu w prosty sposób możemy wybrać rekordy z wybranej kolumny które równają się wartościom podanym w nawiasie
  • <nazwa_kolumny> BETWEEN <dolna_wartość> AND <górna_wartość> - wyrażenie to pozwala wybrać takie rekordy których wartość zawiera się pomiędzy określonymi wartościami
  • NOT - pozwala zanegować inne wyrażenie
  • LIKE ‘<wzorzec>’ - polecenie to pozwala tworzyć wzorce zapytań (we wzorach symbol % zastępuje dowolny ciąg znaków, zaś _ zastępuje pojedynczy znak)

  • ORDER BY <nazwa_kolumny> - pozwala sortować rekordy (ASC - rosnąco; DESC - malejąco)
  • DISTINCT - słowo to umieszcza się przed nazwą kolumny i pozwala aby w zwracanych rekordach wartości nie mogły się powtarzać
  • LIMIT <wartość> - pozwala otrzymać tylko określoną liczbę rekordów
  • UPDATE < nazwa_tabeli > SET < nazwa_pola > = < wartość > WHERE < warunek > - polecenie modyfikuje rekord
  • DELETE FROM < nazwa_tabeli > WHERE < warunek > - kasuje wszystkie pola które spełniają określony warunek


Typy pól:
  • char(m) - przechowuje teksty o ustalonej z góry długości m (1>m>255)
  • varchar(m) - w przeciwieństwie do typu char, typ varchar przechowuje taką długość tekstu jaka jest aktualnie wykorzystywana
  • int - pole przechowuje liczby całkowite z przedziału -2147483647 do 2147483647
  • date - pole przechowuje datę
  • year - rok, jeśli zostanie podany zły rok, to wartość zostanie ustawiona na 0000
  • blob/text - pole przechowujące dłuższe teksty (blob - binarny ciąg znaków, text -tekstowy ciąg znaków)
  • decimal(x, y) - liczba dziesiętna, gdzie x oznacza maksymalną liczbę cyfr, a y maksymalną liczbę cyfr po przecinku.

Źródło:
www.rudnicki.info