Suppose these are my two databases.
create table person (
id BIGSERIAL NOT NULL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(150),
gender VARCHAR(7) NOT NULL,
date_of_birth DATE NOT NULL,
country_of_birth VARCHAR(50)
);
create table car (
id BIGSERIAL NOT NULL PRIMARY KEY,
make VARCHAR(50) NOT NULL,
model VARCHAR(50) NOT NULL,
price VARCHAR(150)
);
\i file_name
#To alter view \x
SELECT (NOW() + INTERVAL '10 MONTHS')::DATE;
=> 2021-02-10 'YYYY MM DD
SELECT EXTRACT(YEAR FROM NOW());
=> 2020
SELECT first_name, last_name, AGE(NOW(), date_of_birth) AS age;
ALTER TABLE person DROP CONSTRAINT person_pkey;
ALTER TABLE person ADD PRIMARY KEY (id);
DELETE FROM person WHERE id = 1;
ALTER TABLE person ADD CONSTRAINT unique_email_address UINQUE(email)
ALTER TABLE person ADD CONSTRAINT gender_constraint CHECK(gender = 'Female' OR gender = 'Male');
DELETE FROM person WHERE id = 1011;
UPDATE person SET email = 'omar@gmail.com', first_name = 'Omar' WHERE id = 2011;
'it is an insert command with duplicate id ( make sure id is unique )
INSERT INTO (id,,,) VALUES (15,,,) ON CONFLICT (id) DO NOTHING
' email is from db but EXLUDE.email from values
INSERT INTO (id,,,) VALUES (15,,,) ON CONFLICT (id) DO UPDATE SET email = EXCLUDE.email;
' in person table car_id is a forein key which reference to car table
car_id BIGINT REFERENCES car(id), UNIQUE (car_id)
' in car table and it's id is primary key
id BIGINT NOT NULL PRIMARY KEY
SELECT * FROM person JOIN car ON person.car_id = car.id;
' one can use person.first_name, car.make, car.model instead of *
SELECT * FROM person LEFT JOIN car ON person.car_id = car.id;
' it just populates all records of left table even they have no relationship
#CASCADE deletes all the forein key referring rows also (need to learn)
\copy (SELECT * FROM person LEFT JOIN car ON person.car_id = car.id) TO '/home/ovishek/Desktop/result.csv' DELIMITER ',' CSV HEADER;
ALTER SEQUENCE person_id_seq RESTART WITH 10;
' you need super user access for that ' for getting super user access run these commands
\q ' exit from psql
sudo -u postgres psql postgres 'entering super user
ALTER USER mydb_user WITH SUPERUSER; 'getting super user access to user
\q ' exit from psql
psql mydb_user
SELECT * FROM pg_available_extensions;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
' to see functions
\df
SELECT uuid_generate_v4();
INSERT INTO (_id,,,,) VALUES (uuid_generate_v4(),,,,)