PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wstawiać i usuwać dane w PostgreSQL


Wprowadzenie

Dodawanie i usuwanie rekordów z tabel to jedne z najczęstszych operacji wykonywanych przez bazy danych. Dodawanie danych polega na określeniu nazw tabel i kolumn, do których chcesz dodać wartości, a także wartości, które chcesz wprowadzić w poszczególnych polach. Usuwanie rekordów obejmuje zidentyfikowanie prawidłowego wiersza lub wierszy i usunięcie ich z tabeli.

W tym przewodniku omówimy, jak używać SQL INSERT i DELETE polecenia z PostgreSQL. Obejmuje to podstawową składnię, sposób zwracania informacji o danych, które zostały przetworzone oraz jak dodawać lub usuwać wiele wierszy w jednej instrukcji.



Przeglądanie struktury tabeli

Przed użyciem INSERT polecenie, musisz znać strukturę tabeli, aby móc dostosować się do wymagań nałożonych przez kolumny tabeli, typy danych i ograniczenia. W zależności od klienta bazy danych można to zrobić na kilka różnych sposobów.

Jeśli używasz psql klienta wiersza poleceń, najprostszym sposobem na znalezienie tych informacji jest użycie \d+ metapolecenie wbudowane w narzędzie.

Na przykład, aby znaleźć strukturę tabeli o nazwie employee , należy wpisać to:

\d+ employee
                                                                Table "public.employee"   Column    | Type                        | Collation | Nullable | Default                                       | Storage  | Stats target | Description-------------+-----------------------------+-----------+----------+-----------------------------------------------+----------+--------------+------------- employee_id | integer                     |           | not null | nextval('employee_employee_id_seq'::regclass) | plain    |              | first_name  | character varying(45)       |           | not null |                                               | extended |              | last_name   | character varying(45)       |           | not null |                                               | extended |              | last_update | timestamp without time zone |           | not null | now()                                         | plain    |              |Indexes:    "employee_pkey" PRIMARY KEY, btree (employee_id)    "idx_employee_last_name" btree (last_name)Triggers:    last_updated BEFORE UPDATE ON employee FOR EACH ROW EXECUTE FUNCTION last_updated()Access method: heap

Dane wyjściowe wyświetlają między innymi nazwy kolumn tabeli, typy danych i wartości domyślne.

\d+ polecenie meta jest dostępne tylko z psql klienta, więc jeśli używasz innego klienta, może być konieczne bezpośrednie zapytanie o informacje z tabeli. Większość istotnych informacji można uzyskać za pomocą zapytania takiego:

SELECT column_name, data_type, column_default, is_nullable, character_maximum_lengthFROM information_schema.columns WHERE table_name ='employee';
 column_name | data_type                   | column_default                                | is_nullable | character_maximum_length-------------+-----------------------------+-----------------------------------------------+-------------+-------------------------- employee_id | integer                     | nextval('employee_employee_id_seq'::regclass) | NO          | first_name  | character varying           |                                               | NO          | 45 last_name   | character varying           |                                               | NO          | 45 last_update | timestamp without time zone | now()                                         | NO          |(4 rows)

Powinny one dać ci dobre pojęcie o strukturze tabeli, tak abyś mógł prawidłowo wstawiać wartości.



Korzystanie z INSERT dodawać nowe rekordy do tabel

SQL INSERT Polecenie służy do dodawania wierszy danych do istniejącej tabeli. Znając strukturę tabeli, możesz skonstruować polecenie, które dopasuje kolumny tabeli do odpowiednich wartości, które chcesz wstawić do nowego rekordu.

Podstawowa składnia polecenia wygląda tak:

INSERT INTO my_table(column1, column2)VALUES ('value1', 'value2');

Kolumny na liście kolumn odpowiadają bezpośrednio wartościom podanym na liście wartości.

Domyślnie INSERT polecenie zwraca identyfikator obiektu (zwykle 0) i liczbę wierszy, które zostały pomyślnie wstawione:

INSERT 0 1

Jako przykład, aby wstawić nowego pracownika do employee tabeli wymienionej powyżej, możemy wpisać:

INSERT INTO employee(first_name, last_name)VALUES ('Bob', 'Smith');
INSERT 0 1

Tutaj podajemy wartości dla first_name i last_name kolumny, pozostawiając pozostałe kolumny do wypełnienia ich wartościami domyślnymi. Jeśli wyślesz zapytanie do tabeli, zobaczysz, że nowy rekord został dodany:

SELECT * FROM employee;
 employee_id | first_name | last_name |        last_update-------------+------------+-----------+----------------------------           1 | Bob        | Smith     | 2020-08-19 21:07:00.952454(1 row)


Zwracanie danych z INSERT oświadczenia

Jeśli potrzebujesz dodatkowych informacji o danych, które zostały dodane do tabeli, możesz dołączyć RETURNING klauzulę na końcu oświadczenia. RETURNING klauzula określa kolumny do wyświetlenia rekordów, które właśnie zostały wstawione.

Na przykład, aby wyświetlić wszystkie kolumny dla właśnie wstawionych rekordów, możesz wpisać coś takiego:

INSERT INTO my_table(column_name, column_name_2)VALUES ('value', 'value2')RETURNING *;
 column_name | column_name_2-------------+--------------- value       | value2(1 row)INSERT 0 1

Korzystanie z employee tabeli, to wyglądałoby mniej więcej tak:

INSERT INTO employee(first_name, last_name)VALUES ('Sue', 'Berns')RETURNING *;
 employee_id | first_name | last_name |       last_update-------------+------------+-----------+--------------------------           2 | Sue        | Berns     | 2020-08-19 21:15:01.7622(1 row)INSERT 0 1

Możesz także zwrócić tylko określone kolumny z wstawek. Na przykład tutaj interesuje nas tylko identyfikator nowego pracownika:

INSERT INTO employee(first_name, last_name)VALUES ('Delores', 'Muniz')RETURNING employee_id;
 employee_id -------------           3(1 row)INSERT 0 1

Jak zwykle, możesz również użyć aliasów kolumn, aby zmienić nazwy kolumn w danych wyjściowych:

INSERT INTO employee(first_name, last_name)VALUES ('Simone', 'Kohler')RETURNING employee_id AS "Employee ID";
 Employee ID-------------           4(1 row)INSERT 0 1


Korzystanie z INSERT dodać wiele wierszy naraz

Wstawianie rekordów pojedynczo jest bardziej czasochłonne i mniej wydajne niż wstawianie wielu wierszy naraz. PostgreSQL pozwala na określenie wielu wierszy do dodania do tej samej tabeli. Każdy nowy wiersz jest ujęty w nawiasy, przy czym każdy zestaw nawiasów jest oddzielony przecinkami.

Podstawowa składnia wstawiania wielu rekordów wygląda tak:

INSERT INTO my_table(column_name, column_name_2)VALUES    ('value', 'value2'),    ('value3', 'value4'),    ('value5', 'value6');

Dla employee tabeli, do której się odwołujemy, możesz dodać czterech nowych pracowników w jednym zestawieniu, wpisując:

INSERT INTO employee(first_name, last_name)VALUES    ('Abigail', 'Spencer'),    ('Tamal', 'Wayne'),    ('Katie', 'Singh'),    ('Felipe', 'Espinosa');
INSERT 0 4


Korzystanie z DELETE usunąć wiersze z tabel

SQL DELETE Polecenie służy do usuwania wierszy z tabel, funkcjonując jako akcja uzupełniająca INSERT . Aby usunąć wiersze z tabeli, musisz zidentyfikować wiersze, na które chcesz kierować reklamy, podając kryteria dopasowania w WHERE klauzula.

Podstawowa składnia wygląda tak:

DELETE FROM my_tableWHERE <condition>;

Na przykład do każdego wiersza w naszym employee tabela, która ma swoje first_name ustaw na Abigail , możemy wpisać to:

DELETE FROM employeeWHERE first_name = 'Abigail';
DELETE 1

Zwracana tutaj wartość wskazuje, że DELETE polecenie zostało przetworzone z usuniętym jednym wierszem.



Zwracanie danych z DELETE oświadczenia

Podobnie jak w przypadku INSERT polecenie, możesz zwrócić zmienione wiersze lub określone kolumny z usuniętych wierszy, dodając RETURNING klauzula:

DELETE FROM my_tableWHERE <condition>RETURNING *;

Na przykład możemy sprawdzić, czy poprawny rekord został usunięty, zwracając wszystkie kolumny od usuniętego employee tutaj:

DELETE FROM employeeWHERE last_name = 'Smith'RETURNING *;
 employee_id | first_name | last_name |        last_update-------------+------------+-----------+----------------------------           1 | Bob        | Smith     | 2020-08-19 21:07:00.952454(1 row)DELETE 1


Korzystanie z DELETE usunąć wiele wierszy naraz

Możesz usunąć wiele elementów jednocześnie za pomocą DELETE manipulując kryteriami wyboru określonymi w WHERE klauzula.

Na przykład, aby usunąć wiele wierszy według identyfikatora, możesz wpisać coś takiego:

DELETE FROM employeeWHERE employee_id in (3,4)RETURNING *;
 employee_id | first_name | last_name |        last_update         -------------+------------+-----------+----------------------------           3 | Delores    | Muniz     | 2020-08-19 21:17:06.943608           4 | Simone     | Kohler    | 2020-08-19 21:19:19.298833(2 rows)DELETE 2

Możesz nawet pominąć WHERE klauzula usuwająca wszystkie wiersze z danej tabeli:

DELETE FROM employeeRETURNING *;
 employee_id | first_name | last_name |        last_update-------------+------------+-----------+----------------------------           2 | Sue        | Berns     | 2020-08-19 21:15:01.7622           6 | Tamal      | Wayne     | 2020-08-19 22:11:53.408531           7 | Katie      | Singh     | 2020-08-19 22:11:53.408531           8 | Filipe     | Espinosa  | 2020-08-19 22:11:53.408531(4 rows)DELETE 4

Należy jednak pamiętać, że użycie DELETE opróżnienie tabeli danych nie jest tak wydajne jak TRUNCATE polecenie, które może usunąć dane bez skanowania tabeli.



Wniosek

W tym artykule przedstawiliśmy niektóre z najważniejszych poleceń kontrolujących, jakie dane znajdują się w twoich tabelach PostgreSQL. INSERT Polecenie może służyć do dodawania nowych danych do tabel, natomiast polecenie DELETE polecenie określa, które wiersze mają zostać usunięte. Oba polecenia są w stanie zwrócić wiersze, na które wpływają, i mogą działać na wielu wierszach naraz.

Te dwa polecenia są podstawowymi mechanizmami używanymi do zarządzania zwiększaniem lub zmniejszaniem liczby rekordów zawartych w tabeli. Zapoznanie się z ich podstawową składnią, a także ze sposobami łączenia ich z innymi klauzulami, pozwoli w razie potrzeby wypełnić i wyczyścić tabele.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zoptymalizuj PostgreSQL do szybkiego testowania

  2. Najlepszy sposób na uzyskanie liczby wyników przed zastosowaniem LIMIT

  3. Jak działa Abs() w PostgreSQL

  4. Jak połączyć ciągi w polu ciągu w zapytaniu PostgreSQL „grupuj według”?

  5. Przechowywanie obrazów w polach bajtowych w bazie danych PostgreSQL