SQL: Różnice pomiędzy wersjami
m (Infobox5 upgrade) |
mNie podano opisu zmian |
||
(Nie pokazano 7 wersji utworzonych przez 2 użytkowników) | |||
Linia 1: | Linia 1: | ||
'''SQL'''-jest to strukturalny, standaryzowany język dostępu do [[Dane|danych]] przechowanych w relacyjnej bazie danych. Skrót '''SQL''' nie jest akronimem żadnej nazwy - choć często powtarzanym błędem jest rozwijanie go do "Structured Query Language". Język ten charakteryzuje się bardzo dużą popularnością. Co więcej jest on interpretowany przez wiele systemów baz danych takich jak: DB2, MySQL czy też Microsoft SQL Server. Jego zadaniem jest wysyłanie zapytań tzw. '''query''' do określonej bazy oraz dostarczeniu [[Użytkownik|użytkownikowi]] wyników w postaci danych<ref>Gierszewska G., Romanowska M., 2003, s. 20-23</ref> Różnicą między językami programowania, a językiem SQL polega na tym, że nie jest on przeznaczony do programowania lecz tylko do skomplikowanych operacji na określonych danych, które umieszczone są w bazie, dlatego też w środowisku programistów nazywa się go "podjęzykiem | '''SQL'''-jest to strukturalny, standaryzowany język dostępu do [[Dane|danych]] przechowanych w relacyjnej bazie danych. Skrót '''SQL''' nie jest akronimem żadnej nazwy - choć często powtarzanym błędem jest rozwijanie go do "Structured Query Language". Język ten charakteryzuje się bardzo dużą popularnością. Co więcej jest on interpretowany przez wiele systemów baz danych takich jak: DB2, MySQL czy też Microsoft SQL Server. Jego zadaniem jest wysyłanie zapytań tzw. '''query''' do określonej bazy oraz dostarczeniu [[Użytkownik|użytkownikowi]] wyników w postaci danych<ref>Gierszewska G., Romanowska M., 2003, s. 20-23</ref> Różnicą między językami programowania, a językiem SQL polega na tym, że nie jest on przeznaczony do programowania lecz tylko do skomplikowanych operacji na określonych danych, które umieszczone są w bazie, dlatego też w środowisku programistów nazywa się go "podjęzykiem danych". | ||
==TL;DR== | ==TL;DR== | ||
Linia 5: | Linia 5: | ||
==Historia== | ==Historia== | ||
Historia języka SQL rozpoczyna się w 1970 podczas gdy '''dr E.F. Codd''' z [[laboratorium]] badawczym '''IBM''' opublikował [[dokument]] "[[Model]] relacyjny dla dużych podzielonych zbiorów danych" którego tezy, stanowią podstawę oraz standard najpopularniejszych współcześnie [[system]]ów relacyjnych baz danych. Doktor Codd zaproponował by [[informacje]] prezentować w postaci tabel połączonych ze sobą wskaźnikami (indeksami), a do operacji na nich wykorzystać autorski język DSL/Alpha. Krótko po publikacji IBM stworzyło [[prototyp]] opierający się na założeniach doktora Codda i zaaprobowało uproszczoną wersję języka DSL/Alpha nazywając go '''SQUARE''', a kolejne wersje SEQUEL, aż finalnie SQL. Projektowi dr E.F. Codda zaufało wówczas [[przedsiębiorstwo]] Oracle, które użyło po raz pierwszy języka SQL do swoich produktów | Historia języka SQL rozpoczyna się w 1970 podczas gdy '''dr E.F. Codd''' z [[laboratorium]] badawczym '''IBM''' opublikował [[dokument]] "[[Model]] relacyjny dla dużych podzielonych zbiorów danych" którego tezy, stanowią podstawę oraz standard najpopularniejszych współcześnie [[system]]ów relacyjnych baz danych. Doktor Codd zaproponował by [[informacje]] prezentować w postaci tabel połączonych ze sobą wskaźnikami (indeksami), a do operacji na nich wykorzystać autorski język DSL/Alpha. Krótko po publikacji IBM stworzyło [[prototyp]] opierający się na założeniach doktora Codda i zaaprobowało uproszczoną wersję języka DSL/Alpha nazywając go '''SQUARE''', a kolejne wersje SEQUEL, aż finalnie SQL. Projektowi dr E.F. Codda zaufało wówczas [[przedsiębiorstwo]] Oracle, które użyło po raz pierwszy języka SQL do swoich produktów. Późniejszą współpracę nad rozpowszechnieniem języka SQL spowodowały wprowadzenie koniecznych zmian w podstawach SQL oraz przedstawieniem '''standardu języka'''. Podaję się, że pierwsza [[standaryzacja]] wykonana przez ANSI (American National Standards Institute) nastąpiła w 1986 a następne utworzono wersje w latach 1989, 1992, 1999, 2003 i 2006. | ||
<google> | |||
<google>n</google> | |||
==RDBMS== | ==RDBMS== | ||
Linia 30: | Linia 31: | ||
Język SQL podzielony jest na kilka podtypów, w zależności od rodzaju wykonywanych przez zapytania operacji. Do najważniejszych należą<ref>Beaulieu A., 2009, s. 45</ref>: | Język SQL podzielony jest na kilka podtypów, w zależności od rodzaju wykonywanych przez zapytania operacji. Do najważniejszych należą<ref>Beaulieu A., 2009, s. 45</ref>: | ||
::*DDL (Data Definition Language) - typ wykorzystywany do tworzenie struktur fizycznych bazy danych. Mamy w niej więc zapytania | ::*DDL (Data Definition Language) - typ wykorzystywany do tworzenie struktur fizycznych bazy danych. Mamy w niej więc zapytania CREATE (utwórz strukturę), ALTER (zmień strukturę), DROP (usuń strukturę) | ||
::*DCL (Data Control Language) - typ wykorzystywane do nadawania uprawnień dostępowych do struktur fizycznych bazy. Znajdują się w niej zapytania GRANT oraz REVOKE. | ::*DCL (Data Control Language) - typ wykorzystywane do nadawania uprawnień dostępowych do struktur fizycznych bazy. Znajdują się w niej zapytania GRANT oraz REVOKE. | ||
::*DML (Data Manipulation Language) - typ wykorzystywane do operacji na zgromadzonych danych. Należą do niego operacje SELECT (Odczyt danych), INSERT (dodanie danych), UPDATE (aktualizacja danych), DELETE (usunięcie danych). | ::*DML (Data Manipulation Language) - typ wykorzystywane do operacji na zgromadzonych danych. Należą do niego operacje SELECT (Odczyt danych), INSERT (dodanie danych), UPDATE (aktualizacja danych), DELETE (usunięcie danych). | ||
Linia 45: | Linia 46: | ||
==Bezpieczeństwo== | ==Bezpieczeństwo== | ||
SQL nie należy do jednych z bezpiecznych języków z racji swojego interpretowanego charakteru. Co więcej, występują przypadki nadużycia podczas projektowania zapytań związanych z parametrami z zewnętrznych aplikacji. Bardzo wrażliwe na takie nadużycia są również witryny internetowe, które projektowane przy pomocy wykorzystania baz danych. Takie sytuacje najczęściej spowodowane są niedopatrzeniem podczas projektowania [[Portal internetowy|portali]].<ref>Nield T., 2017, s-5-6</ref> Niestety niesie to za sobą ogromne konsekwencje, ponieważ źle zabezpieczona [[baza danych]] może być zaatakowana w wyniku czego część danych może zniknąć lub zostać zmienionych. W środowisku programistów taka sytuacja nazwana jest '''SQL Injection'''. Aby nie dopuścić do takich sytuacji warto zatem zadbać o wykonanie walidacji podczas tworzenia baz danych. | SQL nie należy do jednych z bezpiecznych języków z racji swojego interpretowanego charakteru. Co więcej, występują przypadki nadużycia podczas projektowania zapytań związanych z parametrami z zewnętrznych aplikacji. Bardzo wrażliwe na takie nadużycia są również witryny internetowe, które projektowane przy pomocy wykorzystania baz danych. Takie sytuacje najczęściej spowodowane są niedopatrzeniem podczas projektowania [[Portal internetowy|portali]].<ref>Nield T., 2017, s-5-6</ref> Niestety niesie to za sobą ogromne konsekwencje, ponieważ źle zabezpieczona [[baza danych]] może być zaatakowana w wyniku czego część danych może zniknąć lub zostać zmienionych. W środowisku programistów taka sytuacja nazwana jest '''SQL Injection'''. Aby nie dopuścić do takich sytuacji warto zatem zadbać o wykonanie walidacji podczas tworzenia baz danych. | ||
{{infobox5|list1={{i5link|a=[[UML]]}} — {{i5link|a=[[Sieć komputerowa]]}} — {{i5link|a=[[Mikroserwisy]]}} — {{i5link|a=[[CAD]]}} — {{i5link|a=[[C (język programowania)]]}} — {{i5link|a=[[Firewall]]}} — {{i5link|a=[[JavaScript]]}} — {{i5link|a=[[Programowanie]]}} — {{i5link|a=[[SmallTalk (język programowania)]]}} }} | |||
==Przypisy== | ==Przypisy== | ||
<references /> | <references /> | ||
==Bibliografia== | ==Bibliografia== | ||
<noautolinks> | <noautolinks> | ||
* Beaulieu A. | * Beaulieu A. (2009), ''Learning SQL'', O'Reilly Media Inc | ||
* Gierszewska G., Romanowska M. (2003), ''Zarządzanie strategiczne'', Polskie Wydawnictwo Ekonomiczne, Warszawa | * Gierszewska G., Romanowska M. (2003), ''Zarządzanie strategiczne'', Polskie Wydawnictwo Ekonomiczne, Warszawa | ||
* Gramacki A. | * Gramacki A. (2012), ''[https://staff.uz.zgora.pl/agramack/files/BazyDanych/podstawy_baz_danych.pdf Bazy danych]'', Uniwersytet Zielonogórski, Instytut Sterowania i Systemów Informatycznych, Zielona Góra | ||
* Mendrala D., Szeliga M. (2008), ''SQL - praktyczny kurs'', Helion, Gliwice | |||
* Mendrala D., Szeliga M. | * Nield T. (2017), ''Pierwsze kroki z SQL'', Helion, Gliwice | ||
* Nield T. | * Oppel A., Sheldon R. (2009), ''A Beginner's Guide SQL'', McGraw Hill | ||
* Oppel A., Sheldon R. | * Wilton P., Colby J. (2005), ''[https://pdf.helion.pl/sqlpod/sqlpod-1.pdf SQL. Od podstaw]'', Helion, Gliwice | ||
* Wilton P., Colby J. | |||
</noautolinks> | </noautolinks> | ||
Aktualna wersja na dzień 23:42, 5 sty 2024
SQL-jest to strukturalny, standaryzowany język dostępu do danych przechowanych w relacyjnej bazie danych. Skrót SQL nie jest akronimem żadnej nazwy - choć często powtarzanym błędem jest rozwijanie go do "Structured Query Language". Język ten charakteryzuje się bardzo dużą popularnością. Co więcej jest on interpretowany przez wiele systemów baz danych takich jak: DB2, MySQL czy też Microsoft SQL Server. Jego zadaniem jest wysyłanie zapytań tzw. query do określonej bazy oraz dostarczeniu użytkownikowi wyników w postaci danych[1] Różnicą między językami programowania, a językiem SQL polega na tym, że nie jest on przeznaczony do programowania lecz tylko do skomplikowanych operacji na określonych danych, które umieszczone są w bazie, dlatego też w środowisku programistów nazywa się go "podjęzykiem danych".
TL;DR
SQL to język dostępu do danych w relacyjnych bazach danych. Jest interpretowany przez wiele systemów baz danych. Jego historia sięga lat 70. SQL umożliwia tworzenie struktur baz danych, operacje na danych oraz zarządzanie nimi. Język SQL ma różne typy zapytań, takie jak DDL, DCL i DML. SQL jest używany w zarządzaniu przedsiębiorstwem, ale może być również niebezpieczny ze względu na możliwość ataków SQL Injection.
Historia
Historia języka SQL rozpoczyna się w 1970 podczas gdy dr E.F. Codd z laboratorium badawczym IBM opublikował dokument "Model relacyjny dla dużych podzielonych zbiorów danych" którego tezy, stanowią podstawę oraz standard najpopularniejszych współcześnie systemów relacyjnych baz danych. Doktor Codd zaproponował by informacje prezentować w postaci tabel połączonych ze sobą wskaźnikami (indeksami), a do operacji na nich wykorzystać autorski język DSL/Alpha. Krótko po publikacji IBM stworzyło prototyp opierający się na założeniach doktora Codda i zaaprobowało uproszczoną wersję języka DSL/Alpha nazywając go SQUARE, a kolejne wersje SEQUEL, aż finalnie SQL. Projektowi dr E.F. Codda zaufało wówczas przedsiębiorstwo Oracle, które użyło po raz pierwszy języka SQL do swoich produktów. Późniejszą współpracę nad rozpowszechnieniem języka SQL spowodowały wprowadzenie koniecznych zmian w podstawach SQL oraz przedstawieniem standardu języka. Podaję się, że pierwsza standaryzacja wykonana przez ANSI (American National Standards Institute) nastąpiła w 1986 a następne utworzono wersje w latach 1989, 1992, 1999, 2003 i 2006.
RDBMS
Każde z zapytań SQL odbywa się w systemie informatyczny, określanym jako RDBMS (ang. Relational Database Management Systems). Są to zbiory oprogramowań o różnym charakterze trudności - od łatwych (np. dBase) do bardzo skomplikowanych (np. Paradox czy tez Oracle). Oprogramowania o skomplikowanym charakterze cechuje przede wszystkim szeroka perspektywa podczas współpracy z bazami danych oraz umiejętność integrowania w wyjątkowych sytuacjach pracy dużej liczby użytkowników jednocześnie w sieci komputerowej. Oferuję to dużą swobodę i ułatwienie działania dla każdego użytkownika wykonującego w tym czasie prace gdyż każda pula danych umieszczana jest natychmiast i jest również udostępniana innym. Do najpopularniejszych na rynku produktów tego typu możemy zaliczyć: Sybase, DB2, MySQL i Microsoft SQL Server (SQL Server).[2]
Tabele
Podstawą struktura w relacyjnej bazie danych jest tabela wypełniona danymi. Składa się ona z pół ułożony w wierszach i kolumnach przechowująca jeden wartość o typie określonym przez kolumnę w której się znajduje. Dzięki takiej budowie możliwe jest wykorzystanie algorytmów reprezentowanych przez język SQL. Dane w bazie danych są połączone ze sobą relacjami i wymagane jest by ich zbiór był ze sobą wewnętrznie spójny.
Encja
Encja reprezentuje obiekt w bazie danych który stanowi jedną całość. Z założenia nie ma jednoznacznej definicji która opisuje czym jest encja. Może ona przedstawiać zarówno obiekty materialne jak i nie materialne, które składają się z wielu części określanych jako atrybuty encji.
Przykłady:
- osoba (na którą składają się imię, nazwisko, nr pesel).
- miasto (na którą składa się nazwa, kod pocztowy, szerokość geograficzna, długość geograficzna)
Relacje pomiędzy encjami Pomiędzy encjami zachodzą relacje, stanowiące fundament bazy danych. Główne relacje to:
- Jeden do jednego - w tej relacji encja jest połączona dokładnie z jedna inna encja.
- Jeden do wielu - w tej relacji encja z jeden strony może być połączona z wieloma encjami z jej drugiej strony (np. jeden człowiek może mieć wiele kont bankowych).
- Wiele to wielu - w tej relacji encje mogą być połączone z wieloma encjami z strony przedziwnej
Podstawowe typy zapytań SQL
Język SQL podzielony jest na kilka podtypów, w zależności od rodzaju wykonywanych przez zapytania operacji. Do najważniejszych należą[3]:
- DDL (Data Definition Language) - typ wykorzystywany do tworzenie struktur fizycznych bazy danych. Mamy w niej więc zapytania CREATE (utwórz strukturę), ALTER (zmień strukturę), DROP (usuń strukturę)
- DCL (Data Control Language) - typ wykorzystywane do nadawania uprawnień dostępowych do struktur fizycznych bazy. Znajdują się w niej zapytania GRANT oraz REVOKE.
- DML (Data Manipulation Language) - typ wykorzystywane do operacji na zgromadzonych danych. Należą do niego operacje SELECT (Odczyt danych), INSERT (dodanie danych), UPDATE (aktualizacja danych), DELETE (usunięcie danych).
Przykładowe zapytanie może wyglądać następująco:
SELECT imie, nazwisko from pracownicy where nazwisko = ‘Nowak’
Zaprezentuje ono wszystkie wpisy z tabeli pracownicy w których Polu Nazwisko znajduje się "Nowak".
SQL a zarządzanie przedsiębiorstwem
Język SQL posiada oczywiście pewne ograniczenia - obecne systemy wspomagania decyzji wymagają bardzo szybkiego dostępu do ogromnych ilości danych. Ze względu na rozległość operacji tradycyjne zapytania mógłby wykonywać się w trudnym do zaakceptowania czasie - zwłaszcza że podejmowane na ich podstawie decyzje często są konieczne do wprowadzenia "od zaraz". W związku z tym powstał szereg systemów typu "Hurtownia danych" gdzie podejście do realizacji jest inne niż w tradycyjnym modelu RBMS. Dane są w określonych cyklach wczytywane do systemu i użytkownicy, poza gronem analityków danych, nie ma dostępu do wykonywania zapytań SQL. Korzystają oni z predefiniowanych raportów, które wykonywane są w czasie zmniejszonego zapotrzebowania (np. nocy). W dużych organizacjach wykorzystanie hurtowni danych ich wykorzystanie jest niemal niezbędne - dzięki temu kadra managerska jest w stanie w nieskomplikowany sposób, nie wymagający znajomości zapytań SQL, uzyskiwać raporty dotyczące przedsiębiorstwa.
Bezpieczeństwo
SQL nie należy do jednych z bezpiecznych języków z racji swojego interpretowanego charakteru. Co więcej, występują przypadki nadużycia podczas projektowania zapytań związanych z parametrami z zewnętrznych aplikacji. Bardzo wrażliwe na takie nadużycia są również witryny internetowe, które projektowane przy pomocy wykorzystania baz danych. Takie sytuacje najczęściej spowodowane są niedopatrzeniem podczas projektowania portali.[4] Niestety niesie to za sobą ogromne konsekwencje, ponieważ źle zabezpieczona baza danych może być zaatakowana w wyniku czego część danych może zniknąć lub zostać zmienionych. W środowisku programistów taka sytuacja nazwana jest SQL Injection. Aby nie dopuścić do takich sytuacji warto zatem zadbać o wykonanie walidacji podczas tworzenia baz danych.
SQL — artykuły polecane |
UML — Sieć komputerowa — Mikroserwisy — CAD — C (język programowania) — Firewall — JavaScript — Programowanie — SmallTalk (język programowania) |
Przypisy
Bibliografia
- Beaulieu A. (2009), Learning SQL, O'Reilly Media Inc
- Gierszewska G., Romanowska M. (2003), Zarządzanie strategiczne, Polskie Wydawnictwo Ekonomiczne, Warszawa
- Gramacki A. (2012), Bazy danych, Uniwersytet Zielonogórski, Instytut Sterowania i Systemów Informatycznych, Zielona Góra
- Mendrala D., Szeliga M. (2008), SQL - praktyczny kurs, Helion, Gliwice
- Nield T. (2017), Pierwsze kroki z SQL, Helion, Gliwice
- Oppel A., Sheldon R. (2009), A Beginner's Guide SQL, McGraw Hill
- Wilton P., Colby J. (2005), SQL. Od podstaw, Helion, Gliwice
Autor: Łukasz Matug, Kinga Przewoźnik