Avatar billede mulles.tk Nybegynder
28. juli 2003 - 11:06 Der er 15 kommentarer og
2 løsninger

Forklaring af betegnelser

Jeg forstår ikke lige alle de betegnelser der bliver brugt i MySQL, og hvornår man bruger hvad!

Jeg har flg. database til min tagwall:

CREATE TABLE tagwall (
  id int(11) NOT NULL auto_increment,
  navn varchar(40) NOT NULL default '',
  mail varchar(150) NOT NULL default '',
  site varchar(200) NOT NULL default '',
  besked text NOT NULL,
  dato datetime NOT NULL default '0000-00-00 00:00:00',
  ip varchar(20) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

Nu kommer spørgsmålene:

1. Betyder int(11), at det må være et 11 cifret tal?
2. Hvorfor står der default efterfuldt af '' nogle steder?
3. Og skal '' altid være der efter default?
4. Hvad er det præcist den primære nøgle bliver brugt til?

Vil gerne have svarene punktvis ;)
Avatar billede arne_v Ekspert
28. juli 2003 - 11:12 #1
default '' betyder at default værdien er en tom streng d.v.s.  at den
får automatisk tom streng som værdi hvis rækken oprettes uden at du
giver den en værdi.

Nej du kan godt bruge default 'ikke angivet'.

Primær nøgle er en unik identifiktation af rækken. Det er der nogle
database teoretiske gode grunde til at have. Og nogle praktiske.
Avatar billede thomashove Nybegynder
28. juli 2003 - 11:13 #2
1) JA
2) betyder at der som default indsættes en tom streng (det kunne også være f.eks. 'Hans')
3) Se 2
4) Bliver brugt til at indeksere tabellen primært for hurtigere søgning - men også for at styre at der ikke indsættes dubletter i databasen.
Avatar billede arne_v Ekspert
28. juli 2003 - 11:14 #3
varchar(40) betyder maksimalt 40 tegn.

int(11) betyder at den vises med 11 tegn. Range er is -2147483648 til
2147483647.

Læs mere på:
  http://www.mysql.com/doc/en/Column_types.html
Avatar billede mulles.tk Nybegynder
28. juli 2003 - 11:41 #4
Okay...

Har stadig noget til dafault: Hvorfor bruger man så NOT NULL og default '' samme sted? For mig lyder det som modsætninger? For default opretter en tom streng, mens NOT NULL siger at den ikke må være tom, ik'? Eller hvad?
Avatar billede thomashove Nybegynder
28. juli 2003 - 11:43 #5
NULL er ikke det samme som en tom streng...

Hvis et felt indeholder værdien NULL er den fudstændig blank
Avatar billede mulles.tk Nybegynder
28. juli 2003 - 11:50 #6
Hmm... hvad pokker sørger NOT NULL så for? Okay den sørger for at et felt ikke er fuldstændig blank, men hvad er det?
Avatar billede arne_v Ekspert
28. juli 2003 - 11:51 #7
default '' gør at der sættes en blank streng ind når du indsætter en
række uden at give en værdi til feltet.

NOT NULL gør at feltet ikke kan have værdien NULL (uudfyldt).

'' (blank streng) og NULL er absolut ikke det samme.

Ren praktisk er forskellen:

NOT NULL vil give dig en fejl ved INSERT uden værdi mens default ''
vil sætte blank streng ind for dig.

default '' tillader dig manuelt at sætte en NULL ind mens NOT NULL
vil give dig fejl på det.

Så de supplerer hinanden udmærket. NOT NULL sikrer at der noget
i feltet. default '' gør at du ikke skal angive det selv.
Avatar billede arne_v Ekspert
28. juli 2003 - 11:52 #8
NULL er uudfyldt (not available).

Og der gælder særlige regler for NULL bl.a. er NULL forskellig fra NULL !
Avatar billede mulles.tk Nybegynder
28. juli 2003 - 11:53 #9
Man behøver faktisk ikke at bruge default '', gør man?
Avatar billede mulles.tk Nybegynder
28. juli 2003 - 11:56 #10
Arh... nu forstår jeg! :)
Avatar billede arne_v Ekspert
28. juli 2003 - 11:57 #11
Nej.

Men hvis du bruger NOT NULL og ikke har default så skal du
altid sætte en værdi når du laver en row.
Avatar billede mulles.tk Nybegynder
28. juli 2003 - 11:58 #12
Ja... det var det jeg lige fandt ud af :)
Avatar billede mulles.tk Nybegynder
28. juli 2003 - 12:00 #13
Så hvis man vil sikre sig at der står noget i et felt, så fjerner man default ''!
Avatar billede arne_v Ekspert
28. juli 2003 - 12:29 #14
Nej.

Den sikrer kun at den ikke implict bliver sat til '' - det er stadig
muligt eksplicit at sætte den til ''.
Avatar billede mulles.tk Nybegynder
28. juli 2003 - 12:54 #15
Okay, det var fremmed ord for mig? :/ implicit & eksplicit?
Avatar billede arne_v Ekspert
28. juli 2003 - 12:59 #16
implicit = underforstået
eksplicit = direkte

Hvis du fjerner default '' på mail, så kan du ikke lave:

INSERT INTO tagwall (navn) VALUES ('arne')

men du kan godt lave:

INSERT INTO tagwall (navn,mail) VALUES ('arne','')
Avatar billede mulles.tk Nybegynder
28. juli 2003 - 13:22 #17
Arh okay...
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