Announcement

Collapse
No announcement yet.

Tabelle umstrukturieren mit dem Befehl ALTER TABLE

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tabelle umstrukturieren mit dem Befehl ALTER TABLE

    Hallo ...

    kann mir einer helfen ??? Bin ein Anfänger in Interbase und komme mit dem Befehl ALTER TABLE nicht klar. Ich habe aus einem Delphi Programm eine Tabelle erzeugt und jetzt will ich die Struktur dieser Tabelle überprüfen bzw. ändern. Habe auch schon die Doku von IB6 gelesen aber trotzdem "NO IDEA !!!". Hat einer ein Beispiel oder so ??? Thanx !!!

  • #2
    Hallo,

    die beiden folgenden Beispiele demonstrieren, wie die Spalte <i>Einstelldatum</i> vom Typ DATE nachträglich hinzugefügt bzw. entfernt wird:
    <pre>
    ALTER TABLE personal
    ADD einstelldatum DATE
    </pre>
    <pre>
    ALTER TABLE personal
    DROP einstelldatum
    </pre&gt

    Comment


    • #3
      <b>Ohh ... cool ... danke Andreas !!!</b>

      Und wie kann ich ein angelegtes Feld z.B.: (Name VARCHAR(10)) nachträglich ändern auf z.B.: (Name VARCHAR(20)) ??? Es gibt doch in der SQL irgendwie ein Befehl ALTER TABLE tabelle MODIFY (Spalte, Datentyp usw.))) oder so aber in INTERBASE nicht. Wie kann ich dieses Problem lösen ??

      Comment


      • #4
        Hi,

        Bestehende Spalten in der Struktur zu ändern gehört nicht zum SQL-92 Standard.

        Mit folgendem Beispiel kannst Du erledigen, was du vorhast:<br>
        <br>

        ALTER TABLE TEST ADD TEMP VARCHAR( 20 )<p>
        UPDATE TEST SET TEMP=NAME<p>
        ALTER TABLE TEST DROP NAME<p>
        ALTER TABLE TEST ADD NAME VARCHAR( 20 )<p>
        UPDATE TEST SET NAME=TEMP<p>
        ALTER TABLE TEST DROP TEMP<p>
        <br>
        Gruß
        Gesin

        Comment


        • #5
          <Gesine ... Danke ... du bist super !!!>

          Ehrlich gesagt habe ich noch nicht so viel Ahnung von SQL. Ich habe bis her nur mit Paradox u.ä. gearbeitet. Finde ich aber nicht so gut. Jetzt will ich etwas auf Interbase-Basis oder mySQL machen. Dazu fällt mir aber noch das Hintergrundwissen Client/Server. Ich weiss z.B. nicht, wie man überhaupt mit solchen Datenbank-Systemen arbeiten muss, ob man z.B. bei jedem Start die Struktur der Tabellen überprüfen muss und solche Dinge. Kann mir da einer etwas empfehlen ??? Tutorials, Web-Sites, Dokus, Bücher usw. ??

          Comment


          • #6
            Hallo,

            ab dem InterBase 6 steht <b>ALTER COLUMN</b> zur Verfügung, um eine Spalte nachträglich ohne Datenverlust in der Deklaration zu verändern. Das folgende Beispiel demonstriert den Einsatz:

            Schritt 1: Tabelle anlegen
            <pre>
            CREATE TABLE ALT4 (
            ID INTEGER NOT NULL,
            NAME VARCHAR(10) NOT NULL,
            PRIMARY KEY(ID));
            </pre>
            Schritt 2: VARCHAR-Spalte vergrößern
            <pre>
            ALTER TABLE ALT4
            ALTER COLUMN NAME TYPE VARCHAR(15);
            </pre>

            P.S: Das Beispiel stammt aus meinem neuen, demnächst erscheinenden Buch <i>InterBase Datenbankentwicklung mit Delphi</i>, bei dem es um die Anwendungsentwicklung mit den IBX-Komponenten von Delphi 5/6 geht. Ein Schwerpunkt im Buch bilden die Besonderheiten, die beim Umstieg von einer Desktopdatenbank (dBASE, Paradox, ACCESS usw.) auf Client/Server zu beachten sind.
            &#10

            Comment


            • #7
              Hi Waldemar,

              1)
              Mit SQL hat man versucht einen <b>Sprachstandard</b> zu schaffen, mit dem man unabhängig von der dahinterstehenden Server-Implementation Daten manipulieren kann. Leider wird dieser Sprachstandard von den Anbietern ( z.B. IB, Oracle, MS-SQL, mySQL usw. ) nur mehr oder weniger gut unterstützt. Das grösste Problem dabei sind anbieterspezifische Erweiterungen einzelner Anbieter ( wie z.B. das von Andreas genannte ALTER COLUMN ), welches die Portabilität einer Datenbank dann stark eingrenzt. Natürlich erweitern Anbieter den Standard nicht nur so zum Spass, sondern sehen dafür zumindestens für Ihren eigenen Kundenkreis einen Bedarf. Natürlich ist man auch nicht böse darüber, einen Kunden aufs eigene Haus festzunageln. Das von mir genannte Beispiel ist natürlich eine ganze Ecke umständlicher als eine Zeile Alter Column..., funktioniert dafür aber bei jedem Anbieter.

              2)
              Der hauptsächliche Unterschied zwischen Desktop-Datenbanken und deren SQL-Gegenstücken, ist das "mengenorientierte Denken" bei SQL-Datenbanken. Bearbeitest Du unter Paradox eine Tabelle, dann klapperst du alle darin enthalten Datensätze ab und lässt deine Anwendung entscheiden, was mit dem aktuellen Datensatz zu tun ist.
              Arbeitest du mit SQL, so fordert deine Anwendung schon eine definierte Datenmenge ( z.B. SELECT * from TABELLEXY where NAME='MUSTERMANN' ) vom Server ab. Das spart in deiner Anwendung natürlich die Fallunterscheidung if NAME='MUSTERMANN then... und die Menge der vom/zum Server zu übertragenden Daten wird minimiert.
              Im Idealfall musst du noch nicht mal ein Byte Nutzdaten übertragen. Es reicht ein Befehl ( z.B. Delete from TABELLEXY where NAME='Mustermann' )

              3)
              Der Trend zum Zweitbuch nimmt ja doch zu: SQL für Dummies, ISBN 3-8266-2787-3. Ein kompaktes, leicht verständliches ( wenn auch vom Stil her nicht jedermanns Sache ) Buch, welches einen guten Überblick über SQL vermittelt.

              Gruß Gesin

              Comment


              • #8
                <b>Danke Andreas ...</b>

                diese Lösung habe ich eigentlich auch gesucht !!! Ich wusste schon das es den Befehl gibt aber mir fehlte ein Beispiel um das nachzuvollziehen! Andreas wo kann ich Infos zu deinem bereits erschienenen Buch <b>"Client/Server Datenbankentwicklung mit Delphi"</b> bekommen??? Und wann erscheint dein angekündigtes Buch <b>"Interbase Datenbankentwicklung mit Delphi"</b>??? Würde es dann in der selber Preis-Klasse liegen ??? Noch mal vielen Dank !!

                Comment


                • #9
                  <b>Gesine ... Vielen Dank !!! </b>

                  du hast vollkommen Recht ... dein Beispiel würde nicht nur bei Interbase funktionieren sonder auch z.b.: bei mySQL ... habe ich selber ausprobiert (mache noch neben bei APACHE,PHP,mySQL ... bzw. versuche ) ... :-))

                  <b>Danke nochmal</b> für deinen Buchtip ... das Buch werde ich mir auf jedenfall ankucken !!!

                  Programmierst du auch in Interbase und Delphi ??

                  Comment


                  • #10
                    Hallo,

                    Inhaltsverzeichnis vom "alten" Client/Server-Buch kann unter <i>http://entwickler.com/buecher/1/inhalt.html</i> abgerufen werden.

                    Das neue Buch wird eine Preisklasse niedriger erhältlich sein, muss sich dafür aber auf unter 500 Seiten beschränken. Zur Zeit schreibe ich am letzten Kapitel, bin aber bis nächste Woche fertig. Bis das Buch jedoch in gedruckter Form erhältlich sein wird, wird es bestimmt Anfang September (nach meiner Schätzung, genaues kann nur der Software&Support Verlag sagen).

                    Ich selbst muss dreigleisig fahren (70 % Microsoft SQL Server 2000, 20 % InterBase, 10 % Centura SQLBase), das hat sowohl technische als auch historische Gründe :-

                    Comment


                    • #11
                      Hi Waldemar,

                      Ja, ich benutze inzwischen fast ausschliesslich Delphi in Verbindung mit Interbase.

                      Gruß
                      Gesin

                      Comment


                      • #12
                        3 gleisig ??? Ich dachte das Buch wird nur über Delphi und Interbase sein !!! Warum denn 70 % Microsoft SQL Server 2000 ??? Und nur 20 % Interbase ???

                        D.h. im Endeffekt wird nur über den Microsoft SQL Server 2000 erzählt oder ??? :-( Na ja ... schade natürlich ... aber trotzdem bin sehr gespannt auf das Buch ... Danke noch mal für deine Hilfe !!!

                        Bis dann !!

                        Comment


                        • #13
                          Hallo,

                          das Buch behandelt nur den InterBase, aber ansonsten muss ich selbst dreigleisig fahren :-

                          Comment


                          • #14
                            Cool ... Andreas !!! Danke noch mal für alles !!!
                            Also einen Kunden für das neue Buch hast du schon :-) bin sehr gespannt !!!

                            Bis dann !!

                            Comment


                            • #15
                              Hi Gesine,

                              Danke noch mal für deine Hilfe !!! Hab mir jedoch ein Buch vom Herdt-Verlag zugelegt über SQL-97 ... ist auch nicht schlecht :-)))

                              Bis dann !!

                              Comment

                              Working...
                              X