Upravljanje PostgreSQL preko command linije


Za upravljanje bazom podataka moramo se prvo spoiti na root usera da s njim mozemo dodavati usere i mjenjati privilegije drugim userima.

Pormjena šifre root usera:

sudo -u postgres psql postgres

Za listu svih usera pišemo:

Za kreiranje novog usera pišemo

CREATE USER user2 WITH PASSWORD '1q2w3e4r' SUPERUSER CREATEDB;

Za promjenu privilegija usera pisemo:

ALTER ROLE user1 WITH SUPERUSER;

Nakon toga vidimo da smo useru user1 dodali privilegiju superuser

Nakon kreiranja usera i dodavanja potrebnih privilegija mozemo se konektirati preko toga usera.

Spajanje lokalno na bazu pisemo komandu:

psql -U user1  postgres -h localhost

Spajanje na bazu sa drugoga hosta:

psql -U user1 postgres -h localhost -p 10001

Za help pišemo komandu:

\?

Za izlaz iz help moda pisemo q

Za izlistaj svih baza podataka pišemo:

\l

Trenutno smo spojeni na bazu podataka postgres ako želimo promjeniti bazu pišemo:

\c test

\c znaci connect a test je ime baze na koju se želimo spoiti

Kreiranje nove baze podataka pišemo:

CREATE DATABASE test2;

Možemo komandu pisati i malim slovima ali ovako znamo da pišemo sql komandu

Za brisanje baze podataka pišemo

DROP DATABASE test2;

Vidmo da je baza test2 izbrisana. Ovo je vrlo opasna komanda može izbrisati neku bazu koju ne želimo izbrisati treba biti vrlo oprezan.

Kreiranje tablice

Neki od data tipova:
Za sve data tipove klikni na link

NameAliasesDescription
bigintint8signed eight-byte integer
bigserialserial8autoincrementing eight-byte integer
booleanboollogical Boolean (true/false)
character [ (n) ]char [ (n) ]fixed-length character string
character varying [ (n) ]varchar [ (n) ]variable-length character string
date calendar date (year, month, day)
integerint, int4signed four-byte integer
json textual JSON data
money currency amount
numeric [ (p, s) ]decimal [ (p, s) ]exact numeric of selectable precision
path geometric path on a plane
text variable-length character string
time [ (p) ] [ without time zone ] time of day (no time zone)
time [ (p) ] with time zonetimetztime of day, including time zone
timestamp [ (p) ] [ without time zone ] date and time (no time zone)
timestamp [ (p) ] with time zonetimestamptzdate and time, including time zone
tsquery text search query
xml XML data

Kreiranje tablice (table) i kolone (column) u bazi pisemo komandu CREATE TABLE imeTablice (
otvaramo zagradu i stisnemo enter da idemo u novi red

test2=# CREATE TABLE person (
test2(# id INT,
test2(# first_name VARCHAR(50),
test2(# last_name VARCHAR(50),
test2(# gender VARCHAR(7),
test2(# date_of_birth DATE );

Za prikaz svih tablica u bazi:

\d

Za prikaz određene tablice pišemo:

\d person

Brisanje tablice:

DROP TABLE person;

Kreiranje tablice sa ograničenjima:

test2=# CREATE TABLE person (
test2(# id BIGSERIAL NOT NULL PRIMARY KEY,
test2(# first_name VARCHAR(50) NOT NULL,
test2(# last_name VARCHAR(50) NOT NULL,
test2(# gander VARCHAR(7) NOT NULL,
test2(# date_of_birth DATE NOT NULL,
test2(# email VARCHAR(150) );

Sada vidimo da je prikazana i sequence jer smo dodali BIGSERIAL a on je auto increment primary key sto znaci da se automatski povećava svakim dodanim novim redom.

Ako želimo viditi samo tablice pišemo:

\dt

Sada naša tablica izgleda drukčije

Preimenovanje columna u tablici

Ako smo krivo upisali neki column u tablici mozemo ga preimenovati sa sql naredbom:

Prvo upišemo:

ALTER TABLE person

Zatim

RENAME gander TO gender;

Umetanje zapisa u bazu

U prvom redu upisemo prvi dio queriya zatim stisnemo enter pa nas prebaci u novi red i pišemo dalje

INSERT INTO person (first_name, last_name, gander, date_of_birth, email)

u drugi red pišemo:

VALUES ('Anne', 'Smith', 'FAMALE', date '1988-01-15', 'email@email.com');

Pregled upisanih zapisa

Za pregled upisanih zapisa pisemo query:

SELECT * FROM person;

Umetanje random zapisa sa stranice https://www.mockaroo.com/ u kojoj cemo generirati 100 zapisa

Nakon generiranja komandom \i i putanjom do sql fajle se zapisi upisuju

\i /root/backend/person.sql

Sada nakon sql komande SELECT * FROM person; vidimo zapise

U vrh dokumenta dodamo id BIGSERIAL NOT NULL PRIMARY KEY, da nam podaci imaju auto increment primary key

create table person (
  id BIGSERIAL NOT NULL PRIMARY KEY,
	first_name VARCHAR(50) NOT NULL,
	last_name VARCHAR(50) NOT NULL,
	email VARCHAR(50),
	gender VARCHAR(9) NOT NULL,
	date_of_birth DATE NOT NULL,
	country_of_birth VARCHAR(50)
);
insert into person (first_name, last_name, email, gender, date_of_birth, country_of_birth) values ('Rodrigo', 'Cullinan', 'rcullinan0@wix.com', 'Male', '2022-04-04', 'Thailand');
insert into person (first_name, last_name, email, gender, date_of_birth, country_of_birth) values ('Clark', 'Taylot', 'ctaylot1@networksolutions.com', 'Male', '2022-07-20', 'Zambia');
insert into person (first_name, last_name, email, gender, date_of_birth, country_of_birth) values ('Annamaria', 'Keech', 'akeech2@wsj.com', 'Female', '2022-06-29', 'Russia');
insert into person (first_name, last_name, email, gender, date_of_birth, country_of_birth) values ('Hazel', 'Kuhle', 'hkuhle3@gravatar.com', 'Male', '2022-10-07', 'Russia');