Create Table - Vegova

Download Report

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