SQL> SPOOL currently spooling to ülesanne_05.lst SQL> --Leidke tabelite yliopilased, koduylesanded, oppeained abil iga tudengi keskmine “punktisaak” koduste tööde eest SQL> SELECT y.eesnimi, y.perenimi, round(avg(k.punktid),1) AS kesk_punkte FROM yliopilased y, koduylesanded k where y.id=k.yliopilase_id GROUP BY y.eesnimi, y.perenimi; EESNIMI PERENIMI KESK_PUNKTE ------------ ------------ ----------- Katrin Kask 5.4 Salme Saar 4.1 Liina Vaher 7.8 Kairi M„nd 6.6 SQL> --Samade tabelite põhjal leidke, mitu tööd on oracle-aine ülesannete kohta saadetud. Grupeerige ülesande numbri kaupa SQL> SELECT k.too_nr, count(k.failinimi) AS arv FROM koduylesanded k, oppeained o WHERE o.kood = k.kursusekood AND o.nimetus = 'Oracle: SQL ja PL/SQL' GROUP BY k.too_nr; TOO_NR ARV ------ ---------- 1 4 2 2 3 2 SQL> SELECT sunniaasta
Ülesanne 11 1. Kirjutage PL/SQL-programm, mis leiab tabelist kandidaadid, mitu inimest on sündinud 1982. a. 1. kuus, 1982. a. 2. kuus jne. kuni 1984.a. 12. kuus --- ylesanne11-1.psql ---- SET SERVEROUTPUT ON declare alates_aasta constant integer := 82; kuni_aasta constant integer := 84; alates_kuu constant integer := 1; kuni_kuu constant integer := 12; tudengite_arv integer; begin for aasta in alates_aasta .. kuni_aasta loop for kuu in alates_kuu .. kuni_kuu loop select count(*) into tudengite_arv from scott.kandidaadid where substr(ID,2,2) = aasta and substr(ID,4,2) = kuu; dbms_output.put_line('19' || aasta || '. a. ' || kuu || '. kuus on sündinud ' || tudengite_arv || ' kandidaati.'); end loop; end loop; end; / --- ylesanne11-1.ps
8. Ülesanne 1. Delegeerige endale scott-i rollis olles tabelite lepikult.yliopilased, lepikult.koduylesanded ja lepikult.oppeained lugemisõigused. Logige andmebaasi enda kasutajatunnuse abil. GRANT SELECT ON lepikult.yliopilased to MinuKasutajaNimi; GRANT SELECT ON lepikult.koduylesanded to MinuKasutajaNimi; GRANT SELECT ON lepikult.oppeained to MinuKasutajaNimi; 2. Moodustage tabelite lepikult.yliopilased, lepikult.koduylesanded ja lepikult.oppeained abil kursuse „Oracle….” kohta tabel, kus on andmed kodutööde kohta – tudengite nimed, ID-koodid ja punktid kolme kodutöö eest (kui ühe kodutöö kohta on samalt tudengilt mitu saadetist, läheb kirja parim tulemus). Eraldi veerus on kolme töö eest saadud punktide summa. Arvestuse tingimuseks on, et ülesannete punktide summa peab olema vähemalt 14. Ülesande lahendamisel kasutage nii DDL kui ka DML-lauseid. // Loo tabel CREATE TABLE Oracle_tulemused (opilase_id CHAR(8),
SQL> SPOOL currently spooling to ülesanne_09.lst SQL> --Moodustage tabel tallede kohta (sünniaeg, sünnikaal, id-number, sugu). SQL> --Kirjutage skript, mis laseb sisestada tabelisse (asendusmuutujate abil) andmeid sündinud tallede kohta. SQL> --Iga looma kohta genereeritakse jada abil id-number; jäär saab paaritu ja utt paarisnumbri. SQL> CREATE TABLE talled ( 2 id NUMBER PRIMARY KEY, 3 sunniaeg TIMESTAMP(0), 4 kaal NUMBER(6,2), 5 sugu CHAR(1)); Table created. SQL> CREATE SEQUENCE jaar_id START WITH 1 INCREMENT BY 2; Sequence created. SQL> CREATE SEQUENCE utt_id START WITH 2 INCREMENT BY 2; Sequence created. SQL> INSERT INTO talled VALUES( 2 CASE '&sugu' 3 WHEN 'J' THEN jaar_id.NEXTVAL 4 ELSE utt_id.NEXTVAL END, 5 SYSDATE,'&kaal', '&sugu'); old 2: CASE '&sugu' new 2: CASE 'J' Enter value for kaal: 7.2923 old 5: SYSDATE,'&kaal', '&sugu') new 5: SYSDATE,'7.2923', 'J') 1 row created. SQL> INSERT INTO talled VALUES( 2 CASE '&sugu' 3 WHEN 'J' THEN
10. Ülesanne 1) Looge „bind“-tüüpi arvuline muutuja. Kirjutage PL/SQLprogramm (anonüümne blokk), mis salvestab sellesse muutujasse parima võõrkeeletulemuse tabelist kandidaadid. Väljapool programmi (sqlplus-keskkonnas) koostage päring, mis selle muutuja väärtust kasutades leiab iga kandidaadi kohta, palju tema võõrkeeletulemus parimale alla jääb. --- ylesanne10-1.psql ---- column id format a14 column eesnimi format a14 column perenimi format a14 column voorkeel format 999 column vahe_parimaga format 999 set pagesize 1000 var max_punktid number; EXEC SELECT max(voorkeel) INTO :max_punktid FROM kandidaadid; SELECT id, eesnimi, perenimi, voorkeel, (:max_punktid - voorkeel) AS vahe_parimaga FROM kandidaadid ORDER BY vahe_parimaga; --- ylesanne10-1.psql ---- START C:UserskasutajaDesktopylesanne10-1.psql … 205 rows selected. 2) Kasutage tabeleid lepikult.oppeained, lepikult.koduylesanded ja lepiult.yliopila
9. Ülesanne 1. Moodustage tabel tallede kohta (sünniaeg, sünnikaal, id-number, sugu). Kirjutage skript, mis laseb sisestada tabelisse (asendusmuutujate abil) andmeid sündinud tallede kohta. Iga looma kohta genereeritakse jada abil id-number; jäär saab paaritu ja utt paarisnumbri. CREATE TABLE talled ( id NUMBER(5), synniaeg DATE, synnikaal NUMBER(5,2), sugu VARCHAR(4), CONSTRAINT talled_pk PRIMARY KEY (id), CONSTRAINT talled_chk CHECK (sugu IN ('jaar','utt')) ); CREATE SEQUENCE talled_seq_jaar START WITH 1 INCREMENT BY 2 NOCACHE NOCYCLE; CREATE SEQUENCE talled_seq_utt START WITH 2 INCREMENT BY 2 NOCACHE NOCYCLE; --- Scripti algus --- set define on accept SYNNIAEG date prompt 'Talle sünniaeg: ' accept SYNNIKAAL number prompt 'Talle kaal (grammides): ' accept SUGU char prompt 'Talle sugu (jaar, utt): ' BEGIN IF '&SUGU' = 'jaar' THEN INSERT INTO talled VALUES (talled_seq_jaar.nextval, '&SYNNIAEG', '&SYNNIKAAL', '
CREATE TABLE mina ( eesnimi varchar(30) not null, perenimi varchar(100) not null, sugu varchar(5) not null, synnipaev date not null, algus datetime not null default current timestamp, viimati datetime default timestamp, CONSTRAINT pk_mina PRIMARY KEY (eesnimi) ); INSERT INTO mina (eesnimi, perenimi, sugu, synnipaev) VALUES ('Juku', 'Mets', 'Mees', '1980-02-04'); grant connect to Sandra identified by 'tere'; grant group to dba; grant membership in group dba to Sandra; grant all on mina to Sandra; SELECT * FROM mina; UPDATE mina SET eesnimi = 'Jri' WHERE eesnimi = 'Juku'; CREATE GLOBAL TEMPORARY TABLE paha (nimi VARCHAR(40) NOT NULL, CONSTRAINT pk_paha PRIMARY KEY (nimi)) ON COMMIT PRESERVE ROWS; INSERT INTO paha (nimi) VALUES ('Mari'); SELECT * FROM paha; create table isik( Id integer not null default autoincrement primary key, Eesnimi varchar (50) not null, Perenimi varchar(50) not null, Isikukood varchar(11), Klubi integer, Unique (eesnimi, perenimi)) create table Klubi( Id
Andmebaasid Laenutamine CREATE TABLE LAENUTAMINE ( Laenamise_id INT not null auto_increment, Kuupäev date, Raamatu_ID INT, Lugeja_ID INT, Tähtaeg date, Tagastamine date, PRIMARY KEY (Laenamise_id), FOREIGN KEY (Lugeja_ID) REFERENCES LUGEJA(Lugeja_ID), FOREIGN KEY (Raamatu_id) REFERENCES Raamat(Raamatu_ID)); Lisa 10 kirjet. INSERT INTO LAENUTAMINE(Kuupäev,Lugeja_ID,Raamatu_ID,Tähtaeg) VALUES(curdate(),1,3,adddate(curdate(), interval 21 day)); RAAMAT CREATE TABLE RAAMAT ( Raamatu_ID INT AUTO_INCREMENT, Pealkiri VARCHAR(150) NOT NULL, Autor VARCHAR(100) NOT NULL, Aasta YEAR NOT NULL, Koht VARCHAR(50), Lk_arv INT, Keel VARCHAR(50), Hind FLOAT, PRIMARY KEY (Raamatu_ID)); Kirjed: INSERT INTO RAAMAT (Pealkiri, Autor, Aasta, Koht, Lk_arv, Keel, Hin
Kommentaare ei ole, seega pole alati kohe arusaadav mellega tegu on.
Muidu töötab, tehtud korralikult. Aitas mind omad lahendada.
Kõik kommentaarid