(SQL) Update*

SQL Update

Update

Aktualizacja danych w jednej tabeli

  • UPDATE nazwa-tablicy SET nazwa-kolumny-1 = wartość, nazwa-kolumny-2 = wartość WHERE kolumna-n = wyrażenie – Zmienia zawartość kolumny nr 1 oraz kolumny nr 2, względem wiersza spełniającego warunek WHERE.
  • UPDATE nazwa-tablicy SET nazwa-kolumny-1 = wartość, nazwa-kolumny-2 = wartość WHERE kolumna-n = wyrażenie RETURNING [kolumna / *] – Zmienia zawartość kolumny nr 1 oraz kolumny nr 2, względem wiersza spełniającego warunek WHERE. Opcjonalna wartość „RETURNING” określa kolumne której wartość będzie zwracana w przupadku powodzenia operacji Update.

Aktualizacja danych w tabelach Join

  • UPDATE nazwa-tablicy-One SET nazwa-kolumny= wartość FROM nazwa-tablicy-Many WHERE nazwa-tablicy-One.nazwa-kolumny = nazwa-tablicy-Many.nazwa-kolumny – Umożliwia aktualizacje jednej tabeli na podstawie informacji pobranych z innej tablicy połączonej relacją.

CREATE TABLE product_segment (
    id SERIAL PRIMARY KEY,
    segment VARCHAR NOT NULL,
    discount NUMERIC (4, 2)
)

CREATE TABLE product(
    id SERIAL PRIMARY KEY,
    name VARCHAR NOT NULL,
    price NUMERIC(10,2),
    net_price NUMERIC(10,2),
    segment_id INT NOT NULL,
    FOREIGN KEY(segment_id) REFERENCES product_segment(id)
)

UPDATE 
    product p
SET 
    net_price = price - price * discount
FROM 
    product_segment s
WHERE 
    p.segment_id = s.id;

Dopisywanie wartości

  • INSERT INTO nazwa-tablicy (nazwa-kolumny) VALUES (wartość) ON CONFLICT (nazwa-kolumny) DO NOTHING – W przypadku wystąpienia problemów z dodaniem nowego wpisu na poziomie określonej kolumny, SQL nie wykona akcji.
  • INSERT INTO nazwa-tablicy (nazwa-kolumny-1, nazwa-kolumny2) VALUES (wartość-1, wartość-2) ON CONFLICT (nazwa-kolumny-1) DO UPDATE SET nazwa-kolumn-2 EXCLUDED.nazwa-kolumn-2 || ’;’ || customers.nazwa-kolumn-2 = W przypadku wystąpienia problemów z dodaniem nowego wpisu na poziomie określonej kolumny (Nr 1), SQL pobierze nową wartość kolumny (Nr2) dopisując do niej poprzednia wartość kolumny (Nr2), poprzedzonej określonym znakiem „;”.

CREATE TABLE customers (
	customer_id serial PRIMARY KEY,
	name VARCHAR UNIQUE,
	email VARCHAR NOT NULL,
	active bool NOT NULL DEFAULT TRUE
)

INSERT INTO 
    customers (name, email)
VALUES 
    ('GPW', 'contact@gpw.com'),
    ('IRGIT', 'contact@irgit.com'),
    ('TGE', 'contact@tge.com')
    
    
INSERT INTO customers (name, email)
VALUES('GPW','hotline@gpw.com') 
ON CONFLICT (name) 
DO 
   UPDATE SET email = EXCLUDED.email || ';' || customers.email

Pozostałe tematy związane z bibliotekami / modułami Python

Podstawowe

Rozszerzone

SQL

PyQt 5

Automatyzacja

Data Mining

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

Dodaj komentarz