| | |
| | | <p>Bearbeiten > Einstellungen > Protocols > TLS > (Pre)-Master-Secret log filename</p> |
| | | </section> |
| | | <section> |
| | | Einrichtung eines Datenbank-Servers (Beispiel MongoDB) |
| | | Einrichtung eines Datenbank-Servers (Beispiel MySql) |
| | | </section> |
| | | <section> |
| | | <p>Datenbank installieren:</p> |
| | |
| | | # Paketquellen aktualisieren |
| | | sudo apt update |
| | | |
| | | # Tools installieren |
| | | sudo apt install gnupg curl |
| | | # MySql installieren |
| | | sudo apt install mysql-server |
| | | |
| | | # GPG-Signatur herunterladen und importieren |
| | | curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \ |
| | | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \ |
| | | --dearmor |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <pre> |
| | | <code class="bash" data-trim data-line-numbers> |
| | | # URL den Paketquellen hinzufügen |
| | | echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | \ |
| | | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list |
| | | |
| | | # Paketquellen aktualisieren |
| | | sudo apt update |
| | | |
| | | # MongoDB installieren |
| | | sudo apt install mongodb-org |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <pre> |
| | | <code class="bash" data-trim data-line-numbers> |
| | | # systemd neuladen |
| | | sudo systemctl daemon-reload |
| | | |
| | | # Autostart aktivieren |
| | | sudo systemctl enable mongod |
| | | |
| | | # Dienst starten |
| | | sudo systemctl start mongod.service |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <p>Der Server sollte nun erreichbar sein:</p> |
| | | <p>Der Server sollte nun laufen:</p> |
| | | <pre> |
| | | <code class="bash" data-trim data-line-numbers> |
| | | mongosh |
| | | sudo systemctl status mysql.service |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <p>Root-Passwort setzen/ändern:</p> |
| | | <pre> |
| | | <code class="bash" data-trim data-line-numbers> |
| | | # Login mit generischen Credentials |
| | | sudo mysql --defaults-file=/etc/mysql/debian.cnf |
| | | </code> |
| | | </pre> |
| | | <pre> |
| | | <code class="sql" data-trim data-line-numbers> |
| | | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; |
| | | exit; |
| | | </code> |
| | | </pre> |
| | | <pre> |
| | | <code class="bash" data-trim data-line-numbers> |
| | | # Server neustarten |
| | | sudo systemctl restart mysql.service |
| | | </code> |
| | | </pre> |
| | | <pre> |
| | | <code class="bash" data-trim data-line-numbers> |
| | | # Login mit neuen Credentials |
| | | mysql -uroot -p |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <pre> |
| | | <code class="sql" data-trim data-line-numbers> |
| | | CREATE DATABASE erp; |
| | | |
| | | use erp; |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <pre> |
| | | <code class="sql" data-trim data-line-numbers> |
| | | create table stores |
| | | ( |
| | | id int not null auto_increment primary key, |
| | | number varchar(5) not null |
| | | ); |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <pre> |
| | | <code class="sql" data-trim data-line-numbers> |
| | | create table revenues |
| | | ( |
| | | id int not null auto_increment primary key, |
| | | store int not null, |
| | | revenue int not null, |
| | | foreign key (store) references stores (id) |
| | | ); |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <pre> |
| | | <code class="sql" data-trim data-line-numbers> |
| | | insert into revenues (store, revenue) |
| | | values (1, 10000), |
| | | (1, 20000), |
| | | (1, 15000), |
| | | (2, 13000); |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <pre> |
| | | <code class="sql" data-trim data-line-numbers> |
| | | select stores.number, sum(revenues.revenue) as revenue |
| | | from stores |
| | | inner join revenues on revenues.store = stores.id |
| | | group by stores.id; |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <p>Zugriff in NodeJS</p> |
| | | <pre> |
| | | <code class="js" data-trim data-line-numbers> |
| | | const mysql = require("mysql"); |
| | | |
| | | var connection = mysql.createConnection({ |
| | | host: 'localhost', user: 'root', password: 'root', database: 'erp' |
| | | }); |
| | | |
| | | connection.connect(); |
| | | |
| | | connection.query('select * from stores;', function (error, results, fields) { |
| | | if (error) throw error; |
| | | |
| | | console.log(results); |
| | | }); |
| | | |
| | | connection.end(); |
| | | </code> |
| | | </pre> |
| | | </section> |
| | | <section> |
| | | <p>Aufgabe</p> |
| | | <p>Implementiere das <code>GROUP BY</code>-Statement aus dem SQL-Beispiel im NodeJS-Beispiel und gebe pro Zeile die Filiale mit dem Umsatz aus</p> |
| | | </section> |
| | | <section> |
| | | <p>Lösung</p> |
| | | <pre> |
| | | <code class="js" data-trim data-line-numbers> |
| | | const mysql = require("mysql"); |
| | | |
| | | var connection = mysql.createConnection({ |
| | | host: 'localhost', user: 'root', password : 'root', database : 'erp' |
| | | }); |
| | | |
| | | connection.connect(); |
| | | |
| | | const query = ` |
| | | select stores.number, sum(revenues.revenue) as revenue |
| | | from stores |
| | | inner join revenues on revenues.store = stores.id |
| | | group by stores.id; |
| | | `; |
| | | |
| | | connection.query(query, function (error, results, fields) { |
| | | if (error) throw error; |
| | | |
| | | for (const result of results) { |
| | | console.log(result.number + ": " + result.revenue); |
| | | } |
| | | }); |
| | | |
| | | connection.end(); |
| | | </code> |
| | | </pre> |
| | | </section> |