Kategorie: (MySQL), napisany przez: Maga, data: 09-06-2007
Funkcje te znajdują swoje zastosowanie szczególnie w pojedynczych zapytaniach, gdzie nie możemy utworzyć procedur. Na tą grupę składają się cztery konstrukcje – IF(), IFNULL(), NULLIF() oraz CASE.
Konstrukcja IF przyjmuje trzy parametry wejściowe. Przykład jej wykorzystania to:
SELECT IF(id < 0, 0, id) AS id, name FROM tabela
Działanie tego zapytania przedstawia się następująco – jeśli id będzie ujemne zamiast niego zostanie zwrócone 0, natomiast jeśli id będzie większe lub równe 0 to zostanie zwrócone ono samo. I tak dla tabeli postaci:
| id |
name |
| 2 |
AAAAAAAA |
| -2 |
BBBBBBBB |
| -3 |
CCCCCCCC |
| 4 |
DDDDDDDD |
| 6 |
EEEEEEEE |
Otrzymamy tabelę postaci:
| id |
name |
| 2 |
AAAAAAAA |
| 0 |
BBBBBBBB |
| 0 |
CCCCCCCC |
| 4 |
DDDDDDDD |
| 6 |
EEEEEEEE |
Konstrukcja IFNULL() przyjmuje dwa argumenty wejściowe. Przykład wykorzystania:
SELECT IFNULL (id, 0) AS id FROM tabela
Zatem jeśli id będzie równe NULL zostanie zwrócone 0, a jeśli nie będzie równe NULL zostanie zwrócone id. Dla tabeli postaci:
| id |
name |
| NULL |
AAAAAAAA |
| 2 |
BBBBBBBB |
| -3 |
CCCCCCCC |
| NULL |
DDDDDDDD |
| 6 |
EEEEEEEE |
otrzymamy:
| id |
name |
| 0 |
AAAAAAAA |
| 2 |
BBBBBBBB |
| -3 |
CCCCCCCC |
| 0 |
DDDDDDDD |
| 6 |
EEEEEEEE |
Konstrukcja NULLIF przyjmuje dwa parametry wejściowe. Przykładowo:
SELECT id, nr, NULLIF(id, nr) AS wynik FROM tabela
Konstrukcja ta zwróci NULL jeśli id i number będą równe, natomiast jeśli nie będą równe zwróci id. Przykładowo dla tablicy:
| id |
nr |
| 2 |
3 |
| 2 |
5 |
| -3 |
-3 |
| 2 |
4 |
| 6 |
6 |
Otrzymamy:
| id |
nr |
wynik |
| 2 |
3 |
2 |
| 2 |
5 |
2 |
| -3 |
-3 |
NULL |
| 2 |
4 |
2 |
| 6 |
6 |
NULL |
Kategorie: (MySQL), napisany przez: Maga, data: 09-06-2007
Gdy chcemy sprawdzić czy wartość jakiejś kolumny w danym rekordzie jest nieokreślona musimy użyć określonej składni zapytania. Dla wartości nieokreślonej nie działa to tak jak w przypadku zwykłych zapytań:
SELECT id FROM tabela WHERE id=2;
I nie zadziała coś podobnego jak:
SELECT tresc FROM tabela WHERE tresc=NULL;
Bądź:
SELECT tresc FROM tabela WHERE tresc!=NULL;
Jeśli chcemy wybrać wiersze z tabeli w których pole tresc jest nieokreślone użyjemy składni:
SELECT tresc FROM tabela WHERE tresc IS NULL;
Podobnie jeśli chcemy wybrać wiersze z tabeli w których pole tresc nie jest nieokreślone użyjemy składni:
SELECT tresc FROM tabela WHERE tresc IS NOT NULL;
Kategorie: (MySQL), napisany przez: Maga, data: 06-05-2007
Dwa sposoby na realizowanie skryptów zapisanych w plikach tekstowych.
Z poziomu konsoli:
mysql nazwa_bazy_danych < nazwa_pliku_tekstowego
Z poziomu sesji MySQL:
SOURCE nazwa_pliku_tekstowego
Kategorie: (MySQL), napisany przez: Maga, data: 06-05-2007
W skryptach bazodanowych możemy używać zmiennych do przechowywania danych, a następnie korzystać z nich w dalszej cześci skryptu.
Zmienną ustawia się następująco:
Natomiast odwołujemy się do naszej zmiennej następująco:
Rozróżniana jest wielkość liter więc @zmienna to nie to samo co @Zmienna.
Kategorie: (MySQL), napisany przez: Maga, data: 18-03-2007
Jeśli chcemy połączyć dwie tabele w zapytaniu wg jakiegoś pola, które nosi taką samą nazwę w obu tabelach dobrze jest zamiast ON użyć konstrukcji USING(nazwa_pol). Wówczas zamiast konstrukcji:
SELECT * FROM tabela1 t1 INNER JOIN tabela2 t2 ON t1.id=t2.id
Mamy:
SELECT * FROM tabela1 INNER JOIN tabela2 USING(id)
Już na tym krótkim przykładzie widać, że fragment z USING jest o wiele krótszy. Jeśli zapytanie byłoby bardziej rozbudowane i dotyczyłoby łączenia po paru innych polach tego typu skrót jest bardzo przydatny.