Categories
programming

SQL joins

Cross join

Cartesian product:

SELECT *
FROM movies
CROSS JOIN directors;

Full outer join

Like inner join but with all remaining rows from both sides:

SELECT *
FROM movies
FULL OUTER JOIN directors
  ON directors.id = movies.director_id;

Inner join

Only rows where condition is true:

SELECT *
FROM movies
INNER JOIN directors
  ON directors.id = movies.director_id;

Left join

All records from “left” table plus rows from the “right” table that match join condition:

SELECT *
FROM movies
LEFT JOIN directors
  ON directors.id = movies.director_id;

Use WHERE to filter results.

Right join

Reverse left join:

SELECT *
FROM movies
RIGHT JOIN directors
  ON directors.id = movies.director_id;

Source: freeCodeCamp

Categories
programming

MySQL podešavanja

Instaliranje baze:

pacman -S mariadb

Nakon toga pokrećemo servis sa

systemctl start mysqld.service

a da li je servis pokrenut proveravamo sa

systemctl status mysqld.service

Da bismo ga naterali da se pokrene svaki put kada uključimo računar, otkucaćemo

systemctl enable mysqld.service

Ako sve radi kako treba, pokrećemo program

mysql_secure_installation

kako bismo postavili lozinku za superkorisnika, obrisali testne baze i korisnike, sprečili prijavljivanje superkorisnika preko mreže i još štošta. Kada sve to završimo, potrebno je da proverimo da li zaista možemo da se ulogujemo u bazu:

mysql -u root -p

i treba da otkucamo lozinku za superkorisnika koju smo upravo postavili. Ako koristimo mycli kao klijentsku aplikaciju za rad sa bazom, logovanje se vrši sa:

mycli -u root

Generalno gledano, sintaksa za mycli je:

mycli <baza> -u <korisnik>

nakon čega je potrebno otkucati lozinku korisnika. Jednom ulogovani možemo da krenemo sa upitima, npr. sa

show databases;

da izlistamo baze 🙂

Korisnici

Korisnici se nalaze u tabeli mysql.user:

select user from mysql.user;

Komandom

create user korisnik@localhost identified by 'lozinka';

kreiramo novog korisnika. Potpune privilegije nad bazom baza ćemo mu dodeliti sa:

grant all on baza.* to korisnik@localhost;

Korisnikove privilegije možemo da vidimo sa:

show grants for korisnik@localhost;

Da ne bismo administrirali baze podataka i korisnike ručno kucajući komplikovane upite, instaliraćemo phpMyAdmin.

Bekap baze

Za bekap baze koristimo program mysqldump. Osnovna sintaksa je:

mysqldump -u <korisnik> -p <baza> > <fajl>

nakon čega je potrebno da otkucamo lozinku i, ako je sve u redu, “damp” će se pojaviti u naznačenom fajlu. Ovaj bekap sadrži i strukturu baze i podatke iz baze a ako nam treba samo struktura bez podataka dodaćemo opciju -d.

Ako želimo da kreiramo bazu na osnovu bekapa, sintaksa je:

mysql -u <korisnik> -p <baza> < <fajl>

odnosno, ako koristimo mycli:

mycli -u <korisnik> <baza> < <fajl>