lesanne 1------------------------------------------------------------------------------- -- sqlplus scott/tiger@testdata describe kandidaadid insert into kandidaadid values ('Stanislav', 'Tsvetajev', '38609140224', 60, 70, 80); update kandidaadid set eesnimi='Stas' where isikukood=38609140224; select * from kandidaadid where eesnimi = 'Stas'; delete from kandidaadid where eesnimi = 'stas'; lesanne 2------------------------------------------------------------------------------- -- sqlplus scott/tiger@testdata select eesnimi, perenimi, emakeel from kandidaadid where isikukood like '4%' and emakeel >60; select eesnimi, perenimi, to_date(substr(isikukood,2,6),'YYMMDD') as sunniaeg from kandidaadid where to_date(substr(isikukood, 4, 4), 'mmdd')> sysdate order by to_date(substr(isikukood, 4, 4), 'mmdd'); lesanne 3----------------------------------------------------------------- sq
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
6. Ülesanne 1. Kasutage tabeleid lepikult.yliopilased, lepikult.koduylesanded, lepikult.oppeained ning koostage skript (programm), mis küsib kasutajalt õppeaine nimetuse fragmendi (kasutades asendusmuutujaid) ja väljastab selle õppeaine kohta saadetud kodutööd. Lehekülje päisesse kirjutage õppeaine nimetus ja jalusesse vastava õppejõu nimi set verify off set pagesize 15 accept ainenimi prompt 'Sisestage õppeaine nimetus: ' column nimetus new_value r_header noprint column oppejoud new_value r_footer noprint column nimi heading 'Nimi' format a12 column too_nr heading 'Ülesanne' format a12 column punktid heading 'Punktid' format a12 column kuupaev heading 'Kuupaev' format a12 ttitle left col 15 'Aine: ' r_header skip 1 btitle left col 15 'Oppejoud: ' r_footer break on nimi skip 1 select y.perenimi ||', '|| y.eesnimi as nimi, k.too_nr, k.punktid, to_char(k.kuupaev,'DD.MM.YYYY') as kuupaev, o.
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),
4. Ülesanne 1. Logige Oracle’i andmebaasi “testdata” külge kasutajanimega scott ja parooliga tiger. 2. Koostage tabelite lepikult.yliopilased, lepikult.koduylesanded, lepikult.oppeained abil kursuse “Oracle” kodutööde andmed. SELECT y.eesnimi, y.perenimi, to_char(k.kuupaev, 'DD.MM.YYYY') AS "Kuupäev", k.too_nr as "ÜL.NR.", k.punktid AS "Punkte", k.failinimi AS "Fail" FROM lepikult.yliopilased y, lepikult.koduylesanded k WHERE y.id = k.yliopilase_id AND k.kursusekood = 'I319'; 3. Koostada nende tudengite nimekiri, kes ei ole saatnud üheski õppeaines ainsatki kodutööd. SELECT y.eesnimi, y.perenimi FROM lepikult.yliopilased y LEFT JOIN lepikult.koduylesanded k ON y.id = k.yliopilase_id WHERE k.yliopilase_id IS NULL; 4. Fikseerige tabelis „sugupuu” üks nimi (näiteks nii: …. WHERE e.nimi = ‘Karin’ ….) ja leidke kõik tema lapselapsed. SELECT * FROM sugupuu WHERE isakood IN (SELECT kood FROM
12. Ülesanne 1. Tehke endale koopia tabelist lepikult.koduylesanded. Koostage programm, kustutab tehtud koopiast need ülesanded, mis on saadetud „topelt“ – sama üliõpilase poolt sama kursuse ja sama numbriga töö kohta. Alles jätke parim tulemus. Kasutage ülesande lahendamiseks kursorit. CREATE TABLE minu_koduylesanded AS (SELECT * FROM lepikult.koduylesanded); SELECT yliopilase_id, kursusekood, too_nr, punktid FROM minu_koduylesanded ORDER BY yliopilase_id, kursusekood, too_nr; DECLARE CURSOR kodutood IS SELECT yliopilase_id, kursusekood, too_nr, punktid FROM minu_koduylesanded k WHERE k.punktid = ( SELECT MAX(punktid) FROM minu_koduylesanded WHERE yliopilase_id = k.yliopilase_id AND kursusekood = k.kursusekood AND too_nr = k.too_nr) ORDER BY yliopilase_id, kursusekood, too_nr; BEGIN FOR ylesanne IN kodutood LOOP DELETE FROM minu_koduylesanded WHERE yliopilase_
SQL> SPOOL currently spooling to ülesanne_06.lst SQL> COLUMN nimetus FORMAT A15 NEW_VALUE nimetus NOPRINT SQL> COLUMN oppejoud FORMAT A15 OLD_VALUE oppe NOPRINT SQL> COLUMN nimi FORMAT A15 SQL> COLUMN punktid FORMAT 999 SQL> TTITLE CENTER 'Aine: ' nimetus SKIP 1 SQL> BTITLE CENTER 'Oppejoud: ' oppe SKIP 1 SQL> BREAK on nimi SKIP SQL> SET feedback on SQL> COLUMN nimi heading "Nimi" SQL> COLUMN ulesanne heading "Ylesanne" SQL> COLUMN punktid heading "Punktid" SQL> COLUMN kuupaev heading "Kuupaev" SQL> --Kasutage tabeleid yliopilased, koduylesanded, oppeained ning koostage skript (programm) SQL> --mis küsib kasutajalt õppeaine nimetuse fragmendi (kasutades asendusmuutujaid) ja väljastab SQL> --selle õppeaine kohta saadetud kodutööd. Lehekülje päisesse kirjutage õppeaine nimetus ja SQL> --jalusesse vastava õppejõu nimi, nagu näidatud allpool SQL> SELECT o.oppejoud AS oppejoud, 2 o.nimetus AS nimetus, 3 y.eesnimi || ' ' || y.perenimi AS nimi, 4 k.too_nr AS ulesanne, k.pun
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', '
Kõik kommentaarid