Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych

Słowa kluczowe: ALTER TABLE w SQL DDL w SQL FLOAT w SQL

Polecenie ALTER TABLE artykuly ALTER cena SET DEFAULT 0; wprowadza w tabeli artykuly zmianę polegającą na

A. dodaniu kolumny cena z wartością 0 we wszystkich rekordach
B. zmianie typu kolumny cena na liczbowy
C. ustawieniu wartości domyślnej 0 dla kolumny cena
D. usunięciu kolumny cena
Polecenie ALTER TABLE artykuly ALTER cena SET DEFAULT 0 zmienia definicję kolumny cena w tabeli artykuly w taki sposób, że od tej chwili jej wartością domyślną będzie 0. Czyli jeżeli podczas dodawania nowego rekordu w instrukcji INSERT nie podasz wartości dla kolumny cena, system bazy danych sam wstawi tam 0. To jest typowa operacja DDL, czyli dotycząca struktury tabeli, a nie bezpośredniej edycji danych w istniejących rekordach. Ważne: to polecenie zwykle nie ustawia z automatu ceny 0 we wszystkich już zapisanych artykułach. Do tego służyłoby UPDATE artykuly SET cena = 0, ewentualnie z warunkiem WHERE. W praktyce DEFAULT przydaje się np. przy polach licznikowych, statusach, cenach początkowych, flagach aktywności albo datach utworzenia. Z mojego doświadczenia warto jednak uważać z domyślną ceną 0, bo biznesowo może oznaczać produkt darmowy, a czasem lepszy jest NULL lub dodatkowa walidacja. Dobra praktyka to sprawdzić zgodność typu danych kolumny z wartością domyślną oraz opisać taką zmianę w migracji bazy danych.
W tym poleceniu kluczowe jest rozróżnienie między zmianą definicji kolumny a operacją wykonywaną na danych. ALTER TABLE oznacza modyfikację struktury tabeli, ale dalsza część instrukcji mówi dokładniej, co ma się stać. Fragment ALTER cena SET DEFAULT 0 nie usuwa kolumny cena, bo do usuwania kolumn stosuje się składnię w stylu DROP COLUMN cena. Gdyby taka instrukcja została wykonana, kolumna zniknęłaby ze schematu tabeli razem z zapisanymi w niej wartościami, a tutaj nic takiego nie wynika z polecenia. Nie jest to też zmiana typu danych kolumny na liczbowy. Typ kolumny zmienia się inną konstrukcją, zależną od systemu bazodanowego, na przykład ALTER COLUMN cena TYPE numeric w PostgreSQL albo MODIFY cena DECIMAL(...) w MySQL. Samo wpisanie wartości 0 jako DEFAULT nie zamienia typu kolumny, tylko ustawia domyślną wartość, która musi być zgodna z aktualnym typem. Częsty błąd polega też na myleniu DEFAULT z aktualizacją rekordów. DEFAULT działa głównie przy przyszłych operacjach INSERT, kiedy użytkownik nie poda wartości dla danej kolumny. Nie dodaje też nowej kolumny, bo do tego służy ADD COLUMN. Moim zdaniem najprościej zapamiętać: DEFAULT ustawia zachowanie kolumny na przyszłość, UPDATE zmienia istniejące dane, ADD COLUMN dodaje kolumnę, a DROP COLUMN ją usuwa.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.