SQL

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