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 > 

