IF NOT EXISTS w SQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

IF NOT EXISTS to opcjonalna klauzula stosowana m.in. przy poleceniu CREATE TABLE. Jej zadaniem jest sprawdzenie, czy obiekt o podanej nazwie już istnieje. Jeśli tabela istnieje, polecenie nie próbuje utworzyć jej drugi raz, dzięki czemu można uniknąć błędu.

Zastosowanie przy CREATE TABLE

Przykład w MySQL:

CREATE TABLE IF NOT EXISTS ADRES (
  ulica VARCHAR(70)
) CHARACTER SET utf8;

Polecenie oznacza: utwórz tabelę ADRES, ale tylko wtedy, gdy taka tabela jeszcze nie istnieje.

Co daje IF NOT EXISTS?

  • zabezpiecza przed błędem tworzenia istniejącej tabeli,
  • ułatwia wielokrotne uruchamianie skryptów SQL,
  • jest opcjonalne — nie trzeba go używać w każdym CREATE TABLE,
  • nie usuwa ani nie modyfikuje istniejącej tabeli.

Ważne na egzaminie

IF NOT EXISTS nie służy do sprawdzania poprawności danych w rekordach. Nie decyduje też o tym, czy w kolumnie można zapisać polskie znaki. Za możliwość przechowywania znaków odpowiada m.in. typ danych, zestaw znaków i kodowanie, np. utf8.

Przykład bez IF NOT EXISTS

CREATE TABLE ADRES (
  ulica VARCHAR(70)
);

Jeżeli tabela ADRES już istnieje, baza może zwrócić błąd.

Przykład z IF NOT EXISTS

CREATE TABLE IF NOT EXISTS ADRES (
  ulica VARCHAR(70)
);

Jeżeli tabela już istnieje, polecenie zostanie pominięte lub zakończy się bez błędu zależnie od systemu bazy danych.