SQL DDL l l l CREATE ALTER DROP

![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](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-2.jpg)


![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]]]](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-5.jpg)
![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](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-6.jpg)
![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 (](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-7.jpg)






![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 [](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-14.jpg)

![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](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-16.jpg)
![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](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-17.jpg)

![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)](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-19.jpg)



![ALTER, DROP TABLE: izmena, uklanjanje ALTER TABLE DROP TABLE [RESTRICT | CASCADE] – pogled, ALTER, DROP TABLE: izmena, uklanjanje ALTER TABLE DROP TABLE [RESTRICT | CASCADE] – pogled,](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-23.jpg)


![DROP SCHEMA l DROP SCHEMA ime-sheme [RESTRICT | CASCADE] DROP SCHEMA l DROP SCHEMA ime-sheme [RESTRICT | CASCADE]](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-26.jpg)

![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](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-28.jpg)




![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 {,](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-33.jpg)

![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](https://slidetodoc.com/presentation_image_h2/66d1a84f9b864d7c1eaf68433b6f6949/image-35.jpg)










- Slides: 45
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 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: 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]]] 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 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 ( 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) SET NULL CASCADE
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: 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 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 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, 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 [ 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
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 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 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) INTERVAL DATE TIMESTAMP.
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 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, 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, uslov ograničenja
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 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]
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 {, 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’) 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 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 - 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 {, 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 = '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 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 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 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 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 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 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> : : = 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, 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 ) [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 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 +-----------------------------+--------+ | 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 | +-----------------------------+--------+