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
lpi1:sql [2012/10/11 08:41]
ingo_wichmann [Anzahl der Benutzer ausgeben]
lpi1:sql [2015/08/17 13:07]
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 255: Zeile 258:
 ==== 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 301: 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 331: 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 338: 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 359: 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|}} ​( [[http://​www.codeproject.com/​Articles/​33052/​Visual-Representation-of-SQL-Joins| Quelle]] ) 
  
lpi1/sql.txt · Zuletzt geändert: 2015/08/17 13:07 von ingo_wichmann