Snippety do bazy MySQL

Kilka przydatnych podczas korzystania z bazy MySQL kwerend.

MySQLDUMP
Polecenie wykonuje zrzut wybranej bazy danych i zapisuje do pliku

cd C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin
mysqldump -u root -p l2data > d:/l2data.sql


Jeżeli nie mamy zdefiniowanej w systemie zmiennej globalnej dla MYSQL, to na piechotę najpierw musismy przejść do katalogu w którym mamy zainstalowany MySQL.

Kolejna linijka odpala już polecenie mysqldump, (dla użytkownika root bez hasła) dla bazy l2data, a następnie zrzuca strukturę bazy i rekordy do wskazanej lokalizacji.

Przykład dzielenia dużej tabeli na pliki po 5k rekordów


mysqldump -u root -p --where "1 LIMIT 5000, 5000" database_name table_name > E:/dump_part_2.sql

Aby nie dodawać do każdego pliku kodu tworzącego strukturę tabeli:

mysqldump -u root -p --no-create-info --where "1 LIMIT 5000, 5000" database_name table_name > E:/skills_part_2.sql

Przykład złączenia dwóch tabel w CodeIgniter na bazie Active Record:


$this->db->select('t1.field, t2.field2')
          ->from('table1 AS t1, table2 AS t2')
          ->where('t1.id = t2.table1_id')
          ->where('t1.user_id', $user_id);


Export tabeli MySQL do CSV


SELECT * INTO OUTFILE 'result.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM my_table;



Import pliku CSV do tabeli


load data local infile '/home/loup/whatever.csv' into table myDB.myTab fields terminated by ',' enclosed by '"' lines terminated by '\n';

Losowe przypisanie zdjęć należących do użytkownika o id 12345 do innych użytkowników


update fotki set iduzytkownik=(select iduzytkownik
                FROM uzytkownicy ORDER BY RAND()
                LIMIT 1)
                where iduzytkownik = 12345;



Zagnieżdżone zapytanie MySQL 1


SELECT article, dealer, price
FROM   shop s1
WHERE  price=(SELECT MAX(s2.price)
              FROM shop s2
              WHERE s1.article = s2.article)

Zagnieżdżone zapytanie MySQL 2 - JOIN


SELECT s1.article, dealer, s1.price
FROM shop s1
JOIN (
  SELECT article, MAX(price) AS price
  FROM shop
  GROUP BY article) AS s2
  ON s1.article = s2.article AND s1.price = s2.price;




Zagnieżdżone zapytanie MySQL 3 - LEFT JOIN


SELECT s1.article, s1.dealer, s1.price
FROM shop s1
LEFT JOIN shop s2 ON s1.article = s2.article AND s1.price < s2.price
WHERE s2.article IS NULL;

Brak komentarzy:

Prześlij komentarz