AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL - Eine Tabelle erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL - Eine Tabelle erstellen

Ein Thema von sniper_w · begonnen am 4. Nov 2005 · letzter Beitrag vom 5. Nov 2005
Antwort Antwort
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#1

SQL - Eine Tabelle erstellen

  Alt 4. Nov 2005, 14:47
Datenbank: mySQL • Version: 4.0.23 • Zugriff über: Mit dem Programm "MySQL-Front"
Gut. Ich sollte eine Tabelle in meiner Datenbank erstellen. Da werden Produkte gespeichert, die man Online kaufen kann. Einen Tabellen Eintrag besteht aus:
1 - ID
2 - Art.Nr.
3 - ProduktEn
4 - ProduktDe
5 - ProduktBa
6 - Preiss

1 - ID sollte automatisch zugewiesen werden. Erster Beitrag hat ID = 1, zeiter ID = 2 etc..

2 - Art.Nr. ist eine Zeichenkette, maximal 30 Zeichen.

3, 4, 5 sind Produktbeschreibungen in jeweiligen Sprachen, maximal 256 Zeichen.

6 - Der Preiss in Euro mit 2 Dezimalstellen. Z.B. 3.45

Beispiel:

1 "20-00C1" "Organic Black Seed Citrus Facial Cleanser" "Schwarzkümmel Zitrus Gesichtsreiniger " " " 10.00

Die Frage :
Wie erstelle ich eine Solche Tabelle und wie kann ich einen Beitrag hinzufügen? Wie sehen die entsprechende SQL befehle aus ? An sich ist die Tabelle kein Problemm, sonder wie ich die Felder definiere ? Welche Typ passt zum welchen Feld am besten ?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: SQL - Eine Tabelle erstellen

  Alt 4. Nov 2005, 15:19
Die Tabelle erstellen könntest du mit CREATE TABLE `MeineTabelle` (`ID` INT NOT NULL AUTO_INCREMENT UNIQUE, `Art.Nr.` VARCHAR(30) NOT NULL, `ProduktEn` VARCHAR(256) NOT NULL, `ProduktDe` VARCHAR(256) NOT NULL, `ProduktBa` VARCHAR(256) NOT NULL, `Preis` DOUBLE NOT NULL, PRIMARY KEY(`ID`)) Den Preis müsstest du entsprechend Runden (es sei denn, MySQL unterstützt Currency, woran ich mich nicht erinnern kann...)

Einfügen wäre entsprechend so:INSERT INTO `MeineTabelle` (`ID`, `Art.Nr.`, `ProduktEn`, `ProduktDe`, `ProduktBa`, `Preis`) VALUES ('', ab dort musst du deine Werte in Hochkommas eingeschlossen, der Reihenfolge nach angeben und wieder mit) abschließen. Zum einfügen mehrere Werte einfach ein Komma hinter die letzte Klammer und einen neuen Werteblock (diesmal ohne VALUES vornedran) anfügen.

Zu den Feldtypen: Für Zahlen mit Kommastellen ist DOUBLE gut geeignet, die begrenzten Strings (in delphi ja string[Länge]) gibts in SQL als VARCHAR(Länge). Felder, die sich hochzählen sollen, werden mit AUTO_INCREMENT bestückt (nur ein Feld kann so bestückt sein, und es muss ein Schlüssel sein, in dem Fall der Primary Key). UNIQUE gibt nur an, das jeder Artikel in der Datenbank einzigartig ist, also zwei IDs können nie gleich sein.

Hab ich was vergessen?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: SQL - Eine Tabelle erstellen

  Alt 4. Nov 2005, 15:24
VARCHAR(256) bei MySQL wird nicht gehen da varchar-Felder bei MySQL maximal 255 Zeichen lang sein dürfen.
Alternativ wäre der text-Typ möglich damit gehen bis zu 64 kByte (siehe Column Type Storage Requirements
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: SQL - Eine Tabelle erstellen

  Alt 4. Nov 2005, 15:24
Zitat von Dax:
Hab ich was vergessen?
Das Handbuch als compiled html help mit einer tutorial section (chapter 3) gibt es hier: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: SQL - Eine Tabelle erstellen

  Alt 4. Nov 2005, 15:33
Ich bedanke mit herzlich. Das hat weiter geholfen.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: SQL - Eine Tabelle erstellen

  Alt 4. Nov 2005, 16:40
SQL-Code:
CREATE TABLE `TableName` (`ID` INT (3) UNSIGNED DEFAULT '0NOT NULL AUTO_INCREMENT, `ArtNr` VARCHAR (30) DEFAULT '0NOT NULL, `ProduktEn` VARCHAR (250) DEFAULT '0NOT NULL, `ProduktDe` VARCHAR (250) DEFAULT '0NOT NULL, `ProduktBa` VARCHAR (250) DEFAULT '0NOT NULL, `Preis` DOUBLE (3) DEFAULT '0NOT NULL, PRIMARY KEY(`ID`), UNIQUE(`ID`)) TYPE = MyISAM
Error: 1064 - You have an error in your SQL syntax near ') DEFAULT '0' NOT NULL, PRIMARY KEY(`ID`), UNIQUE(`ID`)) TYPE = MyISAM' at line 1
CREATE TABLE `SkpNahrung` (`ID` INT (3) UNSIGNED DEFAULT '0NOT NULL AUTO_INCREMENT, `ArtNr` VARCHAR (30) DEFAULT '0NOT NULL, `ProduktEn` VARCHAR (250) DEFAULT '0', `ProduktDe` VARCHAR (250) DEFAULT '0', `ProduktBa` VARCHAR (250) DEFAULT '0', `Preis` DOUBLE (3) DEFAULT '0NOT NULL, PRIMARY KEY(`ID`), UNIQUE(`ID`)) TYPE = MyISAM
Error: 1064 - You have an error in your SQL syntax near ') DEFAULT '0' NOT NULL, PRIMARY KEY(`ID`), UNIQUE(`ID`)) TYPE = MyISAM' at line 1
CREATE TABLE `SkpNahrung` (`ID` INT (3) UNSIGNED DEFAULT '0NOT NULL AUTO_INCREMENT, `ArtNr` VARCHAR (30) DEFAULT '0NOT NULL, `ProduktEn` VARCHAR (250) DEFAULT '0', `ProduktDe` VARCHAR (250) DEFAULT '0', `ProduktBa` VARCHAR (250) DEFAULT '0', `Preis` DOUBLE (3) DEFAULT '0NOT NULL, PRIMARY KEY(`ID`), UNIQUE(`ID`))
Error: 1064 - You have an error in your SQL syntax near ') DEFAULT '0' NOT NULL, PRIMARY KEY(`ID`), UNIQUE(`ID`)) ' at line 1
Was stimmt hier nicht ?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: SQL - Eine Tabelle erstellen

  Alt 5. Nov 2005, 21:52
DEFAULT oder NOT NULL - nicht beides gleichzeitig.
Wenn DEFAULT, dann den Wert passend zum Spaltentyp.
DOUBLE erwartet auch die Angabe der Dezimalstellen.
DECIMAL scheint mir der angemessenere Datentyp für Preis.
DDL für die erste Tabelle habe ich angepasst:

SQL-Code:
CREATE TABLE `TableName` (
  `ID` INT (3) UNSIGNED NOT NULL AUTO_INCREMENT,
  `ArtNr` VARCHAR (30) NOT NULL,
  `ProduktEn` VARCHAR (250) NOT NULL,
  `ProduktDe` VARCHAR (250) NOT NULL,
  `ProduktBa` VARCHAR (250) NOT NULL,
  `Preis` DECIMAL(18,2) NOT NULL,
  PRIMARY KEY(`ID`),
  UNIQUE(`ID`)
) TYPE = MyISAM
Hast du dir schon Gedanken darüber gemacht, welche Schwierigkeiten dich erwarten können, wenn du Zeichenketten in verschiedenen Sprachen in der gleichen Datenbank speicherst? Lies dazu das Kapitel "4.6 MySQL Localisation and International Usage" im Handbuch zu MySQL.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: SQL - Eine Tabelle erstellen

  Alt 5. Nov 2005, 23:31
Zitat:
Hast du dir schon Gedanken darüber gemacht, welche Schwierigkeiten dich erwarten können, wenn du Zeichenketten in verschiedenen Sprachen in der gleichen Datenbank speicherst
Es wird in "HTML" Format geschpeichert.

ö = ö

etc...
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz