Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » scoala » informatica » sql
Crearea si stergerea bazelor de date si a tabelelor

Crearea si stergerea bazelor de date si a tabelelor


Crearea si stergerea bazelor de date si a tabelelor

Succesul unei aplicatii depinde in mare masura si de modul de proiectare a bazelor de date formate din una sau mai multe tabele. Specificarea bazelor de date nu a fost descrisa de catre standardul ANSI, si ca urmare conceptul de baza de date este implementat diferit sub diversele versiuni ale limbajului de interogare SQL.

Crearea bazelor de date

Prima etapa in organizarea si administrarea datelor este intotdeauna crearea bazei de date. Majoritatea implementarilor limbajului SQL contin instructiuni pentru crearea unei baze de date, fie ca acestea fac parte din setul de comenzii al versiunii SQL folosite, fie ca se prezinta sub forma de programe utilitare care pot fi rulate direct din sistemul de operare. Crearea unei baze de date se realizeaza prin comanda CREATE cu sintaxa urmatoare:

CREATE DATABASE < nume_baza_de_date >



[ WITH LOG IN < cale> ]

Clauza WITH LOG IN este optionala si daca este folosita permite crearea unui jurnal al tranzactiilor (catalog), pentru care se specifica o cale. Cataloagele vor fi folosite pentru stocarea informatiilor despre relatii, vederi, sinonime si indecsi.

Exemplu: Crearea bazei de date facultate.dbc fara jurnalul tranzactiilor:

CREATE DATABASE facultate

Exemplu:Crearea bazei de date facultate.dbc in directorul univ, cu jurnal al tranzactiilor:

CREATE DATABASE facultate WITH LOG IN c:univ

O baza de date la creare este implicit activa. Ulterior ea poate fi activata prin comenzi specifice versiunii de SQL folosite.

In Visual FoxPro comanda este OPEN BATABASE care are formatul general:

OPEN DATABASE [<cale>] <nume_baza_de_date>

Exemplu: Sa se deschida baza de date facultate.dbc

OPEN  DATABASE c:univfacultate

La un moment dat este activa o singura baza de date, la deschiderea uneia realizandu-se automat dezactivarea celei activate anterior. Explicit inchiderea unei baze de date se realizeaza cu comanda CLOSE DATABASE.

Stergerea unei baze de date

Stergerea unei baze de date se realizeaza cu comanda DELETE DATABASE care are sintaxa generala:

DELETE DATABASE <nume_baza_de_date> | ?

[DELETE TABLES] [RECYCLE

Clauzele au urmatoarele semnificatii:

<nume_baza_de_date> precizeaza numele bazei de date ce se doreste a fi stearsa din directorul /folderul curent;

deschide o fereastra de dialog in care sunt afisate numele tuturor bazelor de date din directorul curent, permitand selectarea numelui bazei ce urmeaza a fi stearsa;

Clauza DELETE TABLES permite stergerea tuturor tabelelor continute de baza de date;

Clauza RECYCLE determina plasarea bazei de date sterse de pe disc in cosul electronic de gunoi (Recycle Byn).

Trebuie facuta precizarea ca pentru a putea fi stearsa baza de date nu trebuie sa fie activa.

Crearea tabelelor

O baza de date se compune din relatii numite generic tabele. Crearea acestora se realizeaza prin comanda CREATE TABLE. Cele mai utilizate clauze din formatul sau general sunt urmatoarele:

CREATE TABLE | DBF < nume_tabel1> [FREE]

(<nume_camp1> <tip> [(<lung.> [<p.zecimala>])]

[NULL | NOT NULL] [PRIMARY KEY | FOREIGN KEY ] [REFERENCES <nume_tabel2> [TAG <nume_eticheta1>]] [DEFAULT < expresie > ] [ UNIQUE ]

[NOCPTRANS]

[CHECK <exp_log> [ERROR <mesaj_eroare>]]

[,<nume_camp2>.]) | FROM ARRAY <nume_masiv>

Prin aceasta comanda se creeaza o tabela vida, cu o anumita structura stabilita prin formatul comenzii sau preluata dintr-un masiv existent. Clauzele au urmatoarele semnificatii.

<nume_tabel1> specifica numele tabelei, trebuie sa fie unic, primul caracter fiind o litera; celelalte caractere ale numelui pot fi litere sau diferite simboluri. In plus, numele nu poate fi un cuvant rezervat, iar lungimea trebuie sa respecte restrictiile impuse de sistemul de operare sub care se lucreaza.

Clauza FREE este folosita pentru crearea unei tabele libere /independente neinclusa intr-o baza de date;

<nume_camp1>,<nume_camp2>. specifica numele campurilor (atributelor) ce vor forma structura noii tabele, respecta restrictiile numelui de tabela, admitand totusi nume duplicate in cadrul unei baze de date, cu conditia ca numele campului sa fie unic in cadrul tabelei.

<tip> specifica natura sau tipul fiecarui camp in parte. In functie de versiune, diferitele implementari de SQL permit diverse variante atat in ce priveste definirea tipurilor de date cat si in ce priveste notatia folosita pentru ele. In general tipurile de date acceptate pentru campurile unei tabele sunt urmatoarele:

CHAR(n) sau CHARACTER(n)- pentru date alfanumerice (sir de caractere) cu lungimea intre 1 si 255; este cel mai uzual tip de date folosit in majoritatea tabelelor. Campurile de tip caracter au lungime fixa.

VARCHAR(n) sau CHAR VARYING(n) sau CHARACTER VARYING(n) - pentru sir de caractere alfanumerice de lungime variabila.

DATE si TIME date calendaristice care stocheaza, dupa caz, data propriu-zisa (secol, daca este activat SET CENTURY ON, anul, luna si ziua) sau timpul (ora, minut, secunda). Formatul de afisare a datelor calendaristice este controlat prin comanda SET DATE <tip_format>, cu precizarea ca, implicit se foloseste formatul american (LL/ZZ/AA). In SQL din Visual FoxPro sunt acceptate urmatoarele formate (tabelul nr. 4.1)

Tabelul nr. 4.1 Formate de setare a datelor calendaristice

Tip format de setare

Sablon

Exemplu

AMERICAN

ll/zz/aa

ANSI

aa.ll.zz


BRITISH /FRENCH

zz/ll/aa

GERMAN

zz.ll.aa

ITALIAN

zz-ll-aa

JAPAN

aa/ll/zz

USA

ll-zz-aa

MDY

ll/zz/aa

DMY

zz/ll/aa

YMD

aa/ll/zz

La randul lor aceste formate pot fi influentate si de setarile realizate cu ajutorul optiunilor SHORT sau LONG. Aceste optiuni determina setarea formatului de data in Control Panel in format scurt sau lung (nume_zi/nume_luna/an). Trebuie facuta precizarea ca setarea prin aceasta comanda are efect numai in sesiunea curenta de lucru.

LONG (MEMO) pentru date alfanumerice de mari dimensiuni si folosite pentru memorarea fragmentelor mari de texte in scopul regasirii ulterioare.

LONG RAW (GENERAL)- pentru date binare (numite si BLOB- Binary Large OBject ) cu lungime variabila avand rolul de a memora date neconventionale de tip grafic, sunet sau video. Ele sunt recomandate in cazul aplicatiilor multimedia.

NUMBER - pentru siruri de date utilizate in calcule. Ele pot fi de mai multe tipuri:

NUMERIC (m, n) sau DECIMAL (m, n) sau DEC (m, n) - date numerice reale cu lungimea totala m, din care n zecimale;

INTEGER sau INT - date numerice intregi - forma lunga (32 biti);

SMALLINT - date numerice intregi - forma scurta (16 biti);

FLOAT - date numerice reale in virgula mobila;

SMALLFLOAT - date numerice in virgula mobila - forma scurta;

DOUBLE PRECISION - date numerice reale in virgula mobila, dubla precizie;

ROWID sau SERIAL(n) - data numerica unica, neduplicabila, secventiala, atribuita fiecarei inregistrari din tabel.

<lung> precizeaza explicit sau implicit numarul de octeti alocati atributelor ce formeaza structura tabelei ce se creeaza.

Clauzele NULL sau NOT NULL autorizeaza sau nu introducerea valorilor nule in campul specificat.

Clauza PRIMARY KEY defineste cheia primara a relatiei. Pentru campul definit cheie primara trebuie sa fie prezenta si clauza NOT NULL.

Clauza FOREIGN KEY defineste cheia straina a relatiei, care ii permite sa se lege cu o alta relatie.

Clauza REFERENCES <nume_tabel2> [TAG nume_eticheta1>] precizeaza prin <nume_tabel2> relatia (tabela) cu care prin clauza FOREING KEY se realizeaza legatura.

Clauza DEFAULT permite precizarea valorilor implicite ce vor fi asociate unui atribut la inserarea unui tuplu intr-o relatie. Aceste valori pot fi:

un literal ce respecta regulile de compatibilitate (tip de date, lungime (precizie), parte zecimala (scala))

numele utilizatorului activ in momentul lansarii cererii de prelucrare; in acest caz este obligatoriu un tip de data caracter CHAR;

o valoare nula (necunoscuta) cu conditia ca definirea atributului sa o permita (sa nu fi fost folosita clauza NOT NULL ).

La stabilirea valorii implicite trebuie sa se respecte natura campului.

Clauza UNIQUE inhiba inserare valorilor duplicate in campurile cheie din baza de date;

Clauza NOCPTRANS previne translatarea intr-un alt cod de pagina a campurilor de tip caracter si memo.

Clauza CHECK <expr_log> [ERROR <mesaj_eroare_utilizator>] determina evaluarea expresiei logice specificate, ori de cate ori este adaugata o noua inregistrare. Expresia logica trebuie sa fie o functie definita de utilizator sau o procedura memorata (stocata) anterior. Daca expresia logica nu este adevarata sistemul afiseaza un mesaj implicit de eroare de tipul "field <nume_camp> validation rule is violated". Cu clauza ERROR acest mesaj este inlocuit cu un mesaj de eroare stabilit de utilizator.

Clauza FROM ARRAY <nume_masiv> permite preluarea structurii noii tabele dintr-un masiv creat anterior.

Unele dintre aceste clauze (PRIMARY KEY, FOREIGN KEY REFERENCES, DEFAULT etc.) sunt operationale numai daca tabela ce se creeaza este componenta a unei baze de date.

Exemplu: Pentru crearea tabelei student.dbf   se va folosi comanda:

CREATE TABLE STUDENT;

(NR_MATR CHAR(8) NOT NULL PRIMARY KEY, NUME_ST CHAR(25) NOT NULL ,;

PRENUME  CHAR(20),;

ORAS  CHAR(15) DEFAULT "IASI",;

MEDIA DECIMAL(5,2) CHECK MEDIA >5 ERROR "Campul nu respecta limita impusa",;

CODPOSTAL NUMERIC(4) DEFAULT 6600)

Prin aceasta comanda se creeaza tabela student.dbf care are in componenta campurile:NRMATR de tip numeric zecimal (decimal), care nu poate lua valori nule; acest camp este definit cheie primara ;NUMEST de tip caracter care nu admite valori nule;PRENUME de tip caracter; ORAS de tip caracter cu valoarea implicita "iasi" atribuita automat la incarcarea articolelor;MEDIA de tip numeric zecimal cu lungimea de 5 caractere din care 2 caractere pentru partea intreaga, 1 caracter pentru marca zecimala si 2 caractere pentru partea zecimala; prin clauza CHECK s-a stabilit ca media sa fie mai mare decat 5; daca aceasta limita nu este respectata se va afisa mesajul stabilit de utilizator prin clauza ERROR "campul nu respecta limita impusa" CODPOSTAL de tip numeric cu valoare implicita 6600.

In urma executarii acestei comenzi se obtine tabela Student.dbf pe care o prezentam in continuare:

Tabela student.dbf

In tabela articolele vor fi adaugate ulterior prin proceduri de actualizare, dupa care tabela se va prezenta astfel:

Stergerea unei tabele dintr-o baza de date

Eliminarea completa a unei tabele dintr-o baza de date se realizeaza prin comanda DROP TABLE care are formatul general:

DROP TABLE <nume_tabel> | <nume_fisier> | ? [RECYCLE

in care:

<nume_tabel> specifica tabela care va fi mutata din baza de date curenta (in cosul de gunoi) si stearsa din director;

<nume_fisier> specifica tabela libera (free) care va fi stearsa din director;

afiseaza o fereastra de dialog pentru a selecta tabela ce urmeaza a fi stearsa din baza de date curenta;

Clauza RECYCLE determina pastrarea in cosul de gunoi a tabelei sterse. In absenta acestei clauze tabela este irecuperabila.

Aceasta comanda este utilizata, in special, dupa crearea tabelelor temporare (intermediare), pentru stergerea acestora.

Exemplu: Sa se stearga tabela student.dbf cu pastrarea ei in cosul de gunoi:

DROP TABLE STUDENT RECYCLE

Comanda va sterge din baza de date tabela STUDENT pastrand-o totusi in "cosul electronic de gunoi", de unde eventual ar putea fi recuperata.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.