Categories
Tags
algorithms APIT arm assembly asynchronous base64 Blogging box c clang-format cmake compiler concurrency const_fn contravariant cos covariant cpp Customization cybersecurity DataStructure db Demo deserialization discrete doc DP Dynamic Example FFI flat_map FP Functional functions futures Fuwari GATs gccrs generics gitignore GUI hacking hashmap haskell heap interop invariant iterator justfile kernel LaTeX LFU linux MachineLearning Markdown math ML OnceLock optimization OS parallels perf physics pin postgresql release RPIT rust science Science serialization shift sin SmallProjects std String surrealdb swisstable synchronous tan traits triangulation utf16 utf8 Video x86_64 xilem zig
6653 words
33 minutes
260214_PostgreSQL_and_Rust_DB_001
link
- PostgreSQL tutorial 사이트
유튜브 영상 이게 젤 좋다.
- (190404)Learn PostgreSQL Tutorial - Full Course for Beginners freeCodeCamp.org
- 예시만 훔치자
- PostgreSQL Deep Dive
- 다른거 PostgreSQL Tutorial Full Course 2022 | Derek Banas
- (251010)(11hr) Harvard CS50’s Intro to Databases with SQL – Full University Course | freeCodeCamp.org
- SQL 강의
- (250327)SQL Full Course for Beginners (30 Hours) – From Zero to Hero Data with Baraa
내가 정리한 PostgreSQL 커멘드Command 모음
(Rust로 만듬)A Language Server for Postgres
Postgres CLI with autocompletion and syntax highlighting
230718_PostgreSQL 14 Internal 최종본 (postgrespro.com)Geeknews
- PostgreSQL 14의 내부구조(스냅샷, 버퍼캐시, WAL, 잠금, 질의 실행, 각종 색인)에 대해 소개한 무료 이북의 최종본이 지난 3월 즈음에 나왔길래 뒤늦게나마 소개해 봅니다.
(외부링크)https://neon.tech/postgresql/postgresql-getting-started/postgresql-sample-database
Ubuntu 25.04 Install
SQL_Training_PostgreSQL
겁나 편하다. ㅋ(터미널에서 자동완성 + 설명까지 굿 CLI)
$ pgcli -h localhost -p 5432 postgres -d postgresPostgreSQL Tutorial|🔝|
- https://neon.tech/postgresql/tutorial
- 한국 사람이 정리한 Blog 글
PostgreSQL 기본 명령어(LinuxOS)
$ sudo gpasswd -a postgres ssl-cert
Adding user postgres to group ssl-cert
$ sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
$ sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key
$ sudo service postgresql restart
* Restarting PostgreSQL 16 database server [ OK ]
$ psql
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: role "y" does not exist
$ sudo systemctl status postgresql
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
16 main 5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log
$ sudo pg_ctlcluster 16 main start
Cluster is already running.
$ sudo service postgresql start
* Starting PostgreSQL 16 database server [ OK ]
$ sudo su - postgres
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 4.4.0-18362-Microsoft x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Fri Feb 13 12:41:45 KST 2026
System load: 0.52 Processes: 18
Usage of /: 67.1% of 237.84GB Users logged in: 0
Memory usage: 85% IPv4 address for eth1: 192.168.219.72
Swap usage: 12%
This message is shown once a day. To disable it please create the
/var/lib/postgresql/.hushlogin file.
postgres@DESKTOP-7FCSUVF:~$ psql
psql (16.11 (Ubuntu 16.11-0ubuntu0.24.04.1))
Type "help" for help.postgres서버 잘 돌아가는지(status) 확인(LinuxOS)
$ sudo service postgresql status
16/main (port 5432): online
$ sudo su - postgres
# 2번 더 들어가야함. docker 같은 기분
postgres@DESKTOP-7FCSUVF:~$ /l
-bash: /l: No such file or directory
# psql 진입
postgres@DESKTOP-7FCSUVF:~$ psqlpostgres비번 설정(LinuxOS)
user:~$ sudo -i -u postgres
postgres@user:~$ psql- Execute this query in postgres shell:
postgres=# ALTER USER postgres PASSWORD 'mynewpassword';- 비번 설정한거 잘됨.
postgres@DESKTOP-7FCSUVF:~$ psql -h localhost -p 5432 -U postgres -d postgreslocalhost 접근방법(GUI도 있음)
macOS에서 test한거
macOS postgres 시작
# Open a new Terminal window to ensure your environment variables are correctly loaded.
# Connect to the default database named postgres by running:
$ psql postgres
# You are now in the psql prompt and can execute SQL commands. macOS Install
==> Caveats
This formula has created a default database cluster with:
initdb --locale=en_US.UTF-8 -E UTF-8 /opt/homebrew/var/postgresql@18
When uninstalling, some dead symlinks are left behind so you may want to run:
brew cleanup --prune-prefix
postgresql@18 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.
If you need to have postgresql@18 first in your PATH, run:
fish_add_path /opt/homebrew/opt/postgresql@18/bin
For compilers to find postgresql@18 you may need to set:
set -gx LDFLAGS "-L/opt/homebrew/opt/postgresql@18/lib"
set -gx CPPFLAGS "-I/opt/homebrew/opt/postgresql@18/include"
To start postgresql@18 now and restart at login:
brew services start postgresql@18
Or, if you don't want/need a background service you can just run:
LC_ALL="en_US.UTF-8" /opt/homebrew/opt/postgresql@18/bin/postgres -D /opt/homebrew/var/postgresql@18
docker run
docker run -p 5432:5432 --name test-postgres \
-e POSTGRES_PASSWORD=1234 \
-e TZ=Asia/Seoul \
-d postgres:latestDocker로 PostgreSQL 설치|🔝|
docker run --name {name-of-container} -v {name-of-volume}:{volume-storage-location} -p {desired-port}:5432 -e POSTGRES_PASSWORD={desired-password} -d {desired-postgres-image}
docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=1q2w3e4r -d postgres
docker exec -it postgres /bin/bash
root@ac61c662ee4c:/# psql -U postgres
psql (13.0 (Debian 13.0-1.pgdg100+1))
Type "help" for help.
postgres=# CREATE USER seongwon PASSWORD '1q2w3e4r' SUPERUSER;
CREATE ROLE
postgres=# CREATE DATABASE test OWNER seongwon;
CREATE DATABASE
postgres=# \c test seongwon
You are now connected to database "test" as user "seongwon".
test=# CREATE TABLE star (
id integer NOT NULL,
name character varying(255),
class character varying(32),
age integer,
radius integer,
lum integer,
magnt integer,
CONSTRAINT star_pk PRIMARY KEY (id)
);
CREATE TABLE
test=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | star | table | seongwon
(1 row)PostgreSQL에 sql파일 넣기|🔝|
psql -h localhost -d userstoreis -U admin -p 5432 -a -q -f /home/jobs/Desktop/resources/postgresql.sql
-h PostgreSQL server IP address
-d database name
-U user name
-p port which PostgreSQL server is listening on
-f path to SQL script
-a all echo
-q quiet
-f file
export PGPASSWORD=<password>
psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sqlPostgreSQL 설치 위치(/bin/psql)|🔝|
psql --version
which psql
Mine is version 9.1.6 located in /bin/psql.SQL명령어 그림으로 이해하기|🔝|
- 출처 : https://www.instagram.com/reel/DBrYJ_EhGku/?igsh=MWdwY2htemZ1b2xs
- fork link: https://economiceco.tistory.com/19642
SQL Databases vs NoSQL Databases|🔝|
| SQL Databases | NoSQL Databases |
|---|---|
| 1. PostgreSQL 2. MySQL 3. SQLite 4. SQL Server 5. Oracle 6. CockroachDB | 1. Mongo DB 2. Redis 3. ElasticSearch 4. Firebase 5. Dynamo DB |
PostgreSQL|🔝|
- ebook
- https://www.postgresqltutorial.com/
- Tutorial모음
- Learning SQL from scratch 🔴 PostgreSQL Live #1 | Xkonti
- PostgreSQL Tutorial for Beginners | freeCodeCamp.org
- (220929)PostgreSQL Tutorial Full Course 2022 | Derek Banas
- 🐘 Hazel Bachrach라는 개발자가 Postgres에 대해 미리 알았더라면 좋았을 것들을 모아 정리했음. 공식 문서가 A4용지로 무려 3,200 페이지에 달하기 때문에 주니어 개발자에게는 굉장히 부담스러울 수밖에 없다고. 😱 데이터 정규화, psql 활용도 높이기, 인덱스 작동 방식, JSONB 사용 시 주의사항 등에 대해 적혀 있다. 물론 우리에게는 니꼬쌤의 SQL 강의가 있으니 안심해도 좋음!What I Wish Someone Told Me About Postgres Nov 11, 2024
- 다른 Tutorial MySQL인듯
- Database Engineering Complete Course | DBMS Complete Course | Nerd’s lesson
(230824)SQL For Web Developers - Complete Database Course | freeCodeCamp.org|🔝|
SQL for Data Analytics - Learn SQL in 4 Hours | Luke Barousse|🔝|
- https://youtu.be/7mz73uXD9DA?si=kKUsGBc8lKkEC6c2
- VSCode로 PostgreSQL에 연결해서 연습하기
(241009)Databases In-Depth – Complete Course | freeCodeCamp.org|🔝|
macOS(Path)|🔝|
If you need to have libpq first in your PATH, run:
fish_add_path /opt/homebrew/opt/libpq/bin
For compilers to find libpq you may need to set:
set -gx LDFLAGS "-L/opt/homebrew/opt/libpq/lib"
set -gx CPPFLAGS "-I/opt/homebrew/opt/libpq/include"
For pkg-config to find libpq you may need to set:
set -gx PKG_CONFIG_PATH "/opt/homebrew/opt/libpq/lib/pkgconfig"
PostgreSQL(sql파일)
-- https://neon.tech/postgresql/postgresql-getting-started/postgresql-sample-database
-- NOTE:
--
-- File paths need to be edited. Search for $$PATH$$ and
-- replace it with the path to the directory containing
-- the extracted data files.
--
--
-- PostgreSQL database dump
--
-- Dumped from database version 11.3
-- Dumped by pg_dump version 11.2
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET client_min_messages = warning;
SET row_security = off;
DROP DATABASE dvdrental;
--
-- Name: dvdrental; Type: DATABASE; Schema: -; Owner: postgres
--
CREATE DATABASE dvdrental WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'English_United States.1252' LC_CTYPE = 'English_United States.1252';
ALTER DATABASE dvdrental OWNER TO postgres;
\connect dvdrental
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: mpaa_rating; Type: TYPE; Schema: public; Owner: postgres
--
CREATE TYPE public.mpaa_rating AS ENUM (
'G',
'PG',
'PG-13',
'R',
'NC-17'
);
ALTER TYPE public.mpaa_rating OWNER TO postgres;
--
-- Name: year; Type: DOMAIN; Schema: public; Owner: postgres
--
CREATE DOMAIN public.year AS integer
CONSTRAINT year_check CHECK (((VALUE >= 1901) AND (VALUE <= 2155)));
ALTER DOMAIN public.year OWNER TO postgres;
--
-- Name: _group_concat(text, text); Type: FUNCTION; Schema: public; Owner: postgres
--
CREATE FUNCTION public._group_concat(text, text) RETURNS text
LANGUAGE sql IMMUTABLE
AS $_$
SELECT CASE
WHEN $2 IS NULL THEN $1
WHEN $1 IS NULL THEN $2
ELSE $1 || ', ' || $2
END
$_$;
ALTER FUNCTION public._group_concat(text, text) OWNER TO postgres;
--
-- Name: film_in_stock(integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
--
CREATE FUNCTION public.film_in_stock(p_film_id integer, p_store_id integer, OUT p_film_count integer) RETURNS SETOF integer
LANGUAGE sql
AS $_$
SELECT inventory_id
FROM inventory
WHERE film_id = $1
AND store_id = $2
AND inventory_in_stock(inventory_id);
$_$;
ALTER FUNCTION public.film_in_stock(p_film_id integer, p_store_id integer, OUT p_film_count integer) OWNER TO postgres;
--
-- Name: film_not_in_stock(integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
--
CREATE FUNCTION public.film_not_in_stock(p_film_id integer, p_store_id integer, OUT p_film_count integer) RETURNS SETOF integer
LANGUAGE sql
AS $_$
SELECT inventory_id
FROM inventory
WHERE film_id = $1
AND store_id = $2
AND NOT inventory_in_stock(inventory_id);
$_$;
ALTER FUNCTION public.film_not_in_stock(p_film_id integer, p_store_id integer, OUT p_film_count integer) OWNER TO postgres;
--
-- Name: get_customer_balance(integer, timestamp without time zone); Type: FUNCTION; Schema: public; Owner: postgres
--
CREATE FUNCTION public.get_customer_balance(p_customer_id integer, p_effective_date timestamp without time zone) RETURNS numeric
LANGUAGE plpgsql
AS $$
--#OK, WE NEED TO CALCULATE THE CURRENT BALANCE GIVEN A CUSTOMER_ID AND A DATE
--#THAT WE WANT THE BALANCE TO BE EFFECTIVE FOR. THE BALANCE IS:
--# 1) RENTAL FEES FOR ALL PREVIOUS RENTALS
--# 2) ONE DOLLAR FOR EVERY DAY THE PREVIOUS RENTALS ARE OVERDUE
--# 3) IF A FILM IS MORE THAN RENTAL_DURATION * 2 OVERDUE, CHARGE THE REPLACEMENT_COST
--# 4) SUBTRACT ALL PAYMENTS MADE BEFORE THE DATE SPECIFIED
DECLARE
v_rentfees DECIMAL(5,2); --#FEES PAID TO RENT THE VIDEOS INITIALLY
v_overfees INTEGER; --#LATE FEES FOR PRIOR RENTALS
v_payments DECIMAL(5,2); --#SUM OF PAYMENTS MADE PREVIOUSLY
BEGIN
SELECT COALESCE(SUM(film.rental_rate),0) INTO v_rentfees
FROM film, inventory, rental
WHERE film.film_id = inventory.film_id
AND inventory.inventory_id = rental.inventory_id
AND rental.rental_date <= p_effective_date
AND rental.customer_id = p_customer_id;
SELECT COALESCE(SUM(IF((rental.return_date - rental.rental_date) > (film.rental_duration * '1 day'::interval),
((rental.return_date - rental.rental_date) - (film.rental_duration * '1 day'::interval)),0)),0) INTO v_overfees
FROM rental, inventory, film
WHERE film.film_id = inventory.film_id
AND inventory.inventory_id = rental.inventory_id
AND rental.rental_date <= p_effective_date
AND rental.customer_id = p_customer_id;
SELECT COALESCE(SUM(payment.amount),0) INTO v_payments
FROM payment
WHERE payment.payment_date <= p_effective_date
AND payment.customer_id = p_customer_id;
RETURN v_rentfees + v_overfees - v_payments;
END
$$;
ALTER FUNCTION public.get_customer_balance(p_customer_id integer, p_effective_date timestamp without time zone) OWNER TO postgres;
--
-- Name: inventory_held_by_customer(integer); Type: FUNCTION; Schema: public; Owner: postgres
--
CREATE FUNCTION public.inventory_held_by_customer(p_inventory_id integer) RETURNS integer
LANGUAGE plpgsql
AS $$
DECLARE
v_customer_id INTEGER;
BEGIN
SELECT customer_id INTO v_customer_id
FROM rental
WHERE return_date IS NULL
AND inventory_id = p_inventory_id;
RETURN v_customer_id;
END $$;
ALTER FUNCTION public.inventory_held_by_customer(p_inventory_id integer) OWNER TO postgres;
--
-- Name: inventory_in_stock(integer); Type: FUNCTION; Schema: public; Owner: postgres
--
CREATE FUNCTION public.inventory_in_stock(p_inventory_id integer) RETURNS boolean
LANGUAGE plpgsql
AS $$
DECLARE
v_rentals INTEGER;
v_out INTEGER;
BEGIN
-- AN ITEM IS IN-STOCK IF THERE ARE EITHER NO ROWS IN THE rental TABLE
-- FOR THE ITEM OR ALL ROWS HAVE return_date POPULATED
SELECT count(*) INTO v_rentals
FROM rental
WHERE inventory_id = p_inventory_id;
IF v_rentals = 0 THEN
RETURN TRUE;
END IF;
SELECT COUNT(rental_id) INTO v_out
FROM inventory LEFT JOIN rental USING(inventory_id)
WHERE inventory.inventory_id = p_inventory_id
AND rental.return_date IS NULL;
IF v_out > 0 THEN
RETURN FALSE;
ELSE
RETURN TRUE;
END IF;
END $$;
ALTER FUNCTION public.inventory_in_stock(p_inventory_id integer) OWNER TO postgres;
--
-- Name: last_day(timestamp without time zone); Type: FUNCTION; Schema: public; Owner: postgres
--
CREATE FUNCTION public.last_day(timestamp without time zone) RETURNS date
LANGUAGE sql IMMUTABLE STRICT
AS $_$
SELECT CASE
WHEN EXTRACT(MONTH FROM $1) = 12 THEN
(((EXTRACT(YEAR FROM $1) + 1) operator(pg_catalog.||) '-01-01')::date - INTERVAL '1 day')::date
ELSE
((EXTRACT(YEAR FROM $1) operator(pg_catalog.||) '-' operator(pg_catalog.||) (EXTRACT(MONTH FROM $1) + 1) operator(pg_catalog.||) '-01')::date - INTERVAL '1 day')::date
END
$_$;
ALTER FUNCTION public.last_day(timestamp without time zone) OWNER TO postgres;
--
-- Name: last_updated(); Type: FUNCTION; Schema: public; Owner: postgres
--
CREATE FUNCTION public.last_updated() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.last_update = CURRENT_TIMESTAMP;
RETURN NEW;
END $$;
ALTER FUNCTION public.last_updated() OWNER TO postgres;
--
-- Name: customer_customer_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.customer_customer_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.customer_customer_id_seq OWNER TO postgres;
SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: customer; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.customer (
customer_id integer DEFAULT nextval('public.customer_customer_id_seq'::regclass) NOT NULL,
store_id smallint NOT NULL,
first_name character varying(45) NOT NULL,
last_name character varying(45) NOT NULL,
email character varying(50),
address_id smallint NOT NULL,
activebool boolean DEFAULT true NOT NULL,
create_date date DEFAULT ('now'::text)::date NOT NULL,
last_update timestamp without time zone DEFAULT now(),
active integer
);
ALTER TABLE public.customer OWNER TO postgres;
--
-- Name: rewards_report(integer, numeric); Type: FUNCTION; Schema: public; Owner: postgres
--
CREATE FUNCTION public.rewards_report(min_monthly_purchases integer, min_dollar_amount_purchased numeric) RETURNS SETOF public.customer
LANGUAGE plpgsql SECURITY DEFINER
AS $_$
DECLARE
last_month_start DATE;
last_month_end DATE;
rr RECORD;
tmpSQL TEXT;
BEGIN
/* Some sanity checks... */
IF min_monthly_purchases = 0 THEN
RAISE EXCEPTION 'Minimum monthly purchases parameter must be > 0';
END IF;
IF min_dollar_amount_purchased = 0.00 THEN
RAISE EXCEPTION 'Minimum monthly dollar amount purchased parameter must be > $0.00';
END IF;
last_month_start := CURRENT_DATE - '3 month'::interval;
last_month_start := to_date((extract(YEAR FROM last_month_start) || '-' || extract(MONTH FROM last_month_start) || '-01'),'YYYY-MM-DD');
last_month_end := LAST_DAY(last_month_start);
/*
Create a temporary storage area for Customer IDs.
*/
CREATE TEMPORARY TABLE tmpCustomer (customer_id INTEGER NOT NULL PRIMARY KEY);
/*
Find all customers meeting the monthly purchase requirements
*/
tmpSQL := 'INSERT INTO tmpCustomer (customer_id)
SELECT p.customer_id
FROM payment AS p
WHERE DATE(p.payment_date) BETWEEN '||quote_literal(last_month_start) ||' AND '|| quote_literal(last_month_end) || '
GROUP BY customer_id
HAVING SUM(p.amount) > '|| min_dollar_amount_purchased || '
AND COUNT(customer_id) > ' ||min_monthly_purchases ;
EXECUTE tmpSQL;
/*
Output ALL customer information of matching rewardees.
Customize output as needed.
*/
FOR rr IN EXECUTE 'SELECT c.* FROM tmpCustomer AS t INNER JOIN customer AS c ON t.customer_id = c.customer_id' LOOP
RETURN NEXT rr;
END LOOP;
/* Clean up */
tmpSQL := 'DROP TABLE tmpCustomer';
EXECUTE tmpSQL;
RETURN;
END
$_$;
ALTER FUNCTION public.rewards_report(min_monthly_purchases integer, min_dollar_amount_purchased numeric) OWNER TO postgres;
--
-- Name: group_concat(text); Type: AGGREGATE; Schema: public; Owner: postgres
--
CREATE AGGREGATE public.group_concat(text) (
SFUNC = public._group_concat,
STYPE = text
);
ALTER AGGREGATE public.group_concat(text) OWNER TO postgres;
--
-- Name: actor_actor_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.actor_actor_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.actor_actor_id_seq OWNER TO postgres;
--
-- Name: actor; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.actor (
actor_id integer DEFAULT nextval('public.actor_actor_id_seq'::regclass) NOT NULL,
first_name character varying(45) NOT NULL,
last_name character varying(45) NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.actor OWNER TO postgres;
--
-- Name: category_category_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.category_category_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.category_category_id_seq OWNER TO postgres;
--
-- Name: category; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.category (
category_id integer DEFAULT nextval('public.category_category_id_seq'::regclass) NOT NULL,
name character varying(25) NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.category OWNER TO postgres;
--
-- Name: film_film_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.film_film_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.film_film_id_seq OWNER TO postgres;
--
-- Name: film; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.film (
film_id integer DEFAULT nextval('public.film_film_id_seq'::regclass) NOT NULL,
title character varying(255) NOT NULL,
description text,
release_year public.year,
language_id smallint NOT NULL,
rental_duration smallint DEFAULT 3 NOT NULL,
rental_rate numeric(4,2) DEFAULT 4.99 NOT NULL,
length smallint,
replacement_cost numeric(5,2) DEFAULT 19.99 NOT NULL,
rating public.mpaa_rating DEFAULT 'G'::public.mpaa_rating,
last_update timestamp without time zone DEFAULT now() NOT NULL,
special_features text[],
fulltext tsvector NOT NULL
);
ALTER TABLE public.film OWNER TO postgres;
--
-- Name: film_actor; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.film_actor (
actor_id smallint NOT NULL,
film_id smallint NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.film_actor OWNER TO postgres;
--
-- Name: film_category; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.film_category (
film_id smallint NOT NULL,
category_id smallint NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.film_category OWNER TO postgres;
--
-- Name: actor_info; Type: VIEW; Schema: public; Owner: postgres
--
CREATE VIEW public.actor_info AS
SELECT a.actor_id,
a.first_name,
a.last_name,
public.group_concat(DISTINCT (((c.name)::text || ': '::text) || ( SELECT public.group_concat((f.title)::text) AS group_concat
FROM ((public.film f
JOIN public.film_category fc_1 ON ((f.film_id = fc_1.film_id)))
JOIN public.film_actor fa_1 ON ((f.film_id = fa_1.film_id)))
WHERE ((fc_1.category_id = c.category_id) AND (fa_1.actor_id = a.actor_id))
GROUP BY fa_1.actor_id))) AS film_info
FROM (((public.actor a
LEFT JOIN public.film_actor fa ON ((a.actor_id = fa.actor_id)))
LEFT JOIN public.film_category fc ON ((fa.film_id = fc.film_id)))
LEFT JOIN public.category c ON ((fc.category_id = c.category_id)))
GROUP BY a.actor_id, a.first_name, a.last_name;
ALTER TABLE public.actor_info OWNER TO postgres;
--
-- Name: address_address_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.address_address_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.address_address_id_seq OWNER TO postgres;
--
-- Name: address; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.address (
address_id integer DEFAULT nextval('public.address_address_id_seq'::regclass) NOT NULL,
address character varying(50) NOT NULL,
address2 character varying(50),
district character varying(20) NOT NULL,
city_id smallint NOT NULL,
postal_code character varying(10),
phone character varying(20) NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.address OWNER TO postgres;
--
-- Name: city_city_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.city_city_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.city_city_id_seq OWNER TO postgres;
--
-- Name: city; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.city (
city_id integer DEFAULT nextval('public.city_city_id_seq'::regclass) NOT NULL,
city character varying(50) NOT NULL,
country_id smallint NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.city OWNER TO postgres;
--
-- Name: country_country_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.country_country_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.country_country_id_seq OWNER TO postgres;
--
-- Name: country; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.country (
country_id integer DEFAULT nextval('public.country_country_id_seq'::regclass) NOT NULL,
country character varying(50) NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.country OWNER TO postgres;
--
-- Name: customer_list; Type: VIEW; Schema: public; Owner: postgres
--
CREATE VIEW public.customer_list AS
SELECT cu.customer_id AS id,
(((cu.first_name)::text || ' '::text) || (cu.last_name)::text) AS name,
a.address,
a.postal_code AS "zip code",
a.phone,
city.city,
country.country,
CASE
WHEN cu.activebool THEN 'active'::text
ELSE ''::text
END AS notes,
cu.store_id AS sid
FROM (((public.customer cu
JOIN public.address a ON ((cu.address_id = a.address_id)))
JOIN public.city ON ((a.city_id = city.city_id)))
JOIN public.country ON ((city.country_id = country.country_id)));
ALTER TABLE public.customer_list OWNER TO postgres;
--
-- Name: film_list; Type: VIEW; Schema: public; Owner: postgres
--
CREATE VIEW public.film_list AS
SELECT film.film_id AS fid,
film.title,
film.description,
category.name AS category,
film.rental_rate AS price,
film.length,
film.rating,
public.group_concat((((actor.first_name)::text || ' '::text) || (actor.last_name)::text)) AS actors
FROM ((((public.category
LEFT JOIN public.film_category ON ((category.category_id = film_category.category_id)))
LEFT JOIN public.film ON ((film_category.film_id = film.film_id)))
JOIN public.film_actor ON ((film.film_id = film_actor.film_id)))
JOIN public.actor ON ((film_actor.actor_id = actor.actor_id)))
GROUP BY film.film_id, film.title, film.description, category.name, film.rental_rate, film.length, film.rating;
ALTER TABLE public.film_list OWNER TO postgres;
--
-- Name: inventory_inventory_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.inventory_inventory_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.inventory_inventory_id_seq OWNER TO postgres;
--
-- Name: inventory; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.inventory (
inventory_id integer DEFAULT nextval('public.inventory_inventory_id_seq'::regclass) NOT NULL,
film_id smallint NOT NULL,
store_id smallint NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.inventory OWNER TO postgres;
--
-- Name: language_language_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.language_language_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.language_language_id_seq OWNER TO postgres;
--
-- Name: language; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.language (
language_id integer DEFAULT nextval('public.language_language_id_seq'::regclass) NOT NULL,
name character(20) NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.language OWNER TO postgres;
--
-- Name: nicer_but_slower_film_list; Type: VIEW; Schema: public; Owner: postgres
--
CREATE VIEW public.nicer_but_slower_film_list AS
SELECT film.film_id AS fid,
film.title,
film.description,
category.name AS category,
film.rental_rate AS price,
film.length,
film.rating,
public.group_concat((((upper("substring"((actor.first_name)::text, 1, 1)) || lower("substring"((actor.first_name)::text, 2))) || upper("substring"((actor.last_name)::text, 1, 1))) || lower("substring"((actor.last_name)::text, 2)))) AS actors
FROM ((((public.category
LEFT JOIN public.film_category ON ((category.category_id = film_category.category_id)))
LEFT JOIN public.film ON ((film_category.film_id = film.film_id)))
JOIN public.film_actor ON ((film.film_id = film_actor.film_id)))
JOIN public.actor ON ((film_actor.actor_id = actor.actor_id)))
GROUP BY film.film_id, film.title, film.description, category.name, film.rental_rate, film.length, film.rating;
ALTER TABLE public.nicer_but_slower_film_list OWNER TO postgres;
--
-- Name: payment_payment_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.payment_payment_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.payment_payment_id_seq OWNER TO postgres;
--
-- Name: payment; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.payment (
payment_id integer DEFAULT nextval('public.payment_payment_id_seq'::regclass) NOT NULL,
customer_id smallint NOT NULL,
staff_id smallint NOT NULL,
rental_id integer NOT NULL,
amount numeric(5,2) NOT NULL,
payment_date timestamp without time zone NOT NULL
);
ALTER TABLE public.payment OWNER TO postgres;
--
-- Name: rental_rental_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.rental_rental_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.rental_rental_id_seq OWNER TO postgres;
--
-- Name: rental; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.rental (
rental_id integer DEFAULT nextval('public.rental_rental_id_seq'::regclass) NOT NULL,
rental_date timestamp without time zone NOT NULL,
inventory_id integer NOT NULL,
customer_id smallint NOT NULL,
return_date timestamp without time zone,
staff_id smallint NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.rental OWNER TO postgres;
--
-- Name: sales_by_film_category; Type: VIEW; Schema: public; Owner: postgres
--
CREATE VIEW public.sales_by_film_category AS
SELECT c.name AS category,
sum(p.amount) AS total_sales
FROM (((((public.payment p
JOIN public.rental r ON ((p.rental_id = r.rental_id)))
JOIN public.inventory i ON ((r.inventory_id = i.inventory_id)))
JOIN public.film f ON ((i.film_id = f.film_id)))
JOIN public.film_category fc ON ((f.film_id = fc.film_id)))
JOIN public.category c ON ((fc.category_id = c.category_id)))
GROUP BY c.name
ORDER BY (sum(p.amount)) DESC;
ALTER TABLE public.sales_by_film_category OWNER TO postgres;
--
-- Name: staff_staff_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.staff_staff_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.staff_staff_id_seq OWNER TO postgres;
--
-- Name: staff; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.staff (
staff_id integer DEFAULT nextval('public.staff_staff_id_seq'::regclass) NOT NULL,
first_name character varying(45) NOT NULL,
last_name character varying(45) NOT NULL,
address_id smallint NOT NULL,
email character varying(50),
store_id smallint NOT NULL,
active boolean DEFAULT true NOT NULL,
username character varying(16) NOT NULL,
password character varying(40),
last_update timestamp without time zone DEFAULT now() NOT NULL,
picture bytea
);
ALTER TABLE public.staff OWNER TO postgres;
--
-- Name: store_store_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE public.store_store_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.store_store_id_seq OWNER TO postgres;
--
-- Name: store; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE public.store (
store_id integer DEFAULT nextval('public.store_store_id_seq'::regclass) NOT NULL,
manager_staff_id smallint NOT NULL,
address_id smallint NOT NULL,
last_update timestamp without time zone DEFAULT now() NOT NULL
);
ALTER TABLE public.store OWNER TO postgres;
--
-- Name: sales_by_store; Type: VIEW; Schema: public; Owner: postgres
--
CREATE VIEW public.sales_by_store AS
SELECT (((c.city)::text || ','::text) || (cy.country)::text) AS store,
(((m.first_name)::text || ' '::text) || (m.last_name)::text) AS manager,
sum(p.amount) AS total_sales
FROM (((((((public.payment p
JOIN public.rental r ON ((p.rental_id = r.rental_id)))
JOIN public.inventory i ON ((r.inventory_id = i.inventory_id)))
JOIN public.store s ON ((i.store_id = s.store_id)))
JOIN public.address a ON ((s.address_id = a.address_id)))
JOIN public.city c ON ((a.city_id = c.city_id)))
JOIN public.country cy ON ((c.country_id = cy.country_id)))
JOIN public.staff m ON ((s.manager_staff_id = m.staff_id)))
GROUP BY cy.country, c.city, s.store_id, m.first_name, m.last_name
ORDER BY cy.country, c.city;
ALTER TABLE public.sales_by_store OWNER TO postgres;
--
-- Name: staff_list; Type: VIEW; Schema: public; Owner: postgres
--
CREATE VIEW public.staff_list AS
SELECT s.staff_id AS id,
(((s.first_name)::text || ' '::text) || (s.last_name)::text) AS name,
a.address,
a.postal_code AS "zip code",
a.phone,
city.city,
country.country,
s.store_id AS sid
FROM (((public.staff s
JOIN public.address a ON ((s.address_id = a.address_id)))
JOIN public.city ON ((a.city_id = city.city_id)))
JOIN public.country ON ((city.country_id = country.country_id)));
ALTER TABLE public.staff_list OWNER TO postgres;
--
-- Data for Name: actor; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.actor (actor_id, first_name, last_name, last_update) FROM stdin;
\.
COPY public.actor (actor_id, first_name, last_name, last_update) FROM '$$PATH$$/3057.dat';
--
-- Data for Name: address; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.address (address_id, address, address2, district, city_id, postal_code, phone, last_update) FROM stdin;
\.
COPY public.address (address_id, address, address2, district, city_id, postal_code, phone, last_update) FROM '$$PATH$$/3065.dat';
--
-- Data for Name: category; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.category (category_id, name, last_update) FROM stdin;
\.
COPY public.category (category_id, name, last_update) FROM '$$PATH$$/3059.dat';
--
-- Data for Name: city; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.city (city_id, city, country_id, last_update) FROM stdin;
\.
COPY public.city (city_id, city, country_id, last_update) FROM '$$PATH$$/3067.dat';
--
-- Data for Name: country; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.country (country_id, country, last_update) FROM stdin;
\.
COPY public.country (country_id, country, last_update) FROM '$$PATH$$/3069.dat';
--
-- Data for Name: customer; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.customer (customer_id, store_id, first_name, last_name, email, address_id, activebool, create_date, last_update, active) FROM stdin;
\.
COPY public.customer (customer_id, store_id, first_name, last_name, email, address_id, activebool, create_date, last_update, active) FROM '$$PATH$$/3055.dat';
--
-- Data for Name: film; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.film (film_id, title, description, release_year, language_id, rental_duration, rental_rate, length, replacement_cost, rating, last_update, special_features, fulltext) FROM stdin;
\.
COPY public.film (film_id, title, description, release_year, language_id, rental_duration, rental_rate, length, replacement_cost, rating, last_update, special_features, fulltext) FROM '$$PATH$$/3061.dat';
--
-- Data for Name: film_actor; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.film_actor (actor_id, film_id, last_update) FROM stdin;
\.
COPY public.film_actor (actor_id, film_id, last_update) FROM '$$PATH$$/3062.dat';
--
-- Data for Name: film_category; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.film_category (film_id, category_id, last_update) FROM stdin;
\.
COPY public.film_category (film_id, category_id, last_update) FROM '$$PATH$$/3063.dat';
--
-- Data for Name: inventory; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.inventory (inventory_id, film_id, store_id, last_update) FROM stdin;
\.
COPY public.inventory (inventory_id, film_id, store_id, last_update) FROM '$$PATH$$/3071.dat';
--
-- Data for Name: language; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.language (language_id, name, last_update) FROM stdin;
\.
COPY public.language (language_id, name, last_update) FROM '$$PATH$$/3073.dat';
--
-- Data for Name: payment; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.payment (payment_id, customer_id, staff_id, rental_id, amount, payment_date) FROM stdin;
\.
COPY public.payment (payment_id, customer_id, staff_id, rental_id, amount, payment_date) FROM '$$PATH$$/3075.dat';
--
-- Data for Name: rental; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.rental (rental_id, rental_date, inventory_id, customer_id, return_date, staff_id, last_update) FROM stdin;
\.
COPY public.rental (rental_id, rental_date, inventory_id, customer_id, return_date, staff_id, last_update) FROM '$$PATH$$/3077.dat';
--
-- Data for Name: staff; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.staff (staff_id, first_name, last_name, address_id, email, store_id, active, username, password, last_update, picture) FROM stdin;
\.
COPY public.staff (staff_id, first_name, last_name, address_id, email, store_id, active, username, password, last_update, picture) FROM '$$PATH$$/3079.dat';
--
-- Data for Name: store; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY public.store (store_id, manager_staff_id, address_id, last_update) FROM stdin;
\.
COPY public.store (store_id, manager_staff_id, address_id, last_update) FROM '$$PATH$$/3081.dat';
--
-- Name: actor_actor_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.actor_actor_id_seq', 200, true);
--
-- Name: address_address_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.address_address_id_seq', 605, true);
--
-- Name: category_category_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.category_category_id_seq', 16, true);
--
-- Name: city_city_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.city_city_id_seq', 600, true);
--
-- Name: country_country_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.country_country_id_seq', 109, true);
--
-- Name: customer_customer_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.customer_customer_id_seq', 599, true);
--
-- Name: film_film_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.film_film_id_seq', 1000, true);
--
-- Name: inventory_inventory_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.inventory_inventory_id_seq', 4581, true);
--
-- Name: language_language_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.language_language_id_seq', 6, true);
--
-- Name: payment_payment_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.payment_payment_id_seq', 32098, true);
--
-- Name: rental_rental_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.rental_rental_id_seq', 16049, true);
--
-- Name: staff_staff_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.staff_staff_id_seq', 2, true);
--
-- Name: store_store_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('public.store_store_id_seq', 2, true);
--
-- Name: actor actor_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.actor
ADD CONSTRAINT actor_pkey PRIMARY KEY (actor_id);
--
-- Name: address address_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.address
ADD CONSTRAINT address_pkey PRIMARY KEY (address_id);
--
-- Name: category category_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.category
ADD CONSTRAINT category_pkey PRIMARY KEY (category_id);
--
-- Name: city city_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.city
ADD CONSTRAINT city_pkey PRIMARY KEY (city_id);
--
-- Name: country country_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.country
ADD CONSTRAINT country_pkey PRIMARY KEY (country_id);
--
-- Name: customer customer_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.customer
ADD CONSTRAINT customer_pkey PRIMARY KEY (customer_id);
--
-- Name: film_actor film_actor_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.film_actor
ADD CONSTRAINT film_actor_pkey PRIMARY KEY (actor_id, film_id);
--
-- Name: film_category film_category_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.film_category
ADD CONSTRAINT film_category_pkey PRIMARY KEY (film_id, category_id);
--
-- Name: film film_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.film
ADD CONSTRAINT film_pkey PRIMARY KEY (film_id);
--
-- Name: inventory inventory_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.inventory
ADD CONSTRAINT inventory_pkey PRIMARY KEY (inventory_id);
--
-- Name: language language_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.language
ADD CONSTRAINT language_pkey PRIMARY KEY (language_id);
--
-- Name: payment payment_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.payment
ADD CONSTRAINT payment_pkey PRIMARY KEY (payment_id);
--
-- Name: rental rental_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.rental
ADD CONSTRAINT rental_pkey PRIMARY KEY (rental_id);
--
-- Name: staff staff_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.staff
ADD CONSTRAINT staff_pkey PRIMARY KEY (staff_id);
--
-- Name: store store_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.store
ADD CONSTRAINT store_pkey PRIMARY KEY (store_id);
--
-- Name: film_fulltext_idx; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX film_fulltext_idx ON public.film USING gist (fulltext);
--
-- Name: idx_actor_last_name; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_actor_last_name ON public.actor USING btree (last_name);
--
-- Name: idx_fk_address_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_address_id ON public.customer USING btree (address_id);
--
-- Name: idx_fk_city_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_city_id ON public.address USING btree (city_id);
--
-- Name: idx_fk_country_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_country_id ON public.city USING btree (country_id);
--
-- Name: idx_fk_customer_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_customer_id ON public.payment USING btree (customer_id);
--
-- Name: idx_fk_film_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_film_id ON public.film_actor USING btree (film_id);
--
-- Name: idx_fk_inventory_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_inventory_id ON public.rental USING btree (inventory_id);
--
-- Name: idx_fk_language_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_language_id ON public.film USING btree (language_id);
--
-- Name: idx_fk_rental_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_rental_id ON public.payment USING btree (rental_id);
--
-- Name: idx_fk_staff_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_staff_id ON public.payment USING btree (staff_id);
--
-- Name: idx_fk_store_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_fk_store_id ON public.customer USING btree (store_id);
--
-- Name: idx_last_name; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_last_name ON public.customer USING btree (last_name);
--
-- Name: idx_store_id_film_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_store_id_film_id ON public.inventory USING btree (store_id, film_id);
--
-- Name: idx_title; Type: INDEX; Schema: public; Owner: postgres
--
CREATE INDEX idx_title ON public.film USING btree (title);
--
-- Name: idx_unq_manager_staff_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE UNIQUE INDEX idx_unq_manager_staff_id ON public.store USING btree (manager_staff_id);
--
-- Name: idx_unq_rental_rental_date_inventory_id_customer_id; Type: INDEX; Schema: public; Owner: postgres
--
CREATE UNIQUE INDEX idx_unq_rental_rental_date_inventory_id_customer_id ON public.rental USING btree (rental_date, inventory_id, customer_id);
--
-- Name: film film_fulltext_trigger; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER film_fulltext_trigger BEFORE INSERT OR UPDATE ON public.film FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger('fulltext', 'pg_catalog.english', 'title', 'description');
--
-- Name: actor last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.actor FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: address last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.address FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: category last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.category FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: city last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.city FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: country last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.country FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: customer last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.customer FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: film last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.film FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: film_actor last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.film_actor FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: film_category last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.film_category FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: inventory last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.inventory FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: language last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.language FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: rental last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.rental FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: staff last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.staff FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: store last_updated; Type: TRIGGER; Schema: public; Owner: postgres
--
CREATE TRIGGER last_updated BEFORE UPDATE ON public.store FOR EACH ROW EXECUTE PROCEDURE public.last_updated();
--
-- Name: customer customer_address_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.customer
ADD CONSTRAINT customer_address_id_fkey FOREIGN KEY (address_id) REFERENCES public.address(address_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: film_actor film_actor_actor_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.film_actor
ADD CONSTRAINT film_actor_actor_id_fkey FOREIGN KEY (actor_id) REFERENCES public.actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: film_actor film_actor_film_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.film_actor
ADD CONSTRAINT film_actor_film_id_fkey FOREIGN KEY (film_id) REFERENCES public.film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: film_category film_category_category_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.film_category
ADD CONSTRAINT film_category_category_id_fkey FOREIGN KEY (category_id) REFERENCES public.category(category_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: film_category film_category_film_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.film_category
ADD CONSTRAINT film_category_film_id_fkey FOREIGN KEY (film_id) REFERENCES public.film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: film film_language_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.film
ADD CONSTRAINT film_language_id_fkey FOREIGN KEY (language_id) REFERENCES public.language(language_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: address fk_address_city; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.address
ADD CONSTRAINT fk_address_city FOREIGN KEY (city_id) REFERENCES public.city(city_id);
--
-- Name: city fk_city; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.city
ADD CONSTRAINT fk_city FOREIGN KEY (country_id) REFERENCES public.country(country_id);
--
-- Name: inventory inventory_film_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.inventory
ADD CONSTRAINT inventory_film_id_fkey FOREIGN KEY (film_id) REFERENCES public.film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: payment payment_customer_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.payment
ADD CONSTRAINT payment_customer_id_fkey FOREIGN KEY (customer_id) REFERENCES public.customer(customer_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: payment payment_rental_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.payment
ADD CONSTRAINT payment_rental_id_fkey FOREIGN KEY (rental_id) REFERENCES public.rental(rental_id) ON UPDATE CASCADE ON DELETE SET NULL;
--
-- Name: payment payment_staff_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.payment
ADD CONSTRAINT payment_staff_id_fkey FOREIGN KEY (staff_id) REFERENCES public.staff(staff_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: rental rental_customer_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.rental
ADD CONSTRAINT rental_customer_id_fkey FOREIGN KEY (customer_id) REFERENCES public.customer(customer_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: rental rental_inventory_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.rental
ADD CONSTRAINT rental_inventory_id_fkey FOREIGN KEY (inventory_id) REFERENCES public.inventory(inventory_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: rental rental_staff_id_key; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.rental
ADD CONSTRAINT rental_staff_id_key FOREIGN KEY (staff_id) REFERENCES public.staff(staff_id);
--
-- Name: staff staff_address_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.staff
ADD CONSTRAINT staff_address_id_fkey FOREIGN KEY (address_id) REFERENCES public.address(address_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: store store_address_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.store
ADD CONSTRAINT store_address_id_fkey FOREIGN KEY (address_id) REFERENCES public.address(address_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- Name: store store_manager_staff_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
--
ALTER TABLE ONLY public.store
ADD CONSTRAINT store_manager_staff_id_fkey FOREIGN KEY (manager_staff_id) REFERENCES public.staff(staff_id) ON UPDATE CASCADE ON DELETE RESTRICT;
--
-- PostgreSQL database dump complete
--260214_PostgreSQL_and_Rust_DB_001
https://younghakim7.github.io/blog/posts/260214_postgresql_and_rust_db_001/