SQLite Grundsatzfragen für AnfängerX

  • Moin Moin zum Wochenende hin.
    .
    Ich denke das viele genau das gleiche Problem haben wie ich, wenn es um Datenbanken geht.
    Deshalb habe ich mir überlegt hier einfach mal ein Thema auf zu machen. Sinn soll es sein, das Jeder nach und nach mehr über SQL lernt.
    .
    Ich habe mir nun mal überlegt wie wir anfangen können.
    1.) DLL Pfad angeben
    2.) Datenbank öffnen bzw. erstellen
    3.) Datenbankspalten erstellen
    4.) Beispieldaten erstellt
    5.) Beispieldaten in Datenbank speichern / übergeben(?)
    6.) das Exit durchführen, d. h. Datenbank schließen und beenden

    Nun haben sich mir ein paar Fragen gestellt:
    1.) Wie einen Datensatz in der Console ausgeben ???

    2.) Wie einen Datensatz ändern ??? NEUE WERTE $sPLZ = "98765", $sTelefon= "02154987304", $sMail = "sec_mail@domain.dk"

    3.) Wie eine neue Spalte in die Datenbank erzeugen ohne dabei eine bereits gefüllte Datenbank zu "zerschießen"?
    a) an das Ende der Spalten, also nach [Mail]
    b) zwischen [Nachname] und [Strasse]

    4.) Wie lösche ich einen Datensatz?

    Ich würde mich freuen, wenn Ihr Eure Lösungen dokumentiert. Und wenn es Besonderheiten gibt die gesagt werden müssen, dann schreibt euch die Finger wund. Okay, nicht ganz so dolle. ;) *SPASS*

    Dateien

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (20. November 2015 um 17:26)

  • Die Frage ist grundsätzlich erst einmal, welches SQL-System verwendet wird. Denn SQL heißt nicht gleich SQL. Schon das Erstellen deiner Tabelle funktioniert zum Beispiel nicht in MySQL. Dort müssen nämlich bereits bei der Erstellung schon die erwarteten Werte der Spalte übergeben werden. Einen "Variant"-Typ gibt es bei MySQL nicht.

    Was aber immer gleich ist, sind die Keywörter. So ist zum Anzeigen immer ein SELECT von nöten - zum Beispiel:

    SELECT * FROM ADR WHERE `Geburtstag`='29.02.2014';

    Um einen Datensatz zu ändern brauchst du immer ein Update - und um den sinnvoll zu nutzen brauchst du eine einmalige Spalte. Für gewöhnlich wird dazu in SQL die ID verwendet. Praktisch eine Spalte, die automatisch immer eins hochgezählt wird, und die immer eindeutig ist. Nehmen wir an, die hättest du in deiner Tabelle gehabt ...

    UPDATE ADR SET `PLZ` = '98765' WHERE `ID` = 1;

    Um deine Tabellenstruktur zu verändern brauchst du das Keyword ALTER. Hier auch wieder die Frage: Wie macht SQLite das? MySQL würde es beispielsweise so machen:

    ALTER TABLE ADR ADD `SpalteNachNachname` INT NOT NULL AFTER `Nachname`;


    Und zuletzt das löschen:


    DELETE FROM ADR WHERE `ID` = 1;


    Ziemlich analog dazu ist es auch in SQLite. :)

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

    • Offizieller Beitrag

    Anhand der Skriptzeilen von Alina vermute ich mal, dass es ihr um SQLite geht. Da sollte man auf jeden Fall erst mal die SQLite-Doku lesen.
    Für die grundlegenden Mechanismen kannst du grundsätzlich jedes SQL-Tut zu Hilfe nehmen, aber immer beachten, dass es dort syntaxspezifische Differenzen gibt (z.B. kennt SQLite keinen Typ: Datum). Aber es gibt auch ausreichend SQLite-Tuts (z.B. hier).

    Bei den AutoIt-spezifischen Punkten ist zu beachten, dass der Umgang mit der sqlite3.dll sich gewaltig verändert hat. Erst war sie als Include enthalten und wurde zur Laufzeit erstellt. Dann kam dieser Schwachsinn mit automatisch Herunterladen aus dem Web, wenn nicht auf dem PC vorhanden und nun ist auch das nicht mehr, weil dadurch auf der DL-Site zu viel Trafffic generiert wurde. D.h.: du musst dich selbst um die Mitgabe der dll kümmern, herunterladen und in den Skriptordner packen. Dann aber auch Startup mit den richtigen Parametern ausführen: _SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1)

  • Moin Moin zum Wochenende hin.
    .
    Ich denke das viele genau das gleiche Problem haben wie ich, wenn es um Datenbanken geht.
    Deshalb habe ich mir überlegt hier einfach mal ein Thema auf zu machen. Sinn soll es sein, das Jeder nach und nach mehr über SQL lernt.
    ...


    Für mich als Anfänger war es sehr hilfreich Tools zu nutzen, die mich im Umgang mit einer Datenbank unterstützen.

    SQLite:
    SQLite Studio

    MySQL:
    Heidi SQL

  • Für mich als Anfänger war es sehr hilfreich Tools zu nutzen, die mich im Umgang mit einer Datenbank unterstützen.


    Das mag nicht verkehrt sein, sollte man aber dennoch mit Vorsicht genießen. Ähnlich wie mit GUIs, ist es nicht immer sinnvoll Tools (an dieser Stelle z.B. Koda) zu nutzen. Wenn du die Sprache mit all ihren Vor- und Nachteilen betrachtest und lernen möchtest, empfehle ich immer die minimalistischsten "Tools" zu nutzen die es gibt. Wenn du SQL kannst, und du weißt was du tust, nehmen die Tools halt einfach sinnlose Kleinarbeit ab.

    Ich habe schon immer egal welche "Sprachen" so händisch wie möglich angefangen. Da die Hintergründe die man (wenn auch nicht immer, aber im Regelfall) versteht ein klareres Bild über dieses Thema bringen. Meine persönliche Meinung.

    @Alina Zu deinen Frage. Wenn du prinzipiell vom Ablauf her weißt was du tun möchtest, nur noch nicht weißt wie diese Dinge funktionieren, würde ich raten die AutoIt Hilfe durchzublätter. Da hast du zu jeder Funktion entsprechende Beispiele.

    Wenn das unklar ist, dann wirst du in der Hilfe nicht viel finden, weil die das Wissen über die Schlüsselbegriffe fehlt. An dieser Stelle würde ich raten erstmal einige Tutorials zum Thema SQL (Was ist SQL, wie arbeitet es, wie nutze ich es effektiv) zu schauen.

    Stichworte die man wissen und erklären können sollte könnten z.B.:

    - SELECT
    - UPDATE
    - DELETE
    - COMMIT
    - ROLLBACK

    - CREATE
    - DROP
    - ALTER
    - COMMIT / ROLLBACK (!) - Wer SQL kann der versteht wieso COMMIT/ROLLBACK hier ein zweites mal auftaucht.

    - TABLE
    - COLUMN
    - ROW

    - PRIMARY KEY
    - FOREIGN KEY
    - UNION
    - JOIN

    Update: Kleine Info noch, vorsicht, die Begriffe nicht durcheinander zu werfen. Du Öffnest und Schließt die Datenbank, aber du erstellst keine Datenbankspalten. Und Beispieldaten ist an dieser Stelle auch sehr unpräzise. Erstellen wir denn nun erstmal Tabellen, gibt es die schon, oder was erstellen wir. Das soll jetzt nur noch ein kleiner Hinweis darauf sein, sich vll. selbst zu fragen, weiß ich was ich da vor habe, weiß ich was ich tu oder gar weiß ich womit ich arbeite?

    3.) Datenbankspalten erstellen
    4.) Beispieldaten erstellt
    5.) Beispieldaten in Datenbank speichern / übergeben(?)

    Grüße Yaerox

    Grüne Hölle

  • Moin Moin.


    Danke erst einmal für die Antworten von Euch.
    Habe sie mir durchgelesen und nun habe ich das Script erst einmal etwas verändert.

    Runa:
    Ich verwende die SQLite und habe sie dem ersten Beitrag nachträglich angehängt.
    Was die Keywörter betrifft habe ich die schon verstanden, nur bei der Umsetzung in AutoIt habe ich Probleme.
    z. B. [SELECT * FROM ADR WHERE `Geburtstag`='29.02.2014';] sagt doch: [selktiere][alle DB-Sätze][aus der Tabelle ADR][Wo in der Spalte 'Geburtstag] gleich ist [29.02.2014]
    Nur ich bekomme das dann nicht ausgegeben z. B. in die Console oder MsgBox oder oder oder. Edit-Start: Habe die ersten beiden Abfrage, die Abfrage nach der ges. Tabelle und die nach dem Geburtstag. Was für ein Kampf. Edit-Ende


    Wäre es möglich, an Hand meiner im Script erstellten Datensätzt zu jedem Keywort ein Beispiel zu schreiben, so das es dann von dr Anwendung her verständlich wäre?


    BugFix :
    Startup ist im Script nun gefüttert. ;)
    Doku und Tuts habe ich gelinkt und schaue ich schon rein. ;)


    Espyre:
    Da schau ich mal vorbei.


    Yaerox:
    Einige dieser Stichworte die Du genannt hast habe ich auch verstanden und könnte sie auch erklären.
    SELECT = Datensatz/-sätze selektieren
    UPDATE = Datensatz/-sätze ändern
    DELETE = Datensatz/-sätze löschen
    ...


    Einen "Primary Key" habe ich im Script nun auch mit eingebaut.


    Hier hast Du jetzt die Möglichkeit an dem Beispielscript zu zeigen wie man welches "Stichwort" richtig einsätzt. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    3 Mal editiert, zuletzt von Alina (21. November 2015 um 04:58) aus folgendem Grund: Datum von TTMMYYYY auf YYYYMMTT ungestellt, auf verständlichen Rat von BugFix. Zeile 25ff und Zeile 33 ff eingebaut: Abfragen [Ges. Tabelle] und [Geburtsdatum = 1989.11.17] (alle Datensätze in Console ausgeben)

    • Offizieller Beitrag

    Ein Tipp: Speichere ein Datum nicht als "TT.MM.JJJJ" - da geht dir eine wesentliche Funktionalität verloren - du kannst nicht sortiert ausgeben (order by).
    Ich speichere immer als "JJJJMMTT" und konvertiere bei der Anwendung in das jeweils erforderliche Format. Dazu habe ich mir folgende Funktion erstellt:

  • Hallo BugFix.
    Habe das mit dem Datum geändert in meinem letzten Post. _DateConvert nutze ich bereits an anderer Stelle (anderen Script).
    Habe noch paar zeilen eingefügt in Beitrag-6: alle Datensätze in der Console ausgeben habe ich hinbekommen und die Ausgabe mit einem bestimmten Geb.-Datum.

    Aktueller Stand:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    2 Mal editiert, zuletzt von Alina (21. November 2015 um 05:01)

  • Aktuell habe ich shcon vieles eingebaut und auch verstanden wie es zu der Ausgabe der Datensätze kommt. Aber es gibt auch noch vieles was "offen" ist. Diese Punkte habe ich oben kommentiert.


    Aber weiter komme ich nun nicht.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Tipp:
    Damit du überhaupt erst mal mit der SQLite-Syntax vertraut wirst, lade dir den SQLite Administrator (oder SQLite Expert, gibt es auch als free personal version). Da hast du eine schöne grafische Oberfläche und kannst dich wunderbar austoben und probieren. Wenn du dann firm bist, ist die Anwendung innerhalb von AutoIt ein Kinderspiel.

  • @BugFix
    SQLite Administrator habe ich mir angeschaut und schon mit gearbeitet.
    Nun werde ich mich da mal austoben. Nicht jetzt, jetzt muss ich noch kurz mal Augen zu machen.

    Danke für die Links.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Aktueller Stand:

    und dennoch viele Sachen die ich noch ausprobieren muss, bevor ich dann mal ein großes Ding plane.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl