Dette kapittelet beskriver ulike begrensninger i databasen.
Innledning
Å håndheve database integritet, er et sett med regler som er definert, kalt begrensninger. Begrensningene enten tillate eller forby verdiene i kolonnene.
i en sanntid database aktiviteter, bør dataene legges med visse restriksjoner. For eksempel i en salgs database, bør salgs-id eller transaksjon-id være unik. De begrensninger typene er:
NOT NULL
Unique
Primærnøkkel
Utenlandsk Key
Sjekk
Informasjons
Begrensninger er bare forbundet med tabeller. De brukes til bare bestemte bord. De er definert og brukes på bordet ved bordet skapelsen
Forklaring av hver begrensning.
NOT NULL
Det er en regel som forbyr nullverdier fra én eller flere kolonner i tabellen
Syntax:
db2 opprette tabellen < table_name > (col_name COL_TYPE ikke null, ..)
Eksempel
. : [. For å lage et salgsbord, med fire kolonner (id, varenavn, stk, pris) I denne legger til "ikke null" begrensninger på alle kolonner for å unngå å danne noen null celle i tabellen]
db2 opprette tabellen shopper. salg (id bigint ikke null, varenavn varchar (40) ikke null, qty int ikke null, prisen dobles ikke null)
Sette NOT NULL-verdier i tabellen
Du kan sette inn verdier i tabellen som vist nedenfor :
Eksempel: product: [ERRORoneous Query]
db2 innsatsen i shopper.sales (id, varenavn, Antall) verdier (1, 'raagi', 12)
Output: product: [Riktig spør]
DB21034E Kommandoen ble behandlet som en SQL-setning, fordi det ikke var en gyldig kommandolinjebehandleren kommando. Under SQL behandling returnerte den: SQL0407N Tildeling av en NULL verdi til en NOT NULL kolonne "TBSPACEID = 5, TABLEID = 4, COLNO = 3" er ikke tillatt. SQLSTATE = 23502
Eksempel: product: [Riktig spør]
db2 innsatsen i shopper.sales (id, varenavn, Antall, pris) verdier (1, 'raagi', 12, 120.00) db2 innsats inn shopper.sales (id, varenavn, stk, pris) verdier (1, 'raagi', 12, 120.00)
Output:.
DB20000I SQL kommando fullført
Unique begrensninger
Ved hjelp av disse begrensningene, kan du sette verdier av kolonner unikt. For dette, er entydige begrensninger erklært med "ikke null" begrensning på tidspunktet for å lage tabellen
Syntax.
Db2 opprette tabellen < TAB_NAME > (< col > < kolonnetype > ikke null unikt, ...)
Eksempel:
db2 opprette tabellen shopper.sales1 (id bigint ikke null unik, varenavn varchar (40) ikke null, qty int ikke null, prisen dobles ikke null)
Sette verdiene inn i tabellen
Eksempel:
Slik setter du inn fire forskjellige rader med unike IDer som 1, 2, 3 og 4.
db2 Sett inn shopper.sales1 (id, varenavn, Antall, pris) verdier (1, 'søt', 100, 89) db2 setter inn shopper.sales1 (id, varenavn, Antall, pris) verdier (2, "Choco", 50 , 60) db2 setter inn shopper.sales1 (id, varenavn, Antall, pris) verdier (3, 'smør', 30, 40) db2 innsatsen i shopper.sales1 (id, varenavn, Antall, pris) verdier (4, ' melk ", 1000, 12)
Eksempel:
å sette inn en ny rad med" id "value 3
db2 sette inn shopper.sales1 (id, varenavn, Antall, pris) verdier (3 'ost', 60, 80)
Output Bilde: når du prøver å sette inn en ny rad med eksisterte id verdi det vil vise dette resultatet:
DB21034E Kommandoen ble behandlet som en SQL-setning fordi det ikke var en gyldig kommandolinjebehandleren kommando. Under SQL behandling returnerte den: SQL0803N En eller flere verdier i INSERT-setningen, UPDATE-setningen eller fremmednøkkeloppdateringen forårsaket av aDELETE uttalelse er ikke gyldige fordi primærnøkkelen, den entydige begrensningen eller entydige indeksen identifisert av "1" tvinger table "shopper. SALES1 "fra å ha like verdier for indeksnøkkelen. SQLSTATE = 23505
Primærnøkkel
I likhet med de unike begrensninger, kan du bruke en "primærnøkkel" og en "fremmed nøkkel" begrensningen til å erklære relasjoner mellom flere tabeller.
Syntax:
db2 opprette tabellen < TAB_NAME > (
Eksempel
: Å skape "salesboys 'bord med" sid "som en primærnøkkel
db2 lage tabell shopper.salesboys (sid int ikke null, navn varchar (40) ikke null, lønn doble ikke null, begrensning pk_boy_id primærnøkkel (sid))
Fremmednøkkel Anmeldelser
A fremmed nøkkel er et sett av kolonner i en tabell som er nødvendig for å passe i det minste en primærnøkkel av en rad i en annen tabell. Det er en referansebegrensning eller referanseintegritet begrensning. Det er en logisk regel om verdier i flere kolonner i en eller flere tabeller. Det muliggjør nødvendig sammenheng mellom bordene.
Tidligere opprettet du en tabell som heter "shopper.salesboys". For denne tabellen, er primærnøkkelen "sid". Nå er du oppretter en ny tabell som har salgs guttens personlige detaljer med annet skjema som heter "arbeidstaker" og tabell kalt "salesboys". I dette tilfellet er "sid" fremmednøkkel
Syntax.
Db2 opprette tabellen < TAB_NAME > (< col > < kolonnetype >, begrensning < const_name > fremmednøkkel (< col_name >) henvisning < ref_table > (< ref_col >)
Eksempel
: [For å opprette en tabell med navnet 'salesboys "med fremmednøkkelkolonne' sid ']
db2 lage tabell employee.salesboys (sid int, navn varchar (30) ikke null, telefon int ikke null, begrensning fk_boy_id fremmednøkkel (sid) referanser shopper.salesboys (SID) på slette begrense)
Eksempel
: [Sette verdier i primærnøkkel tabellen "shopper.salesboys"]
db2 innsatsen i shopper.salesboys verdier (100, 'Raju', 20000.00), (101, 'Kiran', 15000.00), (102, ' Radha ', 10000.00), (103,' Wali ', 20000.00), (104,' rayan ', 15000.00)
Eksempel
: [Sette verdiene inn utenlandske nøkkel table "employee.salesboys" [uten feil]]
db2 sette inn employee.salesboys verdier (100, 'Raju', 98998976), (101, 'Kiran', 98911176), (102, 'Radha', 943245176), (103, 'Wali', 89857330), (104, 'rayan', 89851130)
Hvis du har angitt et ukjent nummer, som ikke er lagret i "shopper.salesboys" tabellen, det vil vise deg SQL-feil.
eksempel
: [feil utførelse]
db2 innsatsen i employee.salesboys verdier (105, 'rayan', 89851130)
Output:
DB21034E Kommandoen ble behandlet som en SQL uttalelse fordi det ikke var en gyldig kommandolinjebehandleren kommando. Under SQL behandling returnerte den: SQL0530N Verdien til INSERT eller UPDATE for FOREIGN KEY "EMPLOYEE.SALESBOYS.FK_BOY_ID" er ikke lik noen verdier i primærnøkkelen til den overordnede tabellen. SQLSTATE = 23503
Oppdatering begrensningen
Du må bruke denne begrensningen for å legge betingede begrensninger for en bestemt kolonne i en tabell
Syntax.
Db2 opprette tabellen (primærnøkkel (), begrensning sjekk (tilstand eller tilstand))
Eksempel
: [Å skape emp1 bord med begrensninger verdier]
db2 opprette tabellen empl (id SMALLINT ikke null, navn varchar (9), dept smallint sjekk (dept mellom 10 og 100), jobb char (5) sjekk (jobb i ('salg', 'mgr', 'kontorist')), hiredate dato, lønn desimal (7,2) , comm desimal (7,2), primærnøkkel (id), begrensning yearsal sjekk (år (hiredate)> 1986 eller lønn> 40500))
Sette verdier
Du kan sette inn verdier i en tabell som vist nedenfor:
db2 innsatsen i empl verdier (1, 'lee', 15 'mgr', '1985-01-01', 40000,00, 1000,00)
Slippe begrensningen
La oss se syntaxes for å slippe ulike begrensninger
Slippe UNIK begrensning
Syntax.
db2 alter table < TAB_NAME > slippe unik < const_name >
Slippe primærnøkkel
Syntax:
db2 alter table < TAB_NAME > slippe primærnøkkel
Slippe kontrollbegrensningen
Syntax:
db2 alter table < TAB_NAME > slippe sjekk < check_const_name >
Slippe fremmednøkkel
Syntax:
db2 alter table < TAB_NAME > slippe foreigh nøkkel < foreign_key_name >