vezba za 25.01
Kreirati bazu DR i u njoj tabele doktor(DoktorID, ime, tip) i pacijent(PacijentID, ime, DoktorID).
- kreirati samo tabele - prvo tabelu pacijent, a onda doktor
- uraditi sa ALTER TABLE dodavanje foreign key
CREATE DATABASE DR;
USE DR;
CREATE TABLE Pacijent (PacijentID INT PRIMARY KEY, Ime VARCHAR(255), DoktorID INT);
CREATE TABLE Doktor(DoktorID INT PRIMARY KEY, Ime VARCHAR(255), tip VARCHAR(100) );
ALTER TABLE Pacijent
ADD FOREIGN KEY (DoktorID) REFERENCES Doktor(DoktorID);
Zatim uneti par doktora:
INSERT INTO Doktor(DoktorID, Ime, Tip)
VALUES (1, 'Pera Pap', 'kardiolog'), (2, 'Ana Marija', 'pedijatar'), (3, 'Paja Simovski', 'stomatolog');
par pacijenata
INSERT INTO Pacijent(PacijentID, Ime, DoktorID) VALUES (1, 'Aco', 1), (2, 'Paja', 3);
Sada, ako ne znamo koji je DoktorID za pedijatra, unposimo sledećeg pacijenta tako da na mestu unosa DoktorID koristimo podupit sa podacima koje znamo (a to je u ovom slučaju tip doktora - želimo da je u pitanju pedijatar)
INSERT INTO Pacijent(PacijentID, Ime, DoktorID)
VALUES (3, 'Aleksandar', (SELECT DoktorID FROM Doktor WHERE Tip='pedijatar' ));
Šta će se desiti ako se kuca:
INSERT INTO Pacijent(PacijentID, Ime, DoktorID) VALUES (4, 'Aca', 1);---- uneće se novi pacijent, bez greške ...
Šta će se desiti ako se kuca:
INSERT INTO Pacijent(PacijentID, Ime, DoktorID) VALUES (4, 'Aca', 4);
. Dolazi do greške REFERENCIJALNOG INTEGRITETA - ne može se uneti DoktorID za doktora koji je postoji !!!
.
- A kako da se obrišu pacijenti koji dolaze kod stomatologa (ukinuta služba)
DELETE FROM Pacijent
WHERE DoktorID=3;
Sada želimo da Pacijent ima i kolonu za Prezime:
ALTER TABLE Pacijent
ADD Prezime VARCHAR(255);
Sada prikažite sve iz tabele
SELECT * FROM Pacijent;
Sada ćemo svim pacijentima da damo u polje za prezime "Nepoznato prezime"
UPDATE Pacijent
SET Prezime='Nepoynato prezime';
I opet prikažite sve iz tabele
SELECT * FROM Pacijent;
Unesite još dva pacijenta
INSERT INTO Pacijent(PacijentID, Ime, Prezime, DoktorID)I opet prikažite sve iz tabele ....
VALUES (55, 'Sima', 'Simovski',1), (66, 'Ana', 'Marija', 1);
Napravite kopiju tabele Pacijent - NoviPacijent koja ima sve iste kolone kao i u tabeli Pacijent i sve iste podatke da se u njoj nalaze:
CREATE TABLE NoviPacijent AS SELECT * FROM Pacijent;
Sada prikažite sve iz tabele NoviPacijent ....
Slede'e je da se napravi kopija - tabela koja ima iste kolone kao i tabela Pacijent, ali ne i podatke:
CREATE TABLE Bolesnik LIKE Pacijent;Sada prikažite sve iz tabele Bolesnik (vidite da je prazna)....U tabelu Bolesnik 'emo ubaciti samo srčane bolesnike (koji imaju DoktorID=1)
INSERT INTO Bolesnik SELECT * FROM Pacijent WHERE DoktorID=1;
Sada prikažite sve iz tabele Bolesnik ....