programming:mysql
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
programming:mysql [2020/04/17 11:12] – [Zeitzonen] frank | programming:mysql [2023/06/08 17:06] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== MySQL ====== | ||
+ | ===== Variablen ===== | ||
+ | |||
+ | <code mysql> | ||
+ | set @d=" | ||
+ | set @st=CONCAT(@d," | ||
+ | set @et=CONCAT(@d," | ||
+ | </ | ||
+ | |||
+ | ===== Datumsüberschneidung ===== | ||
+ | |||
+ | <code mysql> | ||
+ | where (h.starttime< | ||
+ | </ | ||
+ | |||
+ | ===== Blob als String ===== | ||
+ | |||
+ | manche Befehle (u.a. CONCAT/ | ||
+ | <code mysql> | ||
+ | CAST(CONCAT_WS(";", | ||
+ | </ | ||
+ | |||
+ | ===== Update mit Join ===== | ||
+ | <code mysql> | ||
+ | UPDATE TABLEA a | ||
+ | JOIN TABLEB b ON a.join_colA = b.join_colB | ||
+ | SET a.columnToUpdate = [something] | ||
+ | </ | ||
+ | ===== Delete mit Join ===== | ||
+ | <code mysql> | ||
+ | delete s from head h | ||
+ | inner join text t on t.id=h.description | ||
+ | inner join status s on s.head_id=h.id | ||
+ | where xxx | ||
+ | </ | ||
+ | |||
+ | ===== mehrstufiges Join ===== | ||
+ | |||
+ | um nur Datensätze ranzuhängen, | ||
+ | <code mysql> | ||
+ | left join ticket_head th | ||
+ | inner join ticket t ON t.id=th.ticket_id | ||
+ | inner join apptype ta ON ta.id=t.apptype_system_id | ||
+ | ON th.head_id=h.id and ta.name=' | ||
+ | </ | ||
+ | |||
+ | ===== insert/ | ||
+ | |||
+ | höchsten Wert beim Update: | ||
+ | < | ||
+ | INSERT INTO monthlystats (id, server, time, uptime, players, rank) | ||
+ | VALUES (09126, 6, 0912, 302, 0, 1) | ||
+ | ON DUPLICATE KEY UPDATE | ||
+ | uptime = GREATEST(uptime, | ||
+ | players = GREATEST(players, | ||
+ | rank = GREATEST(rank, | ||
+ | </ | ||
+ | ===== nachfolgender Datensatz mit join ===== | ||
+ | |||
+ | <code mysql> | ||
+ | SELECT * | ||
+ | FROM `table` t1 | ||
+ | LEFT JOIN `table` as t2 ON t2.name=t1.name and t2.`date`< | ||
+ | WHERE t1.`name`=' | ||
+ | ORDER BY t1.`date` desc, | ||
+ | limit 1 /*get only first dataset*/ | ||
+ | </ | ||
+ | ===== Zeitzonen ===== | ||
+ | |||
+ | SELECT @@global.time_zone, | ||
+ | |||
+ | beim wert system muss man via shell auf dem Server schauen | ||
+ | |||
+ | $ date +"%Z %z" | ||
+ | CEST +0200 | ||
+ | |||
+ | die DB solte eigentlich auf UTC sein und für die session kann man dann die entsprechende Zeitzone setzen: | ||
+ | |||
+ | SET time_zone = ' | ||
+ | |||
+ | sollte mysql hier einen Fehler bringen, müssen die Zeitzonen im System importiert werden: | ||
+ | |||
+ | $ mysql_tzinfo_to_sql / | ||
+ | |||
+ | ===== Insert select ===== | ||
+ | |||
+ | INSERT INTO status (ressort_id, | ||
+ | SELECT 54,h.id FROM head h LEFT JOIN text txt ON txt.id=h.description WHERE txt.text LIKE ' |