SQL - osnovni pojmovi
SQL je akronim od Structured Query Language (Strukturni upitni jezik). Služi za kreiranje, organizaciju i manipulaciju podacima u relacionim bazama podataka.
SQL jezik podržava dva režima rada sa bazom podataka:
- Interaktivni: Korisnik zadaje jednu po jednu SQL naredbu interaktivno, preko tastature, a ishod svake se prikazuje preko monitora. Pristup bazi podataka je ograničen jedino pravima korisnika
- Programski: Korisnik pokreće program u kome se nalaze "ugrađene" SQL naredbe. Pristup bazi podataka ograničen je pravima korisnika i sadržajem programa
Pomoću SQL-a može da se:
- pristupi bazi podataka
- vrše upiti nad bazom podataka
- prikazuju podaci iz baze podataka
- unose novi podaci u bazu podataka
- obrišu postojeći zapisi iz baze podataka
- izmene podaci u bazi podataka
Jezik za rad sa bazama podataka se obično deli na dva podjezika:
- jezik za definisanje podataka (DDL - Data Definition Language)
- jezik za rukovanje podacima (DML - Data Manipulation Language)
Međutim radi se samo o dve klase naredbi koje zajedno sačinjavaju sam jezik za rad sa bazom podataka. Pored ove dve osnovne kategorije, postoji još jedna koja se može izvesti, a to je jezik za kontrolu pristupa podacima (DCL - Data Control Language)
u kome se radi sa grupama i korisnicima, kao i sa pravime pristupa.
SQL radi sa tabelama. Tabela se kreira jednom izvršnom naredbom. Odmah po kreiranju, tabela je raspoloživa za korišćenje. Svi podaci memorisani su u tabelama i rezultat bilo koje operacije se Iogički prikazuje u obliku tabele.
***U nastavku je jedan link ka korisnim materijalima : edukacija.rs : SQL - Standardni upitni jezik (LINK)
Pravila za pisanje imena u SQL-u
Imena tabela, atributa i bilo kojih drugih objekata baze podataka moraju da budu u skladu sa sledećim pravilima:
- Maksimalna dužina imena je 30 znakova
- ime ne sme da sadrži znak pitanja (?),
- dozvoljeni znaci su A-Z, 0-9, _, $, #
- prvi znak mora biti slovo,
- kao imena se ne smeju koristiti rezervisane reči
- imena se ne smeju ponavljati
- nema razlike između velikih i malih slova (ovo poslednje važi uglavnom pod Windowsima, ali ne mora da znači da će važiti na nekim drugim sistemima , i ne uvek pod Linux serverima)
Radi lakšeg čitanja koda, preporučuje se da ključne reči (naredbe) budu napisane velikim slovima, a svi ostali elementi malim slovima.
U nekim bazama niz znakova (string) mora biti napisan kao što je u bazi.
SQL - neke naredbe koje koristimo
Struktuirani upitni jezik je jedan od osnovnih sastavnih blokova savremene arhitekture baza podataka. Definiše metode koje se koriste da bi se kreirale relacione baze podataka i da bi se sa njima radilo na svim glavnim platformama.
O SQL-u
Ispravan izgovor naziva jezika je stalno sporno pitanje u zajednici stručnjaka koji se bave bazama podataka. Američki nacionalni institut za standarde je ustanovio pravilan izgovor imena kao „eskjuel“, međutim, mnogi stručnjaci koji se bave bazama podataka navikli su da izgovaraju „sikvel“, tako da vama prepuštamo izbor.
Postoji nekoliko vrsta SQL-a. Oraklova baza podataka koristi svoju verziju PL/SQL, a SQL server kompanije „Majkrosoft“ koristi Transact-SQL. Sve varijacije se zasnivaju na industrijskom standardu ANSI SQL.
DDL i DML
Naredbe u SQL-u mogu da se podele na dva glavna podjezika. Jezik za definisanje podataka (DDL) sadrži naredbe koje se koriste da bi se kreirale i uništile baze podataka i njihovi objekti. Pošto se uz pomoć tog jezika definiše struktura baze podataka, njeni administratori i korisnici mogu da koriste jezik za manipulisanje podacima (DML) da bi umetali, pronalazili i menjali podatke koji se u njoj nalaze.
Naredbe u jeziku za definisanje podataka
Jezik za definisanje podataka se koristi da bi se kreirale i uništile baze podataka i njihovi objekti. Te naredbe prvenstveno koriste administratori baza podataka tokom faza uspostavljanja ili uklanjanja baza podataka. Predstavićemo vam strukturu i upotrebu četiri osnovne naredbe u jeziku za definisanje podataka.
CREATE
Instaliranje sistema za upravljanje bazama podataka u računar omogućava vam da kreirate i upravljate mnogim nezavisnim bazama podataka. Na primer, želite da kreirate bazu podataka kontakata klijenata za odeljenje prodaje i bazu podataka zaposlenih za kadrovsku službu. Naredba CREATE se koristi da bi se uspostavila bilo koja od navedenih baza podataka na vašoj platformi. Na primer, naredba:
CREATE DATABASE employees
kreira praznu bazu podataka koja se zove „employees“ (zaposleni) na vašem sistemu za upravljanje bazama podataka. Pošto ste kreirali bazu podataka, sledeći korak bi bio kreiranje tabela koje će sadržati podatke. Varijanta naredbe CREATE može se koristi u tom postupku. Naredba:
CREATE TABLE personal_info (first_name char(20) not null, last_name char(20) not null, employee_id int not null)
kreira tabelu pod nazivom „personal_info“ (lični_podaci) u postojećoj bazi podataka. U ovom primeru, tabela sadrži tri atributa: ime, prezime i lični broj zaposlenog (first_name, last_name, and employee_id) zajedno sa još nekim detaljima.
USE
Naredba USE vam omogućava da odredite bazu podataka u kojoj želite da radite u okviru vašeg sistema za upravljanje bazama podataka. Na primer, ako trenutno radite u bazi podataka prodaje i želite da izdate neke naredbe koje će uticati na bazu podataka zaposlenih, pre njih morate iskoristiti sledeću naredbu u SQL-u:
USE employees
Izuzetno je važno da uvek budete svesni u kojoj bazi podataka radite pre nego što izdate naredbe u SQL-u kojima manipulišete podacima.
ALTER
Kad ste kreirali tabelu u okviru baze podataka, desiće se da ćete želeti da izmenite njenu definiciju. Naredba ALTER vam omogućava da izvršite promene u strukturi tabele, a da pri tom ne morate da je obrišete ili ponovo kreirate. Pogledajte sledeću
naredbu:
ALTER TABLE personal_info ADD salary money null
U ovom primeru dodali smo novi atribut tabeli personal_info, a to je zarada zaposlenog (employee's salary). Argument „money“ (novac) određuje da je zarada zaposlenog izražena u formatu dolara i centi. Konačno, ključna reč „null“ (nula) govori bazi podataka da je sasvim u redu ako to polje ne sadrži nikakvu vrednost za bilo kog zaposlenog.
DROP
Poslednja naredba u jeziku za definisanje podataka, DROP, omogućava vam da uklonite celokupne objekte baze podataka iz sistema za upravljanje bazama podataka. Na primer, ako želite da trajno uklonite tabelu personal_info koju ste kreirali, koristite
sledeću naredbu:
DROP TABLE personal_info
Slično tome, naredbu koju ćemo navesti koristili bi da uklonite celokupnu bazu podataka zaposlenih (employee):
DROP DATABASE employees
Ovu naredbu bi valjalo pažljivo koristiti jer DROP uklanja celu strukturu podataka iz vaše baze podataka. Ako želite da uklonite pojedinačne zapise, koristite naredbu DELETE u jeziku za manipulisanje podacima.
Naredbe u jeziku za manipulisanje podacima
Jezik za manipulisanje podacima (DML) koristi se da bi se pronalazile, umetale i menjale informacije u bazi podataka. Te naredbe koriste svi korisnici baza podataka tokom rutinskih postupaka u bazi podataka.
INSERT
Naredba INSERT u SQL-u se koristi da bi se dodali zapisi već postojećoj tabeli. Vratimo se primeru personal_info iz prethodnog odeljka i zamislite da naša kadrovska služba treba da doda novog zaposlenog bazi podataka. Za taj postupak možete koristi naredbu sličnu ovoj:
INSERT INTO personal_info
values('bart','simpson',12345,000)
Obratite pažnju na to da su određene četiri vrednosti za ovaj unos. One odgovaraju atributima tabele redosledom kojim su definisani: ime, prezime, lični broj zaposlenog i plata (first_name, last_name, employee_id and salary).
SELECT
Naredba SELECT je najčešće korišćena naredba u SQL-u. Ona omogućava korisnicima baze podataka da pronađu određenu informaciju koju žele iz operativne baze podataka. Pogledajte nekoliko primera u kojima ćemo ponovo koristiti tabelu personal_info iz baze podataka zaposlenih. Naredba koja je dole prikazana pronalazi sve informacije koje su sadržane u tabeli personal_info. Obratite pažnju na to da se zvezdica u SQL-u koristi kao džoker karta. Naredba doslovno znači „Odaberi sve iz tabele personal_info.“
SELECT *
FROM personal_info
S druge strane, korisnici bi možda želeli da ograniče atribute koji se pretražuju iz baze podataka. Na primer, kadrovska služba traži popis prezimena svih zaposlenih u kompaniji. Sledeća naredna u SQL-u prikazaće samo tu informaciju:
SELECT last_name
FROM personal_info
Klauzula WHERE može se koristiti da bi se ograničili zapisi koji se traže samo na one koji zadovoljavaju određene uslove. Direktor bi možda želeo da pregleda dosijee svih zaposlenih koji imaju visoke plate. Sledeća naredba prikazuje sve podatke koji se nalaze u tabeli personal_info za zapise koji imaju platu veću od 50.000 dolara:
SELECT *
FROM personal_info
WHERE salary > 000
UPDATE
Naredba UPDATE može se koristiti da bi se izmenile informacije koje se nalaze u tabeli, kako pojedinačno, tako i grupno. Pretpostavimo da je kompanija svim zaposlenima povećala godišnju platu za 3 procenta zbog povećanja troškova života. Sledeća
naredba u SQL-u se može koristiti da bi se to brzo primenilo na sve zaposlene koji se nalaze u bazi podataka:
UPDATE personal_info
SET salary = salary * 1.03
Kad novi zaposleni Bart Simpson pokaže da je izuzetno vredan i uzoran radnik, uprava želi da ga nagradi za sva njegova dostignuća tako što mu daje povišicu od 5.000 dolara. Klauzula WHERE bi mogla da se koristi da bi izdvojila Barta koji treba da dobije povišicu:
UPDATE personal_info
SET salary = salary + 00
WHERE employee_id = 12345
DELETE
Hajde konačno da objasnimo i naredbu DELETE. Videćete da je sintaksa ove naredbe slična sintaksama ostalih naredbi u jeziku za manipulisanje podacima (DML). Nažalost, najnoviji korporativni izveštaj o ostvarenoj zaradi nije ispunio očekivanja i naš siroti Bart je dobio otkaz. Naredba DELETE zajedno sa klauzulom WHERE može se koristiti da se njegov zapis izbriše iz tabele personal_info:
DELETE FROM personal_info
WHERE employee_id = 12345
***