222
Ohodnoť!Chcel by som Vam predstavit jazyk SQL (Structured query language). S jazykom SQL som sa prvy krat stretol u nas na skole, ked sa preberali informacne a databazove systemy a vyuzijem aj moje poznamky. :) Myslim, ze ked sa chcete ucit napriklad databazy MySQL, ORACLE alebo ine treba tento jazyk poznat. V tejto casti preberiem zakladne prikazy pre vytvorenie tabulky, selektovanie, zobrazovanie a inzertovanie.
SQL je standard pre relacne systemy riadena bazy dat (SRBD).
Cielom SQL - 92 Standard
Zakladne prikazy: CREATE
CREATE TABLE FAKTURA (
ID_CIS_FAK NUMBER(5) NOT NULL, 1. identifikacia datovych typov pre atributy
ID_ICO_ZAK NUMBER(5) NOT NULL, 2. identifikacia typov ktore mozu alebo nemozu
ID_C_ZAM NUMBER(5) NOT NULL, byt NULL
DATUMF VARCHAR2(8) NOT NULL,
CELKOVA_SUMA NUMBER(7) NOT NULL,
PRIMARY KEY (ID_CIS_FAK), 3. identifikacia PK a FK
FOREIGN KEY (ID_ICO_ZAK)
REFERENCES ZAKAZNIK, 4. stanovenie default hodnot
FOREIGN KEY (ID_C_ZAM)
REFERENCES ZAMESTNANEC 5. Identifikacia obmmedzeni pre stlpce(check)
);
prikazy v SQL sa odeluju bodkociarkou ; hodnoty NOT NULL musia byt zadane
Pouzitie pohladov VIEW : pohlady poskytuju riadeny pristup k jednotlivym tabulkam databazy
vyhody pohladov: zjednoduhsenie prikazov, vyssia ochrana a bezpecnost dat, vyssia programatorska produktivita
VIEW je virtualna tabulka, vytvorena dynamicky uzivatelom a neuchovava ziadne data. Je zalozeny na SQL select prikaze. Data su uchovavane a musia byt aktualizovane zmeny, aby korespondovali so zakladnou tabulkou
CREATE VIEW Senior AS
SELECT Meno, Priezvisko, RC
FROM Osoba
WHERE DATUMNASTUPU < ”1.1.1985” ;
ALTER TABLE Osoba MODIFY (VYSKA Number ); zmena atributu VYSKA na typ Number
DROP TABLE Osoba; zmaze tabulku Osoba
Vytvorenie Index-u
Indexacia urychluje pristup k datam tabulky
CREATE UNIQUE INDEX XUOSOBA
ON OSOBA ( RC ); podla rodneho cisla
CREATE INDEX XOSOBA
ON OSOBA (PRIEZVISKO ); podla priezviska
INSERT INTO
( )
VALUES ( )
INSERT INTO Osoba VALUES
(7009157046,’Igor’, ’Dvorský’, ’Mgr’, ’Muz’,
17,‘25.3.1996’);
Insert, ak vynechate niektory stlpec:
INSERT INTO Osoba (RC, Meno, Priezvisko, Pohlavie,
Cislovzdelania) VALUES
(7009157046, ’Igor’, ’Dvorsky’, ’Muz’, 17);
Insert z inej tabulky:
INSERT INTO Manager (ID, Person , PersNr , Typ)
SELECT * FROM Personal where ID> 1000;
Prikaz Delete
Priezvisko = ‘Dvorsky’;
Prikaz Update
UPDATE
SET =
[ , = ] . . .
WHERE
UPDATE OSOBA SET Titul = ‘Ing’
WHERE RC = 7009157046;
Prikaz SELECT
SELECT [DISTINCT] { * | }
FROM [ , ] [ , ]
[ WHERE ]
[ GROUP BY
[ HAVING ]]
[ ORDER BY [ ASC | DESC ] [ ,
[ ASC | DESC ] ]]:
porovnavacie operatory v SQL:
= rovna sa
> vacsie ako
< mensie ako
> vacsie alebo rovne =, vedla seba (problem so zobrazenim vedla seba)
< mensie alebo rovne =, vedla seba (problem so zobrazenim vedla seba)
nerovna sa sa pisu vedla seba lomene zatvorky (problem so zobrazenim vedla seba)
!= nerovna sa
Alias je alternativny stlpec alebo nazov tabulky
SELECT C.CUSTOMER_NAME AS NAME,
C.CUSTOMER_ADDRESS
FROM CUSTOMER C
WHERE NAME = ‘Home-Furnishings’;
COUNT ( ) - zistuje pocet riadkov daneho stlpca,
nie hodnoty NULL
SUM ( ) - sucet hodnot poli v numerickom poli
MIN ( ) - najmensia hodnota pola v stlpci
MAX ( ) - najväcsia hodnota pola v stlpci
AVG ( ) - priemerna hodnota pola v stlpci
SELECT AVG(VYSKA) FROM OSOBA
WHERE VYSKA > 170;
Jedna sa o operatory AND, OR, and NOT
vyuzivane v klauzule WHERE
SELECT RC, Meno, Priezvisko
FROM Osoba
WHERE Datumnastupu > ”1.1.1995” and
Datumnastupu < ”1.1.2002” or
( Cislovzdelania = (2 or 3) );
SELECT – Predikáty
SELECT COUNT (*)
FROM Cenik
WHERE Cena BETWEEN 1000 AND 2000; BETWEEN medzi hodnotami
-
SELECT SUM (Cena)
FROM Cenik
WHERE Vyrobca IN ( ‘Japan ‘, ‘ Slovakia ‘, ‘ UK ‘ ); IN v niecom
-
SELECT SUM (Cena)
FROM Cenik
WHERE NazovTovaru LIKE ‘Radio% ‘ ); LIKE % Radiomagnetofon ....
SELECT – ORDER BY
SELECT Vyska, Priezvisko, Meno
FROM Osoba
WHERE Vyska > 175
ORDER BY Vyska DESC, Priezvisko ASC;
Najskor sortuje podľa stlpca Vyska a nasledne
podla stlpca Priezvisko
SELECT – GROUP BY
SELECT Meno, AVG (Vyska)
FROM Osoba
GROUP BY Meno;
vysledok:
Meno AVG(Vyska)
Ivan 183,81
Peter 182,86
Jano 178,26
Viera 166,58
SELECT – HAVING
Pouziva sa s klauzulou GROUP BY
SELECT Meno, AVG (Vyska)
FROM Osoba
GROUP BY Meno
HAVING AVG (Vyska) > 170;
V dalsej casti sa dozviete o rozsireni SQL(Advanced), Select - Join, vnorene selekty atd... tesim sa na buduce :)
Čo je SQL?
SQL je standard pre relacne systemy riadena bazy dat (SRBD).
Cielom SQL - 92 Standard
- specifikovat syntax/semantiku pre vytvaranie dat a manipulaciu s datami
- definuje strukturu dat
- povoluje prenositelnost
- povoluje standardizovat neskorsie upravy a modifikacie
SQL3 ISO 9075:1999 (Zavadza OO prvky)
SQL prostredie
- Catalog - je mnozina schem ktora vytvara opis databazy
- Schema - je struktura, ktora obsahuje opis objektov vytvorenych uzivatelom (tables, views)
- Data Definition Language (prikazy, ktore definuju databazu, tabulky, constrains) DDL
- Data Manipulation Language (prikazy na pracu s datami v databaze) DML
- Data Cotrol Language (prikazy ktore riadia databazu)
SQL datove typy
- Retazcove (String): CHAR(n); VARCHAR2(n); LONG
- Ciselne (Numeric): NUMBER(p,q); NUMBER
- datumove (Data/time): DATE
SQL - Data Definition Language
Zakladne prikazy: CREATE
- CREATE SCHEMA -definuje cast databazy, ktoru vlastni konkretny uzivatel
- CREATE TABLE - definuje tabulku a jej stlpce
- CREATE VIEW - definuje logicku tabulku
Ukazeme si prikladik:
CREATE TABLE FAKTURA (
ID_CIS_FAK NUMBER(5) NOT NULL, 1. identifikacia datovych typov pre atributy
ID_ICO_ZAK NUMBER(5) NOT NULL, 2. identifikacia typov ktore mozu alebo nemozu
ID_C_ZAM NUMBER(5) NOT NULL, byt NULL
DATUMF VARCHAR2(8) NOT NULL,
CELKOVA_SUMA NUMBER(7) NOT NULL,
PRIMARY KEY (ID_CIS_FAK), 3. identifikacia PK a FK
FOREIGN KEY (ID_ICO_ZAK)
REFERENCES ZAKAZNIK, 4. stanovenie default hodnot
FOREIGN KEY (ID_C_ZAM)
REFERENCES ZAMESTNANEC 5. Identifikacia obmmedzeni pre stlpce(check)
);
prikazy v SQL sa odeluju bodkociarkou ; hodnoty NOT NULL musia byt zadane
Pouzitie pohladov VIEW : pohlady poskytuju riadeny pristup k jednotlivym tabulkam databazy
vyhody pohladov: zjednoduhsenie prikazov, vyssia ochrana a bezpecnost dat, vyssia programatorska produktivita
VIEW je virtualna tabulka, vytvorena dynamicky uzivatelom a neuchovava ziadne data. Je zalozeny na SQL select prikaze. Data su uchovavane a musia byt aktualizovane zmeny, aby korespondovali so zakladnou tabulkou
Prikladik:
CREATE VIEW Senior AS
SELECT Meno, Priezvisko, RC
FROM Osoba
WHERE DATUMNASTUPU < ”1.1.1985” ;
Prikazy Alter a Drop pre tabulky
ALTER TABLE Osoba ADD (VYSKA Varchar2(3)); prida stlpec VYSKA typu Varchar2 do tabulkyALTER TABLE Osoba MODIFY (VYSKA Number ); zmena atributu VYSKA na typ Number
DROP TABLE Osoba; zmaze tabulku Osoba
Vytvorenie Index-u
Indexacia urychluje pristup k datam tabulky
CREATE UNIQUE INDEX XUOSOBA
ON OSOBA ( RC ); podla rodneho cisla
CREATE INDEX XOSOBA
ON OSOBA (PRIEZVISKO ); podla priezviska
SQL - Data Manipulation Language
prikaz INSERT sluzi na naplnanie tabuliek (vkladanie udajov)INSERT INTO
( )
VALUES ( )
prikladiky:
INSERT INTO Osoba VALUES
(7009157046,’Igor’, ’Dvorský’, ’Mgr’, ’Muz’,
17,‘25.3.1996’);
Insert, ak vynechate niektory stlpec:
INSERT INTO Osoba (RC, Meno, Priezvisko, Pohlavie,
Cislovzdelania) VALUES
(7009157046, ’Igor’, ’Dvorsky’, ’Muz’, 17);
Insert z inej tabulky:
INSERT INTO Manager (ID, Person , PersNr , Typ)
SELECT * FROM Personal where ID> 1000;
Prikaz Delete
- konkretny riadok:
Priezvisko = ‘Dvorsky’;
- vsetky riadky:
Prikaz Update
UPDATE
SET =
[ , = ] . . .
WHERE
prikladik:
UPDATE OSOBA SET Titul = ‘Ing’
WHERE RC = 7009157046;
Prikaz SELECT
- SELECT
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
SELECT [DISTINCT] { * | }
FROM [ , ] [ , ]
[ WHERE ]
[ GROUP BY
[ HAVING ]]
[ ORDER BY [ ASC | DESC ] [ ,
[ ASC | DESC ] ]]:
DISTINCT - zamedzenie duplicity
* - vyhladaj vsetko
DESC, ASC urcuju zostupny alebo vzostupny sposob triedeniaporovnavacie operatory v SQL:
= rovna sa
> vacsie ako
< mensie ako
> vacsie alebo rovne =, vedla seba (problem so zobrazenim vedla seba)
< mensie alebo rovne =, vedla seba (problem so zobrazenim vedla seba)
nerovna sa sa pisu vedla seba lomene zatvorky (problem so zobrazenim vedla seba)
!= nerovna sa
SELECT- s pouzitim ALIAS
Alias je alternativny stlpec alebo nazov tabulky
SELECT C.CUSTOMER_NAME AS NAME,
C.CUSTOMER_ADDRESS
FROM CUSTOMER C
WHERE NAME = ‘Home-Furnishings’;
Agregovane funkcie
COUNT ( ) - zistuje pocet riadkov daneho stlpca,
nie hodnoty NULL
SUM ( ) - sucet hodnot poli v numerickom poli
MIN ( ) - najmensia hodnota pola v stlpci
MAX ( ) - najväcsia hodnota pola v stlpci
AVG ( ) - priemerna hodnota pola v stlpci
SELECT AVG(VYSKA) FROM OSOBA
WHERE VYSKA > 170;
SELECT – Boolean operátory
Jedna sa o operatory AND, OR, and NOT
vyuzivane v klauzule WHERE
SELECT RC, Meno, Priezvisko
FROM Osoba
WHERE Datumnastupu > ”1.1.1995” and
Datumnastupu < ”1.1.2002” or
( Cislovzdelania = (2 or 3) );
SELECT – Predikáty
SELECT COUNT (*)
FROM Cenik
WHERE Cena BETWEEN 1000 AND 2000; BETWEEN medzi hodnotami
-
SELECT SUM (Cena)
FROM Cenik
WHERE Vyrobca IN ( ‘Japan ‘, ‘ Slovakia ‘, ‘ UK ‘ ); IN v niecom
-
SELECT SUM (Cena)
FROM Cenik
WHERE NazovTovaru LIKE ‘Radio% ‘ ); LIKE % Radiomagnetofon ....
SELECT – ORDER BY
SELECT Vyska, Priezvisko, Meno
FROM Osoba
WHERE Vyska > 175
ORDER BY Vyska DESC, Priezvisko ASC;
Najskor sortuje podľa stlpca Vyska a nasledne
podla stlpca Priezvisko
SELECT – GROUP BY
SELECT Meno, AVG (Vyska)
FROM Osoba
GROUP BY Meno;
vysledok:
Meno AVG(Vyska)
Ivan 183,81
Peter 182,86
Jano 178,26
Viera 166,58
SELECT – HAVING
Pouziva sa s klauzulou GROUP BY
SELECT Meno, AVG (Vyska)
FROM Osoba
GROUP BY Meno
HAVING AVG (Vyska) > 170;
V dalsej casti sa dozviete o rozsireni SQL(Advanced), Select - Join, vnorene selekty atd... tesim sa na buduce :)





