23
Parasta kaudzes (heap) tipa tabula tabula STUDENTI UZV VAR DZIM KURSS GRUPA ROWID Zars Jūli js vīrie tis 5 DB5 rowid1 Caune Anit a sievi ete 5 DB5 rowid2 Roze Rasm a sievi ete 4 DB4 rowid3 Liepa Ines sievi 4 DB4 rowid4 Diska atmiņa 2. bloks Zars Jūli js vīrie tis 5 DB5 Caune Anit a sievi ete 5 DB5 Roze Rasm a sievi ete 4 DB4 Liepa Ines sievi 4 DB4 3. bloks 1. bloks 1 2 3 1

Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Parasta kaudzes (heap) tipa tabula

tabula STUDENTIUZV VAR DZIM KURSS GRUPA ROWIDZars Jūlijs vīrietis 5 DB5 rowid1Caune Anita sieviete 5 DB5 rowid2Roze Rasma sieviete 4 DB4 rowid3Liepa Inese sieviete 4 DB4 rowid4Celms Zane sieviete 3 DB3 rowid5Sakne Jānis vīrietis 3 DB3 rowid6Apse Juris vīrietis 1 DB1 rowid7Alksnis

Varis vīrietis 1 DB1 rowid8

Diska atmiņa

2. bloksZars Jūlijs vīrietis 5 DB5Caune Anita sieviete 5 DB5Roze Rasma sieviete 4 DB4Liepa Inese sieviete 4 DB4Celms Zane sieviete 3 DB3Sakne Jānis vīrietis 3 DB3Apse Juris vīrietis 1 DB1Alksnis

Varis vīrietis 1 DB1

1. bloks

3. bloks

1 2 3

1

Page 2: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Relāciju datu bāzes parasta kaudzes (heap) tipa datu tabula

Tabula ir datu bāzes datu glabāšanas pamatvienība. Dati tiek glabāti rindās un kolonnās.Definējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas nosaukums un datu tips. Simbolu rindas tipiem (VARCHAR2, CHAR) tiek norādīts rindas garums (width). Decimālkaitļu tipa kolonām tiek norādīts zīmju skaits aiz punkta. Rinda ir kolonu informācijas kolekcija, kas atbilst vienam ierakstam.

Var norādīt likumus jeb kārtulas katrai tabulas kolonnai. Šīs kārtulas sauc par integritātes ierobežojumiem. Viens piemērs ir NOT NULL integritātes ierobežojums. Šis ierobežojums prasa kolonas vērtību katrā rindā.

Varat norādīt datu šifrēšanu, pirms to saglabāšanas. Ja lietotāji mēģina apiet datu bāzes piekļuves kontroles mehānismus, aplūkojot datu failus tieši ar operētājsistēmas rīkiem, šifrēšana neļauj šiem lietotājiem skatīt sensitīvus datus.

Tabulā var būt iekļautas arī virtuālās kolonnas. Virtuālā kolonna ir līdzīga jebkurai citai tabulas kolonnai, izņemot to, ka tās vērtība tiek iegūta, novērtējot izteiksmi. Izteiksme var ietvert kolonnas no vienas tabulas, konstantes, SQL funkcijas un lietotāja definētas PL/SQL funkcijas. Nevar tieši ierakstīt vētību virtuālajā kolonnā.

Daži kolonnu tipi, piemēram, LOB (lielie objekti), masīvs un ligzdotā tabula, tiek glabāti savos segmentos. LOB un masīvu glabā LOB segmentos, bet ligzdotā tabula tiek glabātas papildtabulās. Šiem segmentiem var norādīt STORAGE klauzulu, kas ignorēs tabulas līmenī norādītos glabāšanas parametrus.

Pēc tabulas izveides ievada datu rindas, izmantojot SQL priekšrakstus vai DBS lielapjoma ielādes utilītu. Tabulas datus pēc tam var izgūt, dzēst vai atjaunināt, izmantojot SQL.

1.kolona 2. kolona 3. kolona 4. kolona

2

Page 3: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Parastas tabulas definēšana

Lai izveidotu tabulu:1) sākumā jādefinē šīs tabulas struktūra CREATE TABLE), norādot kolonas un to

datu tipus;2) kolonām jānorāda kolonas un tabulas tipa ierobežojumi (CONSTRAINT);3) jāievieto tabulā dati (INSERT vai SQL*Loader).

Tabulas definēšana komandas CREATE TABLE vienkāršota sintakse:

create table <TABULAS_NOS> (

<KOLONAS_NOS> <KOLONAS_TIPS> [DEFAULT <VĒRTĪBA_PĒC_NOKLUSĒJUMA>] [CONSTRAINT <IEROBEŽOJUMA_NOS> <IEROBEŽOJUMS>],

<KOLONAS_NOS> <KOLONAS_TIPS> [DEFAULT <VĒRTĪBA_PĒC_NOKLUSĒJUMA>] [CONSTRAINT <IEROBEŽOJUMA_NOS> <IEROBEŽOJUMS>], ..., [TABULAS IEROBEŽOJUMI] ) [TABULAS FIZIKĀLIE PARAMETRI]

Piezīme: DEFAULT nosaka, kāda vērtība tiks piešķirta kolonai pēc noklusējuma.

3

Page 4: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Datu bāzes sistēmas Oracle iekšējie datu tipi

Oracle iekšējie datu tipi Maksimālais garumsVARCHAR2 4000 baitiNUMBER 21 baitsLONG 2^31-1 baitiROWID 10 baitiDATE 7 baitiRAW 2000 baitiLONG RAW 2^31-1 baitiCHAR 2000 baitiLietotāja definēts tips (objects, VARRAY, ievietota tabula) <N/A>REF <N/A>CLOB ~4000BLOB ~4000UROWID 4000 baiti

4

Page 5: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Tabulas kolonu vērtību ierobežojumu definēšana

Ir divu veidu tabulas kolonu vērtību ierobežojumi:1) kolonu vērtību ierobežojumi – ierobežojums vienas kolonas

vērtībai;2) raksta (tabulas) ierobežojumi – ierobežojums vairākām kolonām,

to vērtības ir savstarpēji atkarīgas.

Kolonas (lauku) ierobežojuma definēšana:CONSTRAINT ierobežojuma_nosaukumsNULL vai NOT NULLPRIMARY KEY vai UNIQUE CHECK (pārbaudes_noteikumi)REFERENCES shēma.tabulas_nosaukums (lauka_apzīmējums) ON DELETE CASCADE

Raksta (tabulas) ierobežojuma sintakse ir sekojoša:CONSTRAINT ierobežojuma nosaukumsPRIMARY KEY vai UNIQUE (lauka_apzīmējums, lauka_apzīmējums, …)CHECK (pārbaudes_noteikumi)FOREIGN KEY (lauka_apzīmējums, …) REFERENCES

shēma.tabulas_nosaukums (lauka_apzīmējums, …) ON DELETE CASCADE

5

Page 6: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

NULL vai NOT NULL lauka vērtība var tikt neievadīta vai ir obligāti jāievada.PRIMARY KEY vai UNIQUE lauks (vai lauki) ir primārā atslēga vai tam ir tikai unikālas vērtības.CHECK noteikums lauka vērtībai vai tabulas rakstam (rindai).FOREIGN KEY norāda lauku vai lauku kopu, kas veidos atsauces atslēgu.REFERENCES norāda primāro atslēgu vai lauku ar unikālām vērtībām uz kuru veidos saiti atsauksmes atslēga.ON DELETE CASCADE norāda dzēšanas režīmu pakārtotai tabulai (ja tiek nodzesta rinda galvenajā tabulā tiek nodzestas arī visas piesaistītās (laukiem PRIMARY KEY vai UNIQUE) rindas pakārtotajā tabulā).DISABLE aizliedz ierobežojuma lietojumu (uz laiku līdz ar komandu ALTER TABLE to atļauj).

6

Page 7: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Ierobežojumu piemēri1. Raksta (tabulas) tipa ierobežojumi CONSTRAINT Ierob_1 UNIQUE (PERS_KODS), UNIQUE (PERS_KODS),

CONSTRAINT Ierob_2 PRIMARY KEY (UZV, VAR, TEV),PRIMARY KEY (UZV, VAR, TEV),

CONSTRAINT Ierob_3 FOREIGN KEY (VID) REFERENCES Shema_1.Tabula_2 (Lauks_3) ON DELETE CASDADE,FOREIGN KEY (VID) REFERENCES Shema_1.Tabula_2 (Lauks_3) ON DELETE CASDADE,

CONSTRAINT Ierob_4 CHECK (DAT_NO<=DAT_LIDZ),CHECK (DAT_NO<=DAT_LIDZ),

2. Kolonas tipa ierobežojumilauka_apzīmējums.lauka_tips CONSTRAINT Ierob_1 NOT NULL,lauka_apzīmējums.lauka_tips NOT NULL,

lauka_apzīmējums.lauka_tips CONSTRAINT Ierob_2 PRIMARY KEY,lauka_apzīmējums.lauka_tips PRIMARY KEY,

lauka_apzīmējums.lauka_tips CONSTRAINT Ierob_3 REFERENCES Shema_1.Tabula_2 (Lauks_2),lauka_apzīmējums.lauka_tips REFERENCES Shema_1.Tabula_2 (Lauks_2) ON DELETE CASCADE,

lauka_apzīmējums.lauka_tips CONSTRAINT Ierob_4 CHECK (lauka_apzīmējums>=100),lauka_apzīmējums.lauka_tips _4 CHECK (lauka_apzīmējums>=100),

7

Page 8: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Iespējamie kolonas ierobežojumi

Ierobežojums PaskaidrojumsNULL / NOT NULL

Nosaka, vai kolona var saturēt vērtību NULL (pēc noklusējuma ir noteikts NULL).

UNIQUE / PRIMARY KEY

Nosaka, vai kolonā drīkst būt tikai unikālas vērtības, vai arī šī kolona ir tabulas primārā atslēga (tāda drīkst būt tikai viena). Kolona nevar būt vienlaicīgi ar UNIQUE un PRIMARY KEY ierobežojumiem.

REFERENCES Norāda citas tabulas UNIQUE vai PRIMARY KEY lauku, ar kuru tiek veidots saites ierobežojums. Var norādīt ON DELETE, paziņojot, ko darīt ar bērna (child) tabulas atbilstošajām kolonas vērtībām, kad no vecāka (parent) tabulas attiecīgās vērtības tiek dzēstas. CASCADE – vērtības tiek dzēstas. SET NULL – vērtības tiek pārvēstas par NULL. Ja nekas nav norādīts, Oracle neļauj izdzēst nekādas vērtības no vecāka (parent) tabulas, kamēr tās nav izdzēstas no bērna (child) tabulas.

CHECK Norāda noteikumu kolonas vērtībai (kādas vērtības drīkst būt).

8

Page 9: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

DB tabulas FIRMAS veidošanas piemērsTabula ar kolonas (lauka) tipa ierobežojumiem.

drop table FIRMAS; -- Tabulas nodzēšana, ja iepriekš bijusi izveidota.

create table FIRMAS(

F_NUM number constraint IEROB_PA primary key,

F_NOS varchar2(35) constraint IEROB_NOS not null,

DIB_DAT date default SYSDATE,

ADRESE varchar2(30),

TELEF varchar2(10));

insert into FIRMAS (F_NUM, F_NOS, DIB_DAT, ADRESE, TELEF)

values (1, 'AAA', TO_DATE('21-11-2001', 'DD-MM-YYYY'), 'Avotu

iela 17 dz. 7, Rīga', '67123456');

insert into FIRMAS (F_NUM, F_NOS, DIB_DAT, ADRESE, TELEF)

values (2, 'BBB', TO_DATE('28-07-2005', 'DD-MM-YYYY'), 'Upes iela

21 dz. 15, Rīga', '67234567');

select a.* from FIRMAS a;

9

Page 10: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Iespējamie raksta (tabulas) ierobežojumi

Ierobežojums PaskaidrojumsUNIQUE / PRIMARY KEY

Nosaka, kura kolona vai kolonu grupa drīkst saturēt tikai unikālas vērtības, vai arī būt tabulas primārā atslēga.

CHECK Norāda noteikumu kolonas lauku grupas vērtībām.

FOREIGN KEY Definē saites ierobežojumu ar citu tabulu.

10

Page 11: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

DB tabulas DARBINIEKI veidošanas piemērs Tabula ar kolonas un tabulas (raksta) tipa ierobežojumiem

create table DARBINIEKI(

D_NUM number primary key,

UZV varchar2(35) not null,

VAR varchar2(25) not null,

DZIM varchar2(10) default 'sieviete' constraint IEROB_DZIM

check( DZIM IN ('sieviete', 'vīrietis')),

SAK_DAT date default SYSDATE,

BEIGU_DAT date,

ALGA number(10, 2) constraint IEROB_ALGA check (ALGA

>= 300),

FIRMAS_NUM number,

constraint IEROB_DAT check(SAK_DAT <= BEIGU_DAT),

constraint IEROB_SAITE foreign key (FIRMAS_NUM) references

FIRMAS(F_NUM));

insert into DARBINIEKI values (101, 'Koks', 'Juris', 'vīrietis', TO_DATE('21-11-2001', 'DD-MM-YYYY'),TO_DATE('11-01-2010', 'DD-MM-YYYY'), 300, 1);

insert into DARBINIEKI values (102, 'Celms', 'Varis', 'vīrietis', TO_DATE('11-01-2004', 'DD-MM-YYYY'), TO_DATE('12-09-2009', 'DD-MM-YYYY'), 400, 1);

insert into DARBINIEKI values (103, 'Sakne', 'Liene', 'sieviete', TO_DATE('26-12-2002', 'DD-MM-YYYY'), TO_DATE('12-11-2010', 'DD-MM-YYYY'), 350, 2);

11

Page 12: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

select a.*from DARBINIEKI a;

12

Page 13: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Tabulas metadatu izgūšana no datu bāzes datu vārdnīcas (dictionary) skatiem

Datu bāzes vārdnīcas skatu tipi:1) USER_ ... (var izmantot lietotājs, kurš definējis shēmas objektu.)2) ALL_ ... (var izmantot jebkurš lietotājs).3) DBA_ ... (var izmantot datu bāzes adminstrators).

Datu bāzes vārdnīcas skats ALL_TAB_COLUMNS ar kolonām:1) TABLE_NAME – tabulas nosaukums;2) COLUMN_NAME – kolonas nosaukums;3) DATA_TYPE – kolonas datu tips;4) DATA_LENGTH – kolonas datu tipa garums;5) DATA_PRECISION – skaitlisko datu tipu precizitāte;6) DATA_SCALE – skaitlisko datu tipu ciparu skaits pēc komata.

select TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE from ALL_TAB_COLUMNSwhere TABLE_NAME = 'FIRMAS';

13

Page 14: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Tabulas ierobežojumu metadatu izgūšana no datu bāzes vārdnīcas (dictionary) skatiem

Izgūsim arī datu vārdnīcas datus par tabulu ierobežojumiem. Lai to izdarītu, jālieto datu vārdnīcas skats ALL_CONSTRAINTS ar kolonām:

1) TABLE_NAME – tabulas nosaukums;2) CONSTRAINT_NAME – ierobežojuma nosaukums;3) CONSTRAINT_TYPE – ierobežojuma tips (P – PRIMARY KEY,

R – REFERENCE, C – parastais);4) SEARCH_CONDITION – ierobežojuma noteikums.

select TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE, SEARCH_CONDITION from ALL_CONSTRAINTSwhere TABLE_NAME = 'FIRMAS';

14

Page 15: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

select TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE, SEARCH_CONDITION from ALL_CONSTRAINTSwhere TABLE_NAME = 'DARBINIEKI';

15

Page 16: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Tabulas struktūras maiņa un ierobežojumu modificēšana

Lai veiktu tabulas struktūras maiņu, tiek lietota komanda ALTER TABLE:

alter table ADD kolonas_definējums ALTER kolonas_apzīmējums SET DEFAULT vērtība DROP DEFAULT DROP kolonas_apzīmējums CASCADE RESTRICT ADD primārās_atslēgas_definējums ārējās_atslēgas_definējums unikalitātes definējums pārbaudes_definējums DROP CONSTRAINT ierobežojuma_nosaukums CASCADE RESTRICT

Piemērs:alter table DARBINIEKI ADD AMATS varchar2(10);

16

Page 17: Tabulas kolonu vērtību ierobežojumu ... - WordPress.com€¦  · Web viewDefinējot tabulu tiek norādīts tās nosaukums un kolonnu kopu. Katrai kolonnai tiek piešķirts kolonnas

Ierobežojumu modificēšana

ALTER TABLE Tabula_1 MODIFY (kolona_4 number CONSTRAINT Ierob_5 NOT NULL);

ALTER TABLE Tabula_1 ADD CONSTRAINT Ierob_6 UNIQUE (kolona_1, kolona_2);

17