SQL: Różnice pomiędzy wersjami
m (Infobox update) |
(LinkTitles.) |
||
Linia 19: | Linia 19: | ||
==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.<ref>Jurkiewicz Z., 2018, s. 2-4</ref> Późniejsze 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 (Amercian National Standards Institute) nastąpiła w 1986 a następne utworzono wersje w latach 1989, 1992, 1999, 2003 i 2006. | 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.<ref>Jurkiewicz Z., 2018, s. 2-4</ref> Późniejsze 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 (Amercian National Standards Institute) nastąpiła w 1986 a następne utworzono wersje w latach 1989, 1992, 1999, 2003 i 2006. | ||
<google>t</google> | <google>t</google> | ||
Linia 26: | Linia 26: | ||
==Tabele== | ==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. | 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== | ||
Linia 33: | Linia 33: | ||
Przykłady: | Przykłady: | ||
::* osoba (na którą składają się imię, nazwisko, nr pesel). | ::* 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) | ::* [[miasto]] (na którą składa się nazwa, kod pocztowy, szerokość geograficzna, długość geograficzna) | ||
Relacje pomiędzy encjami | Relacje pomiędzy encjami | ||
Linia 58: | Linia 58: | ||
==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. | ||
== Bibliografia == | == Bibliografia == | ||
Linia 65: | Linia 65: | ||
* Gramacki A., 2012,[http://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 | * Gramacki A., 2012,[http://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 | ||
* Jurkiewicz Z., 2018,[http://students.mimuw.edu.pl/~zbyszek/bazy-danych/mat/pl/slides/sql.pdf''Bazy danych- Język SQL''], Uniwersytet Warszawski, Warszawa | * Jurkiewicz Z., 2018,[http://students.mimuw.edu.pl/~zbyszek/bazy-danych/mat/pl/slides/sql.pdf''Bazy danych- Język SQL''], Uniwersytet Warszawski, Warszawa | ||
* Mendrala D., Szeliga M., 2008, ''SQL - praktyczny kurs'', Helion, Gliwice | * Mendrala D., Szeliga M., 2008, ''SQL - praktyczny [[kurs]]'', Helion, Gliwice | ||
* Nield T., 2017,[https://pdf.helion.pl/pksqlp/pksqlp.pdf''Pierwsze kroki z SQL''], Helion, Gliwice | * Nield T., 2017,[https://pdf.helion.pl/pksqlp/pksqlp.pdf''Pierwsze kroki z SQL''], Helion, Gliwice | ||
* Oppel A., Sheldon R., 2009, ''A Beginner's Guide SQL'', Mc Graw Hill | * Oppel A., Sheldon R., 2009, ''A Beginner's Guide SQL'', Mc Graw Hill |
Wersja z 23:20, 21 maj 2020
SQL |
---|
Polecane artykuły |
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 daych”.
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.[2] Późniejsze 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 (Amercian 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).[3]
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żą[4]:
- DDL (Data Definition Language) – typ wykorzystywany do tworzenie struktur fizycznych bazy danych. Mamy w niej więc zapytania CREA TE (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.[5] 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.
Bibliografia
- Beaulieu A., 2009, Learning SQL, 2nd Edition , O'Reilly Media Inc
- Gierszewska G., Romanowska M" 2003, Zarządzanie strategiczne, Polskie Wydawnictwo Ekonomiczne S. A., Warszawa
- Gramacki A., 2012,Bazy danych, Uniwersytet Zielonogórski, Instytut Sterowania i Systemów Informatycznych, Zielona Góra
- Jurkiewicz Z., 2018,Bazy danych- Język SQL, Uniwersytet Warszawski, Warszawa
- 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, Mc Graw Hill
- Wilton P., Colby J., 2005,SQL. Od podstaw, Helion, Gliwice
Przypisy
Autor: Łukasz Matug, Kinga Przewoźnik