41 lines
1.4 KiB
SQL
41 lines
1.4 KiB
SQL
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');
|