Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
SQL - Wikipedia, wolna encyklopedia

SQL

Z Wikipedii

SQL (ang. Structured Query Language wym. /ɛskjuːˈɛl/, rzadziej /ˈsiːkwəl/) – strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych.

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

Jest to język zapytań opracowany w latach siedemdziesiątych w firmie IBM. Stał się on standardem w komunikacji z serwerami relacyjnych baz danych. Wiele współczesnych systemów relacyjnych baz danych używa do komunikacji z użytkownikiem SQL, dlatego 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. 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.

Spis treści

[edytuj] Standardy SQL

W 1986 roku SQL stał się oficjalnym standardem, wspieranym przez Międzynarodową Organizację Normalizacyjną (ISO) i jej członka, Amerykański Narodowy Instytut Normalizacji (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 implementacji. Z czasem jednak systemy komputerowe uległy integracji i rynek zaczął domagać się 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ł SQL92, obowiązujący w produktach komercyjnych do dziś.

[edytuj] Funkcje silnika i middleware

Produkty związane z relacyjnymi bazami danych to nie tylko serwery. Sam serwer określa się często takimi nazwami jak "back end", "engine", czy też "motor/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", "middleware" 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 multimedialnych, systemy tworzenia hipertekstu, systemy CAD/CAM, arkusze kalkulacyjne, jak również 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 no.

[edytuj] 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:

  1. SQL interakcyjny lub 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ą jego przekierowania do pliku lub drukarki.
  2. 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.
    1. 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.
    2. 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 języków proceduralnych. Jest to pierwotne podejście, zaproponowane w standardzie SQL. Embedded SQL został do oficjalnej specyfikacji włączony nieco później.
  3. 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.

Wymagania tych trzech form różnią się i znajduje to odbicie w wykorzystywanych przez nie konstrukcjach językowych. Zarówno statyczny, jak i dynamiczny SQL uzupełniają formę autonomiczną cechami odpowiednimi tylko w określonych sytuacjach. Większość języka pozostaje jednak dla wszystkich form identyczna.

[edytuj] Składnia SQL

Użycie SQL, zgodnie z jego nazwą, polega na zadawaniu zapytań do bazy danych. Zapytania można zaliczyć do jednego z trzech głównych podzbiorów:

  • SQL DML (ang. Data Manipulation Language, czyli Język Manipulacji Danymi),
  • SQL DDL (ang. Data Definition Language, czyli Język Definicji Danych).
  • SQL DCL (ang. Data Control Language, czyli Język Kontroli nad Danymi).

Instrukcje SQL w obrębie zapytań tradycyjnie zapisywane są wielkimi literami, jednak nie jest to wymóg. Każde zapytanie w SQL-u musi kończyć się znakiem ";" (średnik).

Dodatkowo, niektóre programy do łączenia się z silnikiem bazy danych (np. psql w przypadku PostgreSQL), używają swoich własnych instrukcji, spoza standardu SQL, które służą np. do połączenia się z bazą, wyświetlenia dokumentacji, itp.

[edytuj] DML

DML (Data Manipulation Language) służy do operacji na danych – do ich umieszczania w bazie, kasowania, przeglądania, zmiany. Najważniejsze polecenia z tego zbioru to:

  • SELECT – pobranie z bazy danych,
  • INSERT – umieszczenie danych w bazie,
  • UPDATE – zmiana danych,
  • DELETE – usunięcie danych z bazy.

Dane tekstowe podawane muszą być zawsze w formie ograniczonej znakami pojedynczego cudzysłowu (').

[edytuj] DDL

Dzięki DDL (Data Definition Language) natomiast, można operować na strukturach, w których te dane są przechowywane – czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy to:

  • CREATE (np. CREATE TABLE, CREATE DATABASE, ...) – utworzenie struktury (bazy, tabeli, indeksu, itp.),
  • DROP (np. DROP TABLE, DROP DATABASE, ...) – całkowite usunięcie struktury,
  • ALTER (np. ALTER TABLE ADD COLUMN ...) – zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli).

[edytuj] DCL

DCL (Data Control Language) ma zastosowanie do nadawania uprawnień do obiektów bazodanowych. Najważniejsze polecenie w tej grupie to:

  • GRANT (np. GRANT ALL PRIVILEGES ON EMPLOYEE TO PIOTR WITH GRANT OPTION) – przyznanie wszystkich praw do tabeli EMP użytkownikowi PIOTR z opcją pozwalającą PIOTR'owi nadawać prawa do tego obiektu (tabela EMP).
  • REVOKE -odebranie wszystkich praw do tabeli użytkownikowi nadaną przez polecenie GRANT.
  • DENY.

[edytuj] Przykładowe zapytania

Przykładowe użycie wyżej wymienionych rodzajów zapytań.

  SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;

Zwraca tabelę (listę) utworzoną z tabeli pracownicy (FROM pracownicy) wszystkich jej kolumn (*) zawierającą pracowników, których pensja jest większa niż 2000 (WHERE pensja > 2000) i sortuje wynik malejąco według stażu pracy (ORDER BY staz DESC).

  INSERT INTO pracownicy (imie, nazwisko, pensja, staz) VALUES ('Jan', 'Kowalski', 5500, 1);

Dodaje do tabeli pracownicy (INTO pracownicy) wiersz (rekord) zawierający dane pojedynczego pracownika.

  UPDATE pracownicy SET pensja = pensja * 1.1 WHERE staz > 2;

Podnosi o 10% (SET pensja = pensja * 1.1) pensję pracownikom, których staż jest większy niż 2 (np. lata).

  DELETE FROM pracownicy WHERE imie = 'Jan' AND nazwisko = 'Kowalski';

Usuwa z tabeli "pracownicy" wiersz (rekord) dotyczący pracownika o imieniu "Jan" i nazwisku "Kowalski".

  CREATE TABLE pracownicy (imie varchar(255), nazwisko varchar(255), pensja float, staz int);

Tworzy tabelę "pracownicy" zawierającą tekstowe (varchar – zmiennej długości pole tekstowe) pola "imię" i "nazwisko", o maksymalnej długości 255 znaków, zapisaną za pomocą liczby rzeczywistej (float od ang. floating point) pensję oraz zapisany za pomocą liczby całkowitej (int od ang. integer) staż.

  DROP TABLE pracownicy;

Usuwa z bazy całkowicie tabelę "pracownicy".

  ALTER TABLE pracownicy ADD dzial varchar(255);

Dodaje do struktury tabeli "pracownicy" kolumnę "dzial" (dział), jako pole tekstowe o długości max. 255 znaków.

[edytuj] Bezpieczeństwo

Jako, że SQL jest językiem interpretowanym, istnieje potencjał do 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 odpowiednią walidację danych wejściowych stanowiących część zapytania, atakujący może być w stanie dopisać do zapytania ("wstrzyknąć") dodatkowe komendy lub zmienić ich sposób działania. Atak taki nazywa się SQL injection (wstrzyknięcie kodu za pomocą SQL).

Zobacz więcej w osobnym artykule: SQL injection.

[edytuj] SQL:2003

W roku 2003 przedstawiono SQL:2003 – nowy standard języka SQL. opublikowano w Sigmod Record Vol.33 Nr.1 Marzec 2004. Jest to głównie poprawione SQL:1999 z wyjątkiem części SQL/XML oraz kilku dodatkowych właściwości.

W SQL:2003 wprowadzono:

  1. Nowe typy danych (BIGINT, MULTISET oraz XML)
  2. Usunięto typy BIT oraz BIT VARYING
  3. Rozszerzenia w sposobie wywoływania procedur
  4. Poszerzono instrukcję CREATE TABLE (CREATE TABLE { LIKE | AS } )
  5. Wprowadzono instrukcję MERGE
  6. Wprowadzono nowy obiekt schematu – generator sekwencji
  7. Wprowadzono dwa nowe typy kolumn – identyfikatory oraz generowane
  8. Retrospektywne sprawdzanie więzów integralności
  9. Rozszerzenia dla OLAP w formie wbudowanych funkcji (skalarnych i agregujących)
  10. Klauzula WINDOW

Prowadzone są również prace nad alternatywnymi językami zapytań opartymi na SQL. Przykładem takiego języka może być język ciągłych zapytań CQL lub język SQL wyposażony w możliwość przetwarzania sekwencji danych AQuery.

[edytuj] Systemy bazodanowe używające SQL

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com