Bazy danych 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy



Podobne dokumenty
Bazy danych 4. SQL podstawy. P. F. Góra

Bazy danych 7. SQL podstawy

Bazy danych 7. SQL dalsze możliwości. Grupowanie.

Bazy danych 5. Samozłaczenie SQL podstawy

Bazy danych 4. SQL- podstawy

Bazy danych 4. Przykłady SQL podstawy

Bazy danych 10. SQL Widoki

Administracja i programowanie pod Microsoft SQL Server 2000

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

Bazy danych 6. Klucze obce. P. F. Góra

Kurs. Podstawy MySQL

Bazy Danych i Usługi Sieciowe

Wykład 05 Bazy danych

Bazy danych i usługi sieciowe

a) Polecenie: Wyświetl wszystkie rekordy z tabeli Pracownicy (wszystkie atrybuty)

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

Połączenie z bazą danych : mysql h u root -p Enter password: *******

Bazy danych. Andrzej Łachwa, UJ, /14

Bazy danych 5. SQL- złaczenia, podzapytania i grupowanie

Bazy danych 9. SQL Klucze obce Transakcje

Bazy danych 12. SQL Wyszukiwanie pełnotekstowe

Wykład 5. SQL praca z tabelami 2

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych 9. Klucze obce Transakcje

Bazy danych 7/15. Andrzej Łachwa, UJ,

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Język SQL, zajęcia nr 1

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Wyzwalacze (triggery) Przykład

Bazy danych 11. SQL Procedury składowane, kursory i wyzwalacze

Bazy danych 5. Złaczenia. P. F. Góra

Bazy danych 7. Złaczenia

Przydatne sztuczki - sql. Na przykładzie postgres a.

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra

Bazy danych 11. Kilka przykładów. P. F. Góra

Ref. 7 - Język SQL - polecenia DDL i DML

Wykład 2. SQL 1 Structured Query Lenguage

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Współczesne systemy baz danych

2 Przygotował: mgr inż. Maciej Lasota

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Bazy danych SQL Server 2005

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Język SQL. Rozdział 3. Funkcje wierszowe

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Język SQL. Rozdział 2. Proste zapytania

E.14 Bazy Danych cz. 12 SQL Wybrane funkcje serwera MySQL

Współczesne systemy baz danych

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

Przestrzenne bazy danych Podstawy języka SQL

Wykład 4. SQL praca z tabelami 1

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Język SQL, zajęcia nr 2

Wprowadzenie do języka SQL

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

LAB2. Dalsze ćwiczenia z podstaw języka SQL (CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT)

Instrukcja CREATE TABLE

Język SQL. Rozdział 3. Zaawansowana selekcja danych

Bazy danych 7. Widoki i wyzwalacze. P. F. Góra

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Bazy danych. Dr inż. Paweł Kasprowski

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Relacyjne bazy danych. Podstawy SQL

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Wykład 8. SQL praca z tabelami 5

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Bazy danych. Polecenia SQL

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Widok Connections po utworzeniu połączenia. Obszar roboczy

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Bazy danych 8. Procedury składowane i kursory. P. F. Góra

mysql> UPDATE user SET Password=PASSWORD('pass') WHERE user='root'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0

Projektowanie systemów baz danych

Instalacja MySQL.

Składowane procedury i funkcje

Oracle PL/SQL. Paweł Rajba.

Autor: Joanna Karwowska

Instrukcje DQL: SELECT. Zastosowanie SELECT, opcje i warianty

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych 7. Klucze obce Transakcje. P. F. Góra

Relacyjne bazy danych. Podstawy SQL

Bazy danych 10. SQL Widoki, procedury składowane, kursory i wyzwalacze

Programowanie w Ruby

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

SIECI KOMPUTEROWE I BAZY DANYCH

SQL 4 Structured Query Lenguage

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Transkrypt:

Bazy danych 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2007/08

MySQL i programowanie wsadowe C:\wyklady\bazy> mysql < nazwa pliku C:\wyklady\bazy> mysql -hhostname -uusername -p < nazwa pliku Plik musi być dostępny dla klienta. Pliki wsadowe można też wołać z wnętrza klienta: mysql> source nazwa pliku; Uwaga: Jeśli któreś polecenie w pliku wsadowym spowoduje bład, dalsze polecenia nie sa wykonywane. 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 2

mysql> CREATE DATABASE Data_I_Czas CHARACTER SET cp1250; Query OK, 1 row affected (0.06 sec) mysql> source utworz.sql; Database changed Query OK, 0 rows affected (0.31 sec) Query OK, 150 rows affected (0.26 sec) Records: 150 Duplicates: 0 Warnings: 0 mysql> DESCRIBE Zamowienia; +--------------+----------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +--------------+----------------------+------+-----+---------+----------------+ NrZam smallint(5) unsigned NO PRI NULL auto_increment NrKlienta smallint(5) unsigned NO Kwota float unsigned NO DataZlozenia date NO DataZaplaty date YES NULL +--------------+----------------------+------+-----+---------+----------------+ 5 rows in set (0.26 sec) 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 3

Funkcje daty i czasu CURDATE(), CURRENT DATE(), CURRENT DATE bieżaca data mysql> SELECT CURDATE(); +------------+ CURDATE() +------------+ 2008-04-09 +------------+ mysql> SELECT CURDATE() AS Dzisiaj; +------------+ Dzisiaj +------------+ 2008-04-09 +------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 4

mysql> SELECT * FROM Zamowienia WHERE DataZaplaty > CURDATE() -> ORDER BY DataZaplaty ASC LIMIT 5; +-------+-----------+---------+--------------+-------------+ NrZam NrKlienta Kwota DataZlozenia DataZaplaty +-------+-----------+---------+--------------+-------------+ 87 3 3763.55 2008-04-03 2008-04-12 127 9 9015.9 2008-04-02 2008-04-13 79 11 413.35 2008-04-01 2008-04-15 28 7 2190.72 2008-04-10 2008-04-16 39 1 5457.17 2008-04-15 2008-04-17 +-------+-----------+---------+--------------+-------------+ 5 rows in set (0.23 sec) CURTIME(), CURRENT TIME(), CURRENT TIME bieżacy czas mysql> SELECT CURTIME(); +-----------+ CURTIME() +-----------+ 22:36:00 +-----------+ 1 row in set (0.03 sec) 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 5

NOW(), CURRENT TIMESTAMP(), CURRENT TIMESTAMP, LOCALTIME(), LOCALTIME, LOCALTIMESTAMP(), LOCALTIMESTAMP bieżaca data i czas mysql> SELECT NOW(); +---------------------+ NOW() +---------------------+ 2008-04-09 22:41:45 +---------------------+ mysql> SELECT CURRENT_TIMESTAMP(); +---------------------+ CURRENT_TIMESTAMP() +---------------------+ 2008-04-09 22:41:46 +---------------------+ mysql> SELECT LOCALTIMESTAMP; +---------------------+ LOCALTIMESTAMP +---------------------+ 2008-04-09 22:41:50 +---------------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 6

DATE() wybiera datę z argumentu typu DATETIME TIME() wybiera czas z argumentu typu DATETIME mysql> SELECT DATE( 2008-04-10 17:30:28 ) AS ToJestData; +------------+ ToJestData +------------+ 2008-04-10 +------------+ mysql> SELECT TIME( 2008-04-10 17:30:28 ) AS ToJestCzas; +------------+ ToJestCzas +------------+ 17:30:28 +------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 7

DAYOFMONTH(), DAY() numer dnia w miesiacu DAYOFYEAR() numer dnia w roku DAYOFWEEK() numer dnia w tygodniu (domyślnie liczymy od niedzieli) DAYNAME() nazwa dnia tygodnia mysql> SELECT DAYOFMONTH( 2008-04-10 ); +--------------------------+ DAYOFMONTH( 2008-04-10 ) +--------------------------+ 10 +--------------------------+ mysql> SELECT DAYOFYEAR( 2008-04-10 ); +-------------------------+ DAYOFYEAR( 2008-04-10 ) +-------------------------+ 101 +-------------------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 8

mysql> SELECT DAYOFWEEK( 2008-04-10 ); +-------------------------+ DAYOFWEEK( 2008-04-10 ) +-------------------------+ 5 +-------------------------+ mysql> SELECT DAYNAME( 2008-04-10 ); +-----------------------+ DAYNAME( 2008-04-10 ) +-----------------------+ Thursday +-----------------------+ LAST DAY() ostatni dzień miesiaca z podanej daty mysql> SELECT LAST_DAY( 2008-02-10 ); +------------------------+ LAST_DAY( 2008-02-10 ) +------------------------+ 2008-02-29 +------------------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 9

YEAR() rok MONTH() miesiac, MONTHNAME() nazwa miesiaca mysql> SELECT YEAR(CURDATE()); +-----------------+ YEAR(CURDATE()) +-----------------+ 2008 +-----------------+ mysql> SELECT MONTH(CURDATE()); +------------------+ MONTH(CURDATE()) +------------------+ 4 +------------------+ mysql> SELECT MONTHNAME(CURDATE()); +----------------------+ MONTHNAME(CURDATE()) +----------------------+ April +----------------------+ 1 row in set (0.01 sec) 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 10

HOUR() godzina, MINUTE() minuta, SECOND() sekunda mysql> SELECT HOUR( 2008-04-10 17:30:28 ); +-----------------------------+ HOUR( 2008-04-10 17:30:28 ) +-----------------------------+ 17 +-----------------------------+ mysql> SELECT MINUTE( 2008-04-10 17:30:28 ); +-------------------------------+ MINUTE( 2008-04-10 17:30:28 ) +-------------------------------+ 30 +-------------------------------+ mysql> SELECT SECOND( 2008-04-10 17:30:28 ); +-------------------------------+ SECOND( 2008-04-10 17:30:28 ) +-------------------------------+ 28 +-------------------------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 11

MAKEDATE(rok,dzień roku) utwórz datę mysql> SELECT MAKEDATE(2007,365) AS Sylwester, MAKEDATE(2008,365) AS JeszczeNie; +------------+------------+ Sylwester JeszczeNie +------------+------------+ 2007-12-31 2008-12-30 +------------+------------+ MAKETIME(godzina,minuta,sekunda) utwórz godzinę mysql> SELECT MAKETIME(18,20,47); +--------------------+ MAKETIME(18,20,47) +--------------------+ 18:20:47 +--------------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 12

Dodawanie dat Uwaga: Zwykłe dodanie liczby do daty spowoduje najpierw skonwertowanie daty do zapisu liczbowego, a następnie wykonanie dodawania mysql> SELECT CURDATE(), CURDATE() + 0, CURDATE() + 30; +------------+---------------+----------------+ CURDATE() CURDATE() + 0 CURDATE() + 30 +------------+---------------+----------------+ 2008-04-09 20080409 20080439 +------------+---------------+----------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 13

DATE ADD(data, INTERVAL wyrażenie jednostka) DATE SUB(data, INTERVAL wyrażenie jednostka) dodanie, odjęcie czegoś do (od) daty mysql> SELECT DATE_ADD( 2008-04-10, INTERVAL 3 DAY), -> DATE_ADD( 2008-04-10, INTERVAL 2 WEEK); +----------------------------------------+-----------------------------------------+ DATE_ADD( 2008-04-10, INTERVAL 3 DAY) DATE_ADD( 2008-04-10, INTERVAL 2 WEEK) +----------------------------------------+-----------------------------------------+ 2008-04-13 2008-04-24 +----------------------------------------+-----------------------------------------+ mysql> SELECT DATE_SUB( 2008-04-10,INTERVAL 2 MONTH), -> DATE_SUB( 2004-04-10, INTERVAL 13 HOUR); +-----------------------------------------+------------------------------------------+ DATE_SUB( 2008-04-10,INTERVAL 2 MONTH) DATE_SUB( 2004-04-10, INTERVAL 13 HOUR) +-----------------------------------------+------------------------------------------+ 2008-02-10 2004-04-09 11:00:00 +-----------------------------------------+------------------------------------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 14

DATEDIFF(data 1,data 2 ) różnica dwu dat, wyrażona w dniach mysql> SELECT DATEDIFF( 2008-04-10, 2007-11-29 ); +-------------------------------------+ DATEDIFF( 2008-04-10, 2007-11-29 ) +-------------------------------------+ 133 +-------------------------------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 15

SUBTIME(dataczas 1,czas 2 ) różnica dwu czasów mysql> SELECT SUBTIME( 18:01:22, 00:05:01 ), SUBTIME( 18:01:22, 0:5:1 ); +--------------------------------+-----------------------------+ SUBTIME( 18:01:22, 00:05:01 ) SUBTIME( 18:01:22, 0:5:1 ) +--------------------------------+-----------------------------+ 17:56:21 17:56:21 +--------------------------------+-----------------------------+ ADDTIME(czas 1,czas 2 ) suma dwu czasów mysql> SELECT ADDTIME( 18:01:48, 1:2:0 ),ADDTIME( 18:01:48, 25 ); +-----------------------------+--------------------------+ ADDTIME( 18:01:48, 1:2:0 ) ADDTIME( 18:01:48, 25 ) +-----------------------------+--------------------------+ 19:03:48 18:02:13 +-----------------------------+--------------------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 16

TIMEDIFF(dataczas 1,dataczas 2 ) różnica dwu czasów mysql> SELECT TIMEDIFF( 2008-04-10 18:02:26, 2008-04-09 22:42:18 ); +-------------------------------------------------------+ TIMEDIFF( 2008-04-10 18:02:26, 2008-04-09 22:42:18 ) +-------------------------------------------------------+ 19:20:08 +-------------------------------------------------------+ mysql> SELECT TIMEDIFF( 18:02:26, 22:42:18 ); +---------------------------------+ TIMEDIFF( 18:02:26, 22:42:18 ) +---------------------------------+ -04:39:52 +---------------------------------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 17

Formatowanie daty i czasu SELECT DATE FORMAT( 2008-04-10, %Y %m %d ); 2008 04 10 SELECT DATE FORMAT( 2008-04-10, %Y-%m-%d ); 2008-04-10 SELECT DATE FORMAT( 2008-04-10, %M %d, %Y ); April 10, 2008 SELECT DATE FORMAT( 2008-04-10, %W, %d.%m.%y ); Thursday, 10.04.08 SELECT DATE FORMAT( 2008-04-10 17:46:24, %H:%i ); 17:46 SELECT TIME FORMAT( 17:46:24, %H:%i ); 17:46 SELECT TIME FORMAT( 17:46:24, %g ); 17:46:24 SELECT TIME FORMAT( 17:46:24, %h:%i:%s %p ); 05:46:24 PM SELECT TIME FORMAT( 17:46:24, %r ); 05:46:24 PM Wynikiem działania funckji DATE FORMAT(), TIME FORMAT() nie sa wielkości typu datowego lub czasowego, ale łańcuchy znaków. 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 18

STR TO DATE(łańcuch,format) odwrotność funkcji DATE FORMAT() SELECT STR TO DATE( 20080410, %Y%m%d ); 2008-04-10 SELECT STR TO DATE( April 10, 2008, %M %d, %Y ); 2008-04-10 SELECT STR TO DATE( 05:54 PM, %h:%i %p ); 17:54:00 Wynikiem działania funkcji STR TO DATE() jest wielkość typu DATETIME. Jeżeli którykolwiek z argumentów którejkolwiek podanej wyżej funkcji będzie niepoprawny, w szczególności jeżeli nie będzie odpowiadał poprawnej dacie/czasowi, w wyniku otrzymamy obiekt NULL. 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 19

Wyrażenia zawierajace NULL mysql> SELECT * FROM Zamowienia; +-------+-----------+---------+--------------+-------------+ NrZam NrKlienta Kwota DataZlozenia DataZaplaty +-------+-----------+---------+--------------+-------------+ 1 6 4543.78 2008-04-15 2008-04-22 2 11 4702.25 2008-01-11 2008-01-13 3 8 796.73 2008-03-08 2008-03-23 4 12 7298.23 2008-02-13 NULL 5 5 5314.03 2008-03-27 NULL 6 11 1122.14 2008-02-26 2008-02-28... +-------+-----------+---------+--------------+-------------+ 150 rows in set (0.00 sec) Widzimy, że w tabeli jest pewna ilość wierszy zawierajacych NULL. Spróbujmy je wypisać. mysql> SELECT * FROM Zamowienia WHERE DataZaplaty = NULL; Empty set (0.02 sec) mysql> SELECT * FROM Zamowienia WHERE NOT DataZaplaty = NULL; Empty set (0.01 sec) Oops 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 20

Dzieje się tak dlatego, że wyrażenia (logiczne, arytmetyczne) zawierajace NULL zawsze daja w wyniku NULL. mysql> SELECT 1+2,1+NULL,1=NULL; +-----+--------+--------+ 1+2 1+NULL 1=NULL +-----+--------+--------+ 3 NULL NULL +-----+--------+--------+ 1 row in set (0.01 sec) Do sprawdzania, czy jakieś wyrażenie przybiera wartość NULL, służy fukncja ISNULL(). 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 21

mysql> SELECT * FROM Zamowienia WHERE ISNULL(DataZaplaty); +-------+-----------+---------+--------------+-------------+ NrZam NrKlienta Kwota DataZlozenia DataZaplaty +-------+-----------+---------+--------------+-------------+ 4 12 7298.23 2008-02-13 NULL 5 5 5314.03 2008-03-27 NULL 7 7 2091.78 2008-02-02 NULL 10 10 8033.76 2008-02-04 NULL 11 4 5879.96 2008-02-20 NULL... +-------+-----------+---------+--------------+-------------+ 71 rows in set (0.41 sec) mysql> SELECT * FROM Zamowienia WHERE NOT ISNULL(DataZaplaty); +-------+-----------+---------+--------------+-------------+ NrZam NrKlienta Kwota DataZlozenia DataZaplaty +-------+-----------+---------+--------------+-------------+ 1 6 4543.78 2008-04-15 2008-04-22 2 11 4702.25 2008-01-11 2008-01-13 3 8 796.73 2008-03-08 2008-03-23 6 11 1122.14 2008-02-26 2008-02-28 8 2 6757.77 2008-03-03 2008-04-28 9 6 3932.1 2008-03-30 2008-03-31... +-------+-----------+---------+--------------+-------------+ 79 rows in set (0.01 sec) 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 22

Zmienne tymczasowe SQL pozwala na definiowanie zmiennych tymczasowych nazwa zmiennej tymczasowej zawsze zaczyna się od @. Zmienna istnieje dopóty, dopóki nie zostanie zakończone połaczenie z serwerem. Procesy klienckie nie widza zmiennych zdefiniowanych przez inne procesy. mysql> SET @a=5; Query OK, 0 rows affected (0.01 sec) mysql> SELECT @a-2; +------+ @a-2 +------+ 3 +------+ 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 23

Zmiennej można przypisać wartość, która jest wynikiem zapytania: mysql> SET @b=(select Kwota FROM Zamowienia WHERE NrZam=116); Query OK, 0 rows affected (0.89 sec) mysql> SELECT @b, @a+@b; +----------------+----------------+ @b @a+@b +----------------+----------------+ 4456.419921875 4461.419921875 +----------------+----------------+ 1 row in set (0.18 sec) mysql> SELECT FORMAT(@b,2), FORMAT(@a+@b,2); +--------------+-----------------+ FORMAT(@b,2) FORMAT(@a+@b,2) +--------------+-----------------+ 4,456.42 4,461.42 +--------------+-----------------+ 1 row in set (0.05 sec) 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 24

Aliasy W zapytaniu SELECT możemy nadawać kolumnom inne nazwy niż te, które występuja w definicji tabeli. Nosza one nazwę aliasów. mysql> Select NrZam AS Zamowienie, DataZlozenia AS Kiedy Przyszlo -> FROM Zamowienia -> LIMIT 6; +------------+----------------+ Zamowienie Kiedy Przyszlo +------------+----------------+ 1 2008-04-15 2 2008-01-11 3 2008-03-08 4 2008-02-13 5 2008-03-27 6 2008-02-26 +------------+----------------+ 6 rows in set (1.40 sec) 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 25

Niekiedy wygodnie jest użyć aliasu w dalszej części zapytania, ale nie można go użyć w kaluzuli WHERE... mysql> SELECT NrZam, Kwota AS Wartosc FROM Zamowienia -> WHERE Wartosc > 9000.0; ERROR 1054 (42S22): Unknown column Wartosc in where clause... ale można go użyć w klauzuli HAVING mysql> SELECT NrZam, Kwota AS Wartosc FROM Zamowienia -> HAVING Wartosc > 9000.0 -> ORDER BY Wartosc DESC LIMIT 7; +-------+---------+ NrZam Wartosc +-------+---------+ 58 9974.23 55 9963.39 141 9838.69 89 9790.21 13 9774.76 125 9674.87 27 9669.91 +-------+---------+ 7 rows in set (0.12 sec) 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 26

Jest to szczególnie wygodne, gdy w warunku występuje wartość obliczna na podstawie więcej niż jednej kolumny: mysql> SELECT NrZam, DATEDIFF(DataZaplaty,DataZlozenia) AS Roznica, Kwota -> FROM Zamowienia -> HAVING Roznica > 60; +-------+---------+---------+ NrZam Roznica Kwota +-------+---------+---------+ 31 108 5713.96 55 72 9963.39 58 73 9974.23 64 115 1829.71 71 79 6292.35 83 74 8057.01 118 94 7529.13 120 109 826.73 124 72 9016.46 +-------+---------+---------+ 9 rows in set (0.06 sec) 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy 27