SQL_Beispiel_KI.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. import mysql.connector
  2. # ------------------------------------------------------------
  3. # 1. Verbindung zur Datenbank herstellen (XAMPP)
  4. # ------------------------------------------------------------
  5. conn = mysql.connector.connect(
  6. host="localhost",
  7. name="root",
  8. password=""
  9. )
  10. cursor = conn.cursor()
  11. # ------------------------------------------------------------
  12. # 2. Neue Datenbank anlegen und auswählen
  13. # ------------------------------------------------------------
  14. cursor.execute("DROP DATABASE IF EXISTS TEST2")
  15. cursor.execute("CREATE DATABASE TEST2")
  16. conn.database = "TEST2"
  17. # ------------------------------------------------------------
  18. # 3. Tabellen erstellen
  19. # ------------------------------------------------------------
  20. cursor.execute("""
  21. CREATE TABLE kategorie (
  22. id INT AUTO_INCREMENT PRIMARY KEY,
  23. name VARCHAR(50)
  24. )
  25. """)
  26. cursor.execute("""
  27. CREATE TABLE einkaufsliste (
  28. id INT AUTO_INCREMENT PRIMARY KEY,
  29. produkt VARCHAR(50),
  30. menge INT,
  31. preis DECIMAL(5,2),
  32. kategorie_id INT,
  33. FOREIGN KEY (kategorie_id) REFERENCES kategorie(id)
  34. )
  35. """)
  36. # ------------------------------------------------------------
  37. # 4. Daten einfügen
  38. # ------------------------------------------------------------
  39. cursor.executemany("INSERT INTO kategorie (name) VALUES (%s)", [
  40. ("Obst",),
  41. ("Getränke",),
  42. ("Backwaren",),
  43. ("Sonstiges",)
  44. ])
  45. cursor.executemany("""
  46. INSERT INTO einkaufsliste (produkt, menge, preis, kategorie_id)
  47. VALUES (%s, %s, %s, %s)
  48. """, [
  49. ("Äpfel", 5, 2.99, 1),
  50. ("Milch", 2, 1.19, 2),
  51. ("Brot", 1, 2.49, 3),
  52. ("Kaffee", 1, 4.99, 2),
  53. ("Schokolade", 3, 1.49, 4)
  54. ])
  55. conn.commit()
  56. # ------------------------------------------------------------
  57. # 5. SELECT – Daten abfragen
  58. # ------------------------------------------------------------
  59. print("\nAlle Produkte (SELECT *):")
  60. cursor.execute("SELECT * FROM einkaufsliste")
  61. for row in cursor.fetchall():
  62. print(row)
  63. print("\nNur Produktnamen (SELECT spalte):")
  64. cursor.execute("SELECT produkt FROM einkaufsliste")
  65. for row in cursor.fetchall():
  66. print(row)
  67. # ------------------------------------------------------------
  68. # 6. WHERE – Bedingungen
  69. # ------------------------------------------------------------
  70. print("\nProdukte mit Preis > 2.00 (WHERE):")
  71. cursor.execute("SELECT produkt, preis FROM einkaufsliste WHERE preis > 2.00")
  72. for row in cursor.fetchall():
  73. print(row)
  74. # ------------------------------------------------------------
  75. # 7. UPDATE – Daten ändern
  76. # ------------------------------------------------------------
  77. print("\nPreis von Äpfeln ändern (UPDATE):")
  78. cursor.execute("UPDATE einkaufsliste SET preis = 3.49 WHERE produkt = 'Äpfel'")
  79. conn.commit()
  80. cursor.execute("SELECT produkt, preis FROM einkaufsliste WHERE produkt = 'Äpfel'")
  81. print(cursor.fetchall())
  82. # ------------------------------------------------------------
  83. # 8. DELETE – Daten löschen
  84. # ------------------------------------------------------------
  85. print("\nMilch löschen (DELETE):")
  86. cursor.execute("DELETE FROM einkaufsliste WHERE produkt = 'Milch'")
  87. conn.commit()
  88. cursor.execute("SELECT * FROM einkaufsliste")
  89. for row in cursor.fetchall():
  90. print(row)
  91. # ------------------------------------------------------------
  92. # 9. ORDER BY – Sortieren
  93. # ------------------------------------------------------------
  94. print("\nProdukte nach Preis absteigend sortiert (ORDER BY):")
  95. cursor.execute("SELECT produkt, preis FROM einkaufsliste ORDER BY preis DESC")
  96. for row in cursor.fetchall():
  97. print(row)
  98. # ------------------------------------------------------------
  99. # 10. GROUP BY – Gruppieren
  100. # ------------------------------------------------------------
  101. print("\nAna Produkte pro Kategorie (GROUP BY):")
  102. cursor.execute("""
  103. SELECT kategorie_id, COUNT(*) AS ana
  104. FROM einkaufsliste
  105. GROUP BY kategorie_id
  106. """)
  107. for row in cursor.fetchall():
  108. print(row)
  109. # ------------------------------------------------------------
  110. # 11. JOIN – Tabellen verbinden
  111. # ------------------------------------------------------------
  112. print("\nProdukte mit Kategorienamen (INNER JOIN):")
  113. cursor.execute("""
  114. SELECT einkaufsliste.produkt, kategorie.name
  115. FROM einkaufsliste
  116. INNER JOIN kategorie ON einkaufsliste.kategorie_id = kategorie.id
  117. """)
  118. for row in cursor.fetchall():
  119. print(row)
  120. print("\nAlle Kategorien, auch ohne Produkte (LEFT JOIN):")
  121. cursor.execute("""
  122. SELECT kategorie.name, einkaufsliste.produkt
  123. FROM kategorie
  124. LEFT JOIN einkaufsliste ON einkaufsliste.kategorie_id = kategorie.id
  125. """)
  126. for row in cursor.fetchall():
  127. print(row)
  128. # ------------------------------------------------------------
  129. # 12. Aufräumen
  130. # ------------------------------------------------------------
  131. #cursor.execute("DROP DATABASE TEST2")
  132. cursor.close()
  133. conn.close()
  134. # ------------------------------------------------------------
  135. # SQL-BEFEHLE – SYNTAX-ÜBERSICHT
  136. # ------------------------------------------------------------
  137. # CREATE DATABASE -> CREATE DATABASE datenbankname;
  138. # CREATE TABLE -> CREATE TABLE tabellenname (spalte datentyp, ...);
  139. # INSERT INTO -> INSERT INTO tabellenname (spalte1, spalte2, ...) VALUES (wert1, wert2, ...);
  140. # SELECT -> SELECT spalte1, spalte2 FROM tabellenname;
  141. # WHERE -> SELECT spalte FROM tabellenname WHERE bedingung;
  142. # UPDATE -> UPDATE tabellenname SET spalte = neuer_wert WHERE bedingung;
  143. # DELETE -> DELETE FROM tabellenname WHERE bedingung;
  144. # ORDER BY -> SELECT spalte FROM tabellenname ORDER BY spalte [ASC|DESC];
  145. # GROUP BY -> SELECT spalte, AGGREGATFUNKTION(spalte) FROM tabellenname GROUP BY spalte;
  146. # INNER JOIN -> SELECT t1.spalte, t2.spalte FROM t1 INNER JOIN t2 ON t1.id = t2.id;
  147. # LEFT JOIN -> SELECT t1.spalte, t2.spalte FROM t1 LEFT JOIN t2 ON t1.id = t2.id;