[go: nahoru, domu]

Przejdź do zawartości

Edytujesz SQL

Zmiany dokonywane przez osoby niemające statusu redaktora są widoczne dla czytelników po przejrzeniu przez jednego z redaktorów.

Aktualna wersja Twój tekst
Linia 1: Linia 1:
{{dopracować|źródła=2014-12}}
{{dopracować|źródła=2014-12}}
{{Język programowania infobox
{{Język programowania infobox
| nazwa = SQL
|nazwa = SQL
| logo =
|logo =
|wielkość_loga =
| data = 1974
| paradygmat = [[Programowanie wieloparadygmatowe|wieloparadygmatowy]]
|data = 1974
|paradygmat = [[Programowanie wieloparadygmatowe|wieloparadygmatowy]]
| typowanie = [[Typowanie statyczne|statyczne]], [[typowanie silne]]
|typowanie = [[typowanie statyczne|statyczne]], [[typowanie silne]]
| implementacje = [[Lista systemów zarządzania relacyjnymi bazami danych|wiele]]
|implementacje = [[Lista systemów zarządzania relacyjnymi bazami danych|wiele]]
| pochodne = [[SQL-86]], [[SQL-89]], [[SQL-92]], [[SQL:1999]], [[SQL:2003]], [[SQL:2006]], [[SQL:2008]]
|pochodne = [[SQL-86]], [[SQL-89]], [[SQL-92]], [[SQL:1999]], [[SQL:2003]], [[SQL:2006]], [[SQL:2008]]
| wersja = SQL:2016
|wersja = SQL:2016
| wersja testowa =
|wersja testowa =
| twórca = [[Donald D. Chamberlin]] i [[Raymond F. Boyce]]
|twórca = [[Donald D. Chamberlin]] i [[Raymond F. Boyce]]
| licencja =
|licencja =
| platforma =
|platforma =
| system = [[Wieloplatformowość|wieloplatformowy]]
|system = [[wieloplatformowość|wieloplatformowy]]
| wikibooks = SQL
|wikibooks =
|www =
| commons = Category:Structured Query Language
|commons =
| www =
}}
}}
'''SQL''' ([[Język angielski|ang.]] ''Structured Query Language'', wym. [{{IPA|ɛskjuːˈɛl}}]) – strukturalny oraz [[Programowanie deklaratywne|deklaratywny]] [[język zapytań]]. Jest to [[język dziedzinowy]] używany do tworzenia, modyfikowania [[Model relacyjny|relacyjnych]] [[Baza danych|baz danych]] oraz do umieszczania i pobierania danych z tych baz.
'''SQL''' ([[język angielski|ang.]] ''Structured Query Language'' wym. /ɛskjuːˈɛl/) – strukturalny [[język zapytań]] używany do tworzenia, modyfikowania [[baza danych|baz danych]] oraz do umieszczania i pobierania danych z baz danych.


Decyzję o sposobie przechowywania i pobrania danych pozostawia się [[System zarządzania bazą danych|systemowi zarządzania bazą danych]] (DBMS).
Język SQL jest [[Programowanie deklaratywne|językiem deklaratywnym]]. Decyzję o sposobie przechowywania i pobrania danych pozostawia się [[System zarządzania bazą danych|systemowi zarządzania bazą danych]] (DBMS).


== Historia ==
== Historia ==
SQL został opracowany w latach 70. w firmie [[IBM]]. Stał się [[standard]]em w komunikacji z [[serwer]]ami relacyjnych [[Baza danych|baz danych]]. Wiele współczesnych systemów relacyjnych baz danych używa do komunikacji z użytkownikiem SQL, dlatego potocznie mówi się, że korzystanie z relacyjnych baz danych to korzystanie z SQL-a.
SQL został opracowany w latach 70. w firmie [[IBM]]. Stał się [[standard]]em w komunikacji z [[serwer]]ami relacyjnych [[baza danych|baz danych]]. Wiele współczesnych systemów relacyjnych baz danych używa do komunikacji z użytkownikiem SQL, dlatego potocznie mówi się, że korzystanie z relacyjnych baz danych to korzystanie z SQL-a.


Pierwszą firmą, która włączyła SQL do swojego produktu komercyjnego, był [[Oracle Corporation|Oracle]]. Dalsze wprowadzanie SQL-a, w produktach innych firm, wiązało się nierozłącznie z wprowadzaniem modyfikacji pierwotnego języka. Wkrótce utrzymanie dalszej jednolitości języka wymagało wprowadzenia standardu.
Pierwszą firmą, która włączyła SQL do swojego produktu komercyjnego, był [[Oracle Corporation|Oracle]]. Dalsze wprowadzanie SQL-a, w produktach innych firm, wiązało się nierozłącznie z wprowadzaniem modyfikacji pierwotnego języka. Wkrótce utrzymanie dalszej jednolitości języka wymagało wprowadzenia standardu.
Linia 32: Linia 33:
W 1986 SQL stał się oficjalnym standardem, wspieranym przez Międzynarodową Organizację Normalizacyjną ([[Międzynarodowa Organizacja Normalizacyjna|ISO]]) i jej członka, Amerykański Narodowy Instytut Normalizacji ([[American National Standards Institute|ANSI]]).
W 1986 SQL stał się oficjalnym standardem, wspieranym przez Międzynarodową Organizację Normalizacyjną ([[Międzynarodowa Organizacja Normalizacyjna|ISO]]) i jej członka, Amerykański Narodowy Instytut Normalizacji ([[American National Standards Institute|ANSI]]).


Wczesne wersje specyfikacji ('''SQL86''' i '''SQL89''') były w dużej mierze jedynie określeniem wspólnej płaszczyzny łączącej różne istniejące wówczas produkty i pozostawiały wiele swobody twórcom [[Implementacja (informatyka)|implementacji]]. Z czasem jednak systemy [[komputer]]owe uległy integracji i rynek zaczął domagać się [[Oprogramowanie użytkowe|aplikacji]] oraz ich funkcji faktycznie współpracujących z wieloma różnymi bazami danych. Pojawiła się potrzeba określenia standardu ściślejszego. Mógł on jednocześnie obejmować nowe elementy, nieujęte do tej pory w języku. Tak powstał standard '''SQL92''', obowiązujący w produktach komercyjnych do dziś.
Wczesne wersje specyfikacji ('''SQL86''' i '''SQL89''') były w dużej mierze jedynie określeniem wspólnej płaszczyzny łączącej różne istniejące wówczas produkty i pozostawiały wiele swobody twórcom implementacji. Z czasem jednak systemy [[komputer]]owe uległy integracji i rynek zaczął domagać się [[Oprogramowanie użytkowe|aplikacji]] oraz ich funkcji faktycznie współpracujących z wieloma różnymi bazami danych. Pojawiła się potrzeba określenia standardu ściślejszego. Mógł on jednocześnie obejmować nowe elementy, nieujęte do tej pory w języku. Tak powstał standard '''SQL92''', obowiązujący w produktach komercyjnych do dziś.


W 2003 przedstawiono '''SQL:2003''' – nowy standard języka SQL. Został on opublikowany w [http://www.acm.org/sigmod/record/issues/0403/E.JimAndrew-standard.pdf Sigmod Record Vol. 33 No. 1 marca 2004]. Jest to w zasadzie poprawione SQL:1999 z wyjątkiem części SQL/[[XML]] oraz kilku dodatkowych właściwości.
W 2003 przedstawiono '''SQL:2003''' – nowy standard języka SQL. Został on opublikowany w [http://www.acm.org/sigmod/record/issues/0403/E.JimAndrew-standard.pdf Sigmod Record Vol. 33 No. 1 marca 2004]. Jest to w zasadzie poprawione SQL:1999 z wyjątkiem części SQL/[[XML]] oraz kilku dodatkowych właściwości.


Zmiany wprowadzone w SQL:2003:
Zmiany wprowadzone w SQL:2003:
# Dodano nowe [[Typ danych|typy danych]] (BIGINT, MULTISET oraz XML).
# Dodano nowe typy danych (BIGINT, MULTISET oraz XML).
# Usunięto typy BIT oraz BIT VARYING.
# Usunięto typy BIT oraz BIT VARYING.
# Wprowadzono rozszerzenia w sposobie wywoływania procedur.
# Wprowadzono rozszerzenia w sposobie wywoływania procedur.
Linia 51: Linia 52:


== Funkcje silnika i oprogramowania pośredniczącego ==
== Funkcje silnika i oprogramowania pośredniczącego ==
Produkty związane z [[Model relacyjny|relacyjnymi bazami danych]] to nie tylko serwery. Sam serwer określa się często takimi nazwami jak „back end”, „engine”, czy też „motor/[[Silnik (informatyka)|silnik]] bazy danych”. Przechowuje on dane oraz zapewnia ich pobieranie i aktualizacje w odpowiedzi na pobierane instrukcje w SQL-u.
Produkty związane z [[Model relacyjny|relacyjnymi bazami danych]] to nie tylko serwery. Sam serwer określa się często takimi nazwami jak „back end”, „engine”, czy też „motor/[[silnik (informatyka)|silnik]] bazy danych”. Przechowuje on dane oraz zapewnia ich pobieranie i aktualizacje w odpowiedzi na pobierane instrukcje w SQL-u.


Uzupełnieniem serwera jest zazwyczaj „front end”, „[[oprogramowanie pośredniczące]]” czy też „fronton” – narzędzia upraszczające komunikację z serwerem i wyposażone w mechanizmy pozwalające wykorzystać pobrane dane. Należą do nich mechanizmy generowania i obsługi formularzy oraz raportów, języki czwartej generacji ([[4GL]]), graficzne języki zapytań, narzędzia konstrukcyjne użytkownika, [[oprogramowanie]] do prezentacji [[multimedia]]lnych, systemy tworzenia [[hipertekst]]u, systemy [[Projektowanie wspomagane komputerowo|CAD]]/[[Komputerowe wspomaganie wytwarzania|CAM]], [[Arkusz kalkulacyjny|arkusze kalkulacyjne]], jak również [[Interfejs (urządzenie)|interfejsy]] dostępu bezpośredniego. Wszystkie one wykorzystują do komunikacji z serwerem i wykonywania za jego pośrednictwem różnych operacji język SQL. Serwer odpowiada za przechowywanie, porządkowanie i pobieranie danych, zapewnia ich integralność, bezpieczeństwo oraz zabezpiecza przed ewentualnymi konfliktami między użytkownikami.
Uzupełnieniem serwera jest zazwyczaj „front end”, „[[oprogramowanie pośredniczące]]” czy też „fronton” – narzędzia upraszczające komunikację z serwerem i wyposażone w mechanizmy pozwalające wykorzystać pobrane dane. Należą do nich mechanizmy generowania i obsługi formularzy oraz raportów, języki czwartej generacji ([[4GL]]), graficzne języki zapytań, narzędzia konstrukcyjne użytkownika, [[oprogramowanie]] do prezentacji [[multimedia]]lnych, systemy tworzenia [[hipertekst]]u, systemy [[Projektowanie wspomagane komputerowo|CAD]]/[[Komputerowe wspomaganie wytwarzania|CAM]], [[arkusz kalkulacyjny|arkusze kalkulacyjne]], jak również [[Interfejs (urządzenie)|interfejsy]] dostępu bezpośredniego. Wszystkie one wykorzystują do komunikacji z serwerem i wykonywania za jego pośrednictwem różnych operacji język SQL. Serwer odpowiada za przechowywanie, porządkowanie i pobieranie danych, zapewnia ich integralność, bezpieczeństwo oraz zabezpiecza przed ewentualnymi konfliktami między użytkownikami.


== Formy SQL-a ==
== Formy SQL-a ==
Z technicznego punktu widzenia, SQL jest podjęzykiem danych. Oznacza to, że jest on wykorzystywany wyłącznie do komunikacji z bazą danych. Nie posiada on cech pozwalających na tworzenie kompletnych programów. Jego wykorzystanie może być trojakie i z tego względu wyróżnia się trzy formy SQL-a:
Z technicznego punktu widzenia, SQL jest podjęzykiem danych. Oznacza to, że jest on wykorzystywany wyłącznie do komunikacji z bazą danych. Nie posiada on cech pozwalających na tworzenie kompletnych programów. Jego wykorzystanie może być trojakie i z tego względu wyróżnia się trzy formy SQL-a:
# SQL '''interakcyjny''' (autonomiczny) wykorzystywany jest przez użytkowników w celu bezpośredniego pobierania lub wprowadzania informacji do bazy. Przykładem może być zapytanie prowadzące do uzyskania zestawienia aktywności kont w miesiącu. Wynik jest wówczas przekazywany na ekran, z ewentualną opcją [[Przekierowanie|przekierowania]] go do [[Plik danych|pliku]] lub [[Drukarka|drukarki]].
# SQL '''interakcyjny''' (autonomiczny) wykorzystywany jest przez użytkowników w celu bezpośredniego pobierania lub wprowadzania informacji do bazy. Przykładem może być zapytanie prowadzące do uzyskania zestawienia aktywności kont w miesiącu. Wynik jest wówczas przekazywany na ekran, z ewentualną opcją [[przekierowanie|przekierowania]] go do [[plik]]u lub [[drukarka|drukarki]].
# '''Statyczny''' kod SQL (Static SQL) nie ulega zmianom i pisany jest wraz z całą aplikacją, podczas której pracy jest wykorzystywany. Nie ulega zmianom w sensie zachowania niezmiennej treści instrukcji, które jednak zawierać mogą odwołania do zmiennych lub parametrów przekazujących wartości z lub do aplikacji. Statyczny SQL występuje w dwóch odmianach.
# '''Statyczny''' kod SQL (Static SQL) nie ulega zmianom i pisany jest wraz z całą aplikacją, podczas której pracy jest wykorzystywany. Nie ulega zmianom w sensie zachowania niezmiennej treści instrukcji, które jednak zawierać mogą odwołania do zmiennych lub parametrów przekazujących wartości z lub do aplikacji. Statyczny SQL występuje w dwóch odmianach.
## '''Embedded SQL''' (Osadzony SQL) oznacza włączenie kodu SQL do [[Kod źródłowy|kodu źródłowego]] innego języka. Większość aplikacji pisana jest w takich językach jak [[C++]] czy [[Java]], jedynie odwołania do bazy danych realizowane są w SQL. W tej odmianie statycznego SQL-a do przenoszenia wartości wykorzystywane są zmienne.
## '''Embedded SQL''' (Osadzony SQL) oznacza włączenie kodu SQL do kodu źródłowego innego języka. Większość aplikacji pisana jest w takich językach jak [[C++]] czy [[Java]], jedynie odwołania do bazy danych realizowane są w SQL. W tej odmianie statycznego SQL-a do przenoszenia wartości wykorzystywane są zmienne.
## '''Język modułów.''' W tym podejściu moduły SQL łączone są z modułami kodu w innym języku. Moduły kodu SQL przenoszą wartości do i z parametrów, podobnie jak to się dzieje przy wywoływaniu podprogramów w większości [[Programowanie proceduralne|języków proceduralnych]]. Jest to pierwotne podejście, zaproponowane w standardzie SQL. Embedded SQL został do oficjalnej specyfikacji włączony nieco później.
## '''Język modułów.''' W tym podejściu moduły SQL łączone są z modułami kodu w innym języku. Moduły kodu SQL przenoszą wartości do i z parametrów, podobnie jak to się dzieje przy wywoływaniu podprogramów w większości [[programowanie proceduralne|języków proceduralnych]]. Jest to pierwotne podejście, zaproponowane w standardzie SQL. Embedded SQL został do oficjalnej specyfikacji włączony nieco później.
# '''Dynamiczny''' kod SQL (Dynamic SQL) generowany jest w trakcie pracy aplikacji. Wykorzystuje się go w miejsce podejścia statycznego, jeżeli w chwili pisania aplikacji nie jest możliwe określenie treści potrzebnych zapytań – powstaje ona w oparciu o decyzje użytkownika. Tę formę SQL generują przede wszystkim takie narzędzia jak graficzne języki zapytań. Utworzenie odpowiedniego zapytania jest tu odpowiedzią na działania użytkownika.
# '''Dynamiczny''' kod SQL (Dynamic SQL) generowany jest w trakcie pracy aplikacji. Wykorzystuje się go w miejsce podejścia statycznego, jeżeli w chwili pisania aplikacji nie jest możliwe określenie treści potrzebnych zapytań – powstaje ona w oparciu o decyzje użytkownika. Tę formę SQL generują przede wszystkim takie narzędzia jak graficzne języki zapytań. Utworzenie odpowiedniego zapytania jest tu odpowiedzią na działania użytkownika.


Linia 103: Linia 104:
=== Przykładowe zapytania ===
=== Przykładowe zapytania ===
Przykłady użycia wyżej wymienionych rodzajów zapytań:
Przykłady użycia wyżej wymienionych rodzajów zapytań:
<syntaxhighlight lang="sql">
<source lang="sql">
SELECT *
SELECT *
FROM pracownicy
FROM pracownicy
WHERE pensja > 2000
WHERE pensja > 2000
ORDER BY staz DESC;
ORDER BY staz DESC;
</source>
</syntaxhighlight>
: Zwraca tabelę (listę) utworzoną ze wszystkich kolumn ('''*''') tabeli „pracownicy” ('''FROM pracownicy''') zawierającą pracowników, których pensja jest większa niż 2000 ('''WHERE pensja > 2000''') i sortuje wynik malejąco według parametru '''staz''' ('''ORDER BY staz DESC''').
: Zwraca tabelę (listę) utworzoną ze wszystkich kolumn ('''*''') tabeli „pracownicy” ('''FROM pracownicy''') zawierającą pracowników, których pensja jest większa niż 2000 ('''WHERE pensja > 2000''') i sortuje wynik malejąco według parametru '''staz''' ('''ORDER BY staz DESC''').


<syntaxhighlight lang="sql">
<source lang="sql">
INSERT INTO pracownicy
INSERT INTO pracownicy
(imie, nazwisko, pensja, staz)
(imie, nazwisko, pensja, staz)
VALUES
VALUES
('Jan', 'Kowalski', 5500, 1);
('Jan', 'Kowalski', 5500, 1);
</source>
</syntaxhighlight>
: Dodaje do tabeli „pracownicy” ('''INTO pracownicy''') wiersz (rekord) zawierający dane pojedynczego pracownika.
: Dodaje do tabeli „pracownicy” ('''INTO pracownicy''') wiersz (rekord) zawierający dane pojedynczego pracownika.


<syntaxhighlight lang="sql">
<source lang="sql">
UPDATE pracownicy
UPDATE pracownicy
SET pensja = pensja * 1.1
SET pensja = pensja * 1.1
WHERE staz > 2;
WHERE staz > 2;
</source>
</syntaxhighlight>
: Podwyższa o 10% pensję ('''SET pensja = pensja * 1.1''') pracownikom, których staż jest większy niż 2 (np. lata).
: Podwyższa o 10% pensję ('''SET pensja = pensja * 1.1''') pracownikom, których staż jest większy niż 2 (np. lata).


<syntaxhighlight lang="sql">
<source lang="sql">
DELETE FROM pracownicy
DELETE FROM pracownicy
WHERE imie = 'Jan' AND nazwisko = 'Kowalski';
WHERE imie = 'Jan' AND nazwisko = 'Kowalski';
</source>
</syntaxhighlight>
: Usuwa z tabeli „pracownicy” wszystkie wiersze (rekordy) dotyczące pracownika o imieniu „Jan” i nazwisku „Kowalski” (czyli takie, w których pole „imię” ma wartość '''Jan''', a pole „nazwisko” – '''Kowalski''').
: Usuwa z tabeli „pracownicy” wszystkie wiersze (rekordy) dotyczące pracownika o imieniu „Jan” i nazwisku „Kowalski” (czyli takie, w których pole „imię” ma wartość '''Jan''', a pole „nazwisko” – '''Kowalski''').


<syntaxhighlight lang="sql">
<source lang="sql">
CREATE TABLE pracownicy
CREATE TABLE pracownicy
(
(
Linia 140: Linia 141:
staz int
staz int
);
);
</source>
</syntaxhighlight>
: Tworzy tabelę „pracownicy” zawierającą pola tekstowe zmiennej długości (varchar) o nazwach „imie” (imię) i „nazwisko”, o maksymalnej długości 255 znaków, zapisaną za pomocą [[liczby rzeczywiste]]j (float od ang. '''floating point''') pensję oraz zapisany za pomocą [[liczby całkowite]]j (int od ang. '''integer''') staż.
: Tworzy tabelę „pracownicy” zawierającą pola tekstowe zmiennej długości (varchar) o nazwach „imie” (imię) i „nazwisko”, o maksymalnej długości 255 znaków, zapisaną za pomocą [[liczby rzeczywiste]]j (float od ang. '''floating point''') pensję oraz zapisany za pomocą [[liczby całkowite]]j (int od ang. '''integer''') staż.


<syntaxhighlight lang="sql">
<source lang="sql">
DROP TABLE pracownicy;
DROP TABLE pracownicy;
</source>
</syntaxhighlight>
: Usuwa z bazy tabelę „pracownicy”.
: Usuwa z bazy tabelę „pracownicy”.


<syntaxhighlight lang="sql">
<source lang="sql">
ALTER TABLE pracownicy
ALTER TABLE pracownicy
ADD dzial varchar(255);
ADD dzial varchar(255);
</source>
</syntaxhighlight>
: Dodaje do struktury tabeli „pracownicy” kolumnę „dzial” (dział), jako pole tekstowe o długości maks. 255 bajtów.
: Dodaje do struktury tabeli „pracownicy” kolumnę „dzial” (dział), jako pole tekstowe o długości maks. 255 bajtów.


== Bezpieczeństwo ==
== Bezpieczeństwo ==
Ponieważ SQL jest językiem interpretowanym, istnieje możliwość nadużyć w przypadku konstruowania zapytań z wykorzystaniem parametrów pochodzących z zewnątrz aplikacji. Szczególnie podatne na ten typ ataku są tworzone dynamicznie w oparciu o SQL-ową bazę danych serwisy internetowe. Jeśli twórca aplikacji nie zadba o sprawdzenie poprawności (tzw. [[Walidacja danych|walidację]]) danych wejściowych stanowiących część zapytania, atakujący może dopisać do zapytania („wstrzyknąć”) dodatkowe komendy lub zmienić ich sposób działania. Atak taki nosi nazwę [[SQL injection]] (wstrzyknięcie kodu za pomocą SQL).
Ponieważ SQL jest językiem interpretowanym, istnieje możliwość nadużyć w przypadku konstruowania zapytań z wykorzystaniem parametrów pochodzących z zewnątrz aplikacji. Szczególnie podatne na ten typ ataku są tworzone dynamicznie w oparciu o SQL-ową bazę danych serwisy internetowe. Jeśli twórca aplikacji nie zadba o sprawdzenie poprawności (tzw. [[walidacja danych|walidację]]) danych wejściowych stanowiących część zapytania, atakujący może dopisać do zapytania („wstrzyknąć”) dodatkowe komendy lub zmienić ich sposób działania. Atak taki nosi nazwę [[SQL injection]] (wstrzyknięcie kodu za pomocą SQL).
{{Osobny artykuł|SQL injection}}
{{Osobny artykuł|SQL injection}}


Linia 187: Linia 188:
* [[Sybase]] ([[Sybase Adaptive Server Enterprise]], [[Sybase SQL Anywhere]], [[Sybase IQ]])
* [[Sybase]] ([[Sybase Adaptive Server Enterprise]], [[Sybase SQL Anywhere]], [[Sybase IQ]])
* [[Teradata]]
* [[Teradata]]

== Zobacz też ==
* [[GraphQL]]


== Linki zewnętrzne ==
== Linki zewnętrzne ==
* [http://troels.arvin.dk/db/rdbms/ Różnice pomiędzy popularnymi implementacjami SQL]
* http://troels.arvin.dk/db/rdbms/ Różnice pomiędzy popularnymi implementacjami SQL
* [https://sql.org.pl/ Interpreter SQL Online]


{{Języki programowania}}
{{Języki programowania}}
Zapisując zmiany, wyrażasz nieodwołalną zgodę na udostępnianie Twojego wkładu na licencjach CC-BY-SA 4.0 i GFDL oraz na wykorzystanie go w dowolnej formie pod warunkiem podania przynajmniej hiperłącza lub adresu URL do strony, na której powstała treść. Treść ta musi być dostępna na tych zasadach, jeśli nie jest wynikiem Twojej samodzielnej pracy. Zobacz szczegółowe informacje o warunkach korzystania.
Anuluj Pomoc w edycji  (otwiera się w nowym oknie)

Najczęstsze: Znaki i symbole: | [] „” «» ° ¹ ² ³       Podpis w dyskusji: ~~~~       Przypisy i uwagi: <ref></ref>   == Przypisy == {{Przypisy}}   == Uwagi == {{Uwagi}}

Polskie diakrytyki: Ą ą Ć ć Ę ę Ł ł Ń ń Ó ó Ś ś Ź ź Ż ż

Alfabet grecki: Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ ς σ Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω

Obiekty z Wikidanych użyte na tej stronie

Szablony użyte w tym artykule:

Ta strona jest w jednej ukrytej kategorii: