Archiwa tagu: sql

MySQL – dump tylko określonych wierszy

MySQL umożliwia wykonanie dumpa tylko określonych danych. Dzięki temu można np. podzielić dumpa jednej, dużej tabeli na parę mniejszych części. Służy temu przełącznik --where.

Przykład 1 – wykonujemy dump tabeli myVeryBigTable, lecz tylko takich wierszy, które mają id 1, 2 lub 3:

mysqldump myDatabaseName --host 127.0.0.1 --port=3306 
--user=myUserName --password
myVeryBigTable
--where="id in (1,2,3)"
> .\mySimpleDump.sql

Przykład 2 – możliwe jest także wykonanie nieco bardziej skomplikowanego zapytania:

mysqldump myDatabaseName --host 127.0.0.1 --port=3306
--user=myUserName --password
myVeryBigTable
--where="id in (select id from myOtherTable where objectId in (123,558,6987))"
> .\myDump.sql

Bazy danych – ściągawka

Szybka, w pełni teoretyczna „ściągawka” z baz danych. Nie wszystkie z prezentowanych tutaj zapytań mają taką samą składnię w każdej bazie danych. Zależy to od implementacji.

Sumy zbiorów wyników

Jeśli dwa zapytania zwracają wyniki w tej samej formie (te same kolumny), możliwe są operacje na zbiorach typu suma, różnica zbiorów.

Zakładając, że:

  • zapytanie nr 1 (Q1) zwraca następujący zestaw danych: A, B, C,
  • zapytanie nr 2 (Q2) zwraca następujący zestaw danych: C, D, E,

z wyników zapytania można złożyć:

Union

Q1 union Q2 – suma zbiorów. Elementy powtarzające się zarówno w Q1 jak i w Q2 zostają usunięte. Wynikiem są pogrubione elementy (tu: A, B, C, D, E)

[A B [C] D E] Czytaj dalej

Dane (flagi) binarne w MySQL

Czasami zachodzi potrzeba przechowywania w bazie danych binarnych. Nie mam tu na myśli pól typu BLOB, w których możemy przechowywać np. obrazki lub inne pliki, lecz dość staromodne rozwiązanie, jakim są flagi bitowe. Można stwierdzić, że praktyka ta zaczerpnięta została z języków niskiego poziomu kontaktujących się z elektroniką, gdzie w ten sposób można np. sterować wyjściami urządzeń itp.

Przykład 1: urządzenie posiada 7 diod LED. W bazie danych chcemy przechować informację, które diody mają się świecić.

Przykład 2: mamy kilka założonych z góry funkcji w aplikacji, których nie będziemy rozbudowywać o kolejne elementy: dostęp administracyjny, dostęp tylko do czytania, dostęp do czytania + edycji itp. Chcemy ustawić użytkownikowi uprawnienia do poszczególnych funkcji.

Flagi bitowe pozwalają na przechowywanie różnych informacji w prostej formie.

Wystarczy kolumna w tabeli przechowująca zwykłe dane liczbowe.

Do manipulacji danymi można posłużyć się zapytaniami:

Wstawianie danych:

INSERT INTO table_name(column_name) VALUES( B'1110000');

Wybieranie danych:

SELECT CONV(column_name, 10, 2) FROM table_name;

Funkcja CONV konwertuje dane z liczby o podstawie x do liczby o podstawie y. Parametry:

SELECT CONV(column_name, podstawa z jakiej konwertować, podstawa do jakiej konwertujemy)

Wyszukiwanie danych:

SELECT column_name FROM table_name WHERE column_name & B('1110000');