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
Name | Aliases | Description |
---|---|---|
bigint | int8 | signed eight-byte integer |
bigserial | serial8 | autoincrementing eight-byte integer |
boolean | bool | logical Boolean (true/false) |
character [ ( | char [ ( | fixed-length character string |
character varying [ ( | varchar [ ( | variable-length character string |
date | calendar date (year, month, day) | |
integer | int , int4 | signed four-byte integer |
json | textual JSON data | |
money | currency amount | |
numeric [ ( | decimal [ ( | exact numeric of selectable precision |
path | geometric path on a plane | |
text | variable-length character string | |
time [ ( | time of day (no time zone) | |
time [ ( | timetz | time of day, including time zone |
timestamp [ ( | date and time (no time zone) | |
timestamp [ ( | timestamptz | date 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');