Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
start [2025/12/26 06:41] 85.25.210.70 alte Version wiederhergestellt (2025/09/04 07:22) |
start [2025/12/28 20:38] (aktuell) 92.204.40.219 alte Version wiederhergestellt (2025/09/14 20:11) |
||
|---|---|---|---|
| Zeile 1977: | Zeile 1977: | ||
| (dev/sdb1 /mnt auto auto, users, exec 0 0) | (dev/sdb1 /mnt auto auto, users, exec 0 0) | ||
| + | |||
| + | ==== zertifikat ==== | ||
| + | |||
| + | < | ||
| + | root@ubuntu:/ | ||
| + | insgesamt 16 | ||
| + | -rw-r--r-- 1 root root 10918 Jun 18 09:54 index.html | ||
| + | -rw-r--r-- 1 root root 17 Jun 18 10:01 phpinfo.php | ||
| + | root@ubuntu:/ | ||
| + | root@ubuntu:/ | ||
| + | root@ubuntu:/ | ||
| + | |||
| + | #unter umständen alte confs deaktivieren | ||
| + | a2dissite dokuwiki | ||
| + | |||
| + | a2enmod ssl | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== zertifikat zusammenbauen ==== | ||
| + | |||
| + | |||
| + | **privater Schlüssel** | ||
| + | eine verschlüsselungsmethode: | ||
| + | < | ||
| + | openssl genrsa -out / | ||
| + | |||
| + | </ | ||
| + | |||
| + | **Zertifikat und öffentlicher Schlüssel** | ||
| + | < | ||
| + | openssl req -new -x509 -key / | ||
| + | |||
| + | nano / | ||
| + | |||
| + | SSLCertificateFile | ||
| + | SSLCertificateKeyFile / | ||
| + | |||
| + | |||
| + | systemctl restart apache2 | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Linux Webserver ==== | ||
| + | |||
| + | |||
| + | feste IP | ||
| + | |||
| + | nano / | ||
| + | |||
| + | network: | ||
| + | version: 2 | ||
| + | renderer: networkd | ||
| + | ethernets: | ||
| + | enp0s3: | ||
| + | dhcp4: no | ||
| + | addresses: [192.168.1.150/ | ||
| + | gateway4: 192.168.1.1 | ||
| + | nameservers: | ||
| + | addresses: [8.8.8.8, | ||
| + | |||
| + | netplan apply | ||
| + | |||
| + | sudo apt update | ||
| + | |||
| + | sudo apt-get install apache2 libapache2-mod-php7.2 php7.2 php7.2-mysql mysql-server | ||
| + | |||
| + | IP im Browser aufrufen | ||
| + | |||
| + | php info erstellen | ||
| + | echo "<? | ||
| + | |||
| + | Datenbank testen# | ||
| + | mysql | ||
| + | |||
| + | db user anlegen | ||
| + | nano / | ||
| + | |||
| + | #Skript | ||
| + | #! /bin/bash | ||
| + | clear | ||
| + | echo -n Bitte Username eingeben: | ||
| + | read userdb | ||
| + | #echo $userdb | ||
| + | echo -n Bitte Passwort eingeben: | ||
| + | read passdb | ||
| + | #echo $passdb | ||
| + | echo CREATE USER " | ||
| + | echo GRANT USAGE ON '* . *' TO " | ||
| + | echo CREATE DATABASE IF NOT EXISTS " | ||
| + | echo GRANT ALL PRIVILEGES ON " | ||
| + | mysql < / | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | virtuelle Hosts mit PORT | ||
| + | |||
| + | nano / | ||
| + | |||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot / | ||
| + | </ | ||
| + | |||
| + | |||
| + | um z.B. Wordpress zu installieren | ||
| + | nano / | ||
| + | |||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot /var/www/wp | ||
| + | </ | ||
| + | |||
| + | |||
| + | mkdir /var/www/wp | ||
| + | nano / | ||
| + | |||
| + | <?php | ||
| + | echo " | ||
| + | ?> | ||
| + | |||
| + | a2ensite wp # | ||
| + | |||
| + | nano / | ||
| + | |||
| + | Listen 80 | ||
| + | Listen 81 | ||
| + | < | ||
| + | Listen 443 | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Listen 443 | ||
| + | </ | ||
| + | |||
| + | systemctl restart apache2 | ||
| + | |||
| + | |||
| + | |||
| + | virtuelle Hosts mit IP (am Beispiel joomla) | ||
| + | |||
| + | |||
| + | nano / | ||
| + | network: | ||
| + | version: 2 | ||
| + | renderer: networkd | ||
| + | ethernets: | ||
| + | enp0s3: | ||
| + | dhcp4: no | ||
| + | addresses: [192.168.1.150/ | ||
| + | gateway4: 192.168.1.1 | ||
| + | nameservers: | ||
| + | addresses: [8.8.8.8, | ||
| + | |||
| + | |||
| + | cp / | ||
| + | |||
| + | |||
| + | |||
| + | nano / | ||
| + | |||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot /var/www/jo | ||
| + | </ | ||
| + | |||
| + | mkdir /var/www/jo | ||
| + | |||
| + | nano / | ||
| + | |||
| + | <?php | ||
| + | echo " | ||
| + | ?> | ||
| + | |||
| + | a2ensite joomla | ||
| + | |||
| + | systemctl restart apache2 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | | ||
| + | |||
| + | mkdir / | ||
| + | cp / | ||
| + | nano / | ||
| + | |||
| + | <?php | ||
| + | echo " | ||
| + | ?> | ||
| + | |||
| + | cp / | ||
| + | |||
| + | |||
| + | nano / | ||
| + | |||
| + | |||
| + | so nimmt er alle IPs | ||
| + | |||
| + | | ||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot /var/www/dw | ||
| + | ServerName dokuwiki.ibs | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | jetzt nimmt er nur die IP 192.168.1.150 | ||
| + | |||
| + | NameVirtualHost 192.168.1.150 | ||
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | DocumentRoot /var/www/dw | ||
| + | ServerName dokuwiki.ibs | ||
| + | </ | ||
| + | |||
| + | |||
| + | a2ensite dokuwiki | ||
| + | |||
| + | systemctl restart apache2 | ||
| + | |||
| + | |||
| + | Zum Testen z.B. unter Win10 Editor als Admin öffnen; darin C: | ||
| ====== PHP ====== | ====== PHP ====== | ||
| Zeile 2259: | Zeile 2485: | ||
| + | ===== Verbindung 1:n ===== | ||
| + | < | ||
| + | mysql> select * from firma f, mitarbeiter m where f.id=id_firma; | ||
| + | +----+-----------+------+-------------+------+----+---------+---------+--------+-------------+----------+ | ||
| + | | id | name | ort | mail | ma | id | name | vorname | tel | mail | id_firma | | ||
| + | +----+-----------+------+-------------+------+----+---------+---------+--------+-------------+----------+ | ||
| + | | 2 | Holz Gmbh | Bonn | Holz@web.de | 10 | 1 | Schmidt | Erna | 33333 | ES@web.de | ||
| + | | 1 | Bau Gmbh | Bonn | Bau@web.de | ||
| + | | 2 | Holz Gmbh | Bonn | Holz@web.de | 10 | 3 | Klaue | Ines | 344773 | k~io@web.de | 2 | | ||
| + | +----+-----------+------+-------------+------+----+---------+---------+--------+-------------+----------+ | ||
| + | 3 rows in set (0,00 sec) | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Konfigurationsdateien ===== | ||
| + | === Win === | ||
| + | - C:\my.cnf Globale Konfiguration | ||
| + | - C: | ||
| + | === Unix === | ||
| + | - /etc/my.cnf Globale Konfiguration | ||
| + | - / | ||
| + | - ~./my.cnf Benutzerkonfiguration | ||
| + | |||
| + | ===== Netzfreigabe ===== | ||
| + | |||
| + | Der MySQL Server lauscht standardmäßig nur auf der localhost IP (127.0.0.1). | ||
| + | |||
| + | - Datei my.cnf öffnen. | ||
| + | - bind-adresse ändern in 0.0.0.0 | ||
| + | - User Netzwerkzugriff erlauben. | ||
| + | |||
| + | |||
| + | use mysql | ||
| + | update user set host=' | ||
| + | update db set host=' | ||
| + | | ||
| + | ===== Datenbank sichern | ||
| + | < | ||
| + | // sichert die DB " | ||
| + | |||
| + | mysqldump -u web5 -p meineDB | ||
| + | |||
| + | mysqldump -u root -p1234 meineDB > / | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Tabellen sichern | ||
| + | < | ||
| + | // sichert die Tabelle " | ||
| + | |||
| + | mysqldump -u web5 -p meineDB adressen > c: | ||
| + | |||
| + | mysqldump -u root -p1234 meineDB adressen > / | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== mehrere Datenbanken sichern ===== | ||
| + | < | ||
| + | mysqldump -u root -p1234 --databases meineDB test mysql > c: | ||
| + | |||
| + | mysqldump -u root -p1234 --all-databases > / | ||
| + | |||
| + | </ | ||
| + | Komplette Datenbanksysteme können schneller mit **mysqlhotcopy** gesichert werden. | ||
| + | |||
| + | |||
| + | ===== Datenbank wiederherstellen ===== | ||
| + | < | ||
| + | mysql -u web5 -p meineDB < / | ||
| + | </ | ||
| + | Dabei bezeichnet der Parameter -u den User, der Parameter -p bewirkt die Abfrage des Passwortes. Anschliessend wird der Datenbankname angegeben. Der letzte Parameter bezeichnet den Datenfile. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Datenbank prüfen ===== | ||
| + | Mit mysqlcheck kann die Datenbank auf Fehler überprüft werden: | ||
| + | < | ||
| + | mysqlcheck -u root -p -A -e | ||
| + | </ | ||
| + | Die Option -A prüft alle vorhandenen Datenbanken und -e führt eine ausführliche Konsistenzüberprüfung durch. | ||
| + | |||
| + | __Tabellen testen__ | ||
| + | < | ||
| + | mysqlcheck -u root -p -e db_name tabll1 tabell2 | ||
| + | </ | ||
| + | Mehr Informationen zu mysqlcheck mit: | ||
| + | |||
| + | http:// | ||
| + | |||
| + | |||
| + | ===== Daten importieren ===== | ||
| + | __1.Tabele erstellen__ | ||
| + | < | ||
| + | create table adr1 (id int not null auto_increment primary key, | ||
| + | name varchar(50) not null, ort varchar(50), | ||
| + | </ | ||
| + | __2.Textdatei erstellen__ | ||
| + | < | ||
| + | \N Schmidt | ||
| + | \N Klose Stahl \N 2003-3-25 | ||
| + | </ | ||
| + | __importieren__ | ||
| + | < | ||
| + | LOAD DATA LOCAL INFILE '/ | ||
| + | LOAD DATA LOCAL INFILE ' | ||
| + | </ | ||
| + | |||
| + | ===== User mit db anlegen ===== | ||
| + | < | ||
| + | CREATE USER ' | ||
| + | GRANT USAGE ON * . * TO ' | ||
| + | |||
| + | CREATE DATABASE IF NOT EXISTS `paul` ; | ||
| + | |||
| + | GRANT ALL PRIVILEGES ON `paul` . * TO ' | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | #! /bin/bash | ||
| + | clear | ||
| + | echo -n Bitte Username eingeben: | ||
| + | read userdb | ||
| + | #echo $userdb | ||
| + | |||
| + | echo -n Bitte Passwort eingeben: | ||
| + | read passdb | ||
| + | #echo $passdb | ||
| + | echo CREATE USER " | ||
| + | echo GRANT USAGE ON '* . *' TO " | ||
| + | echo CREATE DATABASE IF NOT EXISTS " | ||
| + | echo GRANT ALL PRIVILEGES ON " | ||
| + | mysql < / | ||
| + | </ | ||
| + | |||
| + | ====== Einfache SQL-Befehle ====== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Anmelden an MySql ===== | ||
| + | __Unix / Linux__ | ||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | __Windows__ | ||
| + | < | ||
| + | c: | ||
| + | </ | ||
| + | __mit Passwort__ | ||
| + | < | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Version / Passwort ===== | ||
| + | __erste Abfragen__ | ||
| + | < | ||
| + | SELECT version() AS version; | ||
| + | SELECT CURRENT_DATE; | ||
| + | SELECT 22+6; | ||
| + | SELECT USER(), VERSION(), CURRENT_DATE; | ||
| + | </ | ||
| + | __Passwort setzen__ | ||
| + | < | ||
| + | SET PASSWORD = PASSWORD(' | ||
| + | </ | ||
| + | __abmelden__ | ||
| + | < | ||
| + | quit; | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Eingabeaufforderung ===== | ||
| + | |||
| + | |mysql> |Bereit für einen neuen Befehl. | | ||
| + | |- > |Erwartet die nächste Zeile einer mehrzeiligen Befehlseingabe. | | ||
| + | |'> |Erwartet die nächste Zeile und die Vervollständigung eines Strings, der mit einem einfachen Anführungszeichen ' begonnen wurde. | | ||
| + | |"> |Erwartet die nächste Zeile und die Vervollständigung eines Strings, der mit einem doppelten Anführungszeichen " begonnen wurde. | | ||
| + | |`> |Erwartet die nächste Zeile und die Vervollständigung eines Bezeichners, | ||
| + | |/*> |Erwartet die nächste Zeile und die Vervollständigung eines Kommentars, der mit /* begonnen wurde. | | ||
| + | |||
| + | ===== DB erstellen und anzeigen ===== | ||
| + | __DB erstellen__ | ||
| + | < | ||
| + | CREATE DATABASE meineDB; | ||
| + | </ | ||
| + | __DB auflisten__ | ||
| + | < | ||
| + | show databases; | ||
| + | </ | ||
| + | __Ausgabe__ | ||
| + | < | ||
| + | +--------------------+ | ||
| + | | Database | ||
| + | +--------------------+ | ||
| + | | information_schema | | ||
| + | | cdcol | | ||
| + | | mysql | | ||
| + | | phpmyadmin | ||
| + | | test | | ||
| + | | meineDB | ||
| + | +--------------------+ | ||
| + | 6 rows in set (0,08 sec) | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== DB wählen ===== | ||
| + | < | ||
| + | use meineDB; | ||
| + | </ | ||
| + | __Namen der aktuellen Datenbank__ | ||
| + | < | ||
| + | SELECT DATABASE(); | ||
| + | </ | ||
| + | |||
| + | ===== Tabellen in DB anzeigen ===== | ||
| + | < | ||
| + | show tables; | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | +---------------------------+ | ||
| + | | Tables_in_mysql | ||
| + | +---------------------------+ | ||
| + | | columns_priv | ||
| + | | db | | ||
| + | | func | | ||
| + | | help_category | ||
| + | | help_keyword | ||
| + | | help_relation | ||
| + | | help_topic | ||
| + | | host | | ||
| + | | proc | | ||
| + | | user | | ||
| + | +---------------------------+ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Tabelle erzeugen 1 ===== | ||
| + | __einfache Tabelle erzeugen__ | ||
| + | < | ||
| + | CREATE TABLE adressen (id INT,name VARCHAR(35), | ||
| + | | ||
| + | </ | ||
| + | __Test ob Tabelle vorhanden__ | ||
| + | < | ||
| + | CREATE TABLE IF NOT EXISTS adr (id INT,name VARCHAR(35), | ||
| + | | ||
| + | </ | ||
| + | __ID automatisch hochzählen__ | ||
| + | < | ||
| + | CREATE TABLE adr (id INT AUTO_INCREMENT PRIMARY KEY, | ||
| + | name VARCHAR(35), | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Tabelle erzeugen 1 ===== | ||
| + | __Eingabe erforderlich__ | ||
| + | < | ||
| + | CREATE TABLE adr (id INT NOT NULL,name VARCHAR(35) NOT NULL, | ||
| + | vorname VARCHAR(35)); | ||
| + | </ | ||
| + | __kompl. Beispiel__ | ||
| + | < | ||
| + | CREATE TABLE IF NOT EXISTS adr ( | ||
| + | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, | ||
| + | name VARCHAR( 10 ) NOT NULL , | ||
| + | geburtstag DATE, | ||
| + | geschl VARCHAR( 1 ) NOT NULL DEFAULT ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Struktur anzeigen ===== | ||
| + | < | ||
| + | describe adr; | ||
| + | show columns from mitarbeiter; | ||
| + | </ | ||
| + | __Ausgaben__ | ||
| + | < | ||
| + | +-------+-------------+------+-----+---------+----------------+ | ||
| + | | Field | Type | Null | Key | Default | Extra | | ||
| + | +-------+-------------+------+-----+---------+----------------+ | ||
| + | | id | int(11) | ||
| + | | firma | varchar(50) | NO | ||
| + | | ort | varchar(50) | YES | | NULL | | | ||
| + | +-------+-------------+------+-----+---------+----------------+ | ||
| + | 3 rows in set (0,01 sec) | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Ändern des Tabellenlayouts | ||
| + | __Tabellen umbenennen__ | ||
| + | < | ||
| + | ALTER TABLE adressen RENAME adr; | ||
| + | </ | ||
| + | |||
| + | __Feld hinzufügen__ | ||
| + | < | ||
| + | ALTER TABLE adr ADD mailx VARCHAR(20); | ||
| + | </ | ||
| + | |||
| + | __Feldtyp und Feldname ändern__ | ||
| + | < | ||
| + | ALTER TABLE adr CHANGE mailx maily VARCHAR(50); | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Ändern des Tabellenlayouts ===== | ||
| + | __Feldtyp ändern__ | ||
| + | < | ||
| + | ALTER TABLE adr MODIFY maily varchar(10); | ||
| + | </ | ||
| + | |||
| + | __Feld löschen__ | ||
| + | < | ||
| + | ALTER TABLE adr DROP maily; | ||
| + | </ | ||
| + | |||
| + | __Index und Primärschlüssel setzen__ | ||
| + | < | ||
| + | ALTER TABLE adr ADD INDEX (maily); | ||
| + | ALTER TABLE adr ADD PRIMARY KEY (id); | ||
| + | ALTER TABLE tabelle ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Tabellen mit Daten füllen ===== | ||
| + | Bsp.1: | ||
| + | < | ||
| + | INSERT INTO adressen | ||
| + | </ | ||
| + | Bsp.2: | ||
| + | < | ||
| + | INSERT INTO adressen( name ) VALUES (' | ||
| + | </ | ||
| + | Bsp.3: | ||
| + | < | ||
| + | INSERT INTO adressen VALUES | ||
| + | (NULL , ' | ||
| + | (NULL , ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Inhalt von Tabellen anzeigen ===== | ||
| + | __alle Daten ausgeben__ | ||
| + | < | ||
| + | select * from adressen; | ||
| + | </ | ||
| + | __Spalte name und ort ausgeben__ | ||
| + | < | ||
| + | select name, ort from adressen; | ||
| + | </ | ||
| + | __die ersten 30 DS ausgeben__ | ||
| + | < | ||
| + | SELECT * FROM adressen LIMIT 0 , 30 ; | ||
| + | </ | ||
| + | |||
| + | ===== Inhalt von Tabellen anzeigen ===== | ||
| + | __alle DS mit name Otto ausgeben__ | ||
| + | < | ||
| + | SELECT * FROM ' | ||
| + | </ | ||
| + | __sortierte Ausgabe (aufsteigend)__ | ||
| + | < | ||
| + | select * from adressen ORDER BY name; | ||
| + | </ | ||
| + | __sortierte Ausgabe (absteigend)__ | ||
| + | < | ||
| + | select * from adressen ORDER BY name DESC; | ||
| + | </ | ||
| + | __sortierte Ausgabe (Zufall)__ | ||
| + | < | ||
| + | select * from adressen ORDER BY rand(); | ||
| + | </ | ||
| + | |||
| + | ===== DB und Tabelle löschen | ||
| + | __Tabelle löschen__ | ||
| + | < | ||
| + | DROP TABLE adressen; | ||
| + | </ | ||
| + | __DB löschen__ | ||
| + | < | ||
| + | DROP DATABASE meineDB; | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== weitere SQL Befehle ====== | ||
| + | |||
| + | |||
| + | |||
| + | ===== Tabelleninhalte verändern ===== | ||
| + | |||
| + | ändert alle Datensätze | ||
| + | |||
| + | UPDATE adressen SET name=' | ||
| + | UPDATE adressen SET name=' | ||
| + | |||
| + | ändert nur Datensätze wo die id=5 ist | ||
| + | |||
| + | UPDATE adressen SET name=' | ||
| + | |||
| + | berechnet den Wert | ||
| + | |||
| + | UPDATE artikel SET preis=preis*1.1; | ||
| + | |||
| + | UPDATE ARTIKEL As A INNER JOIN UMSATZ AS U | ||
| + | On A.A_NR = U.A_NR | ||
| + | SET U.Gesamt = A.A_PREIS * U.A_STUECK | ||
| + | |||
| + | ===== Datensätze löschen ===== | ||
| + | < | ||
| + | delete from artikel where id=4; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Wiederholungen (distinct) ===== | ||
| + | |||
| + | Alle Dopplungen von vorname werden ausgelassen. | ||
| + | < | ||
| + | select | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Arithmetische Operatoren ===== | ||
| + | < | ||
| + | SELECT * FROM adressen WHERE age< | ||
| + | |||
| + | SELECT * FROM adressen WHERE age%10=0; | ||
| + | |||
| + | SELECT * FROM adressen WHERE age%10!=0; | ||
| + | |||
| + | SELECT name, age*365 FROM adressen; | ||
| + | </ | ||
| + | erlaubte Operatoren: +, -, *, /, % | ||
| + | |||
| + | logische Operatoren: | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== eigene Spaltenüberschriften ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | SELECT name, age AS Alter FROM adressen; | ||
| + | |||
| + | SELECT name, age*365 AS Tage FROM adressen; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Operator LIKE ===== | ||
| + | |||
| + | < | ||
| + | SELECT * FROM adressen WHERE name LIKE ' | ||
| + | |||
| + | SELECT * FROM adressen WHERE strasse LIKE ' | ||
| + | |||
| + | SELECT * FROM adressen WHERE name LIKE ' | ||
| + | </ | ||
| + | |||
| + | **%** = steht für ein oder mehrere Zeichen | ||
| + | |||
| + | **_** = steht für ein Zeichen | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Zeichenverkettung | ||
| + | |||
| + | Zwei Strings lassen sich mit der Function concat() verbinden. | ||
| + | < | ||
| + | SELECT concat(name , '* ' , vorname) | ||
| + | SELECT concat(name , '* ' , vorname) AS Bezeichnung | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Operatoren: IN und BETWEEN ===== | ||
| + | __Operator IN__ | ||
| + | < | ||
| + | SELECT * FROM adressen WHERE name=' | ||
| + | name=' | ||
| + | oder | ||
| + | SELECT * FROM adressen | ||
| + | IN(' | ||
| + | </ | ||
| + | |||
| + | __Operator BETWEEN__ | ||
| + | < | ||
| + | SELECT * FROM adressen WHERE age>17 AND age<66; | ||
| + | oder | ||
| + | SELECT * FROM adressen | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Aggregatfunktionen 1 ===== | ||
| + | __COUNT liefert die Anzahl der Zeilen__ | ||
| + | < | ||
| + | SELECT count(*) FROM adressen WHERE age> | ||
| + | AND age<66; | ||
| + | |||
| + | // eigene Überschrift | ||
| + | SELECT count(*) as Arbeitsfaehig FROM adressen | ||
| + | WHERE age>17 AND age<66; | ||
| + | </ | ||
| + | |||
| + | __SUM liefert die Summe aller Werte__ | ||
| + | < | ||
| + | SELECT SUM(age) FROM adressen; | ||
| + | |||
| + | // eigene Überschrift | ||
| + | SELECT SUM(age) as Alter_gesamt FROM adressen; | ||
| + | </ | ||
| + | |||
| + | ===== Aggregatfunktionen 2 ===== | ||
| + | __AVG berechnet den Mittelwert einer Spalte__ | ||
| + | < | ||
| + | SELECT AVG(alter) FROM adressen; | ||
| + | </ | ||
| + | |||
| + | __MAX liefert den größten Wert__ | ||
| + | < | ||
| + | SELECT MAX(alter) FROM adressen; | ||
| + | </ | ||
| + | |||
| + | __MIN liefert den kleinsten Wert__ | ||
| + | < | ||
| + | SELECT MIN(alter) FROM adressen; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Tabelle mitarbeiter ===== | ||
| + | < | ||
| + | +----+---------+---------+--------+-------------+----------+-------+ | ||
| + | | id | name | vorname | tel | mail | id_firma | id_KK | | ||
| + | +----+---------+---------+--------+-------------+----------+-------+ | ||
| + | | 1 | Schmidt | Erna | 33333 | ES@web.de | ||
| + | | 2 | Klose | Otto | 3773 | ko@web.de | ||
| + | | 3 | Klaue | Ines | 344773 | k~io@web.de | 2 | 2 | | ||
| + | +----+---------+---------+--------+-------------+----------+-------+ | ||
| + | </ | ||
| + | |||
| + | ===== INNER JOIN ===== | ||
| + | Der INNER JOIN führt Datensätze aus der linken und rechten Tabelle genau dann zusammen, wenn die angegebenen Kriterien alle erfüllt sind. Ist eines oder mehrere der Kriterien nicht erfüllt, so entsteht kein Datensatz in der Ergebnismenge. | ||
| + | |||
| + | |||
| + | **Explizite Schreibweise: | ||
| + | select * from kunden k inner join mitarbeiter m on k.id=m.id_firma | ||
| + | |||
| + | ===== LEFT JOIN ===== | ||
| + | **LEFT JOIN: | ||
| + | Ein Datensatz aus der linken Tabelle kommt in jedem Fall in das Ergebnis. Wenn ein Datensatz der rechten Tabelle dem ON-Kriterium entspricht, so wird er entsprechend in den Spalten eingetragen, | ||
| + | select * from kunden k left join mitarbeiter m on k.id=m.id_firmen | ||
| + | < | ||
| + | +----+---------------+--------+-------+---------+------+---------+---------+----------+-------------+----------+ | ||
| + | | id | name | ort | plz | strasse | id | name | vorname | funk | mail | firmenid | | ||
| + | +----+---------------+--------+-------+---------+------+---------+---------+----------+-------------+----------+ | ||
| + | | 1 | Holz GmbH | Bonn | 88888 | Weg 44 | NULL | NULL | NULL | NULL | NULL | NULL | | ||
| + | | 2 | Bau GmbH | Bonn | 88888 | Weg 66 | 2 | Klose | Erna | 0173 888 | erna@web.de | 2 | | ||
| + | | 2 | Bau GmbH | Bonn | 88888 | Weg 66 | 3 | Schmidt | Karl | 0173 888 | karl@web.de | 2 | | ||
| + | | 3 | Stahl GmbH | Bern | 7777 | Weg 66 | 4 | Maier | Ina | 0177 888 | Ina@web.de | ||
| + | | 4 | Abwasser GmbH | Berlin | 44444 | Weg 44 | NULL | NULL | NULL | NULL | NULL | NULL | | ||
| + | +----+---------------+--------+-------+---------+------+---------+---------+----------+-------------+----------+ | ||
| + | </ | ||
| + | ===== RIGHT JOIN ===== | ||
| + | Der RIGHT JOIN arbeitet genau entgegengesetzt dem LEFT JOIN. | ||
| + | select * from kunden k RIGHT JOIN mitarbeiter m on k.id=m.id_firmen; | ||
| + | < | ||
| + | +------+------------+------+-------+---------+----+---------+---------+----------+-------------+----------+ | ||
| + | | id | name | ort | plz | strasse | id | name | vorname | funk | mail | firmenid | | ||
| + | +------+------------+------+-------+---------+----+---------+---------+----------+-------------+----------+ | ||
| + | | NULL | NULL | NULL | NULL | NULL | 1 | Klose | Paul | 0173 999 | paul@web.de | NULL | | ||
| + | | 2 | Bau GmbH | Bonn | 88888 | Weg 66 | 2 | Klose | Erna | 0173 888 | erna@web.de | 2 | | ||
| + | | 2 | Bau GmbH | Bonn | 88888 | Weg 66 | 3 | Schmidt | Karl | 0173 888 | karl@web.de | 2 | | ||
| + | | 3 | Stahl GmbH | Bern | 7777 | Weg 66 | 4 | Maier | Ina | 0177 888 | Ina@web.de | ||
| + | +------+------------+------+-------+---------+----+---------+---------+----------+-------------+----------+ | ||
| + | </ | ||
| + | |||
| + | ===== FULL OUTER JOIN ===== | ||
| + | Die Logik für diesen Join: Jeder Datensatz der rechten und der linken Tabelle kommt in die Ergebnismenge. | ||
| + | |||
| + | Er ist gewissermaßen die Kombination aus LEFT und RIGHT-JOIN. | ||
| + | |||
| + | ===== MYSQL Befehle Anwendungen ===== | ||
| + | < | ||
| + | select artikelnr, | ||
| + | |||
| + | select artikelnr, | ||
| + | |||
| + | select Artikelnr, | ||
| + | |||
| + | select name, | ||
| + | |||
| + | select distinct(leistungkd.svnr), | ||
| + | |||
| + | select svnr, def, preis, ust from leistungkd left join leistung on leistung.svnr=leistungkd.svnr; | ||
| + | |||
| + | select def, preis, ust from leistungkd left join leistung on leistung.idl=leistungkd.idl where svnr=555444; | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== SQL User und Name anlegen skript ==== | ||
| + | < | ||
| + | #! /bin/bash | ||
| + | clear | ||
| + | echo -n Bitte Username eingeben: | ||
| + | read userdb | ||
| + | #echo $userdb | ||
| + | echo -n Bitte Passwort eingeben: | ||
| + | read passdb | ||
| + | #echo $passdb | ||
| + | echo CREATE USER " | ||
| + | echo GRANT USAGE ON ' | ||
| + | echo CREATE DATABASE IF NOT EXISTS " | ||
| + | echo GRANT ALL PRIVILEGES ON " | ||
| + | mysql < / | ||
| + | </ | ||
| ====== Java ====== | ====== Java ====== | ||