Maximilian Eisenstädter: 13 Stück MySQL Fragen mit wenig Perl dabei

Beitrag lesen

Guten Tag!

Hier sind 13 Fragen zu MySQL mit etwas Perl angehaucht:
Danke für etwaige Hilfestellung!

1)  Groß und Kleinschreibung:
   select * from table1 where name LIKE 'AL%'
   gibt sowohl  "alex" als auch "ALEX" und "aLeX"  aus.
   MySQL scheint also nicht Case Sensitive zu sein,
   oder ist das ein Fehler in meiner Installation?
     - Was macht man um es Case Sensitive zu bekommen?

2)  Selektiere "name" und "email" aus "table1" wo
   entweder "name" mit "a" beginnt,  ODER name mit "z" beginnt.
   Eines der beiden muss erfüllt sein,  entweder a%  ODER b%

3)  Nun müssen BEIDE Bedingungen erfüllt werden:
   Selektiere "name" und "email" aus "table1"
   wo "name"  mit "a"  beginnt,  und  das Feld
   "email"  *irgendwo* drinnen die Buchstaben "le" hat.

4)    Kann man count() anwenden,   wenn man ein LIMIT setzt?
     Ich selektiere mit LIMIT 3,5
              (die ersten 3 überspringen,  dann 5 selektieren)
     Es ist wichtig für mich herauszufinden,   wieviele
     Einträge dann tatsächlich selektierbar sind,
     also ob nach den 3 einträgen die er überspringt tatsächlich
    5 Einträge da sind,  oder nur 1, gar keiner, oder doch 4 oder 5...
    Daher muss ich trotz der LIMIT Angabe von 5 Einträgen
    zählen wieviele er Tatsächlich bekommt.

Mir wurde irgendwann mal gesagt, dass COUNT() in
    Verbindung mit LIMIT nicht geht bzw. nicht korrekt ist.
    Infos dazu?

5)   Kann man ein Ergebnis weiter verwenden?
    Zuerst aus table1 das Feld "email" von allen Einträge selektieren,
    deren "name" mit "a" beginnt,
    und dann im "table2"  schauen wo die gleichen emails im Feld "kontakt" steht,
    und davon die "d_id"  ausgeben.
    geht das ohne das Zwischenspeichern zu müssen in einer Programmiersprache?

  1. Wie geht das mit ASC und DESC ?  Ich finde kein Beispiel wo man das verwendet.

  2. Perl:  Heisst es
             $dbh->prepare("query where foo;");
                     oder
             $dbh->prepare("query where foo");

Also mit oder ohne Komma am Ende - innerhalb der Klammern?

  1. Wie geht es  2 Felder gleichzeitig zu selectieren,
      und dann einen speziellen Feldnamen zu verweben den man mit  "AS"  bestimmt?
      Also selectieren irgendwas  AS  <wunschname_des_feldes>

  2. Was kann man   $sth->rows()  sagen statt  COUNT() ?  (Beides zählt)
       Welches ist besser, weches kann was?  Infos?

  3. Wenn man die Ergebnisse zählen will,
        geht  COUNT(*)  genauso wie COUNT(id)
        Wann sollte ich welchem den Vorzug geben?

  4. Das sollte herauskommen:
        select id, name, text from guestbook limit 2,3;
        Ich wollte es mit Platzhaltern lösen.

my $foo=2;
    my $bar=3;
    my $sth = $dbh->prepare("select id, name, text from guestbook limit ?,?");
    $sth->execute($foo, $bar);

Die im execute angegebenen Variablen sollten die ?,? ersetzen.
    Es kommt zwar keine Fehlermeldung,
    aber auch _keine_ Ergebnisse!!

  1. Wie geht das selectieren von Inhalten einem Table und das automatische
        eintragen der Felder in eine andere Tabelle?

  2. Kopieren eines Tables:  table1  mit allem drum und dran (auch dem erstell-zeugs)
        kopieren nach table2.
        Also so wie wenn ich bei einem Directory  cp -R test1 test2  mache.
        Ohne dass der Table vorher existiert.

Vielmals Danke,
     Maximilian Eisenstädter