SELECT 'CREATE DATABASE main' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'main')\gexec CREATE TABLE categories ( name text COLLATE pg_catalog."default", id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), CONSTRAINT categories_pkey PRIMARY KEY (id) ); CREATE TABLE customers ( id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), name text COLLATE pg_catalog."default", email text COLLATE pg_catalog."default", age integer, "dateOfBirth" date, CONSTRAINT customers_pkey PRIMARY KEY (id) ); CREATE TABLE customer_category ( customer_id integer, category_id integer, notes text COLLATE pg_catalog."default", id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), CONSTRAINT "Category" FOREIGN KEY (category_id) REFERENCES public.categories (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID, CONSTRAINT "Customer" FOREIGN KEY (customer_id) REFERENCES public.customers (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID ); INSERT INTO customers (name, email, age) VALUES ('Mike', 'mike@mike.com', 30); INSERT INTO categories (name) VALUES ('Books');