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

Podobne dokumenty
Bazy danych 7. SQL podstawy

Bazy danych 5. Samozłaczenie SQL podstawy

Bazy danych 4. SQL- podstawy

Bazy danych 4. Przykłady SQL podstawy

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

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

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

Bazy danych 10. SQL Widoki

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

Bazy Danych i Usługi Sieciowe

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

Bazy danych i usługi sieciowe

Język SQL, zajęcia nr 1

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

Wykład 5. SQL praca z tabelami 2

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

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

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

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

Wykład 2. SQL 1 Structured Query Lenguage

Wykład 05 Bazy danych

Kurs. Podstawy MySQL

Wykład 4. SQL praca z tabelami 1

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

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

Projektowanie systemów baz danych

Relacyjne bazy danych. Podstawy SQL

Bazy danych. Dr inż. Paweł Kasprowski

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

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

Relacyjne bazy danych. Podstawy SQL

Autor: Joanna Karwowska

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

Język baz danych SQL cz.1

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Przestrzenne bazy danych Podstawy języka SQL

Bazy danych 9. SQL Klucze obce Transakcje

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

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

SIECI KOMPUTEROWE I BAZY DANYCH

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

SIECI KOMPUTEROWE I BAZY DANYCH

2 Przygotował: mgr inż. Maciej Lasota

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Paweł Rajba

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

Wykład 8. SQL praca z tabelami 5

Laboratorium nr 1. Temat: Wprowadzenie do MySQL-a

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

Bazy danych 9. Klucze obce Transakcje

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

Instalacja MySQL.

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Wyzwalacze (triggery) Przykład

Bazy danych 12. SQL Wyszukiwanie pełnotekstowe

Systemy GIS Tworzenie zapytań w bazach danych

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

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

E.14 Bazy Danych cz. 16 SQL Tworzenie, modyfikowanie i usuwanie tabel

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

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

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

Instrukcja CREATE TABLE

Wykład 6. SQL praca z tabelami 3

Widok Connections po utworzeniu połączenia. Obszar roboczy

SQL/MySQL. Rafał Kern

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Dr Michał Tanaś(

Wprowadzenie do języka SQL

Język SQL, zajęcia nr 2

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

SQL Structured Query Language

Podyplomowe Studium Programowania i Baz Danych

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

SQL w praktyce. Miłej i owocnej nauki!!!

SQL (ang. Structured Query Language)

Tworzenie, modyfikowanie i usuwanie tabel

Bazy danych. Polecenia SQL

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

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

MySQL. Darmowa baza danych. Æwiczenia praktyczne

SQL 4 Structured Query Lenguage

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

P o d s t a w y j ę z y k a S Q L

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Obiekty dowolnego typu, w tym bazy danych, możemy tworzyć instrukcją CREATE. Po czasowniku CREATE należy podać typ tworzonego obiektu i jego nazwę.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

Komunikacja z bazą danych psql

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Bazy danych. dr inż. Arkadiusz Mirakowski

Transkrypt:

Bazy danych 4. SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012

Structured Query Language Używane standardy: SQL92 SQL99 SQL:2003 SQL:2006 (dialekt) SQL:2008 (dialekt) SQL:2011 (dialekt) Żaden dostawca nie jest w pełni zgodny ze standardem prawie wszyscy wprowadzaja rozszerzenia, prawie nikt nie spełnia wszystkich wymogów. W dużych systemach komercyjnych odejście od wymogów nie jest wielkie. Copyright c 2010-12 P. F. Góra 4 2

Programowanie deklaratywne SQL a ściślej, podzbiór SQL obejmujacy zapytania SELECT jest językiem deklaratywnym: określa logikę programowania, bez określenia control flow. Innymi słowy, zapytanie SQL mówi co chcemy osiagn ać, bez określenia jak chcemy to zrobić. Przeciwieństwem deklaratywnego paradygmatu programowania jest programowanie imperatywne. Copyright c 2010-12 P. F. Góra 4 3

Połaczenie się z serwerem Przed rozpoczęciem pracy, nalezy wywołać proces kliencki, który połaczy się z serwerem. W MySQL może to wygladać na przykład tak: C:\>mysql -upawel -p Enter password: ************* Po zakończeniu pracy trzeba się pożegnać: mysql> QUIT; Bye Znacznie częściej połaczenie z serwerem nawiazuje się za pomoca jakiejś aplikacji, nie zaś bezpośrednio z shella. Copyright c 2010-12 P. F. Góra 4 4

Utworzenie bazy danych mysql> CREATE DATABASE MoiStudenci CHARACTER SET cp1250; Query OK, 1 row affected (0.06 sec) mysql> USE MoiStudenci; Database changed mysql> Po wywołaniu klienta, trzeba wejść do wybranej bazy za pomoca instrukcji USE nie tylko po jej utworzeniu, ale zawsze. Copyright c 2010-12 P. F. Góra 4 5

To, jakie bazy znajduja się na serwerze, możemy zobaczyć za pomoca instrukcji SHOW DATABASES. mysql> SHOW DATABASES; +--------------------+ Database +--------------------+ information_schema kaskady moistudenci mysql test +--------------------+ 5 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 6

Utworzenie tabeli mysql> CREATE TABLE Studenci -> (NrStudenta SMALLINT UNSIGNED NOT NULL -> AUTO_INCREMENT PRIMARY KEY); Query OK, 0 rows affected (0.14 sec) Jeśli okaże się to konieczne, po utworzeniu można zmienić definicję tabeli. mysql> ALTER TABLE Studenci -> ADD COLUMN (Nazwisko VARCHAR(20) NOT NULL); Query OK, 1 row affected (0.17 sec) Records: 1 Duplicates: 0 Warnings: 0 Copyright c 2010-12 P. F. Góra 4 7

Składnia polecenia CREATE TABLE CREATE TABLE NazwaTabeli ( NazwaKolumny 1 TypKolumny 1 NULL NOT NULL..., NazwaKolumny 2 TypKolumny 2 NULL NOT NULL...,... ) PRIMARY KEY (NazwaKolumny p,nazwakolumny q,... ) ; Inne opcje poznamy później. Copyright c 2010-12 P. F. Góra 4 8

Typy danych (atrybutów) TINYINT DATE TINYBLOB SMALLINT TIME BLOB MEDIUMINT TIMESTAMP MEDIUMBLOB INT DATETIME LONGBLOB INTEGER CHAR TINYTEXT BIGINT VARCHAR TEXT REAL BOOLEAN LONGTEXT DOUBLE ENUM FLOAT SET DECIMAL NUMERIC Copyright c 2010-12 P. F. Góra 4 9

Instrukcja DESCRIBE podaje definicję tabeli. mysql> DESCRIBE Studenci; +------------+----------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +------------+----------------------+------+-----+---------+----------------+ NrStudenta smallint(5) unsigned NO PRI NULL auto_increment Nazwisko varchar(20) NO +------------+----------------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec) Niepotrzebna tabelę usuwamy za pomoca instrukcji DROP TABLE. mysql> DROP TABLE Studenci; Query OK, 0 rows affected (0.02 sec) Lepiej ja utworzyć od poczatku dobrze niż dodawać kolumna po kolumnie... Copyright c 2010-12 P. F. Góra 4 10

mysql> CREATE TABLE Studenci -> (NrStudenta SMALLINT UNSIGNED NOT NUll -> AUTO_INCREMENT PRIMARY KEY, -> Imie VARCHAR(20), -> Nazwisko VARCHAR(20) NOT NULL, -> Uwagi VARCHAR(30), -> Grupa CHAR(2) NOT NULL)); Query OK, 0 rows affected (0.06 sec) mysql> DESCRIBE Studenci; +------------+----------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +------------+----------------------+------+-----+---------+----------------+ NrStudenta smallint(5) unsigned NO PRI NULL auto_increment Imie varchar(20) YES NULL Nazwisko varchar(20) NO Uwagi varchar(30) YES NULL Grupa char(2) NO +------------+----------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 11

Wstawianie wartości do tabeli mysql> SET CHARACTER SET cp1250; Query OK, 0 rows affected (0.00 sec) Gdybyśmy tego nie zrobili, MySQL używałby takiego zestawu znaków, jaki obowiazywał domyślnie w momencie połaczenia z serwerem. Kwestie określania zestawu znaków to osobliwość MySQLa mysql> INSERT INTO Studenci VALUES -> (1, Milena, Zahorska, wt, uzupełniające ); Query OK, 1 row affected (0.02 sec) Copyright c 2010-12 P. F. Góra 4 12

Co teraz jest w tabeli? mysql> SELECT * FROM Studenci; +------------+--------+----------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+--------+----------+---------------+-------+ 1 Milena Zahorska uzupełniające wt +------------+--------+----------+---------------+-------+ 1 row in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 13

Składnia zapytania SELECT; SELECT [DISTINCT] lista select FROM tabela lub zapytanie WHERE warunek logiczny GROUP BY wyrażenie grupujace HAVING warunek wyszukiwania po grupowaniu ORDER BY wyrażenie porzadkuj ace [ASC DESC] ; W zapytaniu SELECT wszystkie klauzule musza występować w powyższej kolejności. Niektóre klauzule można opuścić, ale to, co jest, musi być w tej kolejności. Copyright c 2010-12 P. F. Góra 4 14

Dodajmy więcej danych mysql> INSERT INTO Studenci VALUES -> (2, Sylwester, Tomiec, uzupełniające, wt ), -> (3, Michał, Gajewczyk,, wt ); Query OK, 2 rows affected (0.02 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM Studenci; +------------+-----------+-----------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+-----------+-----------+---------------+-------+ 1 Milena Zahorska uzupełniające wt 2 Sylwester Tomiec uzupełniające wt 3 Michał Gajewczyk wt +------------+-----------+-----------+---------------+-------+ 3 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 15

Wykorzystanie opcji AUTOINCREMENT mysql> INSERT INTO Studenci (Imie,Nazwisko,Grupa) VALUES -> ( Rafał, Świderski, wt ), -> ( Maciej, Matowicki, wf ), -> ( Janko, Muzykant, nd ); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM Studenci; +------------+-----------+-----------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+-----------+-----------+---------------+-------+ 1 Milena Zahorska uzupełniające wt 2 Sylwester Tomiec uzupełniające wt 3 Michał Gajewczyk wt 4 Rafał Świderski NULL wt 5 Maciej Matowicki NULL wf 6 Janko Muzykant NULL nd +------------+-----------+-----------+---------------+-------+ 6 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 16

Zapytanie UPDATE mysql> UPDATE Studenci -> SET Uwagi=NULL -> WHERE NrStudenta=3; Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> UPDATE Studenci -> SET Grupa= wt WHERE Grupa= wf ; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 Copyright c 2010-12 P. F. Góra 4 17

mysql> SELECT * FROM Studenci; +------------+-----------+-----------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+-----------+-----------+---------------+-------+ 1 Milena Zahorska uzupełniające wt 2 Sylwester Tomiec uzupełniające wt 3 Michał Gajewczyk NULL wt 4 Rafał Świderski NULL wt 5 Maciej Matowicki NULL wt 6 Janko Muzykant NULL nd +------------+-----------+-----------+---------------+-------+ 6 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 18

Zapytanie DELETE Usuwanie wierszy spełniajacych podane kryterium: mysql> DELETE FROM Studenci -> WHERE Imie= Janko ; Query OK, 1 row affected (0.03 sec) Dodajmy coś jeszcze: mysql> INSERT INTO Studenci (Imie,Nazwisko,Grupa) VALUES -> ( Michał, Czubek, pt ),( Marcin, Pyra, pt ), -> ( Marcin, Baranowski, pt ); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 Copyright c 2010-12 P. F. Góra 4 19

mysql> SELECT * FROM Studenci; +------------+-----------+------------+---------------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+-----------+------------+---------------+-------+ 1 Milena Zahorska uzupełniające wt 2 Sylwester Tomiec uzupełniające wt 3 Michał Gajewczyk NULL wt 4 Rafał Świderski NULL wt 5 Maciej Matowicki NULL wt 7 Michał Czubek NULL pt 8 Marcin Pyra NULL pt 9 Marcin Baranowski NULL pt +------------+-----------+------------+---------------+-------+ 8 rows in set (0.01 sec) Brakuje numeru 6 AUTOINCREMENT zapamiętał, że on tam był. AUTOINCREMENT zawsze startuje od high water mark. Copyright c 2010-12 P. F. Góra 4 20

Jawnie wyspecyfikowana lista select mysql> SELECT Imie, Nazwisko FROM Studenci; +-----------+------------+ Imie Nazwisko +-----------+------------+ Milena Zahorska Sylwester Tomiec Michał Gajewczyk Rafał Świderski Maciej Matowicki Michał Czubek Marcin Pyra Marcin Baranowski +-----------+------------+ 8 rows in set (0.01 sec) Gwiazdka w zapytaniu SELECT (SELECT * FROM...) oznacza wszystkie kolumny. Copyright c 2010-12 P. F. Góra 4 21

Problem duplikatów mysql> SELECT Imie -> FROM Studenci; +-----------+ Imie +-----------+ Milena Sylwester Michał Rafał Maciej Michał Marcin Marcin +-----------+ 8 rows in set (0.00 sec) mysql> SELECT DISTINCT Imie -> FROM Studenci; +-----------+ Imie +-----------+ Milena Sylwester Michał Rafał Maciej Marcin +-----------+ 6 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 22

Operator LIKE mysql> SELECT Imie, Nazwisko -> FROM Studenci -> WHERE Imie LIKE Mi% ; +--------+-----------+ Imie Nazwisko +--------+-----------+ Milena Zahorska Michał Gajewczyk Michał Czubek +--------+-----------+ 3 rows in set (0.00 sec) mysql> SELECT Imie, Nazwisko -> FROM Studenci -> WHERE Imie LIKE %ł ; +--------+-----------+ Imie Nazwisko +--------+-----------+ Michał Gajewczyk Rafał Świderski Michał Czubek +--------+-----------+ 3 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 23

Wykorzystanie ORDER BY mysql> SELECT Imie, Nazwisko -> FROM Studenci -> WHERE Grupa= wt -> ORDER BY Nazwisko ASC; +-----------+-----------+ Imie Nazwisko +-----------+-----------+ Michał Gajewczyk Maciej Matowicki Sylwester Tomiec Milena Zahorska Rafał Świderski +-----------+-----------+ 5 rows in set (0.02 sec) Problemy z poprawnym sortowaniem polskich znaków diakrytycznych Copyright c 2010-12 P. F. Góra 4 24

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. Copyright c 2010-12 P. F. Góra 4 25

Tworzenie tabeli wraz z kopiowaniem danych mysql> USE moistudenci; Database changed mysql> DESCRIBE Studenci; +------------+----------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +------------+----------------------+------+-----+---------+----------------+ NrStudenta smallint(5) unsigned NO PRI auto_increment Imie varchar(20) NO Nazwisko varchar(20) NO Uwagi varchar(30) YES Grupa char(2) YES +------------+----------------------+------+-----+---------+----------------+ 5 rows in set (0.21 sec) Copyright c 2010-12 P. F. Góra 4 26

mysql> CREATE TABLE Studenci2 -> (NrStudenta INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Imie VARCHAR(20) NOT NULL, Nazwisko VARCHAR(20) NOT NULL, -> Uwagi VARCHAR(30), Grupa CHAR(2)) -> -- TU kończy się definicja tabeli! -> SELECT * FROM STUDENCI; Query OK, 9 rows affected (1.08 sec) Records: 9 Duplicates: 0 Warnings: 0 mysql> DESCRIBE Studenci2; +------------+------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +------------+------------------+------+-----+---------+----------------+ NrStudenta int(10) unsigned NO PRI auto_increment Imie varchar(20) NO Nazwisko varchar(20) NO Uwagi varchar(30) YES Grupa char(2) YES +------------+------------------+------+-----+---------+----------------+ 5 rows in set (0.01 sec) Copyright c 2010-12 P. F. Góra 4 27

mysql> SELECT * FROM Studenci2; +------------+----------+--------------+-------+-------+ NrStudenta Imie Nazwisko Uwagi Grupa +------------+----------+--------------+-------+-------+ 1 Mariusz Lewandowski xxxx xy 2 Jakub Stefanowski xy 3 Marek Giebułtowski xy 4 Barbara Jeziorek xy 6 Wojciech Wąchal xy 72 Jakub Janoszek xy 73 Maciej Gowin xy 74 Tadeusz Drozda xy 75 Marek Kolejny xy +------------+----------+--------------+-------+-------+ 9 rows in set (0.03 sec) Copyright c 2010-12 P. F. Góra 4 28

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 +------+ 1 row in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 29

Zmiennej można przypisać wartość, która jest wynikiem zapytania: mysql> SET @b=(select NrStudenta FROM Studenci2 WHERE Imie= Tadeusz ); Query OK, 0 rows affected (0.89 sec) mysql> SELECT @b, @a+@b; +------+-------+ @b @a+@b +------+-------+ 74 79 +------+-------+ 1 row in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 30

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 NrStudenta AS ToJestNumer, Imie FROM Studenci2; +-------------+----------+ ToJestNumer Imie +-------------+----------+ 1 Mariusz 2 Jakub 3 Marek 4 Barbara 6 Wojciech 72 Jakub 73 Maciej 74 Tadeusz 75 Marek 65536 X +-------------+----------+ 10 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 31

Niekiedy wygodnie jest użyć aliasu w dalszej części zapytania, ale nie można go użyć w kaluzuli WHERE mysql> SELECT NrStudenta AS ToJestNumer, Imie FROM Studenci2 -> WHERE ToJestNumer > 10; ERROR 1054 (42S22): Unknown column ToJestNumer in where clause Można natomiast użyć aliasu w klauzuli HAVING: mysql> SELECT NrStudenta AS ToJestNumer, Imie as Pierwsze imię FROM Studenci2 -> HAVING ToJestNumer > 10; +-------------+---------------+ ToJestNumer Pierwsze imię +-------------+---------------+ 72 Jakub 73 Maciej 74 Tadeusz 75 Marek 65536 X +-------------+---------------+ 5 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 32

Jest to szczególnie przydatne, gdy w warunku występuje wartość obliczana na podstawie więcej niż jednej kolumny: mysql> SELECT CONCAT(Imie,,Nazwisko) AS Imie_Nazwisko FROM Studenci2 -> HAVING Imie_Nazwisko LIKE "%r%z%"; +---------------------+ Imie_Nazwisko +---------------------+ Mariusz Lewandowski Barbara Jeziorek Tadeusz Drozda +---------------------+ 3 rows in set (0.00 sec) Copyright c 2010-12 P. F. Góra 4 33