Articles

6.1. Wstawianie danych

Gdy tabela jest tworzona, nie zawiera żadnych danych. Pierwszą rzeczą, którą należy zrobić, aby baza danych mogła być użyteczna, jest wstawienie danych. Dane są wstawiane po jednym wierszu na raz. Oczywiście można również wstawić więcej niż jeden wiersz, ale nie ma możliwości wstawienia mniej niż jednego wiersza. Nawet jeśli znasz tylko niektóre wartości kolumn, kompletny wiersz musi zostać utworzony.

Aby utworzyć nowy wiersz, użyj polecenia INSERT. Polecenie wymaga podania nazwy tabeli oraz wartości kolumn. Na przykład, rozważ tabelę Produkty z rozdziału 5:

CREATE TABLE products ( product_no integer, name text, price numeric);

Przykładowe polecenie wstawienia wiersza byłoby następujące:

INSERT INTO products VALUES (1, 'Cheese', 9.99);

Wartości danych są wymienione w kolejności, w jakiej kolumny występują w tabeli, oddzielone przecinkami. Zazwyczaj wartości danych będą literałami (stałymi), ale dozwolone są również wyrażenia skalarne.

Powyższa składnia ma tę wadę, że musisz znać kolejność kolumn w tabeli. Aby tego uniknąć możesz również wypisać kolumny jawnie. Na przykład, obie poniższe komendy mają taki sam efekt jak powyższa:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);

Wielu użytkowników uważa za dobrą praktykę, aby zawsze wymieniać nazwy kolumn.

Jeśli nie masz wartości dla wszystkich kolumn, możesz pominąć niektóre z nich. W takim przypadku kolumny zostaną wypełnione ich domyślnymi wartościami. Na przykład:

INSERT INTO products (product_no, name) VALUES (1, 'Cheese');INSERT INTO products VALUES (1, 'Cheese');

Drugi formularz jest rozszerzeniem PostgreSQL. Wypełnia ona kolumny od lewej strony tyloma wartościami, ile zostało podanych, a reszta zostanie domyślnie ustawiona.

Dla jasności, możesz również zażądać wartości domyślnych dla poszczególnych kolumn lub dla całego wiersza:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', DEFAULT);INSERT INTO products DEFAULT VALUES;

Możesz wstawić wiele wierszy w jednym poleceniu:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99);

Możliwe jest również wstawienie wyniku zapytania (którym może być brak wierszy, jeden wiersz lub wiele wierszy):

INSERT INTO products (product_no, name, price) SELECT product_no, name, price FROM new_products WHERE release_date = 'today';

Dzięki temu można wykorzystać pełną moc mechanizmu zapytań SQL (rozdział 7) do obliczania wierszy do wstawienia.

Wskazówka: W przypadku wstawiania dużej ilości danych w tym samym czasie, warto rozważyć użycie polecenia COPY. Nie jest ono tak elastyczne jak polecenie INSERT, ale jest bardziej wydajne. Więcej informacji na temat zwiększania wydajności ładowania zbiorczego znajduje się w rozdziale 14.4.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *