Bazy danych

Witryna zawiera podstawowe informacje odnośnie funkcji w bazach danych takich jak MySQL i Oracle oraz podstawowe informacje dotyczące zapytań.

wtorek, 21 sierpnia 2012

UPDATE

UPDATE - polecenie używane do aktualizacji istniejących w tabeli rekordów.

Postać instrukcji UPDATE jest następująca:

UPDATE tabela
SET kolumna_1=wartosc, kolumna_2=wartosc_2,...
WHERE jakas_kolumna=jakas_wartosc


W określonej przez nas tabeli zostaną zaktualizowane tylko kolumny, które zostały określone przez nas. Pozostałe kolumny nie ulegną zmianie (przykład 1).


UWAGA!!!
Należy zwrócić uwagę na klauzulę WHERE. Bez użycia jej zostaną zmodyfikowane wszystkie rekordy w tabeli. (przykład 2)

Często zachodzi sytuacja, iż chcemy zaktualizować tylko jeden rekord.
Najlepszym rozwiązaniem w takiej sytuacji jest użycie WHERE określając klucz główny (jest on unikalną wartością - mamy pewność, iż dokładnie jeden rekord zostanie zaktualizowany).



Dla poniższych przykładów utworzono nową tabelę o nazwie TEST:


CREATE TABLE TEST (
id int,
nazwa VARCHAR2(20)
);


SELECT * FROM TEST;

ID NAZWA
---------------------- --------------------

0 rows selected



Przykład 1.

Na początek, abyśmy mogli zmodyfikować jakiekolwiek wiersze, należy dodać kilka rekordów.

INSERT INTO TEST VALUES('1', 'nazwa 1');
INSERT INTO TEST VALUES('2', 'nazwa 2');

SELECT * FROM TEST;

ID NAZWA
---------------------- --------------------
1 nazwa 1
2 nazwa 2

2 rows selected



UPDATE TEST SET NAZWA='nazwa zmieniona' WHERE ID='2';

1 rows updated


SELECT * FROM TEST;

ID NAZWA
---------------------- --------------------
1 nazwa 1
2 nazwa zmieniona

2 rows selected




Przykład 2.

UWAGA!
W tym przykładzie zostanie przedstawione użycie polecenia UPDATE bez klauzuli WHERE (zostaną zmodyfikowane wszystkie rekordy).

INSERT INTO TEST VALUES('1', 'nazwa 1');
INSERT INTO TEST VALUES('2', 'nazwa 2');

1 rows inserted
1 rows inserted

SELECT * FROM TEST;

ID NAZWA
---------------------- --------------------
1 nazwa 1
2 nazwa 2

2 rows selected


UPDATE TEST SET NAZWA='tekst';
2 rows updated


SELECT * FROM TEST;

ID NAZWA
---------------------- --------------------
1 tekst
2 tekst

2 rows selected