izmenjena prezentacija sql
TRANSCRIPT
SQLVežbe V
CREATE DATABASECREATE DATABASE naziv-baze-podataka
[ ON < filespec > [ ,...n ] ] [ LOG ON < filespec > [ ,...n ] ]
< filespec > ::= ( [ NAME = logical_file_name , ] FILENAME = 'os_file_name'
[ , SIZE = size ] [ , MAXSIZE = { max_size | UNLIMITED } ] [ , FILEGROWTH = growth_increment ] ) [ ,...n ] )
Primer
CREATE DATABASE student ON ( NAME = ’stud_sl_pod’, FILENAME = 'C:\Program Files\Microsoft SQL Server\
MSSQL.1\ MSSQL\Data\student.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )LOG ON
( NAME = 'stud_sl_log', FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\Data\student.ldf’, SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )
Tip datoteke Ekstenzija
Primarna datoteka podataka
.mdf
Sekundarne datoteke podataka
.ndf
Transakcioni log fajl .ldf
CREATE DATABASE sajt ON(NAME='sajt_pod',FILENAME=‘D:\procedura\sajt.mdf')LOG ON(NAME='sajt_log',FILENAME=‘D:\procedura\sajt.ldf')
ALTER DATABASEALTER DATABASE database_name
{ ADD FILE < filespec > [ ,...n ] | ADD LOG FILE < filespec > [ ,...n ] | REMOVE FILE logical_file_name | MODIFY FILE < filespec > | MODIFY NAME = new_dbname
| SET < optionspec > [ ,...n ] [ WITH < termination > ]}
< optionspec > = < state_option >
| < cursor_option > | < auto_option > | < sql_option > | < recovery_option >
< state_option > = { SINGLE_USER | RESTRICTED_USER | MULTI_USER } | { OFFLINE | ONLINE } | { READ_ONLY | READ_WRITE }
Primer
ALTER DATABASE studentADD FILE ( NAME = 'Stud_sl_pod2', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\student.ndf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% )
DROP DATABASE
DROP DATABASE database_name [ ,...n ]USE database_name
Naredbe SQL-a
• Naredbe vezane za šemu baze podataka CREATE, ALTER, DROP
• Naredbe vezane za podatke INSERT, BULK INSERT, UPDATE, SELECT, DELETE
• Naredbe vezane za transakcije COMMIT, ROLLBACK
• Naredbe vezane za kontrolu CALL, RETURN
• Naredbe vezane za sesije SET
Tabele i kolone – Osnovna svojstva
•Bazna tabela – tabela čiji se podaci smeštaju u bazu podataka
•Tabela pogleda – imenovani upit koji se može pozvati korišćenjem datog imena
•Izvedena tabela – rezultat izvršavanja upita
SQL TIPOVI PODATAKA
• Binarni BIT, BIT VARYING, BLOB
• Datumski DATE, TIME
• Logički BOOLEAN
• Numerički▫ tačni
INT, SMALLINT, DEC▫ približni
REAL, FLOAT
• Tekstualni CHAR, VARCHAR, CLOB
CREATE TABLE
CREATE TABLE naziv-tabele ( def.-kolone-1,..., [ def.-ograničenja-na-nivou-tabele-1, ...] )
Definicija-kolonenaziv-kolone tip-podatka [DEFAULT klauzula] [def.-ograničenja-na-
nivou-kolone]Definicija-ograničenja-na-nivou-kolone[NOT NULL] [UNIQUE | DISTINCT] [PRIMARY KEY]
[REFERENCES klauzula] [CHECK klauzula]REFERENCES naziv-tabele [(naziv-kolone-1)]CHECK (uslov)Definicija-ograničenja-na-nivou-tabele[UNIQUE|DISTINCT (naziv-kol-1, ...)] [PRIMARY KEY (naziv-kol-
1, ...)] [FOREIGN KEY (naziv-kol-1, ...) REFERENCES klauzula] [CHECK klauzula]
PrimerCREATE TABLE student (bro_dos CHAR(10) PRIMARY KEY, pre_stu VARCHAR(20) NOT NULL, ime_stu VARCHAR(20) NOT NULL, pol_stu CHAR(1) DEFAULT 'z' CONSTRAINT stud_c_po CHECK (pol_stu IN ('z','m')), dat_rod_stu SMALLDATETIME NOT NULL)
CREATE TABLE upis (bro_dos CHAR(10) CONSTRAINT upis_r_bd REFERENCES student, sko_god SMALLINT CONSTRAINT upis_c_sg CHECK (sko_god BETWEEN 1970 AND 2010), god_stu SMALLINT CONSTRAINT upis_c_gs CHECK (god_stu BETWEEN 1 AND 4), nac_fin CHAR(1) CONSTRAINT upis_c_ns CHECK (nac_fin='b' OR nac_fin='s'), CONSTRAINT upis_pk PRIMARY KEY (bro_dos, sko_god))
CREATE TABLE ispit
(bro_dos CHAR(10) CONSTRAINT ispit_r_bd REFERENCES student, sko_god SMALLINT CHECK (sko_god BETWEEN 1970 AND 2010), isp_rok SMALLINT CHECK (isp_rok BETWEEN 1 AND 13), sif_pre SMALLINT, ocena SMALLINT CHECK (ocena BETWEEN 5 AND 10 ), dat_isp SMALLDATETIME, PRIMARY KEY (bro_dos, sko_god, isp_rok, sif_pre))
ALTER TABLEALTER TABLE naziv-tabele [ADD klauzula] [DROP klauzula] [ALTER
klauzula] ADD klauzulaADD naziv-kolone tip-podatka [DEFAULT klauzula] [def.-
ograničenja-na-nivou-kolone] [BEFORE naziv-kolone]ADD [UNIQUE|DISTINCT (naziv-kol-1, ...)] [PRIMARY KEY (naziv-
kol-1, ...)] [FOREIGN KEY (naziv-kol-1, ...) REFERENCES klauzula] [CHECK klauzula]
DROP klauzulaDROP naziv-koloneDROP naziv-ograničenjaALTER klauzulaALTER naziv-kolone tip-podatka [DEFAULT klauzula] [def.-
ogranicenja-na-nivou-kolone]
Primer
ALTER TABLE upis ADD dat_up SMALLDATETIME
ALTER TABLE ispit DROP CONSTRAINT ispit_r_bd
ALTER TABLE ispit ADD FOREIGN KEY (bro_dos, sko_god) REFERENCES upis
CREATE INDEX
CREATE [UNIQUE] [CLUSTER] INDEX naziv-indeksa ON naziv-tabele (naziv-kol-1 [DESC], ...)
INSERT
INSERT [ INTO] { table_name| view_name }
[ ( column_list ) ] { VALUES ( { DEFAULT | NULL | expression } [ ,...n] ) | select_statement
}
INSERT INTO naziv-tabele [ (naziv-kolone-1, ...) ] VALUES klauzula | SELECT iskaz
VALUES klauzulaVALUES (NULL | broj | "string" | konstanta,
...)konstanta
USER | DATETIME | TODAY | CURRENT | ...
BULK INSERT
BULK INSERT naziv_tabele FROM 'data_file' }
[ WITH ( [ CHECK_CONSTRAINTS ] [ [ , ] FIELDTERMINATOR [ = 'field_terminator' ] ] [ [ , ] FIRSTROW [ = first_row ] ] [ [ , ] LASTROW [ = last_row ] ] [ [ , ] ROWTERMINATOR [ = 'row_terminator' ] ] ) ]
UPDATEUPDATE naziv-tabele SET klauzula [ WHERE uslov
]SET klauzulaSET naziv-kolone-1 = izraz | (SELECT iskaz) |
NULL, ... SET (naziv-kolone-1,...) = (izraz | (SELECT iskaz) |
NULL, ...)uslov[NOT] uslov-poredjenja-1 | uslov-sa-podupitom-1
[AND | OR [NOT] uslov-poredjenja-2, ...]]
DELETE
DELETE naziv-tabele [ WHERE uslov ]
USLOVIuslovi-poredjenjaizraz relacioni-operator izrazizraz [NOT] BETWEEN izraz
AND izrazizraz [NOT] IN (skup-
vrednosti)naziv-kolone IS [NOT] NULLnaziv-kolone [NOT] LIKE
string
uslovi-sa-podupitomizraz [NOT] IN (SELECT
iskaz)[NOT] EXISTS (SELECT
iskaz)izraz rel.-op. ALL | ANY |
SOME (SELECT iskaz)
Relacioni operatori: <, <=, >, >=, =, <>, !=
MATCHES vs. LIKE
SELECTSELECT klauzulaSELECT [ALL | DISTINCT | UNIQUE] izraz-1 [, izraz-2, ...]
izrazi{naziv-kolone | [naziv-tabele.]* | konstanta | agregatna-funkcija |
FROM klauzulaFROM [OUTER] naziv-tabele1 [,[OUTER] naziv-tabele2, ...]WHERE uslov
GRANTGRANT db-privilegija TO {PUBLIC | lista-korisnika}GRANT tab-privilegija ON naziv-tabele TO {PUBLIC | lista-
korisnika} [WITH GRANT OPTION]GRANT EXECUTE ON naziv-procedure TO {PUBLIC | lista-
korisnika} [WITH GRANT OPTION] tab-privilegije db-privilegijeALTER CONNECTDELETE RESOURCEINDEX DBAINSERT SELECT [(naziv-kolone, ...)] UPDATE [(naziv-kolone, ...)] ALL
Primeri za GRANT
GRANT CREATE DATABASE, CREATE TABLE TO Marija, Jovan
GRANT SELECT (bro_dos, pre_stu, ime_stu) ON student TO public
REVOKE
REVOKE tab-privilegija ON naziv-tabele FROM {PUBLIC | lista-korisnika}
REVOKE db-privilegija FROM {PUBLIC | lista-korisnika}
REVOKE { ALL | statement [ ,...n ] } FROM security_account [ ,...n ] REVOKE [ GRANT OPTION FOR ] { ALL | permission [ ,...n ] }
{ [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } }
{ TO | FROM } security_account [ ,...n ] [ CASCADE ]
Primeri za REVOKE
REVOKE CREATE DATABASE, CREATE TABLE TO Marija, Jovan
REVOKE SELECT ON student FROM Marija
DENYDENY { ALL | statement [ ,...n ] } TO security_account [ ,...n ]DENY { ALL | permission [ ,...n ] }
{ [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } }
TO security_account [ ,...n ] [ CASCADE ]
DENY CREATE DATABASE, CREATE TABLE TO Marija, Jovan
DENY INSERT, UPDATE, DELETE ON student TO Studenti
TRANSAKCIJE
BEGIN TRAN[SACTION] [ transaction_name ]
COMMIT [ TRAN[SACTION] [ transaction_name ] ]
ROLLBACK [ TRAN[SACTION] [ transaction_name ] ]