-> (MySQL) UNIQUE id oder UNIQUE id (id) oder UNIQUE (id) ?
Aqua
- datenbank
Hallo!
In der MySQL Dokumentation habe ich bereits gesucht,
aber ich konnte kein Beispiel dazu finden,
leider.
Ich habe eine Tabelle in MySQL:
CREATE TABLE essen (
id int(10) NOT NULL auto_increment,
name varchar(250) NOT NULL default '',
fleisch varchar(50) default NULL,
fisch varchar(50) default NULL,
sweets varchar(250) NOT NULL default '',
obst varchar(250) NOT NULL default '',
datum datetime NOT NULL default '0000-00-00 00:00:00'
);
Die Felder "id" und "name" sollen beide UNIQUE sein,
sprich es darf kein zweiter gleicher name bzw. keine
zweite gleiche ID vorkommen.
Ich sah bisher mehrere verschiedene Arten wie Leute
Felder zu UNIQUE type machten:
FRAGE: Welche von den 4 Möglichkeiten ist korrekt?
Ist das so korrekt, oder?
PRIMARY KEY (id), oder muss ich da auch
PRIMARY KEY id (id) oder PRIMARY KEY id machen wie beim anderen,
oder kann ich hier das Wort "PRIMARY KEY" auch
im create syntax hinter NOT NULL oder so anhaengen?
Welches ist korrekt?
Wie geht es wenn ich andere Felder als die ID
auch noch zu UNIQUE machen will?
z.B. das Feld "name" soll UNIQUE sein.
UNIQUE id (name)
oder
UNIQUE name (id)
oder
UNIQUE name
oder
UNIQUE (name)
oder auch in die create-zeile hinter NOT NULL ?
Was mach ich wenn ich 2 Felder habe,
die beide UNIQUE werden sollen?
Also "id" und "name" ??
UNIQUE id (id, name)
oder
UNIQUE name,id (id,name)
oder
UNIQUE name,id
oder
UNIQUE (name,id)
oder
UNIQUE name (id, name)
oder ...???
Vielen lieben Dank,
Aqua
Hello,
Ich habe eine Tabelle in MySQL:
CREATE TABLE essen (
id int(10) NOT NULL auto_increment ,
name varchar(250) NOT NULL default '',
fleisch varchar(50) default NULL,
fisch varchar(50) default NULL,
sweets varchar(250) NOT NULL default '',
obst varchar(250) NOT NULL default '',
datum datetime NOT NULL default '0000-00-00 00:00:00',
primary key (id)
);
Damit wäre dann schon mal Unique für id gewährleistet, den PKs sind immer Unique.
Und dann
create unique index name on essen (name);
Dann hast Du auf das einzelfeld name einen unique index gesetzt.
Frage Nr. 2 ist zu Primary key:
Ist das so korrekt, oder?
PRIMARY KEY (id), siehe oben.
oder kann ich hier das Wort "PRIMARY KEY" auch
im create syntax hinter NOT NULL oder so anhaengen?
Nee, erst am Ende, weil dann gelich der Index angelegt werden kann. dazu muss MySQL aber erst die Lage der Felder kennen, die am Index beteiligt sind. Das Statement wird im Singlepass von links nach rechts ausgewertet und man kann ja nicht einen Key setzen auf Felder, die es noch nicht gibt.
UNIQUE id_name (id,name) id_name ist der name des Index
UNIQUE name (id, name) oder so, das geht aber nicht, wenn
name schon weg ist als Indexname.
Vielen lieben Dank,
Bitteschön.
Tom
Hallo Tom!
Danke für Deine Antwort!
create unique index name on essen (name);
Interessant, das sah ich noch nie...
Wo in der MySQL-Doku kann ich das bitte nachlesen?
Nee, erst am Ende, weil dann gelich der Index angelegt werden kann. dazu muss MySQL aber erst die Lage der Felder kennen, die am Index beteiligt sind.
also:
foo varchar(200) NOT NULL UNIQUE,
??
UNIQUE id_name (id,name) id_name ist der name des Index
DAS versteh ich nicht!!!
Bitte erklaer das so dass es jeder depp kapiert =)
Wo zauberst Du den id_name her, und sind id, name 2 versch.
felder oder nur ein versehen dass du , statt _ machst?
UNIQUE name (id, name) oder so, das geht aber nicht, wenn
name schon weg ist als Indexname.
?????
Wozu brauch ich das überhaupt?
Ist das was anderes als
create unique index name on essen (name);
?
Das ist mir zu viel...
Gibts dazu eine richtig nette, ausführliche,
korrekte(!!) und deutsche Dokumentation (nicht von mysql.com)
sondern eine mit vielen Beispielen dir für Dummies
ausgelegt ist und die ich online gratis nachlesen kann?
Danke,
Aqua
Sorry aber ich checks grad echt nicht...
Ich geh jetzt mal schlafen,
morgen gehts vielleicht ...
Danke!
Hello,
hast Du MySQL-Front?
Das ist echt praktisch. damit kann man schön Querys üben. Und natürlich auch die ganzen Tabellendefinitionen durchführen...
liegt bei mir unter http://bitworks.de/software/mysql/MySQL-Front 2.5/MySQL-Front_2.5_Setup.exe
Für Windows-Frontend
Grüße
Tom