MySQL Grundbefehle

Verbindung herstellen

michi@sysvorOrt ~ $ /etc/init.d/mysql start
 * mysql: superuser access required
michi@sysvorOrt ~ $ su
Passwort: 
sysvorOrt /home/michi # /etc/init.d/mysql start
 * WARNING: mysql has already been started
sysvorOrt /home/michi # /etc/init.d/mysql status
 * status: started
sysvorOrt /home/michi # 

MySQL einloggen

ysvorOrt /home/michi # mysql -h localhost -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 8.0.32 Gentoo Linux mysql-8.0.32-r2

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

vorhandene Datenbanken anzeigen:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| typeitin |
| zeiterfassung |
+--------------------+
7 rows in set (0,00 sec)

mysql>

gewünschte Datenbank auswählen

mysql> USE zeiterfassung;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> 

Tabelle hinzufügen

mysql> create table todo ( id INT AUTO_INCREMENT PRIMARY KEY, eingabe VARCHAR(255) NOT NULL );
Query OK, 0 rows affected (0,03 sec)

Erklärung der einzelnen Teile des Befehls:

  1. CREATE TABLE todo: Dies ist der Befehl, der MySQL anweist, eine neue Tabelle namens todo zu erstellen.
  2. id INT AUTO_INCREMENT PRIMARY KEY: Dies erstellt eine Spalte id, die automatisch bei jeder neuen Zeile inkrementiert wird und als eindeutiger Primärschlüssel dient.
  3. eingabe VARCHAR(255) NOT NULL: Dies erstellt eine Spalte eingabe, die eine Zeichenkette (Text) mit einer maximalen Länge von 255 Zeichen speichert und nicht NULL sein darf (d.h., diese Spalte muss immer einen Wert haben).
  4. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP: Dies erstellt eine Spalte created_at, die den Zeitstempel des Einfügevorgangs speichert und standardmäßig auf die aktuelle Zeit gesetzt wird, wenn eine neue Zeile eingefügt wird.

Du kannst diesen SQL-Befehl in deiner MySQL-Datenbank ausführen, z.B. über die MySQL-Konsole oder ein Datenbankverwaltungs-Tool wie phpMyAdmin.

Tabelle auswählen

mysql> show tables;
+-------------------------+
| Tables_in_zeiterfassung |
+-------------------------+
| zeiterfassung           |
+-------------------------+
1 row in set (0,01 sec)

mysql> 

Tabelle löschen

mysql> drop table if exists test;
Query OK, 0 rows affected, 1 warning (0,00 sec)

Spalte hinzufügen

mysql> ALTER TABLE zeiterfassung ADD COLUMN (spalte2 char(50));
Query OK, 0 rows affected (0,01 sec)
Records: 0  Duplicates: 0  Warnings: 0

Spalte löschen

mysql> ALTER TABLE tbl_namen DROP COLUMN spalte2;
Query OK, 0 rows affected (0,02 sec)
Records: 0  Duplicates: 0  Warnings: 0

Inhalt der Spalten anzeigen lassen

mysql> select kommen from zeiterfassung;
+---------------------+
| kommen              |
+---------------------+
| 2024-05-12 10:48:49 |
| 2024-05-12 10:53:00 |
| 2024-05-12 10:55:07 |
| 2024-05-12 13:02:51 |
| 2024-05-12 13:02:57 |
| 2024-05-12 14:54:11 |
+---------------------+
6 rows in set (0,01 sec)

Alle Werte anzeigen lassen:

mysql> select * from zeiterfassung;
+-------------+------+---------------------+-------+--------+
| Name kommen | wert | kommen              | gehen | nummer |
+-------------+------+---------------------+-------+--------+
| NULL        | NULL | 2024-05-12 10:48:49 | NULL  |   NULL |
| NULL        | NULL | 2024-05-12 10:53:00 | NULL  |   NULL |
| NULL        | NULL | 2024-05-12 10:55:07 | NULL  |   NULL |
| NULL        | NULL | 2024-05-12 13:02:51 | NULL  |   NULL |
| NULL        | NULL | 2024-05-12 13:02:57 | NULL  |   NULL |
| NULL        | NULL | 2024-05-12 14:54:11 | NULL  |   NULL |
+-------------+------+---------------------+-------+--------+
6 rows in set (0,00 sec)

mysql> 

Datentyp ändern:

mysql> alter table zeiterfassung modify column nummer int;
Query OK, 6 rows affected (0,03 sec)
Records: 6  Duplicates: 0  Warnings: 0

automatische Nummern zur Auswahl des Datensatzes.

Um eine neue Spalte mit AUTO_INCREMENT hinzuzufügen, müssen Sie sicherstellen, dass diese Spalte als Primärschlüssel oder als eindeutiger Index verwendet wird. In MySQL kann es nur eine AUTO_INCREMENT-Spalte pro Tabelle geben, und diese muss vom Datentyp INT (oder einem ähnlichen numerischen Typ) sein. Hier ist ein Beispiel, wie Sie dies erreichen können:

  1. Fügen Sie eine neue Spalte hinzu:
ALTER TABLE zeiterfassung ADD nummer INT AUTO_INCREMENT PRIMARY KEY;

Falls bereits eine nummer-Spalte vorhanden ist und Sie diese in eine AUTO_INCREMENT-Spalte umwandeln möchten, gehen Sie wie folgt vor:

  1. Primärschlüssel und AUTO_INCREMENT setzen:
ALTER TABLE zeiterfassung MODIFY nummer INT AUTO_INCREMENT PRIMARY KEY;

Hinweise:

  • Wenn bereits eine andere Spalte als Primärschlüssel definiert ist, müssen Sie diese Definition zuerst ändern, da es nur einen Primärschlüssel pro Tabelle geben kann.
  • Wenn die nummer-Spalte bereits Daten enthält, die keine eindeutigen Werte haben, wird es zu Konflikten kommen. Stellen Sie sicher, dass die bestehenden Werte der nummer-Spalte entweder eindeutig sind oder die Spalte vor dem Ändern auf AUTO_INCREMENT leer ist.

Um eine bestimmte Nummer und die dazugehörigen Daten aus einer Tabelle in MySQL zu löschen, verwendest du den DELETE-Befehl. Hier ist die allgemeine Syntax für den DELETE-Befehl:

DELETE FROM tabellenname WHERE bedingung;

In deinem Fall möchtest du eine bestimmte nummer aus der Tabelle zeiterfassung löschen. Angenommen, du möchtest die Nummer 3 löschen, dann wäre der Befehl:

DELETE FROM zeiterfassung WHERE nummer = 3;

Dieser Befehl löscht die Zeile aus der Tabelle zeiterfassung, in der die nummer den Wert 3 hat. Hier ist der gesamte Prozess, um sicherzustellen, dass du die richtige Zeile löschst:

  1. Überprüfe die Daten, um sicherzustellen, dass du die richtige Zeile identifizierst: SELECT * FROM zeiterfassung WHERE nummer = 3;
  2. Wenn die Daten korrekt sind, führe den DELETE-Befehl aus: DELETE FROM zeiterfassung WHERE nummer = 3;
  3. Überprüfe, ob die Zeile erfolgreich gelöscht wurde:
    sql SELECT * FROM zeiterfassung;

Hier ist ein vollständiges Beispiel:

-- Überprüfen der Daten
SELECT * FROM zeiterfassung WHERE nummer = 3;

-- Löschen der Zeile mit nummer = 3
DELETE FROM zeiterfassung WHERE nummer = 3;

-- Überprüfen, ob die Zeile gelöscht wurde
SELECT * FROM zeiterfassung;

Stelle sicher, dass du die richtige Nummer auswählst, da der DELETE-Befehl dauerhaft Daten aus der Tabelle entfernt.

MySQL beenden

Überprüfung in einer PHP Datei ob die SQL Verbindung funktioniert hat:

// Verbindung herstellen und Fehlerberichterstattung aktivieren
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
    $conn = new mysqli($servername, $username, $password, $database);
} catch (mysqli_sql_exception $e) {
    die("Verbindung fehlgeschlagen: " . $e->getMessage());
}