Avatar billede orkide Nybegynder
12. november 2002 - 14:37 Der er 15 kommentarer og
1 løsning

NULL og NOT NULL

Kort spørgsmål der udløser 60 point!
Hvem kan forklarer mig hvad det helt præcist står for, så jeg fatter det!
er der en tommelfinger regl, ved brugen af disse...?
Avatar billede idle Nybegynder
12. november 2002 - 14:40 #1
NULL betyder "ikke defineret" eller ikke sat. Hvis du f.eks. ønsker at et felt ikke skal have nogen værdi kan du sætte værdien til NULL (uanset fletets type).

Hvis man laver en table med CREATE, kan man sige at i visse felter accepteres ikke en NULL-værdi (NOT NULL), dvs. feltet skal udfyldes.

Hvis du tænker på brugen i en bestemt sammenhæng, så kom med et eksempel.

/idle
Avatar billede disky Nybegynder
12. november 2002 - 14:41 #2
NULL betyder et felt godt må havde værdien 'null' som IKKE er det samme som '0' men betyder ikke definere.

NOT NULL betyder feltet SKAL være defineret, f.eks. med værdien '0'

Det betyder noget når du får værdierne over i dit program som snakker med databasen.
Avatar billede orkide Nybegynder
12. november 2002 - 14:44 #3
hmmm.... opsummering!
NULL, så behøver der ikke at være en værdi i feltet.
NOT NULL, så SKAL der være en værdi i feltet!

er det rigtigt?
hvad er det lige det skal gøre godt for??
idle du fører indtil videre, da din forklaring gav en smule mening
Avatar billede el_fredo Praktikant
12. november 2002 - 14:46 #4
Du kan se en variabel med værdien NULL som en tom kasse. Du ved hvad den KAN indeholde, men den er helt tom.
Avatar billede el_fredo Praktikant
12. november 2002 - 14:47 #5
Hvis du ikke ved hvad kassen/variablen skal indeholde, og ikke har en midlertidig værdi du kan tildele den, så kan man tildele den værdien NULL. Dette er godt i mange tilfælde hvor compileren brokker sig over, at variablen MÅSKE ikke er blevet initialiseret. I hvert tilfælde i Java.
Avatar billede disky Nybegynder
12. november 2002 - 14:58 #6
orkide:
Ja det er korrekt.

el_fredo:
Det hjælper ikke i java, da man først ser sådanne ting på runtime, hvor det så giver en NullPointerException.
Avatar billede orkide Nybegynder
12. november 2002 - 15:00 #7
hmmm du har en pointe der El Fredo!
men forklar lige NOT NULL så...
betyder det så at der SKAL ligge en værdi i NOT NULL variablen

Seb
Avatar billede idle Nybegynder
12. november 2002 - 15:02 #8
Hvis du f.eks. laver en SQL-sætning der hedder "SELECT * FROM table1 WHERE abc NOT NULL", (med forbehold for simple syntaks-fejl), så får du de rækker tilbage, hvor "abc" har en værdi.
Avatar billede disky Nybegynder
12. november 2002 - 15:03 #9
NULL = kan være udefineret
NOT NULL = skal være defineret.

SÅ simpelt er det.

orkide, hans pointe med at compileren brokker sig er desværre forkert, da man først opdager det på runtime, hvor det så er en rigtig dum ide.

Man skal under design altid tage og specificere en default værdi.
Avatar billede el_fredo Praktikant
12. november 2002 - 15:23 #10
Ja, det er korrekt. NULL = Tom, NOT NULL = Der er noget i kassen. Selv et "0" i en variabel er NOT NULL...
Avatar billede morw Nybegynder
12. november 2002 - 16:08 #11
"" er ikke det samme som NULL
Avatar billede flse Nybegynder
12. november 2002 - 16:24 #12
NULL betyder som tidligere nævnt, at feltet ikke er udfyldt.

Generelt er det et godt råd, altid at have NOT NULL på sine felter, da felter med NULL værdier kan forårsage mærkværdige resultater, medmindre du hver gang du tester på et felt, både tester på om feltet er <> NULL og feltet har en given værdi.
PHP opfører sig dog rimelig pænt ved NULL værdier, mens Java/JSP giver en NullPointerException, hvis du kommer til at teste på et felt der er NULL.

Der er nogle få undtagelser hvor NULL værdier er praktiske eller nødvendige (bl.a. fremmednøgler), men bortset fra dem, så kan du spare dig mange problemer ved at lave alle felter som NOT NULL.
Avatar billede disky Nybegynder
12. november 2002 - 16:26 #13
flse:
Om php opfører sig pænt kan diskuteres, jeg synes absolut det er rigtig grim opførsel, at den bare 'finder sig i det' Hvorimod java opfører sig som forventet, ved at komme med en exception.
Problemmet her er php's mangel på type fasthed.
Avatar billede flse Nybegynder
12. november 2002 - 16:32 #14
disky> tjaa.. NULL's er noget fanden har skabt på en regnvejrsdag til sin svigermor  :-) 

jeg syntes der rart at man slipper for at bøvle med try/catch bare pga. muligheden for nulls, når man ønske en nullværdi opfattet som blank eller 0 .. ihvertfald i 99,9% af tilfældende ..

Men det er da meget rart med typer i java fremfor alternativet i PHP/ASP
Avatar billede disky Nybegynder
12. november 2002 - 16:40 #15
At 'null' bliver opfattet som et '0' og folk bare bruger dem til det, er mere et tegn på elendige udviklere end på en smart finesse.

Bortset fra det er try/catch absolut ikke noget bøvl, for selvfølgelig designer man sin database/program ordentligt og så bruger man dem kun der hvor det er nødvendigt og praktisk.
ALdrig ved null/0 håndtering.
Avatar billede orkide Nybegynder
14. november 2002 - 17:02 #16
Jeg må indrømme at denne diskution har været givtig...
kanon siger jeg!

ooooog den heldige vinder er..........disky

fornøjelse at få hjælp fra jer alle dog!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester