Vinzenz Mai: Wo ist der Fehler

Beitrag lesen

Hallo

create table 'Lehrer' (
   'Name' varchar(80),
   'Alter' float,
   'Adresse' varchar(80),
   primary key ('Name')
);

Ist das exakt das Statement zur Erzeugung der Tabelle?

Wie bereits in meinem ersten Posting stand: Einfache Anführungszeichen sind in Tabellen- und Spaltennamen normalerweise nicht zugelassen.

Tabellen- und Spaltennamen müssen normalerweise nicht maskiert werden.
Wenn Du reservierte Wörter wie z.B. "Alter" verwendest, musst Du diese Namen so maskieren, wie das verwendete DBMS es verlangt, z.B. bei MySQL mit Backticks:

´Alter´

  
create table Lehrer (     -- Lehrer  ist nicht reserviert  
    Name varchar(80),     -- Name    ist nicht reserviert  
    ´Alter´ float,        -- Alter   ist reserviert, daher maskiert  
    Adresse varchar(80),  -- Adresse ist nicht reserviert  
    primary key (Name)    -- Name    s.o.  
);  

Selbstverständlich kannst Du jede Bezeichnung sicherheitshalber maskieren, wie es z.B. phpMyAdmin macht, es ist jedoch nicht erforderlich. Ich persönlich bevorzuge die Verwendung von Spaltennamen, die Maskierung nicht erfordern :-)

Wenn Du ein anderes DBMS verwendest, z.B. MS SQL-Server, so benötigst Du andere Maskierungszeichen, beim MS SQL-Server wird das reservierte Wort in eckige Klammern eingeschlossen:

[Alter]

Ein typischer Fall, der Maskierung erfordert, ist die Verwendung des Minus-Zeichens in Spaltennamen:

[Tel-Nr] bzw. ´Tel-Nr´

Ich kenne kein DBMS, das einfache Hochkomma als Maskierungszeichen verwendet, es ist natürlich nicht ausgeschlossen, dass es eines gibt.

Freundliche Grüße

Vinzenz