Transcript Create Table - Vegova
SQL DDL Structured Query Language – Data Description Language
Pozor:
odvisnost od SUPB,
veliko različnih implementacij SQL DDL
SQL DDL – osnovni stavki
Definiranje tabel
(tabela, atributi, integritetne omejitve, tuji ključi) Kreiranje tabel – CREATE TABLE Spreminjanje tabel – ALTER TABLE Brisanje tabel – DROP TABLE
Definiranje indeksov
Kreiranje sekundarnih indeksov – CREATE INDEX Brisanje primarnega / sekundarnih indeksov – DROP INDEX
Definiranje uporabnikov, pravic
Kreiranje uporabnikov, skupin – CREATE USER Dodeljevanje pravic – GRANT ….
Brisanje pravic – REVOKE ….
2
1. Delo s tabelami – CREATE TABLE
Create Table …
ime_tabele ( atribut1 tip1 integritetne_omejitve, atribut2 tip2 integritetne_omejitve,
Primary Key
(atributx, atributy, …) ); -najpogostejše integritetne omejitve: NOT NULL UNIQUE CHECK pogoj DEFAULT vrednost -možni podatkovni tipi za atribute: Odvisni od SUPB 3
1. Delo s tabelami – CREATE TABLE
(nad.) Primer stavka za kreiranje tabele Proslava Proslava(ProslavaID:A5,PraznikID Praznik:N, Vsebina:A50, Opis o :A500, Cena o :N) PB mySQL
Create table
Proslava ( ProslavaID Char(5) NOT NULL, Vsebina Char(50) NOT NULL, Opis Varchar(255), PraznikID Int NOT NULL, Cena Double,
Primary Key
(ProslavaID,PraznikID)) TYPE = MyISAM; PB FireBird
Create Table Primary Key
); "Proslava" ( "ProslavaID" Char(5) NOT NULL, "Vsebina" Char(50) NOT NULL, "Opis" Varchar(255), "PraznikID" Integer NOT NULL, "Cena" Float Check (>0), ("ProslavaID","PraznikID") PB PosgreSQL
Create table
Proslava ( ProslavaID Char(5) NOT NULL, Vsebina Char(50) NOT NULL, Opis Varchar(255) NULL , PraznikID Integer NOT NULL, Cena Double precision NULL Check (>0 ),
primary key
); (ProslavaID,PraznikID) Posebnosti SUPB-jev: mySQL – nima integritetne omejitve Check, omogoča izbiro datotečne organizacije fizične datoteke: heap/myISAM/ISAM/…, označi le ne opcijske atribute FireBird – ima integtitetno omejitev Check, označi le ne-opcijske artibute PostgreSQL – ima integritetno omejitev Check, označi opcijske in ne-opcijske atribute 4
1. Delo s tabelami – ALTER TABLE
Uporaba: – Dodajanje novih atributov v obstoječo tabelo
ALTER TABLE
ime_tabele
ADD
atribut tip;
– Brisanje atributov iz tabele
ALTER TABLE
ime_tabele
DROP
atribut;
– Dodajanje tujih ključev
ALTER TABLE
ime_tabele
ADD FOREIGN KEY
ime_kljuca
REFERENCES
ime_tabele (ime_atrubuta)
ON
operacija1 akcija1
ON
operacija2 akcija2; 5
1. Delo s tabelami – ALTER TABLE
(nad.) Primer stavka za kreiranje tujega ključa PraznikID tabele Proslava, ki referencira tabelo Praznik Proslava(ProslavaID:A5,PraznikID Praznik:N, Vsebina:A50, Opis o :A500, Cena o :N) mySQL:
Alter table
Proslava
add
Index IX_(PraznikID);
Alter table
Proslava
add Foreign Key
Praznik (PraznikID)
on
(PraznikID) delete cascade
on references
update cascade; Firebird:
Alter Table references
"Proslava"
add Foreign Key
"Praznik" ("PraznikID")
on
("PraznikID") update cascade
on
delete cascade ; PostgreSQL:
Alter table
Proslava
add foreign key
Praznik (PraznikID)
on
(PraznikID) update cascade
on references
delete cascade ; 6
1. Delo s tabelami – DROP TABLE
(nad.) Zelo zanimiv stavek ): Najbolje dela takrat, ko si to najmanj želiš Stavek, ki empirično dokazuje pomen rednega arhiviranja PB Sintaksa – preprosta in praviloma enovita za vse SUPB:
DROP TABLE
ime_tabele; Primeri stavkov za brisanje tabele Proslava: mySQL: drop table IF EXISTS Proslava; Firebird: Drop Table "Proslava"; PostgreSQL: Drop table Proslava; 7
2. Delo z indeksi
Kreiranje sekundarnih indeksov
CREATE INDEX
ime_indeksa
ON
ime_tabele (atribut1, atribut2, ..); Brisanje sekundarnih indeksov
DROP INDEX
ime_indeksa; ali DROP INDEX ime_indeksa on ime_tabele; ali … Primeri stavkov, ki za tabelo Proslava najprej naredijo sekundarni indeks ‘poCeni’, indeks je urejen padajoče – od najdražjih proslav do najcenejših in ga potem izbrišejo mySQL: Create Index poCeni ON Proslava (Cena); Drop index poCeni on Proslava; Firebird: Create DESCENDING Index "poCeni" ON "Proslava" ("Cena"); Drop Index "poCeni"; PostgreSQL: Create index poCeni on Proslava using btree( Cena ); Drop index poCeni; 8
3. Definiranje uporabnikov, pravic
Definiranje uporabnikov
CREATE USER
ime_uporabnika; Definiranje skupin uporabnikov
CREATE GROUP
ime_skupine;
CREATE ROLE
ime_skupine; Dodajanje uporabnikov v skupino
ALTER GROUP
ime_skupine
ADD USER GRANT
ime_skupine
TO
ime_uporabnika; ime_uporabnika; Dodajanje pravic
GRANT
pravica
ON
ali
GRANT
pravica
ON
ime_tabele
TO
ime_uporabnika|ime_skupine; ime_tabele
TO GROUP
ime_skupine; Brisanje pravic
REVOKE
pravica
ON
ali
REVOKE
pravica
ON
ime_tabele
TO
ime_uporabnika; ime_tabele
TO GROUP
ime_skupine; 9
3. Definiranje uporabnikov, pravic
Primer PostgreSQL skripte za definiranje uporabniških pravic: Create group Informator; /* naredi skupino*/ Create user Skrbnik; /* kreira uporabnike */ Create user Matej; Create user Peter; Alter group Informator add user Matej; /* polni skupino */ Alter group Informator add user Peter; Grant select on Drzava to group Informator; /* dodeljuje pravice skupini */ Grant select on Praznik to group Informator; … Grant select on Drzava to Skrbnik; /* dodeljuje pravice uporabnikom */ Grant update on Drzava to Skrbnik; Grant delete on Drzava to Skrbnik; … 10
3. Definiranje uporabnikov, pravic
(nad.) Podobno v FireBird /* kreiranje skupine */ Create Role "Informator"; /* dodajanje uporabnikov v skupino */ Grant "Informator" to "Matej"; Grant "Informator" to "Peter"; /* definiranje pravic skupine */ Grant select on "Drzava" to "Informator"; Grant select on "Praznik" to "Informator"; Grant select on "Proslava" to "Informator"; Grant select on "Ima" to "Informator"; 11