0% au considerat acest document util (0 voturi)
80 vizualizări13 pagini

Proiect SGBD

Documentul prezintă proiectarea unei baze de date pentru un magazin IT și conține instrucțiuni SQL pentru crearea, popularea și interogarea tabelelor bazei de date.

Încărcat de

Vlad Barda
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
80 vizualizări13 pagini

Proiect SGBD

Documentul prezintă proiectarea unei baze de date pentru un magazin IT și conține instrucțiuni SQL pentru crearea, popularea și interogarea tabelelor bazei de date.

Încărcat de

Vlad Barda
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 13

Ministerul Educaiei al Republicii Moldova

Colegiul de Informatic din Chiinu


Catedra Informatica Aplicat

Proiectarea Bazei de Date


Magazin IT
la disciplina SQL

A EFECTUAT:
studentul grupei I1234
Ignat Nicolae

A
VERIFICAT:
profesorul
Veniamin
Bulat

Chiinu 2014

SARCINA
1. S se proiecteze baza de date Magazin It
2. S se aplice instruciunile SQL ctre baza de date:
a) Instruciunile limbajului de definire a datelor (LDD CREATE; ALTER; DROP)
b) Instruciunile limbajului de manipulare a datelor (LMD INSERT; UPDATE;
DELETE)
3. Interogarea bazei de date
a) Interogri simple
b) Subinterogri
c) Uniuni
d) Funcii de agregare
e) Combinarea interogrilor
4. Elaborarea proiectului

INTRODUCERE
Limbajul SQL (Structured Query Language) este un limbaj declarativ (neprocedural)
ce permite o comunicare complex i rapid a utilizatorului cu bazele de date, n funcie
de cerinele i restriciile informaionale ale acestuia. Prin acest limbaj utilizatorul descrie
informaiile pe care vrea s le obin n urma interogrii, fr a preciza algoritmii necesari
pentru obinerea rezultatelor dorite.
SQL a fost iniial dezvoltat la IBM de ctre Donald D. Chamberlin i Raymond F. Boyce
n anul 1974. Iniial, numele era SEQUEL (Structured Query Language), avea ca scop
manipularea i regsirea datelor stocate n bazele de date relaionale IBM.
SQL face parte din categoria limbajelor de aplicaii (orientate pe mulimi) pentru baze
de date relaionale. Este un limbaj standard iar principalele sale instruciuni sunt
recunoscute de ctre mai multe SGBD-uri, ca de exemplu: Oracle, Microsoft Office Access,
MySQL, DB2, Visual FoxPro.

PROIECTAREA BAZEI DE DATE


n rezultatul proiectrii bazei de date Panda Tur, s-a stabilit urmtoarea structur
(tabelele):
a) Produse(Producator,Model,Tip)
b) pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)

c)laptop_uri(Cod,Model,Viteza,Ram,Hd,Ecran,Pret)
d)imprimante(Cod,Model,Color,Tip,Pret)

1.CREAREA BAZEI DE DATE


O baz de date SQL Server este compus din trei tipuri de fiiere: un fiier cu
extensia .mdf zero sau mai multe fiiere cu extensia .ndf i unul cu extensia .ldf.
n fiierul cu extensia .mdf sunt stocate obiectele bazei de date precum tabelele,
indexii, vederile etc. mpreun cu definiiile lor. n fiierele cu extensia .ndf sunt fiiere
secundare ce conin numai date, iar fiierul cu extensia .ldf conine jurnalul de tranzacii.
Pentru crearea unei baze de date se folosete comanda CREATE DATABASE, ca n
exemplele de mai jos:
CREATE DATABASE <nume_BD>;

O baz de date conine cel puin un tabel identificat prin nume. Tabelele conin
nregistrri cu date.
Pentru a crea un tabel, utilizai comanda CREATE TABLE, care are urmtoarea
sintax:
CREATE TABLE nume_tabel(
nume_coloana1 tip_date,
nume_coloana2 tip_date,
nume_coloana3 tip_date,
....
);
Unde nume_tabel este numele tabelului, nume_coloanaX este numele unei
coloane iar tip_date este tipul de date al coloanei respective. Se poate specifica un
numr infinit de coloane.
Elemente obligatorii la crearea unui tabel sunt:
comanda CREATE TABLE
numele tabelului. Dac numele tabelului conine spaii, el trebuie inclus n
ghilimele ' '
numele atributelor i respectiv tipul lor de date (int, char(x), double(x, y), text,
etc.)
n afara tipului de date, intre paranteze, putei specifica constrngerile opionale ale
unei coloane:
a) NOT NULL Fiecare rnd trebuie sa conin o valoare a coloanei asociate.
Adic valorile nule nu sunt permise.
b) NULL Sunt acceptate valorile nule.

c) DEFAULT valoare Daca nu este data o valoare a coloanei asociate, se va


presupune valoarea specificata.
d) PRIMARY KEY Coloana asociata este cheia primara a tabelului care o
conine.
e) UNIQUE Fiecare valoare din coloana trebuie sa fie unic.
f) CHECK Specific anumite condiii la inserarea unei nregistrri.

CREATE DATABASE BazaSGBD;


USE BazaSGBD;
---------------------------------------------------------------------Crearea tabelelor-------------------------------------------------------------------CREATE TABLE produse
(
Producator char(1) NOT NULL,
Model varchar(4) NOT NULL,
Tip varchar(10) NOT NULL
)
CREATE TABLE pc_uri
(
Cod int NOT NULL,
Model varchar(4) NOT NULL,
Viteza decimal(3,0) NOT NULL,
Ram decimal(3,0) NOT NULL,
Hd decimal(2,0) NOT NULL,
Cd varchar(3) NOT NULL,
Pret float NOT NULL
)
CREATE TABLE laptop_uri
(
Cod int NOT NULL,
Model varchar(4) NOT NULL,
Viteza decimal(3,0) NOT NULL,
Ram decimal(3,0) NOT NULL,
Hd decimal(2,0) NOT NULL,
Pret float NOT NULL,
Ecran int NOT NULL
)
CREATE TABLE imprimante
(
Cod int NOT NULL,
Model varchar(4) NOT NULL,
Color char(2) NOT NULL,
Tip varchar(6) NOT NULL,
Pret float NOT NULL
)
-

----------------------------------------------------------------Definirea Cheilor Primare---------------------------------------------------------------ALTER


ALTER
ALTER
ALTER

TABLE
TABLE
TABLE
TABLE

produse ADD CONSTRAINT PK_Produs PRIMARY KEY(Model);


pc_uri ADD CONSTRAINT PK_Pc PRIMARY KEY(Cod);
laptop_uri ADD CONSTRAINT PK_Laptop PRIMARY KEY(Cod);
imprimante ADD CONSTRAINT PK_Imprimanta PRIMARY KEY(Cod);

-----------------------------------------------------------------Definirea Cheilor Externe---------------------------------------------------------------ALTER


TABLE
pc_uri
ADD
CONSTRAINT
FK_Pc_Produse
FOREIGN
KEY(Model)
REFERENCES
produse(Model);
ALTER TABLE laptop_uri ADD CONSTRAINT FK_Laptop_Produse FOREIGN KEY(Model) REFERENCES
produse(Model);
ALTER TABLE imprimante ADD CONSTRAINT FK_Imprimanta_Produse FOREIGN KEY(Model) REFERENCES
produse(Model);
--------------------------------------------------------------------Popularea Tabelelor------------------------------------------------------------------INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT

INTO produse(Producator,Model,Tip)
('B','1121','PC');
INTO produse(Producator,Model,Tip)
('A','1232','PC');
INTO produse(Producator,Model,Tip)
('A','1233','PC');
INTO produse(Producator,Model,Tip)
('E','1260','PC');
INTO produse(Producator,Model,Tip)
('A','1276','Imprimante');
INTO produse(Producator,Model,Tip)
('D','1288','Imprimante');
INTO produse(Producator,Model,Tip)
('A','1298','Laptop_uri');
INTO produse(Producator,Model,Tip)
('C','1321','Laptop_uri');
INTO produse(Producator,Model,Tip)
('A','1401','Imprimante');
INTO produse(Producator,Model,Tip)
('A','1408','Imprimante');
INTO produse(Producator,Model,Tip)
('D','1433','Imprimante');
INTO produse(Producator,Model,Tip)
('E','1434','Imprimante');
INTO produse(Producator,Model,Tip)

VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES

('B','1750','Laptop_uri');
INTO produse(Producator,Model,Tip)
('A','1752','Laptop_uri');
INTO produse(Producator,Model,Tip)
('E','2111','PC');
INTO produse(Producator,Model,Tip)
('E','2112','PC');

INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES

INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(1,'1232',500,64,5,'12x',600);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(2,'1121',750,128,14,'40x',850);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(3,'1233',500,64,5,'12x',600);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(4,'1121',600,128,14,'40x',850);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(5,'1121',600,128,8,'40x',850);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(6,'1233',750,128,20,'50x',950);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(7,'1232',500,32,10,'12x',400);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(8,'1232',450,64,8,'24x',350);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(9,'1232',450,32,10,'24x',350);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(10,'1260',500,32,10,'12x',350);
INTO pc_uri(Cod,Model,Viteza,Ram,Hd,Cd,Pret)
(11,'1233',900,128,40,'40x',980);

INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES

INTO laptop_uri(Cod,Model,Viteza,Ram,Hd,Pret,Ecran)
(1,'1298',350,32,4,700,11);
INTO laptop_uri(Cod,Model,Viteza,Ram,Hd,Pret,Ecran)
(2,'1321',500,64,8,970,12);
INTO laptop_uri(Cod,Model,Viteza,Ram,Hd,Pret,Ecran)
(3,'1750',750,128,12,1200,14);
INTO laptop_uri(Cod,Model,Viteza,Ram,Hd,Pret,Ecran)
(4,'1298',600,64,10,1050,15);
INTO laptop_uri(Cod,Model,Viteza,Ram,Hd,Pret,Ecran)
(5,'1752',750,128,10,1150,14);
INTO laptop_uri(Cod,Model,Viteza,Ram,Hd,Pret,Ecran)
(6,'1298',450,64,10,950,12);

INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES
INSERT
VALUES

INTO imprimante(Cod,Model,Color,Tip,Pret)
(1,'1276','nu','Laser',400);
INTO imprimante(Cod,Model,Color,Tip,Pret)
(2,'1433','da','Jet',270);
INTO imprimante(Cod,Model,Color,Tip,Pret)
(3,'1434','da','Jet',290);
INTO imprimante(Cod,Model,Color,Tip,Pret)
(4,'1401','nu','Matrix',150);
INTO imprimante(Cod,Model,Color,Tip,Pret)
(5,'1408','nu','Matrix',270);
INTO imprimante(Cod,Model,Color,Tip,Pret)
(6,'1288','nu','Laser',400);

ACTUALIZAREA DATELOR
Instruciunea UPDATE este utilizat pentru actualizarea (modificarea) valorii unor
cmpuri dintr-un tabel.
Sintaxa instruciunii:
UPDATE nume_tabel
SET nume_coloana1 = valoare_noua1,
nume_coloana2 = valoare_noua2,
...
nume_coloanaX = valoare_nouaX
WHERE nume_coloana = valoare
Exemple:
-- Actualizarea cmpului pret din tabelul Comenzi. Micorarea preului
cu 10% unde preul iniial este mai mare ca 10,000:
UPDATE Comenzi
SET pret = pret - (pret * 0.1)
WHERE pret > 10000

Interogarea bazei de date


Interogrile reprezint modaliti de selecie i afiare a informaie din unul sau mai
multe surse (tabele sau alte interogri), formulate cu ajutorul unor condiii logice.
Interogrile pot fi de selecie, excludere, modificare, obinere a unor totaluri, medii,
interogri ncruciate.

1. S se gseasc modelul, viteza procesorului si capacitatea discului dur pentru toate pc-urile
care cost mai putin de 500$. Schema rezultatului a fi atva fi Model, Viteza i Hd.
use SGBD;
SELECT Model,Viteza,Hd

FROM Pc_uri WHERE pret<500;

2. S se gseasc productorii de imprimante. A fiecarui:Productor.


Use SGBD;
SELECT Producator FROM Produse where tip='Imprimante';

3. S se gseasc modelul, capacitatea de memorie operativ si dimensiunea ecranului fiecrui


laptop cu pretul mai mare de 1000$.
USE SGBD;
SELECT Model,Ram,Ecran

FROM

Laptopuri WHERE

pret>1000;

4. S se gseasc toate liniile tabelului imprimante pentru imprimantele color.


USE SGBD;
SELECT*FROM Imprimante

WHERE

color='da';

5. S se gseascmodelulivitezaprocesorului, icapacitateadisculuidur ale pc-urilormaiieftine de


600$ i care posedcd-rom-uri cu viteze 12x sau 24x.
USE SGBD;
SELECT Model,Viteza,Hd FROM

PC_uri WHERE

(pret<600)and(cd='12x'or cd='24x');

6. S se afiezeproductoriiiviteza pc-urilorceposed HD-uri cu capacitateaceamai mica.


Use SGBD;
SELECT
produse.Producator,PC_uri.Viteza
FROM
Produse
INNERJOIN
PC_URI
Produse.Model=PC_uri.Model WHERE PC_uri.Hd=(SELECTMIN(PC_uri.Hd)FROM PC_uri);

ON

7. S se gseasc modelele i productorii produselor cu preul mai mare de 450 dolari.

8. S se gseasc productorii care vnd laptopuri sau imprimante, dar nu vnd pc-uri.
USE SGBD;
SELECT
Producator,Tip
FROM
Tip='Imprimante')and(Tip!='PC');

Produse

10

WHERE

(Tip='Laptop_uri'or

9. S se gseasc productorii de pc-uri cu procesoare ce funcioneaz cu frecven a de tact nu mai


mica de 450 Mhz. Afiai cmpul Productor.
USE SGBD;
SELECT
Produse.Producator
From
produse
produse.Model=pc_uri.Model Where pc_uri.Viteza>=450
Groupby Producator;

INNERJOIN

pc_uri

ON

10. S se gseasc imprimantele cu cel mai nalt pre. S se afieze Model, Pret.
USE SGBD;
SELECT Model,Pret From Imprimante Where Pret=(SelectMAX(Pret)From Imprimante);

11. S se gseasc viteza medie (Viteza) a pc-urilor.


USE SGBD;
SelectAVG(Viteza)[VitezaMedie] From pc_uri;

12. S se gseasc viteza medie a laptopurilor, al cror pre depete 1000$.


USE SGBD;
SELECTAVG(viteza)[Viteza Medie] FROM Laptopuri WHERE Pret<=1000;

13. S se gseasc viteza medie a pc-urilor produse de companiaA .


USE SGBD;
SELECT AVG(pc_uri.Viteza)[Viteza Medie] FROM pc_uri INNERJOIN produse ON
pc_uri.Model=Produse.Model WHERE produse.Producator='A';

14.S se gseasc modelele si producatorii pc-urilor care au o viteza mai mare decit cel mai
puternic laptop.
USE SGBD;
SELECT
Produse.Model,Produse.Producator
FROM
produse INNERJOIN pc_uri
produse.Model=pc_uri.ModelWHEREpc_uri.Viteza>(SelectMAX(viteza)FROMLaptopuri);

ON

15.S se gseasc productorii pc-urilor ce au Ram-ul mai mare dect media Ram-ului
laptopurilor. S se afiseze producatorul si modelul pc-urilor.
USE SGBD;
SELECT
produse.Producator,
produse.Model
FROM
produseINNERJOIN
pc_uri
pc_uri.Model=produse.ModelWHERE pc_uri.Ram>(SelectAVG(ram)from Laptopuri);

ON

16. S se gseasc modelele laptopurilor cu pretul mai mare dect pretul dublu al celui ma ieftin
pc. Sa se afiseze modelul laptopului si pretul acestuia.
USE SGBD;
SELECT Model,PretFROM Laptopuri
WHERE Pret>(SelectMIN(Pret)FROM pc_uri)*2;

17. Pentru fiecare valoare a vitezei, s se gseasc pretul mediu al pc-urilor. S se afiseze Viteza
si Pret_mediu.
11

USE SGBD;
SELECT Viteza,AVG(Pret)[Pret Mediu]
FROM pc_uriGroupby Viteza;

18. S se gseasc capacittile discurilor dure, care coincid cu 2 sau mai multe pc-uri. S se
afiseze Hd.
USE SGBD;
SELECT Hd,COUNT(Hd)[Nr. de pc-uri cu viteza data]
FROM pc_uriGroupby Hd HAVINGCOUNT(Hd)>=2;

20. S se gseasc laptopurile, a cror vitez este mai mica dect la orice pc-u. S se afiseze:Tip,
Model, Viteza.
USE SGBD;
SELECT produse.Tip,Laptopuri.Model,Viteza
FROM Laptopuri INNERJOIN produse ON Produse.Model=Laptopuri.Model
WHERE Laptopuri.Viteza<(SelectMIN(Viteza)from pc_uri);

CONCLUZIE
In urma realizarii acestui raport am aplicat cunostintele teoretice in practica
privind creare, popularea, interogarea si intretinerea unei baze de date.
Am facut cunostinta
manipulare cu BDR.

cu

limbajul

SQL
12

care

este

un limbaj

standart

de

Datorita cursului

de SQL , realizarii bazei de date Magazine si elaborarii

Proiectului asupra ei am insusit mai bine insructiunile de manipulare si definire


a bazelor de date.
In genaral se poate de spus ca cunoasterea limbajului SQL ne deschide usile in
lumea BDR si ne permite de a manipula cu orice BD nestiind in ce SGBD a
fost elaborata si de catre cine.

13

S-ar putea să vă placă și