Maccess - Help

Jde o rychlou nápovědu, která předpokládá již jisté znalosti Maccessu.


Spojování tabulek

Příklad ukazuje spojení tabulek Invoice a Customer na základě sloupce customer, který se nachází v obouch tabulkách (z důvodu zajištění jednoznačnosti je nutné přesné pojmenování sloupce ve stylu Tabulka.Sloupec, tedy Invoice.customer a Customer.customer).


Porovnávací operátory

Porovnávací operátory se v Maccessu používají především v boxech Podmínka a v boxu Spojovací výraz.

< > = <> <= >=

Příklad ukazuje omezení na řádky, kde sloupec name má hodnotu John.

Příklad ukazuje omezení na řádky, kde sloupec price je větší nebo roven 10000.

IN (str,str,..) a NOT IN (str,str,..)

Příklad ukazuje omezení na řádky, kde sloupec name má hodnotu John nebo Peter.

LIKE pat a NOT LIKE pat

U porvnávacího operátoru LIKE se používají dva speciální znaky:

Příklad ukazuje omezení na řádky, kde sloupec name začíná znakem P (na velikosti písmen nezáleží).

REGEXP pat a NOT REGEXP pat

Více viz zde.

IS NULL a IS NOT NULL

Test na NULL hodnotu.


Logické operátory

Logické operátory se v Maccessu používají především v boxech Podmínka a v boxu Spojovací výraz.

NOT - negace

OR - logické nebo

AND - logické a

Příklad ukazuje omezení na řádky, kde sloupec price je větší nebo roven 1000 a zároveň je menší než 2000.


Aritmetické operace

Aritmetické operace je v Maccessu možné používat v boxech Sloupec, boxech Podmínka a v boxu Spojovací výraz.

+ - sčítání

- - odečítání

* - násobení

/ - dělení

Příklad ukazuje omezení na řádky, kde součin sloupců price a quantity je větší než výraz 1000/1.22.


Seskupovací funkce závorek ( )

Závorky mají v Maccessu seskupovací funkci a je možné je používat v boxech Sloupec, boxech Podmínka a v boxu Spojovací výraz.


Dotazové proměnné

V Maccessu je možné při tvorbě dotazu především v kolonce Podmínka zadat podmínku tak, že neuvedet konkrétní hodnotu, ale místo ní zde vložíte proměnnou. Při spuštění dotazu se pak Maccess na příslušnou hodnotu zeptá. Každá taková proměnná musí být uzavřena v hranatých závorkách a její název musí končit dvojtečkou.

Ukázka ukazuje generaci formuláře dotazujícího se na jednoduchou proměnnou.

Ukázka ukazuje generaci formuláře dotazujícího se na proměnnou zadanou tak, že se generuje padací menu. Jako hodnota se bude na místo proměnné vkládat hodnota 199901 nebo 199902.

Existují ještě další možnosti dotazových proměnných, kde se za dvojtečku dává SQL příkaz select - viz dva následující přiklady.


Funkce

Funkce je v Maccessu možné používat v boxech Sloupec, boxech Podmínka a v boxu Spojovací výraz.


Matematické funkce

ABS(N) - absolutní hodnota čísla N

SIGN(N) - znaménko čísla N

SIGN(-32) -> -1; SIGN(0) -> 0; SIGN(32) -> 1

MOD(N1,N2) - zbytek po dělení N1/N2

vhodné pro určovní lichých a sudých čísel

POWER(N,X) - N mocněné na X

SQRT(N) - odmocnina z N

FLOOR(N) - zaokrouhlení nahoru

CEILING(N) - zaokrouhlení dolů

ROUND(N[,D]) - zaokrouhlení na D desetiných míst

TRUNCATE(N,D) - usekne vše za D desetiným místem

LEAST(N1,N2,...) - vrací nejmenší hodnotu ze seznamu (N1,N2,.. mohou být i řetězce)

GREATEST(N1,N2,...) - vrací největší hodnotu ze seznamu (N1,N2,.. mohou být i řetězce)

INTERVAL(N,N1,N2,N3,...) - vrací 0 je-li N<N1, 1 je-li N<N2, 2 je-li N<N3, ...

Další matematické funkce: EXP(N), LOG(N), LOG10(N), PI(), COS(N), SIN(N), TAN(N), ACOS(N), ASIN(N), ATAN(N), ATAN2(N1,N2), COT(N), DEGREES(N), RADIANS(N), RAND([N])


Řetězcové funkce

CONCAT(str1,str2,...) - spojuje retězce str1,str2,... v jediný řetězec

CONCAT('Ahoj',' ','Pepo!') -> Ahoj Pepo!

CONCAT_WS(separator, str1, str2,...) - spojuje retězce str1,str2,... v jediný řetězec, tak že je oddělí znakem separator

LENGTH(str) - vrací délku řetězce

LENGTH('Ahoj Pepo!') -> 10

LOCATE(substr,str[,pos]) - vrací pozici řetězce substr v řetězci str (hledá se od pos-tého znaku)

LOCATE('Pepo','Ahoj Pepo!') -> 6

LEFT(str,len) - řeže řetězec str z leva na délku len

RIGHT(str,len) - řeže řetězec str z prava na délku len

SUBSTRING(str,pos[,len]) - řeže řetězec str od pozice pos na len znaků

SUBSTRING('Ahoj Pepo!',6,4) -> Pepo

SUBSTRING_INDEX(str,delim,count)

SUBSTRING_INDEX('www.mysql.com', '.', 2) -> 'www.mysql'

SUBSTRING_INDEX('www.mysql.com', '.', -2) -> 'mysql.com'

INSERT(str,pos,len,newstr) - vsouvá do řetězce str řetězec newstr na pozici pos (přitom len znaků z řetězce str bude od pozice pos zrušeno)

INSERT('Ahoj !',6,0,'Pepo') -> Ahoj Pepo!

REPLACE(str,from_str,to_str) - nahrazuje v řetězci str řetězce from_str řetězcem to_str

REPLACE('Ahoj Pepo!','o','O') -> AhOj PepO!

LPAD(str,len,padstr) - zarovnává z leva řetězec str na len znaků řetězcem padstr

LPAD('7',3,'0') -> 007

RPAD(str,len,padstr) - zarovnává z prava řetězec str na len znaků řetězcem padstr

LTRIM(str) - odstraňuje mezery vlevo

RTRIM(str) - odstraňuje mezery vpravo

TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str) - odstraňuje mezery (nebo remstr) (většinou vlevo i vpravo)

TRIM('   Ahoj  ') -> 'Ahoj'

TRIM(LEADING '0' FROM '0070') -> '70'

SPACE(N) - vrací N mezer

REPEAT(str,count) - vrací řetězec str count-krát

REVERSE(str) - prevrací řetězec str

REVERSE('abcd') -> dcba

ELT(N,str1,str2,str3,...) - vrací str1 kdiž N=1, ....

FIELD(str,str1,str2,str3,...) - vrací číslo kde se v seznamu str1 až strN nachází str

FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo') -> 2

FIND_IN_SET(str,strlist)

FIND_IN_SET('b','a,b,c,d') -> 2

LCASE(str) - převádí všechny znaky str na znaky malé abecedy

LCASE('Ahoj Pepo!') -> 'ahoj pepo!'

UCASE(str) - převádí všechny znaky str na znaky velké abecedy

Další řetězcové funkce: ASCII(str), ORD(str), CONV(N,from_base,to_base), BIN(N), OCT(N), HEX(N), CHAR(N,...), INSTR(str,substr), SOUNDEX(str)


Datumové a časové funkce

Poznámka: rozdíl dvou datumových sloupců vrací počet dní mezi nimi

DAYOFWEEK(date) - vrací číslo dne v týdnu

1=Neděle, 2=Pondělí, ...

WEEKDAY(date) - vrací číslo dne v týdnu

0=Pondělí, 1=Úterý, ...

DAYOFMONTH(date) - vrací číslo dne v měsíci

DAYOFYEAR(date) - vrací číslo dne v roce

MONTH(date) - vrací číslo měsíce pro datum date

MONTH('25.5.1999') -> 5

QUARTER(date) - vrací číslo čtvrtletí v roce pro datum date

QUARTER('1.4.1998') -> 2

WEEK(date[,1]) - vrací číslo týdnu v roce

Je-li uveden parametr 1 předpokládá se, že prvním dnem v týdnu je Pondělí, jinak se předpokládá Neděle.

YEAR(date) - vrací rok pro datum date

YEAR('3.2.1998') -> 1998

YEARWEEK(date[,1]) - vrací rok a číslo týdnu pro datum date (vracený rok se může lišit od roku v datumu - záleží do kterého roku týden patří)

YEARWEEK('1.1.1987') -> 198653

PERIOD_ADD(P,N) - vrací o N měsíců zvýšené období P

PERIOD_ADD('199908',5) -> 200001

PERIOD_DIFF(P1,P2) - vrací počet měsíců mezi dvěma obdobími

PERIOD_DIFF(199905,199901) -> 4

TO_DAYS(date) - vrací počet dní od "roku" 0

FROM_DAYS(N) - vrací datum z počtu dní od "roku" 0

CURDATE() - vrací aktuální datum

Další datumové a časové funkce: DAYNAME(date), MONTHNAME(date), HOUR(time), MINUTE(time), SECOND(time), DATE_ADD(date,INTERVAL expr type), DATE_SUB(date,INTERVAL expr type), DATE_FORMAT(date,format), TIME_FORMAT(time,format), CURTIME(), NOW(), SEC_TO_TIME(seconds), TIME_TO_SEC(time), UNIX_TIMESTAMP([date]), FROM_UNIXTIME(unix_timestamp[,format]), ...


Různé funkce

IF(expr1,expr2,expr3) - vrací expr2, je-li expr1 pravdivé, jinak vrací expr3

IF(1>2,2,3) -> 3

FORMAT(N,D) - formátuje číslo N tak, že odděluje tisíce čárkou a uvádí ho na D desetiných míst

ISNULL(X) - vrací 1 když je X NULL, jinak vrací 0

Některé sloupce v tabulkách mohou být NULL, pozor NULL je něco jiného než 0 nebo '' (prázdný řetězec). I při výpočtech může být návratová hodnota NULL - např.: 1/0=NULL.