What is difference between Postgres and PgAdmin
- Postgres.app is a full-featured PostgreSQL installation packaged as a standard Mac app. It sets up a PostgreSQL database server on your computer when you install it.
- PgAdmin is graphical user interface administration tool for PostgreSQL. It is a client tool for working with existing local or remote PostgreSQL servers. It does not include a PostgreSQL database server.
How to search specific value in all tables?
Dump DB to file
$ pg_dump --data-only --column-inserts -U postgres your-db-name > a.tmp
Search text in file
$ grep country_code a.tmp INSERT INTO countries (iso_country_code, iso_country_name) VALUES ('US', 'United States'); INSERT INTO countries (iso_country_code, iso_country_name) VALUES ('GB', 'United Kingdom');
How to create table with foreign key?
CREATE TABLE users ( "userId" text NOT NULL, "fullName" text, CONSTRAINT users_pkey PRIMARY KEY ("userId") ); CREATE TABLE devices ( "deviceId" text NOT NULL, "userId" text NOT NULL, "fcmToken" text, "active" boolean NOT NULL DEFAULT true, "createdAt" timestamptz NOT NULL DEFAULT now(), CONSTRAINT devices_pkey PRIMARY KEY ("deviceId"), CONSTRAINT fk_user FOREIGN KEY("userId") REFERENCES users("userId") ); CREATE TABLE notifications ( id SERIAL PRIMARY KEY, userId text NOT NULL, message text, readAt timestamp, sentAt timestamp, createdAt timestamp NOT NULL DEFAULT now(), FOREIGN KEY (userId) REFERENCES users("userId") );
How to connect PostgreSQL with Node?
const express = require("express"); const Sequelize = require("sequelize"); // Connect to DB server // const sequelize = new Sequelize("postgresql://[host name]/[db name]"); const sequelize = new Sequelize("postgresql://localhost/hung-nb"); sequelize .authenticate() .then(() => { console.log("Connection has been established successfully."); }) .catch((err) => { console.error("Unable to connect to the database:", err); });
How to insert a row?
INSERT INTO public.users( "userId", "firstName", "lastName") VALUES ('h.nguyen', 'Hung', 'Nguyen');
How to join table?
inner join
Return common records from 2 tables
SELECT usr."userId", "fullName", "fcmToken", "active" FROM users usr LEFT JOIN devices dvc ON usr."userId" = dvc."userId"
left join
- Return all records from LEFT table
- Return matching records from RIGHT table
SELECT usr."userId", "fullName", "fcmToken", "active" FROM users usr LEFT JOIN devices dvc ON usr."userId" = dvc."userId"
How to select distinct?
Select distinct on 1 column
SELECT DISTINCT ON ("userId") "userId", "fcmToken" FROM devices
Select distinct on multiple columns
SELECT DISTINCT "userId", "fullName" FROM users
Errors
Cannot insert multiple commands into a prepared statement
This error occurs when you try to execute multiple queries
-- Put all queries into this block with i as ( insert into table1 ( name, email, phone, created_at, updated_at ) values ( $1, $2, $3, current_timestamp, current_timestamp ), u as ( update table2 set column_1 = $1 where id = $4 ) -- Put last query here update contacts set column_2 = $2 where id = $4;
Leave a Reply