SQL: Różnice pomiędzy wersjami

Z Encyklopedia Zarządzania
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

  1. Gierszewska G., Romanowska M., 2003, s. 20-23
  2. Jurkiewicz Z., 2018, s. 2-4
  3. Mendrala D., Szeliga M., 2008, s. 7-11
  4. Beaulieu A., 2009, s. 45
  5. Nield T., 2017, s-5-6

Autor: Łukasz Matug, Kinga Przewoźnik