Jazyk SQL Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016
Jazyk SQL - Structured Query Language SQL je počítačový jazyk určený na komunikáciu s relačným SRBD neprocedurálny (deklaratívny) jazyk čo chceme získať, nie ako chceme údaje získať (nie je to postupnosť krokov) SRBD získa údaje z databázy (fyzické úložisko) založený na relačnom kalkule n-tíc má matematický základ
História SQL 1970s Structured English Query Language (SEQUEL or SEQL) 1980 premenovaný na SQL 1986 SQL-86 ANSI štandard 1989 SQL-89 1992 SQL-92, výraznejšia zmena údajové typy pre dátum, čas množinové operácie zmeny exis. štruktúry ALTER, DROP SQL:1999, SQL:2003, SQL:2008, SQL: 2011
Databázové servery Oracle MySQL Microsoft SQL Server Mongo DB (NoSQL) PostgreSQL IBM DB2 Microsoft Access Apache Cassandra (NoSQL) SQLite Redis (NoSQL) [1] http://db-engines.com/en/ranking (2016)
Typy príkazov jazyka SQL DDL (Data Definition Language) jazyk na definíciu štruktúry databázy vrátane zmien v štruktúre CREATE, DROP, ALTER, TRUNCATE DML (Data Manipulation Language) jazyk na manipuláciu s údajmi vrátane dopytov SELECT, INSERT, UPDATE, DELETE DCL (Data Control Language) jazyk pre riadenie prístupu k údajom GRANT, REVOKE
Údajové typy údajový typ definuje množinu hodnôt, ktoré môže nadobúdať stĺpec (doména atribútu) umožňuje definovať doménovú integritu kategórie niektorých zabudovaných údajových typov pre prácu s reťazcami znakov (bitov) číselnými hodnotami dátumom a časom multimediálnymi údajmi (BLOB)
Základné údajové typy INTEGER - celé čísla FLOAT - desatinné čísla NUMBER(n,s) - číslo s deklarovanou presnosťou CHAR(n) - reťazec s fixnou dĺžkou VARCHAR(n) - reťazec s premenlivou dĺžkou CLOB - obrovské (max 8TB) reťazce (texty) DATE - rok, mesiac, dátum, čas, minúty, sekundy TIMESTAMP - rozširuje typ DATE o zlomky sekúnd
Príkaz CREATE TABLE vytvára tabuľku (schémy jednotlivých vzťahov) nezabudnúť vykonať dostatočnú analýzu pri vytváraní tabuľky! syntax: CREATE TABLE meno_tabuľky( nazov1 typ1 [obmedzenia], nazov2 typ2 [obmedzenia],... nazovn typn [obmedzenia] );
Príklad použitia CREATE TABLE CREATE TABLE fbuser ( id NUMBER(10), meno VARCHAR2(10), priezvisko VARCHAR2(20), datum_narodenia DATE, pohlavie CHAR, adresa VARCHAR2(256) );
Príkaz DROP TABLE odstráni tabuľku syntax: DROP TABLE názov_tabuľky; príklad: DROP TABLE student;
Preventívne odstránenie odstráni predchádzajúcu verziu tabuľky (alebo pohľadu) pred vytvorením novej umiestňuje sa pred samotné vytvorenie tabuľky (alebo pohľadu) zabezpečí dostupnosť názvu používa sa najmä pri vývoji softvéru syntax DROP VIEW názov; CREATE VIEW názov AS...; alebo CREATE OR REPLACE VIEW názov AS...;
Odporúčané kroky pri vytváraní tabuľky 1. identifikovať údajové typy jednotlivých atribútov (stĺpcov) 2. identifikovať stĺpce, ktoré musia a ktoré nesmú byť nulitné 3. identifikovať stĺpce, ktoré musia byť unikátne 4. identifikovať páry primárnych a cudzích kľúčov 5. identifikovať predvolené hodnoty 6. identifikovať obmedzenia pre stĺpce (vzhľadom na použitú doménu) 7. vytvoriť tabuľku
Zobrazenie informácií o tabuľke informácie (opis) o tabuľke predstavuje: zoznam atribútov (stĺpcov) tabuľky, ich údajové typy, a ohraničenia (ak existujú). syntax: DESC tabuľka; DESCRIBE tabuľka;
Ohraničenia pre tabuľky vynútenie ohraničenia nad tabuľkou pri vkladaní, zmene alebo mazaní povinnosť uvedenia hodnoty NOT NULL unikátne hodnoty UNIQUE primárne kľúče PRIMARY KEY cudzie kľúče FOREIGN KEY kontrola CHECK predvolená hodnota - DEFAULT
Povinnosť uvedenia hodnoty, unikátne a predvolené hodnoty CREATE TABLE osoba ( id INT PRIMARY KEY, meno VARCHAR(20) NOT NULL, priezvisko VARCHAR(30) NOT NULL, rodne_cislo CHAR(10) UNIQUE, mesto VARCHAR(30) DEFAULT 'Kosice' );
Porovnanie NOT NULL, UNIQUE a PRIMARY KEY NOT NULL stĺpec nie je možné vložiť hodnotu NULL hodnoty sa môžu opakovať UNIQUE stĺpec je možné vložiť hodnotu NULL hodnoty sa nemôžu opakovať PRIMARY KEY stĺpec nie je možné vložiť hodnotu NULL hodnoty sa nemôžu opakovať
Primárne kľúče - jednoduchý kľúč (jeden stĺpec) CREATE TABLE predmet ( id INT PRIMARY KEY, nazov VARCHAR(32) NOT NULL ); CREATE TABLE predmet ( id INT, nazov VARCHAR(32) NOT NULL, CONSTRAINT predmet_pk PRIMARY KEY (id) );
Primárne kľúče - zložený kľúč (viacero stĺpcov) CREATE TABLE predmet_zapis ( id_predmet INT, id_student INT, PRIMARY KEY ( id_predmet, id_student) );
Cudzie kľúče a referenčná integrita I. cudzí kľúč predstavuje vzťah (linku) medzi stĺpcami dvoch tabuliek tabuľka s cudzím kľúčom: child table tabuľka obsahujúca primárny kľúč: referenced (parent) table kľúčové slovo: REFERENCES syntax: REFERENCES tabuľka(stĺpec)
Cudzie kľúče a referenčná integrita II. CREATE TABLE predmet_zapis ( id_predmet INT REFERENCES predmet(id), id_student INT REFERENCES student(id), PRIMARY KEY (id_predmet, id_student) );
Cudzie kľúče a referenčná integrita III. CREATE TABLE predmet_zapis ( id_predmet INT, id_student INT, PRIMARY KEY (id_predmet, id_student), FOREIGN KEY(id_predmet) REFERENCES predmet(id), FOREIGN KEY(id_student) REFERENCES student(id) );
Kontrola CHECK kontrola podmienky pri vkladaní a aktualizácii; môže ich byť viacero príklad: CREATE TABLE student (... rocnik INT NOT NULL CHECK(rocnik>=1 AND rocnik<=5) -- CONSTRAINT rocnik_obmedzenie -- CHECK(rocnik>=1 -- AND rocnik<=5) );
Príkaz ALTER TABLE zmení štruktúru tabuľky pridaním (ADD) stĺpca, odstránením (DROP COLUMN) stĺpca, alebo zmenením (MODIFY) stĺpca syntax: ALTER TABLE tabuľka operácia stĺpec [typ] [ohraničenie];
Príklad použitia príkazu ALTER TABLE pridanie stĺpca: ALTER TABLE student ADD sex CHAR; odstránenie stĺpca: ALTER TABLE student DROP COLUMN sex; zmena stĺpca: ALTER TABLE tabuľka MODIFY name VARCHAR(20);
Otázky?