ALTE DOCUMENTE
|
||||||||
Mala sola SQL-a (1.del - DDL)
SQL ali Structured Query Language je eden najbolj razvitih
omogoča uporabniku dostop in kontrolo nad bazo( dBase, Paradox, Oracle,
Acces itd). V Delphi-ju je naprimer komponenta za to TQuery.
Deli pa se na dva dela: DML( Data Manipulation Language) in DDL (Data
Definition Language). DDL se uporablja za kreiranje definicije tabele in njenih
indexov, DML pa za spreminjanje in branje podatkov v tabelah. Beremo tako da jo
sprasujemo po podatkih z dolocenimi stavki. V SQL-u takemu stavku pravimo
Query(vprasanje).
Kot prvi del vam bom predstavil DDL, tako da se boste naucili izdelovati
tabele, indexe in atribute. Drugi deli bodo vsebovali dosti obseznejsi DML, ki
opisuje kako manipulirati s podatki v bazi.
DDL
Osnovni
ukazi:
1.
CREATE TABLE
-kreira tabelo in po moznosti tudi primary key tabele
CREATE TABLE ime_tabele (
atribut1 tip,
atribut2 tip,
.
.
PRIMARY KEY(atribut1)
)
opomba: ce so v vasem imenu od tabele presledki morate podati ime
tabele v dvojnih narekovajih
2.
ALTER TABLE
-doda nove atribute ali zbrise obstojece
ALTER TABLE ime_tabele DROP/ADD ime_atributa [ime tipa (ce dodajamo)]
3.
DROP TABLE
-uniči vse(sekundarne index, podatkovne tipe...)
4.
CREATE INDEX
-kreira sekundarne indexe
CREATE INDEX ime_indexa ON ime_tabele (ime_atributa)
5.
DROP INDEX
-brisanje sekundarnih/primarnih indexov
a) ce je sekundaren index
DROP INDEX ime_tabele.ime_indexa
b) ce je primaren
DROP INDEX ime_tabele.primary
OSNOVNI PODATKOVNI TIPI
TIP |
OPIS |
SMALLINT |
16 bit unsigned |
INTEGER |
32 bit |
CHAR |
string[n] |
TIME |
čas |
TIMESTAMP |
datum + čas |
FLOAT |
real |
DATE |
datum |
BOOLEAN |
true/false |
PRIMERI
Kreirajmo tabelo z imenom OSEBA z
atributi DAVCNA, PRIIMEK, IME, ROJEN, PLACA in jo indexirajmo po atributu
DAVCNA.
CREATE TABELA OSEBA (
DAVCNA integer,
PRIIMEK char(20),
IME char(10),
ROJEN date,
PLACA float,
PRIMARY KEY(DAVCNA)
)
Zdaj pa zbrisimo atribut ROJEN iz tabele OSEBA in potem dodajmo atribut LETA.
ALTER TABLE OSEBA DROP ROJEN
ALTER TABLE OSEBA ADD LETA SMALLINT
Zdaj zbrisimo vso tabelo
DROP TABLE OSEBA
INSERT
stavek
-s tem stavkom vpisujemo vrednosti v tabelo
a)vpisovanje vrednosti VSEH atributov
Sintaksa: INSERT INTO IME_TABELE VALUES(vrednost1,vrednost2,...vrednostN)
Primer
INSERT INTO BAZA VALUES ('Ana','Kralj',30)
Priimek |
Ime |
Tocke |
Ana |
Kralj |
Kot lahko vidite je vrstni red pomemben pri vpisovanju.
b)vpisovanje vrednosti pozameznih atributov
Sintaksa: INSERT INTO IME_TABELE (atribut1,atribut2,...atributN) VALUES(vrednost1,vrednost2,...vrednostN)
c)prepisovanje vsebine
INSERT INTO TABELA2 (atribut1,atribut2,...atributN) SELECT atribut1,atribut2,... FROM TABELA1
SELECT
stavek
-s tem stavkom beremo podatke iz tabele
a)brezpogojni SELECT
Sintaksa
1. SELECT * FROM IME_TABELE
2. SELECT atribut1,atribut2,... FROM IME_TABELE
3. SELECT DISTINCT atribut FROM IME_TABELE(DISTINCT izloči vse dvojnike)
b)pogojen SELECT; pogoj se nanasa na atribut
Sintaksa: SELECT * FROM IME_TABELE WHERE Pogoj
Pogoji |
= ,LIKE |
> |
< |
>= |
<= |
<> |
Primeri
SELECT IME FROM OSEBE WHERE TOCKE > 25 ť izpise vsa imena oseb, ki so imela več kot 25 tock
SELECT IME FROM OSEBA WHERE IME LIKE "A%"ť izpise vsa imena oseb, ki se začnejo z črko "A"; % pomeni da je v nadaljevanju lahko karkoli
Opomba: SQL je CASE SENSITIVE
c)razvrsčanje podatkov
Sintaksa: SELECT atribut1,atribut2,... FROM IME_TABELE ORDER BY atributX,atributY,....
Opomba: order by lahko invertirate tako da dodate besedico DESC (ORDER BY DESC atributX)
AGREGIRANE FUNKCIJE
IME |
TIP |
OPIS |
SUM |
numerična |
sesteje vrednosti določenih atributov |
AVG |
numerična |
izračuna povprecno vrednost določenih atributov |
MIN |
alfanum+num+čas |
izračuna minimalno vrednost določenih atributov |
MAX |
alfanum+num+čas |
izračuna minimalno vrednost določenih atributov |
COUNT |
alfanum+num+čas |
zračuna stevilo atributov |
SELECT SUM(CENA) AS spr FROM IZDELEK
Opomba: "AS VREDNOST" pomeni da je vrednost spremenljivke spr enaka SUM(CENA)
d)grupiranje zapisov pri uporabi agregiranih funkcij
Sintaksa:SELECT atribut, funkcija(atributX) FROM IME_TABELE GROUP BY (atribut)
Primer
TABELA MATURA
Priimek |
Ime |
Tocke |
Sola |
Jelka |
Milka |
GB |
|
Milan |
Kučan |
GV |
|
Boris |
Grm |
SSER |
|
Ana |
Kralj |
SSER |
SELECT DISTINCT SOLA, AVG(TOCKE) FROM MATURA GROUP BY(SOLA)
Sola |
AVG(TOCKE) |
GB | |
GV | |
SSER |
b)pogojen SELECT; pogoj se nanasa na AGREGIRANO funkcijo
Sintaksa: SELECT ...., Afunkcija(atributX) FROM IME_TABELE HAVING Pogoj
Primer
SELECT
SOLA, AVG(TOCKE)
FROM MATURA
GROUP BY(SOLA)
HAVING AVG(TOCKE)>30
|