Dec. 5, 2008
Czyli SQL jakiego być może nie znacie.
Ale zacznę dowcipem od kolegi z pracy, który naprawdę bardzo mnie rozbawił (pewnie dlatego byłem wtedy w trakcie czytania książki o teorii relacyjnego modelu danych
)
Przychodzi SQL do baru, tam dwie tabele:
- Can I JOIN You?
A teraz do rzeczy. Czytałem swego czasu Manual MySQL. Ostatnio postanowiłem odświeżyć sobie w ramach wieczornej literatury moje podręczne notatki z owej tematyki.
I po przeczytaniu doszedłem do wniosku że jest tam kilka ciekawych, fajnych rzeczy, o których często nawet nie wiemy. Może dlatego ze są to rzeczy bardziej zaawansowane, czyli nie potrzebne Kowalskiemu.
I tak choćby bity i notacja b’:
#tworzymy tabelkę
CREATE TABLE t (b BIT(8));
#wstawiamy bity - znaczy dane ![]()
INSERT INTO t SET b = b’11111111′;
INSERT INTO t SET b = b’1010′;
INSERT INTO t SET b = b’0101′;
#a tu pobieramy sobie wyniki z konwersją między systemami
SELECT b+0, BIN(b+0), OCT(b+0), HEX(b+0) FROM t;
Dalej - może nie takie zaawansowane, bo każdy SQL’ista
powinien to znać - mianowicie User Defined Variables czyli nasze zmienne w SQL
#przykład z manual’a
SET @t1=0, @t2=0, @t3=0;
SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
#no to może jeszcze raz nasze bity
SET @v1 = b’1000001′;
SET @v2 = CAST(b’1000001′ AS UNSIGNED), @v3 = b’1000001′+0;
SELECT @v1, @v2, @v3;
Operator <=> czyli null safe equal. A po co to? Jak ktoś czytał książkę C.J. Date’a, o której pisałem wcześniej - będzie wiedział
#ale może przykład wystarczy by ‘przypomnieć’ sobie o co chodzi ![]()
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
-> 1, 1, 0
Programiści, którzy zapomnieli o konstrukcji w linijce poniżej pewnie się teraz uśmiechną:
SELECT IF(1<2,’yes’,'no’) as wynik;
I niechaj SQL przemówi:
SELECT IF(STRCMP(’test’,'test1′),’no’,'yes’);
Przy okazji: potęga agregacji jest niekwestionowana, ale pamiętam pytanie o problem z DISTINCT + konkretne pole:
#więc:
SELECT COUNT(DISTINCT price) FROM shop;
Co jeszcze? Np. oprogramowanie GIS - mamy tu wsparcie od strony MySQL:
http://dev.mysql.com/doc/refman/5.0/en/opengis-geometry-model.html
Choć jeszcze nie używałem tego w konkretnych projektach np. www + mapy, po godzince zabawy mogę powiedzieć - fajna sprawa.
A na deser eksport tabeli do pliku CSV:
SELECT * INTO OUTFILE ‘/home/dominik/tabela.csv’
FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”‘
LINES TERMINATED BY ‘\n’
FROM shop;
Oraz coś, co naprawdę może się przydać (ahh, przypominają mi się stare czasy i praca nad pewnym katastrofalnym systemem) - tabela tymczasowa:
CREATE TEMPORARY TABLE tabela (
id int(10) unsigned NOT NULL auto_increment,
nazwisko VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO tabela SET nazwisko=”Thompson”;
INSERT INTO tabela SET nazwisko=”Torvalds”;
SELECT * FROM tabela;
Coś bardziej zaawansowanego? Optymalizacje - performance. Ale przecież to znamy, bo robimy na co dzień
Enjoy! ( and JOIN
)
Napisał Dominik w kategoriach O programowaniu | 1 komentarz
Nov. 26, 2008
Co ostatnio czytałem.
Myślę że warto tu podzielić się w kilku słowach taką informacją i o tym co warta jest dana książka. Co czytałem ostatnio, bo nie sposób spamiętać już tego
I nie chodzi tu o manuale - tych było zbyt dużo
Chodzi o książki. Dwie ostatnie - akurat z Helion’a:
SEO, czyli Pozycjonowanie w wyszukiwarkach internetowych, Wyd. II oraz Relacyjne bazy danych dla praktyków, autor C.J.Date.
Pierwsza książka jest ciekawa, nawet przy fakcie że miałem już trochę do czynienia z SEO. Autorka wie o czym pisze, a książkę warto przeczytać choćby dlatego aby poznać zasady - a jest ich nawet sporo, a także obalić pewne mity. Ja sam będę miał niedługo okazję spróbować swoich sił w SEO. Bo takimi rzeczami jak SEO, e-commerce itp. ostatnio się interesuję.
Polecam książkę wszystkim zainteresowanym, oraz tym mniej rozgarniętym czyli spamerom, żeby się w końcu czegoś nauczyli
Druga książka opisuje znakomicie teorie relacyjnego modelu danych, który w laboratoriach IBM stworzył matematyk E.F. Codd. I w tym sensie właśnie książka jest dla praktyków, którzy stosują różne metody w SQL na co dzień.
Wiadomo jak mocno praca programisty związana jest z bazami danych. Przyznam ze ja również mam sporo praktyki na tym polu.
W tej książce znalazłem balsam na swoja duszę, rozdrażnioną codziennym pędem do szybkich optymalnych praktycznych rozwiązań SQL. Jest tu opis formalny, który wręcz nudny - taki jakiego potrzebowałem do usystematyzowania wiedzy, i wyjaśnienia pewnych nieścisłości, które ma zapewne każdy praktyk. Dzięki niej można na chwilę oderwać się od języka SQL, który ma swoje niedoskonałości i spojrzeć na temat z trochę wyższego poziomu abstrakcji.
Teraz w kolejce manuale
Ale po nich ksiazki o High performance SQL, o zaawansowanym Perl’u, czyli tzw. wypas ![]()