2. gyakorlat
ZH
Nem lehet internetet használni, de minden gyak anyagát lehet.
Szekvencia
CREATE TABLE seq_test(
num_seq number
);
INSERT INTO seq_test VALUES (seq1.nextval);
INSERT INTO seq_test VALUES (seq1.nextval);
SELECT * FROM seq_test;
-- 20, 25
Szerverek közötti kapcsolat (linkek)
Link létrehozása:
CREATE DATABASE LINK ullmandb CONNECT TO <felhasználónév> IDENTIFIED BY <jelszó> USING 'ullman.inf.elte.hu:1521/ullman';
Lekérdezés link szerint:
1. feladat
Kik azok a felhasználók, akiknek legalább 40 táblája van, de legfeljebb 37 indexük van.
3. feladat
Adjuk meg azon tábláknak nevét, amelyekben legalább 8 db dátum típusú oszlop van.
SELECT owner, table_name FROM dba_tab_columns WHERE data_type = 'DATE' GROUP BY (OWNER, TABLE_NAME) HAVING count(*) >= 8;
3. feladat - PLSQL
Írjunk meg egy PLSQL procedúrát, amelyik paraméterül kapott karakterlánc alapján kiírja azoknak a tábláknak a nevét és tulajdonosát, amelyek az adott karakterlánccal kezdődnek
(Ha a paraméter kisbetűs, akkor is működjön a procedúra)
CREATE OR REPLACE PROCEDURE tabler (a IN STRING) AS
CURSOR k IS SELECT * FROM dba_tables WHERE table_name LIKE CONCAT(UPPER(a), '%');
sor k%rowtype;
BEGIN
FOR sor IN k LOOP
dbms_output.put_line(sor.owner || ' ' || sor.table_name);
END LOOP;
END;
/
DECLARE
BEGIN
tabler('dolg');
END;
/
4. feladat
melyek azok az az objektum típusok, amelyek tényleges tárolást igényelnek, vagyis tartoznak hozzá adatblokkok?
5. feladat
listázzátok ki azokat az objektum típusokat, amelyek nem igényelnek tárolást; nem tartoznak hozzá adatblokkok
6. feladat
adjuk meg azoknak a tábláknak a nevét, amelyeknek az első és negyedik oszlopuk
VARCHAR2típusú
SELECT t.owner, t.table_name FROM dba_tables t, SYS.dba_tab_columns c1, SYS.dba_tab_columns c2 WHERE
t.owner = c1.owner AND t.table_name = c1.table_name AND c1.column_id = 1 AND
t.owner = c2.owner AND t.table_name = c2.table_name AND c2.column_id = 4 AND
c1.data_type = 'VARCHAR2' AND c2.data_type = 'VARCHAR2';