av Szilard Denes för 7 årar sedan
438
Mer av detta
av Richárd Kele
av Joci Csépányi
av Joci Csépányi
av Kiss Máté
A kényszerek a táblákra/azok oszlopaira vonatkozó szabályok.
Biztosítják az adatbázis konzisztenciáját, hogy használható legyen az adatbázis, logikai ellentmondásokat ne tartalmazzon.
(biztosítják, hogy az adatbázis módosítások ne eredményezhessenek helytelen sorokat a relációban.)
Deklarációk, tehát a DDL (Data definition language) részei szintaktikailag.
Többfelhasználós környezetben és tranzakciós működés során (az egyidejű módosítások következtében) sok probléma merül fel ekörül.
Forrás:
http://www.inczedy.hu/~szikszai/adatbazis/sql1.pdf
Előadás diái
Betartásukat az RDBMS (Relational database management system) automatikusan biztosítja. Nem enged meg olyan adatbázis műveleteket, amelyek révén az adatok a szabályokat megszegnék.
A relációsadatbázis-kezelő rendszer (angol rövidítéséből: RDBMS) egy olyan adatbázis-kezelő rendszer ,amelynek logikai adatbázisát szoftverkomponensei kizárólag a relációs adatmodellek elvén épülnek fel, illetve kérdezhetőek le. Más szavakkal kifejezve: az RDBMS kizárólag az relációs adatmodell alapú megközelítést támogatja. Amennyiben más adatmodell is kiszolgálható ilyen rendszerrel, úgy a kapcsolódó adatmodell függvényében objektumrelációs, illetve deduktív relációs adatbázisról beszélhetünk. A relációsadatbázis-kezelő rendszerek szabványos adat hozzáférési és adatdefiníciós nyelve az SQL.
Forrás:
https://hu.wikipedia.org/wiki/Rel%C3%A1ci%C3%B3sadatb%C3%A1zis-kezel%C5%91_rendszer
Kényszert létrehozhatunk
A kényszerek a
Nem minden értékkorlátozást lehet kényszerrel megadni.
Forrás:
előadás diái
Miután már létrehoztunk egy táblát, utólag is hozzáadhatunk kényszereket.
Általános alak:
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE];
Példa:
ALTER TABLE suppliers ADD CONSTRAINT check_supplier_name CHECK (supplier_name IN ('IBM', 'Microsoft', 'NVIDIA'));
Itt a check_supplier_name CONSTRAINT biztosítja, hogy a supplier_name oszlop értékei csak IBM, Microsoft vagy NVIDIA lehessen.
Forrás:
https://www.techonthenet.com/oracle/check.php
DROP CONSTRAINT-el törülhetünk korábban létrehozott függőséget/korlátot.
Fontos, hogy Primary Key/Unique Constraint nem dobható el, ha foreign key megszorításban hivatkozunk rá.
Formája:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
Példa:
A supplier táblában a supplier_id a primary key. Products táblában fk_supplier néven létrehoztunk egy idegen kulcsot, mely a supplier tábla supplier_id mezőjére mutat. Ezt a végén a DROP utasítással töröltük.
CREATE TABLE supplier ( supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_pk PRIMARY KEY (supplier_id) ); CREATE TABLE products ( product_id numeric(10) not null, supplier_id numeric(10) not null, CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id) ); ALTER TABLE products DROP CONSTRAINT fk_supplier;
Forrás:
https://www.techonthenet.com/oracle/foreign_keys/drop.php
Előadás diái
Alapbeállítás esetén a CONSTRAINT ENABLED (engedélyezve) állapotban található, de ha nem akarjuk engedélyezni, akkor a DISABLE-lel tudjuk ezt megtenni.
Formája:
ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;
Példa:
A supplier táblában a supplier_id a primary key. Products táblában fk_supplier néven létrehoztunk egy idegen kulcsot, mely a supplier tábla supplier_id mezőjére mutat. Ezt a végén a DISABLE utasítással felfüggesztettük.
CREATE TABLE supplier ( supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_pk PRIMARY KEY (supplier_id) ); CREATE TABLE products ( product_id numeric(10) not null, supplier_id numeric(10) not null, CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id) ); ALTER TABLE products DISABLE CONSTRAINT fk_supplier;
Forrás:
https://www.techonthenet.com/oracle/foreign_keys/disable.php
Alapbeállítás esetén a CONSTRAINT ENABLED (engedélyezve) állapotban található, de ha DISABLED (nincs engedélyezve) állapotban van, akkor engedélyezni kell, hogy érvényesüljön.
Formája:
ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;
Példa:
A supplier táblában a supplier_id a primary key. Products táblában fk_supplier néven létrehoztunk egy idegen kulcsot, mely a supplier tábla supplier_id mezőjére mutat. Ezt a végén ENABLE-vel engedélyeztük.
CREATE TABLE supplier ( supplier_id numeric(10) not null, supplier_name varchar2(50) not null, contact_name varchar2(50), CONSTRAINT supplier_pk PRIMARY KEY (supplier_id) ); CREATE TABLE products ( product_id numeric(10) not null, supplier_id numeric(10) not null, CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id) ); ALTER TABLE products ENABLE CONSTRAINT fk_supplier;
Forrás:
https://www.techonthenet.com/oracle/foreign_keys/enable.php
Már a tábla létrehozásának pillanatában is létrehozhatunk kényszereket, mellyel biztosítjuk, hogy az adatok feltöltése során nem kerülhet be a táblába biztosan hibás adat.
Általános formája:
CREATE TABLE table_name ( column1 datatype null/not null, column2 datatype null/not null, ... CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE] );
példa:
CREATE TABLE suppliers ( supplier_id numeric(4), supplier_name varchar2(50), CONSTRAINT check_supplier_id CHECK (supplier_id BETWEEN 100 and 9999) );
A suppliers táblában a supplier_id nem lehet 100nál kisebb és 9999nél nagyobb, (mert mondjuk nem létezik ilyen), akkor nem fogja engedni ezeknek a hozzáadását a CHECK kényszer miatt.
Forrás:
https://www.techonthenet.com/oracle/check.php
DROP TABLE utasítással törülhetünk egy korábban létrehozott táblát.
formája:
DROP TABLE table_name;
forrás:
https://www.tutorialspoint.com/sql/sql-drop-table.htm
Fontos, hogy szülő tábla nem dobható el Foreign Key megszorításban.
példa:
A következő esetben a RESZLEGEK táblát nem tudjuk DROP utasítással törölni, mert a MUNKASOK tabla hivatkozik rá.
CREATE TABLE RESZLEGEK(RÉSZLEG_ID NUMBER(4)PRIMARY KEY,RÉSZLEG_NÉV VARCHAR(30));
CREATE TABLE MUNKASOK (MUNKAS_ID NUMBER(6),VEZETEKNEV VARCHAR(30),KERESZTNEV VARCHAR(30), LAKCIM VARCHAR(50), RÉSZLEG_ID NUMBER(4)
REFERENCES RESZLEGEK(RÉSZLEG_ID));
DROP TABLE RESZLEGEK; -->nem fut le
Azonban ha előbb eldobjuk a MUNKASOK táblát, utána már szabadon eldobhatjuk a RESZLEGEK táblát is.
DROP TABLE MUNKASOK; -->lefut
DROP TABLE RESZLEGEK; -->lefut
Forrás:
Saját példa
Ha nem hivatkozik a táblánkra semmi, szabadon törölhetjük a táblát.
Példa:
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7) PRIMARY KEY, Név VARCHAR(50),Fizetés DECIMAL(7,0) );
DROP TABLE Dolgozó; -->törlődik a tábla
Bonyolultabb megszorításokat nem mindig lehet kényszerekkel megadni.
Példa: A dolgozó fizetése nem lehet több, mint a főnökének a fizetése.
Ha nem megoldható valami deklaratív szabályokkal, akkor programkódokkal kell. Erre alkalmasak az adatbázis triggerek.
*Triggerek a következő óráknak az anyaga lesz, akit érdekel:
https://docs.oracle.com/cd/A57673_01/DOC/server/doc/SCN73/ch15.htm
Forrás:
Előadás diái
A triggerek olyan speciális eljárások egy adatbázisban, amelyeket az INSERT, UPDATE, DELETE, TRUNCATE parancsok végrehajtások előtt, után vagy helyett hív meg a rendszer. A trigger vagy engedélyezheti vagy elvetheti az adott táblán történt módosításokat, naplózási feladatokat végezhet, járulékos módosításokat hajthat végre az adatbázisban.
Fajtái:
Fontos tudni, hogy egy táblázathoz parancsonként csak egy trigger rendelhető hozzá. Ez azt jelenti, hogy egy táblához legfeljebb három trigger készíthető el (INSERT, UPDATE, DELETE). Persze lehetőség van arra is, hogy egy trigger ne csak egy parancsnál legyen aktiválva. Előfordulhat, hogy például az INSERT és UPDATE parancsoknál történő ellenőrzések (szinte) megegyeznek: ilyenkor nem szükséges két triggert írni, hiszen az ellenőrzést eggyel is meg lehet oldani.
*Ez későbbi előadások anyaga
Forrás:
https://hu.wikipedia.org/wiki/Trigger_(adatb%C3%A1zisok)
Az adatbáziskezelő rendszer figyeli a felhasználók által megkísérelt adatmódosításokat (INSERT, DELETE, UPDATE, stb.) és ha azok megpróbálnák megszegni "a szabályt", akkor azt azonnal megakadályozza, az ilyen műveletek nem sikerülnek. A megszorítások nevét a felhasználó megadhatja, egyébként a rendszer generál egy azonosító nevet SYS_Cn formátumban. Hibajelzésekben jelenik meg ez a név, valamint használhatjuk azokat az ALTER TABLE utasításban is. A megszorítás állapotban a megszorítási szabályok működtetésével kapcsolatos dolgokat lehet definiálni, például be- vagy kikapcsolt (ENABLE, DISABLE) állapot. Alaphelyzetben a megszorítások be vannak kapcsolva.
Általános alakja:
[CONSTRAINT megszorítás_név] megszorítás [megszorítás_állapot]
Bevezető példa: Dolgozó tábla
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7) PRIMARY KEY, Név VARCHAR(50),Fizetés DECIMAL(7,0) );
A dolgozó törzsszáma maximum 7 karakter lehet és elsődleges kulcs, a név 50 karakter, a fizetés pedig maximum 7 jegyű egész szám.
Töröljük ki majd hozzuk létre egy olyan korlátozással a táblát, hogy fizetésnek ne lehessen 100000 forintnál (minimálbérnél) kevesebbet megadni.
DROP TABLE Dolgozó;
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7), Név VARCHAR(50), Fizetés DECIMAL(7,0) CHECK (Fizetés >100000));
insert into Dolgozó (A_dolgozó_törzsszáma,Név,Fizetés) values ('1112222','Nagy Erika','200000');
--->helyes
insert into Dolgozó (A_dolgozó_törzsszáma,Név,Fizetés) values ('1112222','Nagy Erika','40000');
--->nem fogja engedni, mert kisebb fizetés van megadva a minimálbérnél
Forrás:
http://aries.ektf.hu/~holovacs/AB/4_SQL_1.htm#s44
http://www.inczedy.hu/~szikszai/adatbazis/sql1.pdf
előadás diái
saját példa
A különböző adatbáziskezelő rendszerek más-más módon végzik a kényszerek ellenőrzését.
Forrás:
Előadás diái
Az Oracle azonnal, a DML utasítás végén ellenőrzi a kényszert.
példa:
RÉSZLEGEK tábla RÉSZLEG_ID-ra hivatkozik a MUNKASOK tábla RÉSZLEG_ID-ja. MUNKASOK Táblában nem tudok adatot feltölteni addig, míg legalább egy RÉSZLEG_ID-t nem adtam meg a RÉSZLEGEK táblában. (Aki akarja kipróbálhatja)(És ezután is csak olyat lehet megadni ami megtalálható.)
CREATE TABLE RESZLEGEK(RÉSZLEG_ID NUMBER(4)PRIMARY KEY,RÉSZLEG_NÉV VARCHAR(30));
CREATE TABLE MUNKASOK (MUNKAS_ID NUMBER(6),nev varchar(20), RÉSZLEG_ID NUMBER(4),
CONSTRAINT MUNKASOK_RESZLEGEK_FK FOREIGN KEY (RÉSZLEG_ID) REFERENCES RESZLEGEK(RÉSZLEG_ID));
Forrás:
Előadás diái
Saját példa
A kényszerek ellenőrzése különböző módon történik, a kényszertől függően.
Az indexek automatikusan létrejönnek a CONSTRAINT létrehozásának eredményeképpen. (Következő óra)
A legnagyobb kihívás a több felhasználó által egyidőben végrehajtott módosítások ellenőrzése jelenti. A FOREIGN KEY megszorítást a különböző adatbázis kezelő rendszerek más-más módon biztosítják. Egyes rendszereknél ilyenkor is kötelező az index (a külső kulcson) még másoknál csak ajánlott.
Forrás:
Előadás diái
Az SQL szabvány nem definiálja elég szigorúan, ezért az egyes adatbáziskezelő rendszerek valamelyest eltérhetnek egymástól ebben:
A kényszerek fajtái:
Forrás:
előadás diái
Az adatbázisokban nem csupán az egyedtípusokat, hanem azok közti kapcsolatokat is el kell tárolnunk. A táblák közötti kapcsolatok tárolására használjuk az idegen kulcsokat. Idegen kulcsnak nevezzük egy tábla olyan mezőjét, amelynek értékei egy másik tábla rekordjait azonosítják. Az idegen kulcs segítségével a táblák közötti kapcsolatokat tudjuk eltárolni a relációs adatmodellnek megfelelő adatbázisokban. Tehát a "külső kulcs" kényszer meggátolja, hogy olyan értéket vigyünk be egy tábla oszlopába, amely érték nem található meg egy táblánk elsődleges kulcsában vagy egyedi kulcsában.
példa:
Tegyük fel, hogy feladatunk, hogy személygépkocsik és tulajdonosaik adatinak tárolását szeretnénk megvalósítani.
Az autók rendszámát, gyártmányát, típusát, és hengerűrtartalmát, a tulajdonosok nevét, személyi igazolványszámát, valamint lakcímét szeretnénk tárolni.
Az Autók táblában a RendSzam a Személyek táblában a SzemIgSzam lesz az azonosító.
Az Autók egyedtípusban úgy jelezzük a tulajdonost, hogy a táblában elhelyezünk a Tulajdonos mezőt, amelynek minden értéke a Személyek tábla azonosító mezőjéből származik, azaz azonosít egy személyt.
Az Autók tábla Tulajdonos mezője idegen kulcs.
CREATE TABLE Autok (Rendszam VARCHAR(6),Gyártmány VARCHAR(30), Tipus VARCHAR(20), Hengerurtartalom NUMBER(3), Tulajdonos VARCHAR(8)
,CONSTRAINT autok_Tulajdonos_fk FOREIGN KEY (Tulajdonos) REFERENCES Tulajdonos(SzemIgSzam));
CREATE TABLE Tulajdonos(SzemIgSzam VARCHAR(8) PRIMARY KEY,Vezeteknev VARCHAR(20), Keresztnev VARCHAR(20), Lakcim VARCHAR(100));
Ezáltal, ha a személyek tábla tárolja az összes létező személyi igazolványszámot nem tudunk nem létező tulajdonost megadni egy autóhoz mert a tulajdonos mező idegen kulcs, mely csak a Személyek tábla SzemIgSzam-ból vehet fel értéket.
Forrás:
http://www.tankonyvtar.hu/hu/tartalom/tamop425/0005_25_adatbazis_kezeles_scorm_02/262_specilis_mezk_a_relcis_adatmodellben.html
Saját példa
Ha egy tábla FOREIGN KEY kulcsa ugyanazon tábla PRIMARY KEY kulcsára hivatkozik, szülő-gyerek kapcsolatot tudunk létrehozni. Ezáltal a tábla egyik sorának nem lesz szülője. Ebben a sorban a FOREIGN KEY oszlop értéke NULL. Ez különösen hasznos nagy szervezeteknél, az információ áramlása során.
példa: Főnök-ügyvezető-menedzser-...
Forrás:
Előadás diái
https://docs.oracle.com/cd/E16582_01/doc.91/e15115/crtng_parnt_child_reltnps.htm#EOAHF00745
Foreign Key akár ugyanazon tábla elsődleges kulcsára is hivatkozhat.
Példa:
Itt a MENEDZSER_ID az idegen kulcs, mely a MUNKAS_ID-ra mutat, ami az elsődleges kulcs.
CREATE TABLE MUNKASOK (MUNKAS_ID NUMBER(6) PRIMARY KEY,VEZETEKNEV VARCHAR(30),KERESZTNEV VARCHAR(30), LAKCIM VARCHAR(50), RÉSZLEG_ID NUMBER(4),
MENEDZSER_ID NUMBER(6),
CONSTRAINT MUNKAS_MENEDZSER_FK FOREIGN KEY (MENEDZSER_ID) references MUNKASOK(MUNKAS_ID));
rövidebb megoldás:
CREATE TABLE MUNKASOK (MUNKAS_ID NUMBER(6) PRIMARY KEY,VEZETEKNEV VARCHAR(30),KERESZTNEV VARCHAR(30), LAKCIM VARCHAR(50), RÉSZLEG_ID NUMBER(4),
MENEDZSER_ID NUMBER(6) references MUNKASOK(MUNKAS_ID));
Forrás:
előadás diái
saját példa
Foreign Key-t többféle formában is megadhatjuk.
Példa:
A következő foreign key kényszerek ugyanazt eredményezik.
CREATE TABLE RESZLEGEK(RÉSZLEG_ID NUMBER(4)PRIMARY KEY,RÉSZLEG_NÉV VARCHAR(30));
CREATE TABLE MUNKASOK (MUNKAS_ID NUMBER(6),VEZETEKNEV VARCHAR(30),KERESZTNEV VARCHAR(30), LAKCIM VARCHAR(50), RÉSZLEG_ID NUMBER(4),
CONSTRAINT MUNKASOK_RESZLEGEK_FK FOREIGN KEY (RÉSZLEG_ID) REFERENCES RESZLEGEK(RÉSZLEG_ID));
CREATE TABLE MUNKASOK (MUNKAS_ID NUMBER(6),VEZETEKNEV VARCHAR(30),KERESZTNEV VARCHAR(30), LAKCIM VARCHAR(50), RÉSZLEG_ID NUMBER(4),
FOREIGN KEY (RÉSZLEG_ID) REFERENCES RESZLEGEK(RÉSZLEG_ID));
CREATE TABLE MUNKASOK (MUNKAS_ID NUMBER(6),VEZETEKNEV VARCHAR(30),KERESZTNEV VARCHAR(30), LAKCIM VARCHAR(50), RÉSZLEG_ID NUMBER(4) REFERENCES RESZLEGEK(RÉSZLEG_ID));
CREATE TABLE MUNKASOK (MUNKAS_ID NUMBER(6),VEZETEKNEV VARCHAR(30),KERESZTNEV VARCHAR(30), LAKCIM VARCHAR(50), RÉSZLEG_ID NUMBER(4) REFERENCES RESZLEGEK);
Forrás:
Előadás diái
Saját példa
A UNIQUE KEY biztosítja, hogy egy oszlopba különböző értékek kerüljenek (akárcsak a primary key), ebből viszont korlátlan számú lehet, akár 0 is. NULL értéket is felvehet, mert az ismeretlen értékkel nem szegjük meg az egyediséget.
Forrás:
https://www.techonthenet.com/oracle/unique.php
előadás diái
szintaxisa:
CREATE TABLE table_name ( column1 datatype [ NULL | NOT NULL ], column2 datatype [ NULL | NOT NULL ], ... CONSTRAINT constraint_name UNIQUE (uc_col1, uc_col2, ... uc_col_n) );
A következő 3 példa egyaránt az email címet állítja be egyedire, azaz nem adható olyan email cím melyet már használ valaki, viszont üresen lehet hagyni, mert nem primary key.
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7), Név VARCHAR(50),Email VARCHAR(50) UNIQUE, Fizetés DECIMAL(7,0) );
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7), Név VARCHAR(50),Email VARCHAR(50), Fizetés DECIMAL(7,0), CONSTRAINT email_check UNIQUE(Email) );
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7), Név VARCHAR(50),Email VARCHAR(50)CONSTRAINT email_check UNIQUE, Fizetés DECIMAL(7,0) );
Forrás:
https://www.techonthenet.com/oracle/unique.php
saját példa
A Primary key egyértelműen azonosít minden rekordot a táblában. Célszerű, ha minden táblának van egy elsődleges kulcsa.
forrás:
előadás diái
https://www.techonthenet.com/oracle/primary_keys.php
szintaxisa:
CREATE TABLE table_name ( column1 datatype null/not null, column2 datatype null/not null, ... CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ... column_n) );
A következő 3 példa egyaránt a dolgozó törzsszámát állítja be elsődleges kulcsnak. Formailag a [CONSTRAINT constraint_name]-t ellehet hagyni, viszont ha a CONSTRAINT feltétel a végén található és nem közvetlen következik, akkor figyelni kell a vesszőre!
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7) PRIMARY KEY, Név VARCHAR(50), Fizetés DECIMAL(7,0) );
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7) CONSTRAINT dolgozo_pk PRIMARY KEY, Név VARCHAR(50), Fizetés DECIMAL(7,0) );
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7) , Név VARCHAR(50), Fizetés DECIMAL(7,0), CONSTRAINT dolgozo_pk PRIMARY KEY (A_dolgozó_törzsszáma));
forrás:
előadás diái
https://www.techonthenet.com/oracle/primary_keys.php
A CHECK kényszer egy olyan logikai kifejezés, melynek minden sorra teljesülnie kell. A kulcsszót 1 zárójelbe tett feltétel követi, amelyet az attribútum minden értékének ki kell elégítenie.
1 attribútumra vonatkozó CHECK feltételt csak akkor ellenőriz a rendszer, amikor valamelyik sorban az adott attribútum új értéket kap. Ha az új érték megsérti a feltételt, akkor a rendszer az adatmódosítást visszautasítja. Az SQL szintaxis sokszínűsége miatt több formában is lelehet írni ugyanazt. Az Oracle-on kívüli adatbáziskezelőknél emiatt formai különbségek előfordulhatnak.
Forrás:
http://vizsgazz.hu/index.php?option=com_content&view=article&id=74:09tetel&catid=105&Itemid=221
előadás diái
A következő 3 példa egyaránt azt korlátozza, hogy fizetésnek ne lehessen 100000 forintnál kevesebbet megadni. Formailag a [CONSTRAINT constraint_name]-t ellehet hagyni, viszont ha a CONSTRAINT feltétel a végén található és nem közvetlen következik, akkor figyelni kell a vesszőre!
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7), Név VARCHAR(50), Fizetés DECIMAL(7,0) CHECK (Fizetés >100000));
CREATE TABLE Dolgozó (A_dolgozó_törzsszáma CHAR(7), Név VARCHAR(50), Fizetés DECIMAL(7,0)CONSTRAINT Fizetes_min CHECK (Fizetés >100000));
CREATE TABLE Dolgozó (Fizetés DECIMAL(7,0), A_dolgozó_törzsszáma CHAR(7), Név VARCHAR(50), CONSTRAINT Fizetes_min CHECK (Fizetés >100000));
Forrás:
http://vizsgazz.hu/index.php?option=com_content&view=article&id=74:09tetel&catid=105&Itemid=221
saját példa
A NOT NULL kényszer meggátolja, hogy a tábla egy oszlopában NULL (üres) érték tárolódjon. A feltétel ellenőrzése sor beszúrásakor, vagy az attribútum módosításakor történik. A CHECK CONSTRAINT egy speciális esetének tekinthető.
Forrás:
előadás diái
Az alapszintaxisa:
expression IS NOT NULL
Példa:
CREATE TABLE Dolgozó
(A_dolgozó_törzsszáma CHAR(7) PRIMARY KEY, Név VARCHAR(50),Email VARCHAR(50) NOT NULL, Fizetés DECIMAL(7,0) );
Az email címet kötelező kitölteni, nem vehet fel NULL értéket a korlátozás miatt.
Forrás:
https://www.techonthenet.com/oracle/isnotnull.php