7. gyakorlat
A 6. gyakorlat idejében írtunk ZH-T
- Insert
- Update
- Delete
Insert
SYSDATE - értékként lehet megadni, az aktuális rendszeridő
TO_DATE - dátum létrehozása stringből
Lehet használni al-lekérdezést is:
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
Update (modify)
Delete
DELETE FROM departments WHERE department_name = 'Finance';
Tranzakciók
a változtatások nem kerülnek a szerverre, csak "lokálisan" maradnak meg, amíg azt nem kérjük, hogy lépjen életbe
COMMIT - elfogadja a változtatást
ROLLBACK - eldobja a változtatást
Adatbázis objektumok
- Tábla
- Nézet
- egy lekérdezést tárol, táblaszerűen, de mindig frissen tartva
- Sequence (pl. az AUTO_INCREMENT esetén használt)
- Egy szig.mon.növ. szám
- Index
- A tábla teljesítményét segíti
A táblák és oszlopok nevei max 30 karakter
Egy objektum vagy tábla egyszer szerepelhet
Tábla létrehozása
Tábla létrehozása lekérés alapján:
Típusok
| Adattípus | Tulajdonságok |
|---|---|
CHAR(size) |
Mindenképpen size hosszú SSString. A maradék ki lesz töltve |
VARCHAR2(size) |
Maximum size hosszú karakterlánc |
DATE |
Dátum és idő értékek |
LONG |
Variable-length character data (up to 2 GB) |
CLOB |
Character data (up to 4 GB) |
RAW and LONG RAW |
Raw binary data |
BLOB |
Binary data (up to 4 GB) |
BFILE |
Binary data stored in an external file (up to 4 GB) |
ROWID |
A base-64 number system representing the unique address of a row in its table |
TIMESTAMP |
Date with fractional seconds |
Korlátozások
| Korlátozás neve | Célja |
|---|---|
NOT NULL |
Az adott érték nem lehet NULL |
UNIQUE |
Az adott értéknek egyedinek kell lennie az adott oszlopban |
PRIMARY KEY |
Elsődleges kulcs |
FOREIGN KEY |
Idegen kulcs |
CHECK |
Ellenőrzi, hogy a tábla megfelel egy adott logikai kifejezésnek |
vagy
CREATE TABLE employees(
employee_id NUMBER(6)
-- ...
CONSTRAINT emp_emp_id_pk PRIMARY KEY (employee_id),
-- ...
Foreign key esetén:
Check:
Dropping table: végleges
Ez volt a mese mára, Zárul Kotroczó mókatára
1. feladat
Hozzunk létre egy saját dolgozo2 táblánk
CREATE TABLE dolgozo2 AS SELECT * FROM nikovits.dolgozo;
CREATE TABLE osztaly2 AS SELECT * FROM nikovits.osztaly;Töröljük azokat a dolgozókat, akiknek a jutaléka NULL.
2. feladat
Töröljük azokat a dolgozókat, akiknek a belépési dátuma 1982 előtti.
3. feladat
Töröljük azokat a dolgozókat, akiknek a telephelye Dallas
4. feladat
Töröljük azokat a dolgozókat, akiknek a fizetése kisebb, mint az átlagfizetés
5. feladat
Töröljük ki azon osztályokat, amelyeknek 2 olyan dolgozója van, akik a kettes fizetési kategóriába tartoznak
DELETE FROM osztaly2 WHERE oazon IN (SELECT oazon FROM dolgozo2
NATURAL JOIN osztaly2
JOIN fiz_kategoria ON fizetes BETWEEN fiz_kategoria.also AND fiz_kategoria.felso
WHERE fiz_kategoria.kategoria=2
GROUP BY oazon
HAVING count(*)=2);
6. feladat
Vigyünk fel egy Kovács nevű dolgozót a 10-es osztályra, a következő értékekkel:
- dkod = 1
- dnev = 'Kovacs'
- oazon = 10
- belepes = aktuális dátum
- fizetes = 10-es osztály átlagfizetése
- többi oszlop legyen NULL
INSERT INTO dolgozo2 (dkod, dnev, oazon, belepes, fizetes) VALUES (
1,
'Kovacs',
10,
SYSDATE,
(SELECT AVG(fizetes) FROM dolgozo2 WHERE oazon = 10)
);
7. feladat
Növeljük meg a 20-as osztály fizetését 20%-al
8. feladat
Növeljük meg azok fizetését 500-al, akiknek a jutaléka NULL, vagy a fizetésük kisebb az átlagnál