bd
CREATE TABLE Studenci (
Identyfikator NUMBER(4) GENERATED ALWAYS AS IDENTITY,
Imie VARCHAR(30),
Nazwisko VARCHAR(30),
Kierunek VARCHAR(30),
Album NUMBER(6) UNIQUE,
Srednia NUMBER(5,2) CHECK (Srednia >= 0 AND Srednia <= 5),
Stypendium NUMBER(4) CHECK (Stypendium >= 0 AND Stypendium <= 500),
Data DATE CHECK (Data >= TO_DATE('2010-01-01', 'YYYY-MM-DD'))
);
ALTER TABLE Studenci
ADD CONSTRAINT PK_Studenci PRIMARY KEY (Identyfikator);
INSERT INTO Studenci(Imie, Nazwisko, Kierunek, Album, Srednia, Stypendium, Data)
VALUES ('Bartek', 'Gabruk', 'Teleinformatyka', 157546, 4.0, 100, TO_DATE('2015-10-10', 'YYYY-MM-DD'));
INSERT INTO Studenci(Imie, Nazwisko, Kierunek, Album, Srednia, Stypendium, Data)
VALUES ('Jan', 'Nowak', 'Teleinformatyka', 154040, 3.0, 200, TO_DATE('2017-10-10', 'YYYY-MM-DD'));
INSERT INTO Studenci(Imie, Nazwisko, Kierunek, Album, Srednia, Stypendium, Data)
VALUES ('Antoni', 'Kowalski', 'Zarzadzanie', 178090, 4.2, 250, TO_DATE('2012-08-08', 'YYYY-MM-DD'));
INSERT INTO Studenci(Imie, Nazwisko, Kierunek, Album, Srednia, Stypendium, Data)
VALUES ('Janusz', 'Poiotrowicz', 'Informatyka', 202020, 3.8, 100, TO_DATE('2012-02-03', 'YYYY-MM-DD'));
select * from studenci order by Album ASC;
SELECT * FROM Studenci WHERE Data BETWEEN TO_DATE('2015-01-01', 'YYYY-MM-DD') AND TO_DATE('2020-12-31', 'YYYY-MM-DD') ORDER BY Album ASC;
UPDATE Studenci SET Stypendium = Stypendium * 1.25;
SELECT * FROM ( SELECT * FROM Studenci ORDER BY Srednia DESC)
WHERE ROWNUM BETWEEN 2 AND 4 ORDER BY Srednia DESC;
SELECT
Nazwisko,
EXTRACT(YEAR FROM Data) AS Rok,
EXTRACT(MONTH FROM Data) AS Miesiac,
EXTRACT(DAY FROM Data) AS Dzien
FROM Studenci
WHERE Kierunek = 'Teleinformatyka';
SELECT Nazwisko, (SUBSTR(Kierunek, 1, 3) || Album) AS KOD FROM Studenci;
SELECT Nazwisko, Stypendium,
CASE
WHEN Stypendium < 3000 THEN 'Mniejsze niż 3000 zł'
WHEN Stypendium = 3000 THEN 'Równe 3000 zł'
ELSE 'Większe niż 3000 zł'
END AS Stypendium FROM Studenci;
//zad10
SELECT Nazwisko, Album, FLOOR(MONTHS_BETWEEN(SYSDATE, Data)) AS Miesiace FROM Studenci;
select MIN(Stypendium), AVG(Stypendium), MAX(Stypendium) FROM Studenci;
select Kierunek, AVG(Stypendium), COUNT(*) AS liczba_studentow FROm Studenci group by Kierunek;
SELECT Nazwisko FROM Studenci WHERE Data = (SELECT MIN(Data) FROM Studenci) FETCH FIRST 1 ROW ONLY;
SELECT Kierunek FROM Studenci GROUP BY Kierunek HAVING COUNT(*) = (
SELECT MAX(Liczba)
FROM ( SELECT COUNT(*) AS Liczba FROM Studenci GROUP BY Kierunek
)
);
CREATE TABLE Przedmioty (
Identyfikator NUMBER(4) GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
Przedmiot VARCHAR(30) UNIQUE,
Kierunek VARCHAR(30) NOT NULL,
Egzamin VARCHAR(3),
Wyklady NUMBER(6) DEFAULT 15,
Laboratoria NUMBER(20)
);
ALTER TABLE Studenci ADD CONSTRAINT CK_Kierunek CHECK (Kierunek IN ('Teleinformatyka', 'Informatyka', 'Elektronika'));
INSERT INTO Przedmioty(Przedmiot, Kierunek, Egzamin, Wyklady, Laboratoria)
VALUES ('bazy danych','Teleinformatyka','tak', 10, 15);
INSERT INTO Przedmioty(Przedmiot, Kierunek, Egzamin, Wyklady, Laboratoria)
VALUES ('Algorytmy','Informatyka','nie', 8, 8);
INSERT INTO Przedmioty(Przedmiot, Kierunek, Egzamin, Wyklady, Laboratoria)
VALUES ('Sieci','Informatyka','tak',12,12);
INSERT INTO Przedmioty(Przedmiot, Kierunek, Egzamin, Wyklady, Laboratoria)
VALUES ('programowanie','Teleinformatyka','nie', 14, 10);
//zad 19
SELECT COUNT(*) AS liczba_studcentow FROM Studenci s JOIN Przedmioty p ON s.Kierunek = p.Kierunek WHERE p.Przedmiot = 'bazy danych';
//zad 20
select s.Nazwisko, COUNT(*) FROM Studenci s Join przedmioty p ON s.Kierunek = p.Kierunek;