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:
CREATE TABLE todo
: Dies ist der Befehl, der MySQL anweist, eine neue Tabelle namenstodo
zu erstellen.id INT AUTO_INCREMENT PRIMARY KEY
: Dies erstellt eine Spalteid
, die automatisch bei jeder neuen Zeile inkrementiert wird und als eindeutiger Primärschlüssel dient.eingabe VARCHAR(255) NOT NULL
: Dies erstellt eine Spalteeingabe
, die eine Zeichenkette (Text) mit einer maximalen Länge von 255 Zeichen speichert und nichtNULL
sein darf (d.h., diese Spalte muss immer einen Wert haben).created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
: Dies erstellt eine Spaltecreated_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:
- 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:
- 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 dernummer
-Spalte entweder eindeutig sind oder die Spalte vor dem Ändern aufAUTO_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:
- Überprüfe die Daten, um sicherzustellen, dass du die richtige Zeile identifizierst:
SELECT * FROM zeiterfassung WHERE nummer = 3;
- Wenn die Daten korrekt sind, führe den
DELETE
-Befehl aus:DELETE FROM zeiterfassung WHERE nummer = 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());
}