This is an old revision of the document!


Laboratorul 09.

Crearea și definirea structurilor tabelare

Crearea unei tabele

Sintaxa comenzii de creare este următoarea:

CREATE TABLE [schema.]TABLE_NAME [table_constraint]
  COLUMN datatype [DEFAULT expr] [column_constraints]
  [table_contstraints][TABLESPACE tablespace]
  [storage parameters]
  [ENABLE/DISABLE clause][AS subquery]

unde:

  • schema - este schema unde se creează tabela (specifică utilizatorului și bazei de date)
  • table_name - este numele tabelei
  • column - este numele coloanei
  • datatype - reprezintă tipul coloanei
  • DEFAULT expr - specifică valoarea implicită a coloanei
  • column_constraints - definește constrângerile de integritate pentru coloană
  • table_constraints - definește constrângerile de integritate la nivel de tabelă
  • tablespace - specifică în ce tablespace al bazei de date se creează tabela
  • storage_parameters - definește parametrii de creare și pot fi
    • PCTFREE - procentaj de spațiu rezervat pentru update
    • PCTUSED - procentaj minim folosit pentru un bloc de date
    • INITRANS - numărul inițial de tranzacții pentru fiecare bloc (1-255)
    • MAXTRANS - numărul maxim de tranzacții concurente (1-255)
    • CLUSTER - specifică dacă tabela face parte dintr-un cluster
  • ENABLE/DISABLE clause - activare / dezactivare de constrângeri
  • AS subquery - inserare de date dintr-o altă tabelă obținute printr-o interogare

Tipurile de date

Tipurile de date care pot fi asociate coloanelor unei tabele pot fi :

  • tipuri numerice
  • tipuri alfanumerice
  • tipuri pentru data calendaristică și timp
  • tipuri compuse (matrice sau tabelă)

Câteva dintre cele mai uzuale tipuri de date sunt:

  • NUMBER - număr real de dimensiune variabilă (maxim 38 cifre)
  • NUMBER(n) - număr întreg de n cifre
  • NUMBER(n,m) - număr real de n cifre, dintre care m zecimale
  • CHAR(n) - șir de caractere de lungime fixă n (1-2000)
  • NCHAR(n) - analog cu CHAR, dar poate stoca șiruri de caractere Unicode
  • VARCHAR2(n) - șir de caractere de lungime variabilă n
  • NVARCHAR2(n) - analog cu VARCHAR dar poate stoca șiruri de caractere Unicode
  • LONG - șir de caractere de maxim 2 la puterea 31 octeți
  • LONG RAW - similar cu LONG dar conține date binare
  • ROWID - poate stoca identificatorul unei linii din tabelă
  • DATE - data calendaristică
  • TIMESTAMP(n) - extensie pentru tipul DATE care conține și fracțiuni de secundă pe n zecimale

Constrângeri de integritate

  • NOT NULL - înregistrările nu pot conține valori nule
  • UNIQUE - definește o cheie unică pe una sau mai multe coloane (nu pot fi mai multe înregistrări cu aceleași valori pe coloanele respective
  • PRIMARY KEY - definește o cheie primară la nivel de coloană sau tabelă (nu pot fi mai multe înregistrări cu aceeași cheie primară)
  • FOREIGN KEY - definește o cheie externă (tabela se relaționează cu altă tabelă pe o cheie unică sau cheie primară)
  • CHECK - forțează o condiție pe coloană

Exemplu

CREATE TABLE angajati (
  id_ang  NUMBER(4)  PRIMARY KEY,
  nume  varchar2(30)  CONSTRAINT CK_NUME CHECK (nume=UPPER(nume)),
  functie  varchar2(20)  REFERENCES functii(den_functie),
  id_sef  NUMBER(4)  REFERENCES angajati(id_ang),
  data_ang  DATE,
  salariu  NUMBER(7,2)  CHECK (salariu>0),
  comision  NUMBER(7,2),
  id_dep  NUMBER(2)  REFERENCES departamente (id_dep),
  CONSTRAINT CK_COM CHECK (comision<=salariu));

Exerciții

Exercițiile nu sunt identice între 2 ședințe de laborator. Diferențele sunt date de parametrii adiționali prezenți în fiecare dintre ele, ce vor fi descriși de laborant în cadrul fiecărui laborator.

1. Să se creeze o tabela 'salarii' care să conțină ID și DENUMIRE DEPARTAMENT, SALARIU MINIM, SALARIU MAXIM și parametrii adiționali. Tabela va fi populată, prin comanda de creare, din tabelele cu departamente și angajați.

2. Să se creeze trei tabele: INTRARI_GESTIUNE, IESIRI_GESTIUNE și STOCURI_GESTIUNE, cu următoarele structuri:

INTRARI_GESTIUNE: NR_DOC_IN, DATA_DOC_IN, COD_PRODUS, CANT_IN, COD_UM, PRET_UNITAR
IESIRI_GESTIUNE: NR_DOC_OUT, DATA_DOC_OUT, COD_PRODUS,CANT_OUT,COD_UM, NR_DOC_IN, DATA_DOC_IN
STOCURI_GESTIUNE: NR_DOC_IN,DATA_DOC_IN,COD_PRODUS,STOC,COD_UM, VALOARE, DATA_STOC

Constrângeri: pe un tip produs, pot exista mai multe intrări; pe un document de intrare pot exista mai multe produse; același produs poate avea mai multe unități de măsură, deci implicit mai multe prețuri unitare; pentru un produs și document de intrare, pot exista mai multe documente de ieșire – până la epuizarea stocurilor. Scrieți cereri pe aceste tabele care îndeplinesc parametrii adiționali. Fiecare cerere va fi data sub forma CERERE(PARAMETRI): ea va fi implementata intr-un fisier cu numele CERERE, iar parametrii se vor cere ca variabile substituite.

3. Pe lângă tabelele de la exercițiul 2, construiți o tabelă FACTURI, care conține NUMAR_FACTURA,DATA_FACTURARII, DEBITOR, CREDITOR si o lista de produse intrate in gestiune, sau iesite din gestiune. Scrieți cereri pe această tabelă care îndeplinesc parametrii adiționali.

Bibliografie

  1. Alexandru Boicea - Oracle SQL SQL Plus, Editura Printech
bd/laboratoare/09.1398339009.txt.gz · Last modified: 2014/04/24 14:30 by valentin.raduti
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0