SQL časť: 1. PDF Vytlačiť E-mail
Napísal Jan Zabka   
Streda, 03 Február 2010 19:07
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.

Č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
Dalsie prikazy: CREATE: INDEX, COLLATION, TRANSLATION, ASSERTION, DOMAIN

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 tabulky
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

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:
DELETE FROM OSOBA WHERE
Priezvisko = ‘Dvorsky’;

  • vsetky riadky:
DELETE FROM OSOBA ;

Prikaz Update

UPDATE
SET =
[ , = ] . . .
WHERE


prikladik:


UPDATE OSOBA SET Titul = ‘Ing’
WHERE RC = 7009157046;

Prikaz SELECT

  • SELECT
Zoznam stlpcov

  • FROM
Indikuje tabulku alebo pohlad, odkial budu ziskane data

  • WHERE
Indikuje podmienky, na zaklade ktorych budu riadky vyselektovane
  • GROUP BY
Indikuje kategorizaciu vysledkov
  • HAVING
Indikuje podmienky pre group by
  • ORDER BY
Sortuje vysledok podla specifikovanych kriterii

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 triedenia
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

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 :)

Komentáre (3)
1 Štvrtok, 04 Február 2010 14:59
xchg
dik, takato mensia referencia sa mi teraz zide :)

Btw, ta captcha tu na blogoch ma zabija :D
2 Štvrtok, 04 Február 2010 20:40
Igor
Ved ta captcha nie je az taka hrozna :-)

Aj ja sa tesim SQL. Ked som zbadal z uvodu tak som sa potesil. Good Work
3 Piatok, 04 Jún 2010 17:52
rado
serus,teraz sprtam na statnice a googlim nejake veci a narazil som na toto.ved tu mas cele nase skripta natunene hehe z MTF. len tak dalej.mohol by si sem napisat nieco viac o ALIASoch nejako sa neviem dopatrat k nejakemu obsirnejsiemu vysvetleniu.

Pridajte svoj komentár

Vaše meno:
Komentár:
Posledná zmena v Štvrtok, 04 Február 2010 09:51
 

O autorovi Janico

Janico
Názov blogu
: Moj blog
Popis blogu: Prepacte ze nepouzivam diakritiku....

O projekte LinuxON.sk

Internetový portál pre užívateľov, fanúšikov, záujemcov operačného systému linux a voľne šíriteľného softvéru. Viac...

LinuxON.sk je aj na facebooku