Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi1:sql

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
lpi1:sql [2012/10/11 08:36]
ingo_wichmann [Alle Benutzer wie in ''/etc/passwd'' ausgeben]
lpi1:sql [2015/08/17 13:06]
ingo_wichmann [Dokumentation]
Zeile 1: Zeile 1:
 ====== Installation Pakete ====== ====== Installation Pakete ======
-SuSE, Debian: +SuSE, Debian: ​''​sqlite3''​
-  ​sqlite3+
  
-CentOS: +CentOS: ​''​sqlite''​
-  ​sqlite+
  
 ====== Unix Benutzer in SQLite Datenbank überführen ====== ====== Unix Benutzer in SQLite Datenbank überführen ======
Zeile 19: Zeile 17:
 Aufbau gemäß ''/​etc/​passwd''​ : Aufbau gemäß ''/​etc/​passwd''​ :
  
-  sqlite3 accounts.db <<SQL 
 <code sql> <code sql>
 +sqlite3 accounts.db <<SQL
 +
 CREATE TABLE users (  CREATE TABLE users ( 
  uid text,   uid text, 
Zeile 30: Zeile 29:
  shell text   shell text 
 ); );
 +
 +SQL
 </​code>​ </​code>​
-  SQL 
  
 ==== Benutzer importieren ==== ==== Benutzer importieren ====
Zeile 44: Zeile 44:
  
 SQL INSERT Statement zum Einfügen der Daten in die Tabelle ''​users'':​ SQL INSERT Statement zum Einfügen der Daten in die Tabelle ''​users'':​
-  cat <<​SQL ​ 
 <code sql> <code sql>
 +cat <<​SQL ​
 +
 INSERT INTO users ( uid, password, uidNumber, gidNumber, gecos, home, shell )  INSERT INTO users ( uid, password, uidNumber, gidNumber, gecos, home, shell ) 
   VALUES ( '​$uid',​ '​$password',​ '​$uidNumber',​ '​$gidNumber',​ '​$gecos',​ '​$home',​ '​$shell'​ );   VALUES ( '​$uid',​ '​$password',​ '​$uidNumber',​ '​$gidNumber',​ '​$gecos',​ '​$home',​ '​$shell'​ );
 +
 +SQL 
 </​code>​ </​code>​
-  SQL  
  
 === Mit ''​while''​-Schleife alle Benutzer importieren === === Mit ''​while''​-Schleife alle Benutzer importieren ===
Zeile 66: Zeile 68:
 Für die ''/​etc/​group''​ werden zwei Tabellen benötigt: Für die ''/​etc/​group''​ werden zwei Tabellen benötigt:
  
-  sqlite3 accounts.db <<​SQL ​ 
 <code sql> <code sql>
-  ​CREATE TABLE groups ( gid text, password text, gidNumber integer ); +sqlite3 accounts.db <<SQL  
-  CREATE TABLE members ( gidNumber integer, uid text );+ 
 +CREATE TABLE groups ( gid text, password text, gidNumber integer ); 
 +CREATE TABLE members ( gidNumber integer, uid text ); 
 + 
 +SQL 
 </​code>​ </​code>​
-  SQL  
  
 ==== Gruppen importieren ==== ==== Gruppen importieren ====
Zeile 116: Zeile 120:
  
 ==== Das Skript in einer Datei ==== ==== Das Skript in einer Datei ====
-''​unix_users2sql.sh''​ : +<file bash unix_users2sql.sh>​
-<code bash>+
 #!/bin/bash #!/bin/bash
  
Zeile 165: Zeile 168:
   done   done
 done < /etc/group | sqlite3 accounts.db done < /etc/group | sqlite3 accounts.db
-</code>+</file>
  
 ==== Der fertige SQL-Dump ==== ==== Der fertige SQL-Dump ====
Zeile 231: Zeile 234:
 ===== einfache SELECT Abfragen ===== ===== einfache SELECT Abfragen =====
 ==== Alle Benutzer in ''/​etc/​passwd''​ ausgeben ==== ==== Alle Benutzer in ''/​etc/​passwd''​ ausgeben ====
 +<code sql>​select * from users;</​code>​
 analog zu analog zu
   cat /etc/passwd   cat /etc/passwd
-<code sql>​select * from users;</​code>​ 
  
 ==== Benutzer root ausgeben ==== ==== Benutzer root ausgeben ====
 <code sql>​select * from users where uid = '​root';</​code>​ <code sql>​select * from users where uid = '​root';</​code>​
 +analog zu 
 +  grep '​^root'​ /etc/passwd
 ==== Shell des Benutzers root ausgeben ==== ==== Shell des Benutzers root ausgeben ====
 <code sql>​select shell from users where uid = '​root';</​code>​ <code sql>​select shell from users where uid = '​root';</​code>​
 +analog zu
 +  grep '​^root'​ /etc/passwd | cut -d: -f 7
  
 ==== Benutzer nach Name sortiert ausgeben ==== ==== Benutzer nach Name sortiert ausgeben ====
-<code sql>​select * from users order by uid;</​code>​+<code sql>​select * from users order by uidNumber;</​code>​ 
 +analog zu 
 +  sort -n -t: -k3 /etc/passwd
  
 ==== Anzahl der Benutzer ausgeben ==== ==== Anzahl der Benutzer ausgeben ====
 <code sql>​select count(*) from users;</​code>​ <code sql>​select count(*) from users;</​code>​
 +analog zu 
 +  wc -l /etc/passwd
 ==== Wie viele Benutzer verwenden welche Shell ? ==== ==== Wie viele Benutzer verwenden welche Shell ? ====
 <code sql>​select shell, count(shell) from users group by shell;</​code>​ <code sql>​select shell, count(shell) from users group by shell;</​code>​
 +analog zu 
 +  cut -d : -f 7 /​etc/​passwd|sort|uniq -c
 ===== JOIN ===== ===== JOIN =====
 Alle Benutzer, ihre Passwörter und ihre primäre Gruppe namentlich ausgeben Alle Benutzer, ihre Passwörter und ihre primäre Gruppe namentlich ausgeben
Zeile 295: Zeile 305:
  
 ===== Subselect ===== ===== Subselect =====
-Die Durchschnitt der Gruppennummern aus der Tabelle ''​users''​ berechnen:+Den Durchschnitt der Gruppennummern aus der Tabelle ''​users''​ berechnen:
 <code sql> <code sql>
   select avg(gidNumber) from users;   select avg(gidNumber) from users;
Zeile 325: Zeile 335:
  
 ====== Datenbank verändern ====== ====== Datenbank verändern ======
-===== Tabellen ​verändern =====+===== Datensätze ​verändern =====
 ==== Zeile hinzufügen ==== ==== Zeile hinzufügen ====
 Gruppe mit neuer uidNumber hinzufügen Gruppe mit neuer uidNumber hinzufügen
Zeile 332: Zeile 342:
   INSERT INTO groups SELECT * FROM groups WHERE gid = '​projekt-y';​   INSERT INTO groups SELECT * FROM groups WHERE gid = '​projekt-y';​
 ==== Zeile verändern ==== ==== Zeile verändern ====
-  UPDATE groups SET gid = '​projekt-z';​+  UPDATE groups SET gid = '​projekt-z' WHERE gid = '​projekt-y';
 ==== Zeile löschen ==== ==== Zeile löschen ====
   DELETE FROM groups WHERE gid = '​projekt-y';​   DELETE FROM groups WHERE gid = '​projekt-y';​
Zeile 353: Zeile 363:
 ====== Dokumentation ====== ====== Dokumentation ======
   * [[http://​www.sqlite.org/​lang.html]]   * [[http://​www.sqlite.org/​lang.html]]
-  * {{:​visual_sql_joins_orig.jpg?​200|}}+  * {{:​visual_sql_joins_orig.jpg?​200|}} ​( von: http://​www.codeproject.com/​Articles/​33052/​Visual-Representation-of-SQL-Joins )
  
lpi1/sql.txt · Zuletzt geändert: 2015/08/17 13:07 von ingo_wichmann