Documente Academic
Documente Profesional
Documente Cultură
(sa mrež e učitati SQL Server Help, koji se nalazi na PEGAZ-u: \\STUDENTI\STUDENT\BAZE\mssql Books
Online. Startovati fajl tsqlref.chm, i u indeksu pronaći sintaksu naredbe)
Svaki student kreira svoju bazu podataka, na sledeći način:
CREATE DATABASE prvoslovoimenaiprezime
USE prvoslovoimenaiprezime
Zatim ćemo pogledati statistiku vezanu za novokreiranu bazu podataka, koriš ćenjem uskladiš tene procedure
sp_helpdb:
exec sp_helpdb prvoslovoimenaiprezime
Kreiranje tabela
CREATE TABLE
[ database_name.[ owner ] . | owner. ] table_name
( { < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] }
| [ { PRIMARY KEY | UNIQUE } [ ,...n ]
)
[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]
Odmah mož emo proveriti š ta smo uradili, pokretanjem uskladiš tene sistemske procedure:
exec sp_help album
… ili Object Browser-om, sa leve strane Query Analyzer-a – nakon kreiranja tabele osvež iti prikaz u stablu tako š to
ćemo Object Browser dovesti u fokus, pa pritisnuti F5.
Kreiranje tabele AUTOR:
CREATE TABLE Autor (
ID numeric(18, 0) IDENTITY (1,1) NOT NULL PRIMARY KEY,
naziv_imepr nvarchar(30) NOT NULL,
kontakt_tel numeric (10, 0) NULL )
Ako ž elimo da promenimo podrazumevanu vrednost tako š to ćemo najpre kreirati objekat DEFAULT pa ga
naknadno primeniti, to ćemo, na naš em primeru, uraditi ovako:
CREATE DEFAULT pakovanjedflt AS 'Kutija'
Koristi se ređe nego sledeća naredba, ALTER TABLE, i služ i izmeni same baze podataka. Odnosi se pre svega na
neke fizičke aspekte skladiš tenja baze.
ALTER TABLE
ALTER TABLE table
{ [ ALTER COLUMN column_name
{ new_data_type [ ( precision [ , scale ] ) ]
[ COLLATE < collation_name > ]
[ NULL | NOT NULL ]
| {ADD | DROP } ROWGUIDCOL }
]
| ADD
{ [ < column_definition > ]
| column_name AS computed_column_expression
} [ ,...n ]
| [ WITH CHECK | WITH NOCHECK ] ADD
{ < table_constraint > } [ ,...n ]
| DROP
{ [ CONSTRAINT ] constraint_name
| COLUMN column } [ ,...n ]
| { CHECK | NOCHECK } CONSTRAINT
{ ALL | constraint_name [ ,...n ] }
| { ENABLE | DISABLE } TRIGGER
{ ALL | trigger_name [ ,...n ] }
}
< column_definition > ::=
{ column_name data_type }
[ [ DEFAULT constant_expression ] [ WITH VALUES ]
| [ IDENTITY [ (seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL ]
[ COLLATE < collation_name > ]
[ < column_constraint > ] [ ...n ]
< column_constraint > ::=
[ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
Baze podataka ::: 4/4
Kako bismo dodali novu kolonu? Pretpostavimo da nam je potrebna kolona ADRESA u tabeli AUTOR. Promenu
ćemo izvesti na sledeći način:
ALTER TABLE AUTOR
ADD Adresa nvarchar(30) NULL
(Primetićemo da je duž ina kreiranog polja 60 umesto 30 – zbog prirode tipa podataka nvarchar. Taj tip podataka
skladiš ti UNICODE podatke koji zauzimaju po DVA bajta)
Pretpostavimo da sada ž elimo da ne dozvolimo NULL vrednosti u toj koloni, i da hoćemo da povećamo š irinu
kolone na 40 UNICODE karaktera:
ALTER TABLE AUTOR
ALTER COLUMN Adresa nvarchar(40) NOT NULL
OGRANIČ ENJA (Constraints) se takođe mogu postaviti iz DDL-a. Ograničenja (restrikcije) obezbeđ uju da
vaši podaci ispunjavaju određ ena pravila vezana za integritet podataka.
Postoje TRI TIPA ograničenja:
• ograničenja entiteta (vezana su za redove, ne vode računa o kolonama nego o čitavim redovima. Tipičan
primer ovakvog ograničenja je ograničenje primarnog ključa koji je slož en – zabranjuje se ponavljanje
kombinacije kolona, a ne pojedinačne vrednosti. To je, dakle, ograničenje koje se definiš e nad REDOM.
Primer: naš a tabela IZDAO koja je na kraju imala definisano ograničenje entiteta)
• ograničenja domena (ograničavaju se vrednosti koje se mogu pojaviti u pojedinim kolonama (na primer,
količina nečega mora biti veća ili jednaka nuli, ocena studenta je od 6 do 10… )
• ograničenja referencijalnog integriteta (vrednost podatka u jednoj koloni zavisi od postojanja takve
vrednosti u drugoj koloni – u istoj ili (češ će) drugoj tabeli)
Baze podataka ::: 5/5
Primary key
Videli smo kako se putem DDL skripta implementira ograničenje primarnog ključa (PRIMARY KEY) prilikom
stvaranja tabele. Međutim, ako smo zaboravili da kreiramo primarni ključ ranije, mož emo to učiniti naknadno,
preko ALTER TABLE.
Hajde prvo da obriš emo primarni ključ u tabeli Autor. To ćemo učiniti komandom DROP CONSTRAINT. Da bismo
mogli da obriš emo ograničenje, moramo znati NJEGOVO IME, koje se dodeljuje automatski pri stvaranju
ograničenja. Uskladiš tenom procedurom sp_help mož emo videti ovo ime – poslednji set rezultata, druga kolona.
ALTER TABLE Autor
DROP CONSTRAINT PK__Autor__30F848ED (najpre sa sp_help pogledati tačan naziv PK-a, jer se
razlikuje od mašine do mašine!!!)
Foreign key
Mož emo dodati ograničenja spoljnog ključa putem DDL skripta. Putem ovog ograničenja implementira se pravilo
referencijalnog integriteta. Pretpostavimo da ž elimo da povež emo tabele AUTOR i IZDAO, te IZDAO i ALBUM. To
ćemo učiniti sledećim iskazima (kombinovaćemo ON UPDATE i ON DELETE, čisto da bismo videli š ta je sve
moguće uraditi):
ALTER TABLE Izdao
ADD CONSTRAINT
FK_Izdao_Album FOREIGN KEY (ID_albuma) REFERENCES Album (ID_albuma)
ON UPDATE CASCADE
ON DELETE NO ACTION
Unique
"Mlađi brat" ograničenja PRIMARY KEY – mož e biti definisano viš e ovih ograničenja po tabeli, a njihov je smisao u
tome š to ne dozvoljavaju ponavljanje vrednosti po koloni za koje je definisano. Rezervisana reč UNIQUE prilikom
kreiranja tabele. Kasnije, prilikom izmene:
ALTER TABLE Album
ADD CONSTRAINT AK_naziv UNIQUE (naziv)
Check
Definiš e pravila za unos u vrednosti kolonu – implementacija domenskog ograničenja:
ALTER TABLE Album ADD CONSTRAINT
CK_Album CHECK (kolicina>0)
Baze podataka ::: 6/6
DROP
Služ i za brisanje objekata iz baze. Sintaksa: DROP <object type> <object name>. Moramo najpre skloniti
ograničenja spoljnog ključa:
alter table izdao
drop constraint FK_Izdao_Album
i na kraju:
drop database prvoslovoimenaiprezime