Comenzile SQL sunt instructiuni necesare pentru a comunica cu sistemul Oracle. Ele dau directive serverului Oracle sa efectueze anumite sarcini. Comenzile SQL se împart în sase categorii, dupa cum urmeaza:
Comenzi DDL (Data Definition Language - limbaj de definire a datelor)
Comenzile DDL sunt folosite pentru a gestiona obiectele schemei si privilegiile utilizatorilor.
Comenzi DML (Data Manipulation Language - limbaj de manipulare a datelor)
Comenzile DML permit utilizatorului sa acceseze si sa manipuleze obiectele bazei de date.
Comenzi pentru controlul tranzactiilor
Aceste comenzi gestioneaza modificarile efectuate de comenzile DML.
Comenzi pentru controlul sesiunii
Comenzile pentru controlul sesiunii gestioneaza sesiunile utilizatorilor.
Comenzi pentru controlul sistemului
Aceste comenzi gestioneaza proprietatile instantei.
Comenzi SQL încapsulate
Aceste comenzi se folosesc pentru a plasa în proceduri comenzi DDL, DML si comenzi pentru controlul tranzactiilor.
Comenzile SQL formeaza un sistem predefinit si coerent de gestionare si de administrare a bazei de date Oracle. Aceste comenzi au o sintaxa si o semantica specifica si permit utilizatorului sa comunice cu serverul, în lipsa acestor instructiuni formale, ar domni haosul deoarece serverul nu ar putea sa recunosca si sa înteleaga comenzile dumneavoastra.
Comenzile SQL se împart în sase categorii. Paragrafele urmatoare trateaza fiecare dintre aceste sase tipuri de comenzi SQL:
Comenzi DDL (Data Definition Language - limbaj de definire a datelor)
Comenzi DML (Data Manipulation Language - limbaj de manipulare a datelor)
Comenzi pentru controlul tranzactiilor Comenzi pentru controlul sesiunii Comenzi pent 20120e410u ru controlul sistemului
Comenzi SQL încapsulate
Comenzile DDL va permit sa efectuati urmatoarele:
Sa creati, sa modificati si sa distrugeti orice obiecte ale schemei
Sa acordati si sa retrageti privilegii si roluri utilizatorilor
Sa adaugati comentarii în dictionarul de date
Sa stabiliti optiuni de auditare
Oracle salveaza în mod implicit tranzactia curenta înaintea fiecarei instructiuni DDL. Comenzile DDL nu sunt suportate de modulul PL/SQL al serverului Oracle, în continuare urmeaza o scurta descriere a celor mai utilizate instructiuni DDL.
Majoritatea comenzilor DDL încep cu create, alter sau drop. Comenzile create se folosesc pentru a crea noi obiecte si structuri Oracle. Comenzile alter va permit sa modificati obiectele si structurile existente. Comenzile drop elimina din baza de date obiecte si structuri.
create cluster |
Aceasta comanda creeaza un grup ce poate contine unul sau mai multe tabele, care au cel putin o coloana în comun. Exemplul urmator creeaza grupul lst_articole, coloana cheie a grupului fiind nr_articol: create cluster lst_articole (nr_articol varchar2(15)) size" 512 storage ( initial 500k next lOOk pctincrease 5); |
create database |
Aceasta comanda creeaza o baza de date Oracle. Exemplul urmator ^creeaza o baza de date simpla numita produse, în timpul crearii, sunt utilizati parametrii prestabiliti pentru alocarea memoriei si pentru definirea fisierului jurnal. CREATE DATABASE produse; |
create database link |
Aceasta comanda creeaza o legatura cu o baza de date situata la distanta. Acest exemplu creeaza o legatura numita ang_leg care face referire la baza de date userl cu parola 1A2BVC cu localizarea specificata de sirul 'D:lista_ang': create database link ang^leg connect to userl identifTed by Ia2bvc using 'D:lista_ang'; Dupa crearea legaturii, puteti sa interogati tabelele bazei de date situata la distanta userl. Exemplul urmator prezinta o interogare a bazei de date situate la distanta userl: select * from ang@ang_leg; |
create function |
Aceasta comanda creeaza o functie care este pastrata în memorie. Exemplul urmator returneaza balanta contabila pentru toate liniile în care regiunea este egala cu Hamilton. create function get_balance (acct_id in number) return number is acc_balance number (11, 2) begin select balance into acc_balance from sales where sales_account = acct_id return (acc_balance); end; |
create index |
Aceasta comanda creeaza un index pentru un tabel sau un grup. Acest exemplu creeaza indexul i nr articol pentru coloana nr articol a tabelului LISTA_ARTICOLE: create index i_nr_articol ON lista_articole (nr_articol) ; |
create package |
Aceasta comanda creeaza specificatia unui pachet stocat în memorie. Exemplul urmator creeaza specificatia pachetului l s t_a r t: create package 1st_art as procedure inv_articole (numar_art varchar2) end 1st_art; |
create package body |
Aceasta comanda creeaza corpul unui pachet stocat în memorie. Comanda create package trebuie executata înaintea acestei comenzi. create package
body1_art AS |
create procedure |
Aceasta comanda creeaza o procedura de sine statatoare stocata în memorie. In acest exemplu, este creata procedura statplata, ai carei parametri de intrare sunt ore, salariu_orar si marca_ang. Tabelul ang este actualizat direct prin intermediul acestei proceduri. create prodedure user 01.statplata (ore in number, salarîu_orar in number, marca_ang in number) as begin update lista_salarii set plata_sapt = ore * salariu_orar where marca_ang = nr_cont end; |
Create |
Aceasta comanda creeaza un segment de revenire în vederea pastrarii datelor necesare derularii înapoi a modificarilor efectuate de o tranzactie. Segmentul va fi stocat în spatiul-tabel System si i se va aloca un spatiu initial de 100KB si în continuare 50KB. create public rollback segment rbs_lst_art tablespace system storage (initial lOOk next 50k optimal 125k); |
create role |
Aceasta comanda creeaza un rol. Un rol reprezinta un set de privilegii care pot fi acordate utilizatorilor sau altor roluri. Acest exemplu creeaza rolul numit proiectant_aplicatie care este protejat prin parola pr_aplic. create role proiectant_aplicatie identified by pr_aplic; |
create sequence |
Aceasta comanda creeaza o secventa pentru generarea numerelor secventiale. Instructiunea urmatoare creeaza secventa s_marca_ang, care începe de la valoarea l si are un increment de 10: create sequence s marca ang increment by 10; |
create snapshot |
Aceasta comanda creeaza un instantaneu al datelor din unul sau mai multe tabele de baza. în exemplul urmator, este creat instantaneul uk_ang, care va contine o copie a tabelului LISTA_ANG, care se gaseste în baza de date situata la distanta ang_uk: create snapshot uk_ang pctfree 15 pctused 40 tablespace user_01 storage (initial 50k next 50k pctincrease 20) refresh fast next sysdate + 14 as select * from lista_ang@ang_uk; |
create snapshot log |
Aceasta comanda creeaza un jurnal de instantanee pentru reîmprospatari rapide. Acest jurnal este creat pentru reîmprospatarea instantaneelor bazate pe tabelul principal lst_art. create snapshot log on 1st_art tablespace user_01 storage (initial 50k next 50k pctincrease 50); |
create synonym |
Aceasta comanda creeaza un sinonim pentru un obiect din schema. Exemplul urmator creeaza sinonimul public articol pentru tabelul PROPRIETAR_ARTICOL.LISTA_ARTICOLE: create public synonym articol for proprietar_articol.lista_articole; |
create table |
Aceasta comanda creeaza un tabeL Tabelul LISTA_ARTICOLE este creat cu instructiunea urmatoare: create table lista_articole (cod_articol number primary key, nr_bucati varchar2(15), descriere_articol varchar2(50)) tablespace articole_02; |
create user |
Aceasta comanda creeaza un nou utilizator al bazei de date sau un cont prin intermediul caruia va puteti conecta la baza de date. în acest exemplu, utilizatorul se numeste cbntabil_sef si initial are parola QK91H36. De asemenea instructiunea stabileste parametrii de stocare pentru acest utilizator. create user contabil sef identified by qk91h3"S default tablespace user_01 temporary tablespace user_02 quota 5m on user_01 quota 5m on user_02 profile administrator; |
create view |
Aceasta comanda creeaza o vedere a unuia sau mai multor tabele. Instructiunea urmatoare creeaza vederea tuturor coloanelor tabelului LISTA_ARTICOLE, afisând numai acele linii pentru care cantitatea comandata este mai mare decât 10000. Vederea se numeste v_1st_art. create view v_1st_art as select * from lista articole where cant comanda > 10000 |
alter cluster |
Folositi aceasta comanda pentru a modifica parametrii de alocare sau pentru a aloca o noua extindere pentru un grup. Nu puteti modifica numarul de coloane care reprezinta cheia grupului si spatiul-tabel al grupului sau sa eliminati tabele din grup. în instructiunea urmatoare, este modificat grupul c_ang_princ, noua valoare atribuita parametrului pctfree fiind de 60 de procente. Toti ceilalti parametrii specificati în instructiunea create cluster ramân nemodificati. alter cluster c_ang_princ pctfree 60; |
alter function |
Folositi aceasta comanda pentru a recompila functia. Instructiunea urmatoare recompileaza functia calcul_balanta: alter function calcul_balanta compile; |
alter index |
Aceasta comanda va permite sa modificati alocarile viitoare de spatiu de stocare pentru index. De exemplu, instructiunea urmatoare stabileste dimensiunea incrementelor viitoarelor blocuri de date la 50KB: alter index i_vanzari_articole storage (next 50k); |
alter package |
Aceasta comanda se foloseste pentru a recompila un pachet. De exemplu, specificatia si corpul pachetului pach_cautare_art este recbmpilata cu urmatoarea instructiune: alter package pach_cautare_art compile package; |
alter procedure |
Aceasta comanda recompileaza o procedura de sine statatoare. Cuvântul cheie compile este obligatoriu. Aceasta comanda recompileaza procedura invalida numita 1st_articole. Alter procedure 1st_articole compile; |
alter role |
Aceasta comanda modifica autorizatia necesara pentru a activa un rol. în acest exemplu, roiului proiectant_aplicatie i se atribuie noua parola proiectant. alter role proiectant_aplicatie identified by proiectant; |
alter rollback segment |
Aceasta comanda modifica segmentul de revenire în unul dintre urmatoarele moduri: Îl trece în stare on-line sau off-line Îi modifica caracteristicile de stocare În urmatoarele trei exemple, sunt folosite cele trei clauze posibile pentru aceasta comanda: alter rollback segment rbs_1st_art offline; alter rollback segment rbs_1st_art online; alter rollback segment rbs_1st_art storage (maxextents 35); |
alter sequence |
Aceasta comanda va permite sa modificati caracteristicile unei secvente. Aceasta comanda va permite sa faceti urmatoarele: Sa modificati valoarea incrementalul Sa stabiliti sau sa eliminati valorile minima si maxima Sa specificati daca numerele secventei trebuie sa fie ordonate Sa schimbati numarul de numere din secventa pastrate în memoria cache În exemplul urmator, secventa s marca_ang este modificata, noua dimensiune cache fiind acum 35. Toti ceilalti parametri ai secventei ramân cei specificati în comanda create sequence. Alter sequence s_marca_ang cache 35; |
alter snapshot |
Puteti modifica parametrii de stocare sau modul de reîmprospatare cu comanda alter snapshot. De exemplu, exemplul urmator modifica modul de reîmprospatare a instantaneului uk_ang, atribuindu-i valoarea fast. Toti ceilalti parametrii ai instantaneului ramân neschimbati: alter snapshot uk_ang refresh fast; |
alter snapshot log |
Aceasta comanda modifica parametrii de stocare ai jurnalului de instantanee. Acest exemplu redefineste parametrul de stocare maxextents al instantaneului snp 1st_art. Toti ceilalti parametri de stocare ramân neschimbati. alter snapshot log ON snp_1st_art storage (maxextents 35); |
alter table |
Comanda alter table poate fi folosita pentru a face urmatoarele: Pentru a adauga o coloana Pentru a redefini tipul, dimensiunea sau valoarea prestabilita ale unei coloane Pentru a adauga, modifica sau distruge o restrictie de integritate Pentru a modifica parametrii de stocare Comanda urmatoare adauga coloana comentarii vânzari tabelului VANZARI_ARTICOLE: alter table vanzari_articole add (comentarii_vanzari varchar2(1000)); |
alter user |
Folositi aceasta comanda pentru a modifica oricare dintre urmatoarele caracteristici ale utilizatorului bazei de date: Parola Spatiul-tabel prestabilit Rolul prestabilit Limitele resurselor alocate Exemplul urmator restabileste parola utilizatorului user_01: alter user user_01 identified by HI8012JQ |
alter view |
Aceasta comanda recompileaza vederi, în general aceasta masura se ia atunci când tabelul de baza al vederii a fost modificat. Recompilarea nu modifica definitia vederii. Instructiunea urmatoare recompileaza vederea v_ang: alter view v_ang compile; |
Comenzile DDL drop elimina din baza de date obiecte, restrictii de integritate, utilizatori si roluri. Sintaxa generala a tuturor comenzilor drop este urmatoarea:
DROP cuvant_cheie nume_obiect/comanda
cuvant_cheie poate fi înlocuit cu oricare dintre articolele urmatoare:
Un grup
O legatura cu o baza de date
O functie
Un index
Un pachet
O procedura
Un profil
Un rol
Un segment de revenire
O secventa
Un instantaneu
Un jurnal de instantanee
Un sinonim
Un tabel
Un spatiu-tabel
Un declansator
Un utilizator
O vedere
Un privilegiu
Instructiunea urmatoare elimina din schema utilizatorului tabelul CODUkl_ARTICOLE_DEMODATE si toate datele acestuia:
drop table coduri_articole_demodate;
Comanda urmatoare distruge grupul articole, împreuna cu toate tabelele acestuia si toate restrictiile de integritate care fac referire la el:
drop cluster articole including tables cascade constraints;
audit |
Folositi aceasta comanda pentru a specifica instructiunile SQL care urmeaza sa fie auditate în urmatoarele sesiuni ale utilizatorilor. Instructiunea urmatoare activeaza auditarea oricarei instructiuni care interogheaza un tabel sau efectueaza eliminari din orice tabel: audit select table, delete table; |
Comment |
Folositi aceasta comanda pentru a adauga comentarii direct in dictionarul de date. Instructiunea urmatoare adauga în dictionarul de date un comentariu referitor la coloana v comentarii a tabelului ORDINE_VÂNZARI: comment on ordine_vanzari.v_comentarii instructiune 'Acest câmp reprezinta evaluarile subiective ale agentului de vânzari referitoare la zona lui de activitate' |
Grant |
Folositi aceasta comanda pentru a acorda privilegii de sistem si roluri anumitor utilizatori si roluri. Instructiunea urmatoare acorda privilegiul create session utilizatorului user_02 al bazei de date: grant create session to user_02; Instructiunea urmatoare acorda privilegiul select referitor la tabelul LST_ARTICOLE utilizatorului user_02 grant select on lst_articole to user_02; |
Revoke |
Aceasta comanda retrage privilegii de sistem si roluri anumitor utilizatori si roluri, în exemplul urmator, privilegiul de sistem'update este retras tuturor utilizatorilor tabelului LISTA_ANG: REVOKE UPDATE ON lista_ang FROM PUBLIC; |
Truncate |
Aceasta comanda elimina toate liniile unui tabel sau unui grup si elibereaza spatiul ocupat de liniile respective. Instructiunea urmatoare elimina toate liniile tabelului DEPT: truncate table dept; |
|