SQL DDL l l l CREATE ALTER DROP

  • Slides: 45
Download presentation
SQL – DDL l l l CREATE ALTER DROP l l l l Schema

SQL – DDL l l l CREATE ALTER DROP l l l l Schema Tablespace Index View Domain Constraint. . .

SQL DDL: CREATE SCHEMA l CREATE SCHEMA ime-sheme [ AUTHORIZATION ime-vlasnika-sheme] [ CREATE TABLE

SQL DDL: CREATE SCHEMA l CREATE SCHEMA ime-sheme [ AUTHORIZATION ime-vlasnika-sheme] [ CREATE TABLE iskaz {, CREATE TABLE iskaz }]| [ CREATE VIEW iskaz {, CREATE VIEW iskaz }] | [ CREATE INDEX iskaz {, CREATE INDEX iskaz}] | [ GRANT iskaz {, GRANT iskaz } ]

SQL DDL: DROP SCHEMA l DROP SCHEMA ime-sheme RESTRICT

SQL DDL: DROP SCHEMA l DROP SCHEMA ime-sheme RESTRICT

SQL DDL: bazna tabela CREATE TABLE l CREATE TABLE ime-bazne-tabele (def-kolone {, def-kolone} [,

SQL DDL: bazna tabela CREATE TABLE l CREATE TABLE ime-bazne-tabele (def-kolone {, def-kolone} [, def-prim-kljuca] [, def-str-kljuca {, def-str. kljuca}]) [, uslov-ogranicenja {, uslovogranicenja}]) [drugi-parametri]

SQL DDL: CREATE TABLE (cont. ) l def-kolone: ime-kolone tip-podatka [NOT NULL[[WITH] DEFAULT [vrednost]]]

SQL DDL: CREATE TABLE (cont. ) l def-kolone: ime-kolone tip-podatka [NOT NULL[[WITH] DEFAULT [vrednost]]] tip-podatka: INT (32) SMALLINT (16) DEC(p, q) (1<=p<=31, 0<=q<=p); BIGINT (64) FLOAT(p) ili FLOAT (1<=p<=24), DOUBLE (25<=p<=53) CHAR(m) CHAR DATE Itd. VARCHAR TIME TEXT BLOB

SQL DDL: CREATE TABLE definicija primarnog ključa l [NOT NULL [[WITH] DEFAULT [vrednost]]] l

SQL DDL: CREATE TABLE definicija primarnog ključa l [NOT NULL [[WITH] DEFAULT [vrednost]]] l PRK: [CONSTRAINT ime] PRIMARY KEY (ime-kolone {, ime-kolone}) l NOT NULL kolone

SQL DDL: CREATE TABLE definicija stranog ključa l STK: [CONSTRAINT ime] FOREIGN KEY (

SQL DDL: CREATE TABLE definicija stranog ključa l STK: [CONSTRAINT ime] FOREIGN KEY ( kolona {, kolona}) REFERENCES odnosna-tabela [ON DELETE efekat] [ON UPDATE efekat]

SQL DDL: ON DELETE efekat l l NO ACTION (podrazumevano, posle svih) RESTRICT(pre svih)

SQL DDL: ON DELETE efekat l l NO ACTION (podrazumevano, posle svih) RESTRICT(pre svih) SET NULL CASCADE

SQL DDL: ON UPDATE efekat l l NO ACTION (podrazumevano dejstvo) RESTRICT

SQL DDL: ON UPDATE efekat l l NO ACTION (podrazumevano dejstvo) RESTRICT

SQL DDL: CREATE TABLE: uslov ograničenja l l CONSTRAINT ime CHECK ( uslov) Primer:

SQL DDL: CREATE TABLE: uslov ograničenja l l CONSTRAINT ime CHECK ( uslov) Primer: CONSTRAINT GODTIR CHECK (GODINA >= 1980 OR TIRAZ >=5000) Uslov za kolonu: uz definiciju kolone Primer – uz kolonu K_SIF: CONSTRAINT BROJ_KNJIGE CHECK (VALUE >= 'k 1' AND VALUE <= 'k 5001')

CREATE TABLE: primer CREATE TABLE K (K_SIF CHAR(5) NOT NULL, NASLOV CHAR(50) NOT NULL

CREATE TABLE: primer CREATE TABLE K (K_SIF CHAR(5) NOT NULL, NASLOV CHAR(50) NOT NULL WITH DEFAULT, OBLAST CHAR(20), PRIMARY KEY (K_SIF))

CREATE TABLE: primer CREATE TABLE I (I_SIF CHAR(6) NOT NULL, NAZIV CHAR(20) NOT NULL

CREATE TABLE: primer CREATE TABLE I (I_SIF CHAR(6) NOT NULL, NAZIV CHAR(20) NOT NULL WITH DEFAULT, STATUS SMALLINT, DRZAVA CHAR(20) NOT NULL WITH DEFAULT, PRIMARY KEY (I_SIF))

CREATE TABLE: primer CREATE TABLE KI (K_SIF CHAR(5) NOT NULL, I_SIF CHAR(6) NOT NULL,

CREATE TABLE: primer CREATE TABLE KI (K_SIF CHAR(5) NOT NULL, I_SIF CHAR(6) NOT NULL, IZDANJE SMALLINT NOT NULL, GODINA SMALLINT, TIRAZ INTEGER, PRIMARY KEY (K_SIF, IZDANJE), FOREIGN KEY (K_SIF) REFERENCES K ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (I_SIF) REFERENCES I ON DELETE CASCADE)

ALTER TABLE l ALTER TABLE bazna-tabela ADD ime-kolone tip-podataka [NOT NULL [[WITH] DEFAULT [

ALTER TABLE l ALTER TABLE bazna-tabela ADD ime-kolone tip-podataka [NOT NULL [[WITH] DEFAULT [ vrednost]]] | ADD def-prim-kljuca | ADD def-str-kljuca | ADD uslov-ogranicenja | DROP def-prim-kljuca | DROP def-str-kljuca | DROP uslov-ogranicenja | drugi parametri

DROP TABLE l DROP TABLE bazna-tabela

DROP TABLE l DROP TABLE bazna-tabela

CREATE, DROP INDEX l l l CREATE [UNIQUE] INDEX ime-indeksa ON bazna-tabela ( ime-kolone

CREATE, DROP INDEX l l l CREATE [UNIQUE] INDEX ime-indeksa ON bazna-tabela ( ime-kolone [redosled] {, ime-kolone [redosled]}) [ drugi-parametri] Primer: CREATE INDEX XKIC ON KI (CENA) DROP INDEX ime-indeksa

CREATE, DROP VIEW l CREATE VIEW ime-pogleda [( kolona {, kolona})] AS puni upitni

CREATE, DROP VIEW l CREATE VIEW ime-pogleda [( kolona {, kolona})] AS puni upitni blok [WITH CHECK OPTION] l Primer: l CREATE VIEW JUGIZD AS SELECT I SIF, NAZIV FROM I WHERE DRZAVA='Jugoslavija' DROP VIEW ime-pogleda l Primer: DROP VIEW JUGIZD l

SQL - 92 – DDL: CREATE DOMAIN l l l Od SQL 92: CREATE

SQL - 92 – DDL: CREATE DOMAIN l l l Od SQL 92: CREATE DOMAIN naziv-domena [AS] tippodataka [ podrazumevana-definicija ] [ lista-definicija-ogranicenja-domena ] DROP DOMAIN naziv-domena opcija

SQL – DDL: CREATE DOMAIN l tip-podataka - skalarni tip, i: BIT [VARYING] (n)

SQL – DDL: CREATE DOMAIN l tip-podataka - skalarni tip, i: BIT [VARYING] (n) INTERVAL DATE TIMESTAMP.

SQL – DDL: CREATE DOMAIN l l l podrazumevana-definicija : DEFAULT podrazumevana-vrednost Na primer,

SQL – DDL: CREATE DOMAIN l l l podrazumevana-definicija : DEFAULT podrazumevana-vrednost Na primer, DEFAULT NULL lista-definicija-ogranicenja-domena, npr. CREATE DOMAIN K_SIF AS CHAR(5) DEFAULT '? ' CONSTRAINT BROJ_KNJIGE CHECK (VALUE >= 'k 1' AND VALUE <= 'k 5001')

SQL – DDL: CREATE DOMAIN l l Opcija pri uklanjanju domena može biti RESTRICT

SQL – DDL: CREATE DOMAIN l l Opcija pri uklanjanju domena može biti RESTRICT ili CASCADE ALTER DOMAIN l l l SET, DROP DEFAULT ADD, DROP CONSTRAINT Ne podržava pravu semantiku domena

CREATE TABLE: atributi nad domenima, ON UPDATE efekat CREATE TABLE KI (K_SIF NOT NULL,

CREATE TABLE: atributi nad domenima, ON UPDATE efekat CREATE TABLE KI (K_SIF NOT NULL, I_SIF NOT NULL, IZDANJE NOT NULL, GODINA NULL, TIRAZ 0, PRIMARY KEY (K_SIF, IZDANJE), FOREIGN KEY (K_SIF) REFERENCES K ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY (I_SIF) REFERENCES I ON DELETE CASCADE ON UPDATE CASCADE, CHECK (IZDANJE>0 AND IZDANJE<50 ))

ALTER, DROP TABLE: izmena, uklanjanje ALTER TABLE DROP TABLE [RESTRICT | CASCADE] – pogled,

ALTER, DROP TABLE: izmena, uklanjanje ALTER TABLE DROP TABLE [RESTRICT | CASCADE] – pogled, uslov ograničenja

Opšti uslov integriteta l l CREATE ASSERTION ime-pravila CHECK( uslov) DROP ASSERTION ime-pravila l

Opšti uslov integriteta l l CREATE ASSERTION ime-pravila CHECK( uslov) DROP ASSERTION ime-pravila l Uslov: logički izraz proizvoljne složenosti, kao u WHERE liniji, npr. l CREATE ASSERTION KI 1 CHECK (NOT EXISTS ( SELECT * FROM I, KI WHERE I. STATUS < 20 AND I. I_SIF = KI. I_SIF AND KI. TIRAZ > 5000))

CREATE SCHEMA l CREATE SCHEMA ime-sheme <autorizacija> <karakterski skup> /*default karakterskog skupa sheme*/ <opis

CREATE SCHEMA l CREATE SCHEMA ime-sheme <autorizacija> <karakterski skup> /*default karakterskog skupa sheme*/ <opis svake komponente sheme> [ definicija-domena | definicija-tabele | definicija-pogleda | definicija-uslova-ogranicenja {, definicija-domena}, {, definicija-tabele} {, definicija-pogleda}, {, definicija-uslova-ogranicenja} ]

DROP SCHEMA l DROP SCHEMA ime-sheme [RESTRICT | CASCADE]

DROP SCHEMA l DROP SCHEMA ime-sheme [RESTRICT | CASCADE]

SQL DML: unošenje INSERT INTO ime-tabele … 1. 2. Unošenje pojedinačne vrste Unošenje bloka

SQL DML: unošenje INSERT INTO ime-tabele … 1. 2. Unošenje pojedinačne vrste Unošenje bloka

SQL DML: unošenje l INSERT INTO ime-tabele [( ime-kolone {, ime-kolone})] VALUES ( konstanta

SQL DML: unošenje l INSERT INTO ime-tabele [( ime-kolone {, ime-kolone})] VALUES ( konstanta {, konstanta}) l INSERT INTO ime-tabele [( ime-kolone {, ime-kolone})] puni upitni blok

SQL: unošenje pojedinačne vrste INSERT INTO K (K_SIF, NASLOV) VALUES (‘k 7’, ‘Čarobna šuma’)

SQL: unošenje pojedinačne vrste INSERT INTO K (K_SIF, NASLOV) VALUES (‘k 7’, ‘Čarobna šuma’) Isto: l INSERT INTO K (K_SIF, NASLOV, OBLAST) VALUES ('k 7', ' Čarobna šuma ', NULL) Integritet l INSERT INTO KI (K_SIF, IZDANJE, TIRAZ) VALUES ('k 20', 'i 20', 3, 10000) - odbijen

SQL: unošenje bloka l CREATE TABLE IP_DRZAVA (I_SIF CHAR(6) NOT NULL, P_SIF CHAR(6) NOT

SQL: unošenje bloka l CREATE TABLE IP_DRZAVA (I_SIF CHAR(6) NOT NULL, P_SIF CHAR(6) NOT NULL, DRZAVA CHAR(20), PRIMARY KEY (I_SIF, P_SIF)); INSERT INTO IP_DRZAVA SELECT I_SIF, P_SIF, I. DRZAVA FROM I, P WHERE I. DRZAVA = P. DRZAVA

SQL: unošenje bloka - rezultat SELECT * FROM IP_DRZAVA

SQL: unošenje bloka - rezultat SELECT * FROM IP_DRZAVA

SQL: unošenje bloka - WITH l CREATE TABLE IZD_BC (NAZIV CHAR(20) NOT NULL) l

SQL: unošenje bloka - WITH l CREATE TABLE IZD_BC (NAZIV CHAR(20) NOT NULL) l INSERT INTO IZD_BC WITH PI AS (SELECT DISTINCT IME, NAZIV FROM P, I, KP, KI WHERE P. P SIF=KP. P SIF AND KP. K SIF=KI. K SIF AND KI. I SIF=I. I SIF) SELECT NAZIV FROM PI WHERE IME='B. Copic'

SQL: ažuriranje l UPDATE ime-tabele [ ime n-torne promenljive] SET ime-kolone = izraz {,

SQL: ažuriranje l UPDATE ime-tabele [ ime n-torne promenljive] SET ime-kolone = izraz {, ime-kolone = izraz} [ WHERE logicki-izraz ] Na primer UPDATE KI SET TIRAZ = TIRAZ*1. 1 WHERE i_SIF = ‘i 3’ l Integritet entiteta l Referencijalni integritet

SQL: ažuriranje - primeri UPDATE KI SET I_SIF = 'i 6' WHERE I SIF

SQL: ažuriranje - primeri UPDATE KI SET I_SIF = 'i 6' WHERE I SIF = 'i 4‘ odbija se l UPDATE KI SET TIRAZ = TIRAZ * 1. 1 WHERE I_SIF IN (SELECT I_SIF FROM I WHERE DRZAVA = 'Jugoslavija') l

SQL: brisanje DELETE FROM ime-tabele [ ime n-torne promenljive] [ WHERE logicki-izraz ] l

SQL: brisanje DELETE FROM ime-tabele [ ime n-torne promenljive] [ WHERE logicki-izraz ] l Na primer DELETE FROM KI WHERE I_SIF = ‘i 4’ l l l Referencijalni integritet, na primer: DELETE FROM I WHERE I_SIF='i 3'

SQL: Korelisani podupit u ažuriranju i brisanju l Na primer: Izbrisati izdavače koji izdaju

SQL: Korelisani podupit u ažuriranju i brisanju l Na primer: Izbrisati izdavače koji izdaju knjigu sa šifrom k 3. l DELETE FROM I WHERE 'k 3' IN (SELECT KI. K_SIF FROM KI WHERE KI. I_SIF = I. I_SIF)

DODATAK: CHARACTER -tipovi podataka Više kategorija karakterskih skupova Zavise od standarda, sistema / implementacije

DODATAK: CHARACTER -tipovi podataka Više kategorija karakterskih skupova Zavise od standarda, sistema / implementacije Ulazni (entry) nivo ANSI SQL: skup karaktera za tip CHARACTER definisan je implementacijom l l minimum: ASCII podskup od 95 grafičkih karaktera Ulazni i srednji (entry, intermediate) nivo saglasnosti sa FIPS (Federal Information Processing Standards) SQL zahteva podršku tipovima: l l SQL_CHARACTER: 83 ASCII karaktera - najuniverzalniji skup karakra ASCII_GRAPHIC: 95 grafičkih ASCII karaktera LATIN 1: 191 grafički karakter standarda ISO 8859 -1

Tipovi podataka l l ASCII_FULL: svih 256 8 -bitnog ASCII, ANSI/ISO 8859 -1, uključujući

Tipovi podataka l l ASCII_FULL: svih 256 8 -bitnog ASCII, ANSI/ISO 8859 -1, uključujući kontrolne karaktere SQL_TEXT: SQL_CHARACTER i drugi skupovi karaktera podržani implementacijom Npr, u FIPS: CREATE SCHEMA INFO_SCHEM AUTHORIZATION "_SYSTEM" DEFAULT CHARACTER SET SQL_TEXT

SQL 92 Sql 92: 3 kategorije karakterskih skupova l l l Nacionalni ili internacionalni

SQL 92 Sql 92: 3 kategorije karakterskih skupova l l l Nacionalni ili internacionalni standardi: u INFORMATION_SCHEMA, Obezbeđeni implementacijom: u INFORMATION_SCHEMA Definisani aplikacijom: u bilo kojoj shemi koju aplikacija izabere SQL_TEXT: uključuje sve SQL karaktere u svim karakterskim skupovima

SQL 92 tipovi podataka l l l <data type> : : = <character string

SQL 92 tipovi podataka l l l <data type> : : = <character string type> [ CHARACTER SET <character set specification> ] | <national character string type> | <bit string type> | <numeric type> | <datetime type> | <interval type> <character string type> : : = CHARACTER [ <left paren> <length> <right paren> ] | CHARACTER VARYING <left paren> <length> <right paren> | CHAR VARYING <left paren> <length> <right paren> | VARCHAR <left paren> <length> <right paren> (Implicitni <character set specification> definisan implementacijom)

SQL 92 tipovi podataka (nast. ) l <national character string type> : : =

SQL 92 tipovi podataka (nast. ) l <national character string type> : : = NATIONAL CHARACTER [ ( <length> ) ] | NATIONAL CHARACTER VARYING ( <length> ) | NATIONAL CHAR VARYING ( <length> ) | NCHAR VARYING ( <length> ) Isto što i CHARACTER / CHAR /(length) CHARACTER SET predefinisani_skup

My. SQL: karakterski skupovi Karakterski skupovi za: l l l server, bazu podataka, tabelu,

My. SQL: karakterski skupovi Karakterski skupovi za: l l l server, bazu podataka, tabelu, konekciju Default server character set: ISO-8859 -1 (Latin 1) l l Promena: --default-character-set=character_set_name Baza podataka: l l l CREATE DATABASE db_name [DEFAULT CHARACTER SET character_set_name [COLLATE collation_name]] ALTER DATABASE db_name [DEFAULT CHARACTER SET character_set_name [COLLATE collation_name]]

My. SQL: karakterski skupovi l l l l Tabela: CREATE TABLE table_name ( column_list

My. SQL: karakterski skupovi l l l l Tabela: CREATE TABLE table_name ( column_list ) [DEFAULT CHARACTER SET character_set_name [COLLATE collation_name]] ALTER TABLE table_name [DEFAULT CHARACTER SET character_set_name] [COLLATE collation_name] Kolona: column_name {CHAR | VARCHAR | TEXT} (column_length) [CHARACTER SET character_set_name [COLLATE collation_name]] Na primer, CREATE TABLE t 1 ( c 1 CHAR(10) CHARACTER SET latin 1 ) DEFAULT CHARACTER SET latin 1 COLLATE latin 1_danish_ci;

My. SQL: karakterski skupovi Od 4. 1: podrška Unicode kroz utf 8 i ucs

My. SQL: karakterski skupovi Od 4. 1: podrška Unicode kroz utf 8 i ucs 2 skupove karaktera Primer (ekvivalentne deklaracije): l l l CHAR(10) CHARACTER SET utf 8 NATIONAL CHARACTER(10) NCHAR(10) (utf 8 je predefinisani skup za NCHAR)

mysql> SHOW CHARACTER SET; l l l l l l l l l l

mysql> SHOW CHARACTER SET; l l l l l l l l l l +-----------------------------+--------+ | Charset | Description | Default collation | Maxlen | +-----------------------------+--------+ | big 5 | Big 5 Traditional Chinese | big 5_chinese_ci | 2 | | dec 8 | DEC West European | dec 8_swedish_ci | 1 | | cp 850 | DOS West European | cp 850_general_ci | 1 | | hp 8 | HP West European | hp 8_english_ci | 1 | | koi 8 r | KOI 8 -R Relcom Russian | koi 8 r_general_ci | 1 | | latin 1 | ISO 8859 -1 West European | latin 1_swedish_ci | 1 | | latin 2 | ISO 8859 -2 Central European | latin 2_general_ci | 1 | | swe 7 | 7 bit Swedish | swe 7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | cp 1251 | Windows Cyrillic | cp 1251_bulgarian_ci | 1 | | hebrew | ISO 8859 -8 Hebrew | hebrew_general_ci | 1 | | tis 620 | TIS 620 Thai | tis 620_thai_ci | 1 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | koi 8 u | KOI 8 -U Ukrainian | koi 8 u_general_ci | 1 | | gb 2312 | GB 2312 Simplified Chinese | gb 2312_chinese_ci | 2 | | greek | ISO 8859 -7 Greek | greek_general_ci | 1 | | cp 1250 | Windows Central European | cp 1250_general_ci | 1 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | latin 5 | ISO 8859 -9 Turkish | latin 5_turkish_ci | 1 | | armscii 8 | ARMSCII-8 Armenian | armscii 8_general_ci | 1 | | utf 8 | UTF-8 Unicode | utf 8_general_ci | 3 | | ucs 2 | UCS-2 Unicode | ucs 2_general_ci | 2 | | cp 866 | DOS Russian | cp 866_general_ci | 1 | | keybcs 2 | DOS Kamenicky Czech-Slovak | keybcs 2_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | cp 852 | DOS Central European | cp 852_general_ci | 1 | | latin 7 | ISO 8859 -13 Baltic | latin 7_general_ci | 1 | | cp 1256 | Windows Arabic | cp 1256_general_ci | 1 | | cp 1257 | Windows Baltic | cp 1257_general_ci | 1 | | binary | Binary pseudo charset | binary | 1 | +-----------------------------+--------+