SQL in the shell

Relationenalgebra auf der Kommandozeile

Relation

  • Attribut

  • Tupel

Operationen

  • Projektion
  • Selektion
  • Vereinigung
  • Differenz
  • Umbenennung
  • Kartesisches Produkt

Projektion

R=Relation u¨berA1,,Ak und βA1,,Ak.R = \text{Relation über} {A_1, …, A_k} \text{ und }β ⊆ {A_1, …, A_k}.

πβ(R):={tβtR}\pi_{\beta}(R):=\{t_{\beta}|t \in R\}

  • SELECT CustomerName, City FROM Customers;

Selektion

σA(R):={ttRt erfu¨llt A}\sigma_{\text{A}}(R) := \{ t | t \in R \wedge t \text{ erfüllt A} \}

  • SELECT * FROM Customers
    WHERE Country LIKE '%ada%';

Vereinigung

RS:={ttRtS}R \cup S := \{ t | t \in R \lor t \in S \}

  • SELECT * FROM Customers_A
    UNION SELECT * FROM Customers_B

Differenz

RS:=RS:={ttRtS}R {-} S := R {\setminus} S := \{ t | t \in R \land t \notin S \}

  • SELECT * FROM Customers_A
    EXCEPT SELECT * FROM Customers_B;

Umbenennung

ρ[neualt](R):={tt(Ralt)=t(Ralt)t(neu)=t(alt)}\rho_{[\mathrm{neu}\leftarrow\mathrm{alt}]}(R):= \{t'|t'(R-\mathrm{alt})=t(R-\mathrm{alt}) \land t'(\mathrm{neu})=t(\mathrm{alt})\}

Kartesisches Produkt

R×S:={(a1,a2,...,an,b1,b2,...,bm)(a1,...,an)R(b1,...,bm)S}R\times S:=\{(a_1,a_2,...,a_n,b_1,b_2,...,b_m)| \\ (a_1,...,a_n)\in R\wedge (b_1,...,b_m)\in S\}

  • SELECT * FROM R, S;

Join?

  • Selektion
  • Projektion
  • Kartesisches Produkt

Revue

  • cat: Vereinigung
  • grep: Selektion
  • awk: Selektion, Projektion, Umbenennung
  • comm: Differenz

Et al.

cat,sed, grep, cut, awk, join,
comm, diff, uniq und sort

Inspiration

http://matt.might.net/articles/sql-in-the-shell/

Martin Funk (@eigenfunk)

https://github.com/eigenfunk/sql-in-the-shell

This is presenter note with. You can write down notes through HTML comment.

Relation: Attribute und Tupel. Attribut: Typ Tupel: Geordnete Werte, Datensatz.