Strukturalny język zapytań ( SQL ) ( wymawiane / ˌɛsˌkjuˈɛl / SQL ; lub alternatywnie jako / ˈsiːkwəl / " sequel ") [4] [5] to język specyficzny dla danej dziedziny , używany do zarządzania danymi, zwłaszcza w systemach zarządzania relacyjnymi bazami danych ( RDBMS ) . Jest on szczególnie przydatny w obsłudze danych strukturalnych , tj . danych obejmujących relacje między encjami i zmiennymi.
Wprowadzony w latach 70. XX wieku SQL oferował dwie główne zalety w porównaniu ze starszymi API do odczytu i zapisu, takimi jak ISAM lub VSAM . Po pierwsze, wprowadził koncepcję dostępu do wielu rekordów za pomocą jednego polecenia . Po drugie, eliminuje potrzebę określania sposobu dotarcia do rekordu, tj. z indeksem lub bez niego .
Początkowo oparty na algebrze relacyjnej i rachunku relacyjnym krotek , język SQL składa się z wielu typów instrukcji, [6] które można nieformalnie klasyfikować jako podjęzyki , powszechnie: język zapytań o dane (DQL), język definicji danych (DDL), język kontroli danych (DCL) i język manipulacji danymi (DML). [7]
Zakres języka SQL obejmuje zapytania o dane, manipulację danymi (wstawianie, aktualizowanie i usuwanie), definicję danych ( tworzenie i modyfikowanie schematu ) oraz kontrolę dostępu do danych. Chociaż SQL jest zasadniczo językiem deklaratywnym ( 4GL ), zawiera również elementy proceduralne .
SQL był jednym z pierwszych języków komercyjnych, który wykorzystywał relacyjny model Edgara F. Codda . Model ten został opisany w jego wpływowym artykule z 1970 r. „A Relational Model of Data for Large Shared Data Banks” [8] . Pomimo że SQL nie był w pełni zgodny z modelem relacyjnym opisanym przez Codda , stał się najszerzej używanym językiem baz danych. [9] [10]
SQL stał się standardem Amerykańskiego Narodowego Instytutu Normalizacyjnego (ANSI) w 1986 r., a Międzynarodowej Organizacji Normalizacyjnej (ISO) w 1987 r. [11] Od tego czasu standard był wielokrotnie rewidowany, aby uwzględnić większy zestaw funkcji i włączyć wspólne rozszerzenia. Pomimo istnienia standardów, praktycznie żadne istniejące implementacje nie są w pełni zgodne z nim, a większość kodu SQL wymaga co najmniej pewnych zmian przed przeniesieniem do innych systemów baz danych .
Historia
Język SQL został pierwotnie opracowany w firmie IBM przez Donalda D. Chamberlina i Raymonda F. Boyce’a po tym, jak na początku lat 70. XX wieku zapoznali się z modelem relacyjnym od Edgara F. Codda [12] . Wersja ta, początkowo nazywana SEQUEL (Structured English Query Language), została zaprojektowana do manipulowania danymi i pobierania ich przechowywanych w oryginalnym quasi-relacyjnym systemie zarządzania bazą danych IBM, System R , który grupa badawcza w IBM San Jose Research Laboratory opracowała w latach 70. XX wieku. [13]
Pierwszą próbą Chamberlina i Boyce'a w zakresie języka relacyjnej bazy danych był SQUARE (Specifying Queries in A Relational Environment), ale był trudny w użyciu ze względu na notację dolną/górną. Po przeprowadzce do San Jose Research Laboratory w 1973 r. rozpoczęli pracę nad sequelem SQUARE. [12] Oryginalna nazwa SEQUEL, która jest powszechnie uważana za grę słów na QUEL , języku zapytań Ingresa , [ 14] została później zmieniona na SQL (pomijając samogłoski), ponieważ „SEQUEL” był znakiem towarowym brytyjskiej firmy Hawker Siddeley Dynamics Engineering Limited. [15] Etykieta SQL stała się później akronimem Structured Query Language.
Po przetestowaniu języka SQL w ośrodkach testowych klientów w celu określenia przydatności i praktyczności systemu firma IBM rozpoczęła opracowywanie produktów komercyjnych opartych na prototypie System R, w tym System/38 , SQL/DS i IBM Db2 , które były dostępne w sprzedaży odpowiednio w latach 1979, 1981 i 1983. [16]
Pod koniec lat 70. Relational Software, Inc. (obecnie Oracle Corporation ) dostrzegło potencjał koncepcji opisanych przez Codda, Chamberlina i Boyce'a i opracowało własny RDBMS oparty na SQL , mając nadzieję na jego sprzedaż Marynarce Wojennej USA , Centralnej Agencji Wywiadowczej i innym agencjom rządowym USA . W czerwcu 1979 r. Relational Software wprowadziło jedną z pierwszych dostępnych komercyjnie implementacji SQL, Oracle V2 (wersja 2) dla komputerów VAX .
W 1986 r. grupy normalizacyjne ANSI i ISO oficjalnie przyjęły standardową definicję języka „Database Language SQL”. Nowe wersje standardu zostały opublikowane w latach 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011, [12] 2016 i ostatnio w 2023 r. [17]
Składnia
Język SQL dzieli się na kilka elementów językowych, w tym:
- Klauzule , które są składnikami oświadczeń i zapytań. (W niektórych przypadkach są opcjonalne.) [18]
- Wyrażenia , które mogą generować wartości skalarne lub tabele składające się z kolumn i wierszy danych
- Predykaty określają warunki, które można ocenić na podstawie logiki trójwartościowej SQL (3VL) (prawda/fałsz/nieznany) lub wartości logicznych . Są stosowane w celu ograniczenia efektów instrukcji i zapytań lub zmiany przepływu programu.
- Zapytania , które pobierają dane na podstawie określonych kryteriów. To ważny element SQL .
- Instrukcje , które mogą mieć trwały wpływ na schematy i dane lub mogą kontrolować transakcje , przepływ programu, połączenia, sesje lub diagnostykę.
- Instrukcje SQL zawierają również średnik (";") kończący instrukcję. Chociaż nie jest wymagany na każdej platformie, jest zdefiniowany jako standardowa część gramatyki SQL.
- Nieznaczne odstępy są na ogół ignorowane w poleceniach i zapytaniach SQL, co ułatwia formatowanie kodu SQL w celu zwiększenia jego czytelności.
Rozszerzenia proceduralne
SQL jest przeznaczony do określonego celu: do wykonywania zapytań dotyczących danych zawartych w relacyjnej bazie danych . SQL jest opartym na zbiorach , deklaratywnym językiem programowania , a nie językiem programowania imperatywnego, takim jak C lub BASIC . Jednak rozszerzenia standardowego SQL dodają funkcjonalność języka programowania proceduralnego , taką jak konstrukcje kontroli przepływu.
Oprócz standardowych rozszerzeń SQL/PSM i zastrzeżonych rozszerzeń SQL, programowalność proceduralna i obiektowa jest dostępna na wielu platformach SQL poprzez integrację DBMS z innymi językami. Standard SQL definiuje rozszerzenia SQL/JRT (SQL Routines and Types for the Java Programming Language) w celu obsługi kodu Java w bazach danych SQL. Microsoft SQL Server 2005 używa SQLCLR (SQL Server Common Language Runtime) do hostowania zarządzanych zestawów .NET w bazie danych , podczas gdy wcześniejsze wersje SQL Server były ograniczone do niezarządzanych rozszerzonych procedur składowanych napisanych głównie w języku C. PostgreSQL umożliwia użytkownikom pisanie funkcji w szerokiej gamie języków — w tym Perl , Python , Tcl , JavaScript (PL/V8) i C. [19]
Interoperacyjność i standaryzacja
Przegląd
Implementacje SQL są niezgodne między dostawcami i niekoniecznie w pełni przestrzegają standardów. W szczególności składnia daty i godziny, łączenie ciągów, NULLs i wrażliwość na wielkość liter w porównaniach różnią się w zależności od dostawcy. PostgreSQL [20] i Mimer SQL [21] dążą do zgodności ze standardami, chociaż PostgreSQL nie przestrzega standardu we wszystkich przypadkach. Na przykład składanie nazw bez cudzysłowów do małych liter w PostgreSQL jest niezgodne ze standardem SQL [22], który mówi, że nazwy bez cudzysłowów powinny być składane do wielkich liter. [23] Zatem zgodnie ze standardem Foopowinno być równoważne FOO, nie foo.
Popularne implementacje SQL powszechnie pomijają obsługę podstawowych funkcji Standard SQL, takich jak typy danych DATElub TIME. Najbardziej oczywiste przykłady, a przy okazji najpopularniejsze komercyjne i zastrzeżone systemy DBMS SQL, to Oracle (który DATEzachowuje się jak DATETIME, [24] [25] i nie ma TIMEtypu) [26] i MS SQL Server (przed wersją 2008). W rezultacie kod SQL rzadko może być przenoszony między systemami baz danych bez modyfikacji.
Powody niezgodności
Istnieje kilka powodów braku przenośności między systemami baz danych:
- Złożoność i rozmiar standardu SQL oznaczają, że większość implementatorów nie obsługuje całego standardu.
- Standard SQL nie określa zachowania bazy danych w niektórych ważnych obszarach (np. indeksy , przechowywanie plików), pozostawiając implementacjom decyzję dotyczącą sposobu zachowania.
- Standard SQL pozostawia niektóre decyzje indywidualnym implementacjom, na przykład jak nazwać kolumnę wyników, która nie została nazwana jawnie. [27] : 207
- Standard SQL precyzyjnie określa składnię, którą musi wdrożyć zgodny system bazy danych. Jednak specyfikacja semantyki konstrukcji językowych w standardzie jest mniej dobrze zdefiniowana, co prowadzi do niejednoznaczności.
- Wielu dostawców baz danych ma już dużą bazę klientów; jeśli nowsza wersja standardu SQL koliduje z wcześniejszym zachowaniem bazy danych dostawcy, dostawca może nie być skłonny do zerwania wstecznej kompatybilności .
- Dostawcy nie mają zbyt wielu bodźców komercyjnych, aby ułatwiać zmianę dostawców baz danych (patrz uzależnienie od dostawcy ).
- Użytkownicy oceniający oprogramowanie baz danych zwykle przywiązują większą wagę do innych czynników, np. wydajności, niż do zgodności ze standardami.
Historia standaryzacji
SQL został przyjęty jako standard przez ANSI w 1986 r. jako SQL-86 [28], a przez ISO w 1987 r. [11] Jest on utrzymywany przez ISO/IEC JTC 1, Technologia informacyjna, Podkomisja SC 32, Zarządzanie danymi i wymiana .
Do 1996 r. program standardów zarządzania danymi Narodowego Instytutu Norm i Technologii (NIST) certyfikował zgodność systemów DBMS SQL ze standardem SQL. Obecnie dostawcy sami certyfikują zgodność swoich produktów. [29]
Oryginalny standard deklarował, że oficjalną wymową słowa „SQL” jest skrót : / ˌ ɛ s ˌ k juː ˈ ɛ l / ( „ess cue el”). [9] Mimo to wielu anglojęzycznych specjalistów od baz danych (w tym sam Donald Chamberlin [30] ) używa akronimowej wymowy / ˈ s iː k w əl / („sequel”), [31] odzwierciedlającej nazwę języka w wersji przedpremierowej, „SEQUEL”. [13] [15] [30]
Standard SQL przeszedł szereg rewizji:
Obecny standard
Norma jest powszechnie oznaczana wzorem: ISO/IEC 9075-n:yyyy Część n: tytuł lub, jako skrót, ISO/IEC 9075. Zainteresowane strony mogą zakupić dokumenty norm od ISO, [36] IEC lub ANSI. Niektóre stare projekty są dostępne bezpłatnie. [37] [38] [39]
Normę ISO/IEC 9075 uzupełnia norma ISO/IEC 13249: Pakiety aplikacji i multimediów SQL oraz niektóre raporty techniczne .
Alternatywy
Należy rozróżnić alternatywy dla języka SQL i alternatywy dla samego modelu relacyjnego. Poniżej przedstawiono proponowane relacyjne alternatywy dla języka SQL. Zobacz nawigacyjną bazę danych i NoSQL , aby zapoznać się z alternatywami dla modelu relacyjnego.
- .QL : obiektowo zorientowany Datalog
- Język zapytań 4D (4D QL)
- Datalog : krytycy twierdzą, że Datalog ma dwie zalety w porównaniu z SQL: ma czystszą semantykę, która ułatwia zrozumienie i konserwację programu, a także jest bardziej ekspresywny, w szczególności w przypadku zapytań rekurencyjnych. [40]
- HTSQL : metoda zapytania oparta na adresie URL
- IBM Business System 12 (IBM BS12): jeden z pierwszych w pełni relacyjnych systemów zarządzania bazami danych, wprowadzony w 1982 r.
- NIŻSZY
- jOOQ : SQL zaimplementowany w Javie jako wewnętrzny język domenowy
- Język zapytań Java Persistence Query Language (JPQL): język zapytań używany przez interfejs API Java Persistence i bibliotekę trwałości Hibernate
- JavaScript : MongoDB implementuje swój język zapytań w interfejsie API JavaScript.
- LINQ : uruchamia instrukcje SQL napisane w formie konstrukcji językowych, aby wykonywać zapytania do kolekcji bezpośrednio z poziomu kodu .Net
- Język zapytań obiektowych
- QBE ( Query By Example ) stworzony przez Moshè Zloof, IBM 1977
- QUEL wprowadzony w 1974 roku przez projekt Ingres na Uniwersytecie Kalifornijskim w Berkeley, bliższy rachunkowi relacyjnemu krotkowemu niż SQL
- Zapytanie X
Rozproszone przetwarzanie SQL
Architektura rozproszonej relacyjnej bazy danych (DRDA) została opracowana przez grupę roboczą w IBM w latach 1988–1994. DRDA umożliwia współpracę połączonych sieciowo relacyjnych baz danych w celu realizacji żądań SQL. [41] [42]
Interaktywny użytkownik lub program może wydawać polecenia SQL do lokalnej bazy danych RDB i otrzymywać tabele danych i wskaźników stanu w odpowiedzi ze zdalnych baz danych RDB. Polecenia SQL mogą być również kompilowane i przechowywane w zdalnych bazach danych RDB jako pakiety, a następnie wywoływane według nazwy pakietu. Jest to ważne dla wydajnego działania programów aplikacji, które wydają złożone zapytania o wysokiej częstotliwości. Jest to szczególnie ważne, gdy tabele, do których ma być uzyskiwany dostęp, znajdują się w zdalnych systemach.
Wiadomości, protokoły i komponenty strukturalne DRDA są definiowane przez Distributed Data Management Architecture . Rozproszone przetwarzanie SQL ala DRDA różni się od współczesnych rozproszonych baz danych SQL.
Krytyka
Projekt
SQL odbiega na kilka sposobów od swoich podstaw teoretycznych, modelu relacyjnego i rachunku krotek. W tym modelu tabela jest zbiorem krotek , podczas gdy w SQL tabele i wyniki zapytania są listami wierszy; ten sam wiersz może występować wielokrotnie, a kolejność wierszy może być wykorzystywana w zapytaniach (np. w klauzuli LIMIT). Krytycy twierdzą, że SQL powinien zostać zastąpiony językiem, który powraca ściśle do pierwotnej podstawy: na przykład zobacz The Third Manifesto autorstwa Hugh Darwena i CJ Date (2006, ISBN 0-321-39942-0 ).
Ortogonalność i zupełność
Wczesne specyfikacje nie obsługiwały głównych funkcji, takich jak klucze podstawowe. Zestawów wyników nie można było nazwać, a podzapytania nie zostały zdefiniowane. Zostały one dodane w 1992 r. [12]
Brak typów sum został opisany jako przeszkoda uniemożliwiająca pełne wykorzystanie typów zdefiniowanych przez użytkownika języka SQL. Na przykład obsługa JSON musiała zostać dodana przez nowy standard w 2016 r. [43]
Nieważny
Koncepcja wartości Null jest przedmiotem pewnej debaty . Znacznik Null wskazuje na brak wartości i jest różny od wartości 0 dla kolumny całkowitej lub pustego ciągu dla kolumny tekstowej. Koncepcja wartości Null wymusza logikę 3-wartościową w SQL , która jest konkretną implementacją ogólnej logiki 3-wartościowej . [12]
Duplikaty
Inną popularną krytyką jest to, że pozwala na duplikowanie wierszy, co utrudnia integrację z językami takimi jak Python , których typy danych mogą utrudniać dokładne przedstawienie danych [12] pod względem parsowania i braku modułowości. Zwykle unika się tego, deklarując klucz podstawowy lub ograniczenie unikalności z jedną lub większą liczbą kolumn, które jednoznacznie identyfikują wiersz w tabeli.
Niedopasowanie impedancji
Podobnie jak w przypadku niedopasowania impedancji obiektowo-relacyjnej , niedopasowanie występuje pomiędzy deklaratywnym językiem SQL a językami proceduralnymi, w których SQL jest zwykle osadzony. [ potrzebne źródło ]
Typy danych SQL
Standard SQL definiuje trzy rodzaje typów danych (rozdział 4.1.1 SQL/Foundation):
- wstępnie zdefiniowane typy danych
- typy konstruowane
- typy zdefiniowane przez użytkownika.
Konstruowane typy to ARRAY, MULTISET, REF(erence) lub ROW. Typy zdefiniowane przez użytkownika są porównywalne do klas w języku obiektowym z własnymi konstruktorami, obserwatorami, mutatorami, metodami, dziedziczeniem, przeciążaniem, nadpisywaniem, interfejsami itd. Wstępnie zdefiniowane typy danych są wewnętrznie obsługiwane przez implementację.
Predefiniowane typy danych
- Typy znaków
- Znak (CHAR)
- Zmienność znaku (VARCHAR)
- Duży obiekt znakowy (CLOB)
- Typy charakteru narodowego
- Charakter narodowy (NCHAR)
- Zmienność charakteru narodowego (NCHAR VARYING)
- Duży obiekt znaku narodowego (NCLOB)
- Typy binarne
- Binarny (BINARNY)
- Zmienna binarna (VARBINARY)
- Duży obiekt binarny (BLOB)
- Typy numeryczne
- Dokładne typy liczbowe (NUMERIC, DECIMAL, SMALLINT, INTEGER, BIGINT)
- Przybliżone typy liczbowe (FLOAT, REAL, DOUBLE PRECISION)
- Typ dziesiętny zmiennoprzecinkowy (DECFLOAT)
- Typy daty i godziny (DATA, CZAS, ZNACZNIK CZASU)
- Typ interwału (INTERVAL)
- Wartość logiczna
- XML (patrz SQL/XML ) [44]
- JSON
Zobacz także
- Baza obiektów
- Lista systemów zarządzania bazami danych relacyjnymi
- Porównanie systemów zarządzania bazami danych relacyjnymi
- Porównanie obiektów i systemów zarządzania bazami danych relacyjno-obiektowych
- Zapytanie według przykładu
- Zastrzeżone słowa SQL
- Składnia SQL
- Oracle PL/SQL
- Język Transact-SQL (T-SQL)
- Przetwarzanie transakcji online (OLTP)
- Przetwarzanie analityczne online (OLAP)
- Magazyn danych
- System zarządzania strumieniem danych relacyjnych
- NoSQL
- ŚWINKA
- Hierarchiczny model bazy danych
- Schemat gwiazdy
- Schemat płatka śniegu
Notatki
Odniesienia
- ^ Paul, Ryan (24 października 2005). „A guided tour of the Microsoft Command Shell”. Ars Technica . Pobrano 10 kwietnia 2011 .
- ^ „Rejestracja typu nośnika dla aplikacji/sql”. Internet Assigned Numbers Authority . 10 kwietnia 2013 . Pobrano 10 kwietnia 2013 .
- ^ Shafranovich, Y. (kwiecień 2013). „Typ nośnika application/sql, RFC 6922”. Internet Engineering Task Force . s. 3. doi :10.17487/RFC6922 . Pobrano 10 kwietnia 2013 .
- ^ Beaulieu, Alan (kwiecień 2009). Mary E Treseler (red.). Learning SQL (wyd. 2). Sebastopol, CA, USA: O'Reilly. ISBN 978-0-596-52083-0.
- ^ Chamberlin, Donald D.; Frana, Philip L. (2001-10-03). „Wywiad historii mówionej z Donaldem D. Chamberlinem”. University Digital Conservancy . hdl :11299/107215 . Pobrano 2020-01-14 .
Zmieniliśmy oryginalną nazwę „SEQUEL” na SQL, ponieważ dostaliśmy list od czyjegoś prawnika, który stwierdził, że nazwa „SEQUEL” należy do niego. Skróciliśmy ją do SQL, od Structured Query Language, a produkt był znany jako SQL/DS.
- ^ SQL-92 , 4.22 Instrukcje SQL, 4.22.1 Klasy instrukcji SQL „Istnieje co najmniej pięć sposobów klasyfikowania instrukcji SQL:”, 4.22.2, Instrukcje SQL klasyfikowane według funkcji „Oto główne klasy instrukcji SQL:”; SQL:2003 4.11 Instrukcje SQL i późniejsze wersje.
- ^ Chatham, Mark (2012). Strukturalny język zapytań na przykładzie - Tom I: Język zapytań do danych. Lulu.com. s. 8. ISBN 9781291199512.
- ^ Codd, Edgar F. (czerwiec 1970). „Relacyjny model danych dla dużych współdzielonych banków danych”. Communications of the ACM . 13 (6): 377–87. CiteSeerX 10.1.1.88.646 . doi :10.1145/362384.362685. S2CID 207549016.
- ^ ab Chapple, Mike. „Podstawy SQL”. Databases . About.com . Pobrano 2009-01-28 .
- ^ „Structured Query Language (SQL)”. International Business Machines. 27 października 2006. Pobrano 2007-06-10 .
- ^ ab "ISO 9075:1987: Technologia informatyczna – Języki baz danych – SQL – Część 1: Framework (SQL/Framework)". 1987-06-01.
- ^ abcdef Chamberlin, Donald (2012). „Wczesna historia SQL”. IEEE Annals of the History of Computing . 34 (4): 78–82. doi :10.1109/MAHC.2012.61. S2CID 1322572.
- ^ abc Chamberlin, Donald D; Boyce, Raymond F (1974). „SEQUEL: A Structured English Query Language” (PDF) . Materiały z warsztatów ACM SIGFIDET z 1974 r. na temat opisu danych, dostępu i kontroli . Association for Computing Machinery: 249–64. Zarchiwizowano z oryginału (PDF) 2007-09-26 . Pobrano 2007-06-09 .
- ^ Starkey, Jim. „Dynamiczny SQL, instalacje hydrauliczne i wewnętrzne API”. www.ibphoenix.com . Pobrano 2023-01-19 .
- ^ ab Oppel, Andy (27 lutego 2004). Databases Demystified. San Francisco, CA : McGraw-Hill Osborne Media. s. 90–1. ISBN 978-0-07-146960-9.
- ^ „Historia IBM, 1978”. Archiwa IBM . IBM. 23 stycznia 2003. Zarchiwizowano z oryginału 17 stycznia 2005. Pobrano 2007-06-09 .
- ^ „ISO - ISO/IEC JTC 1/SC 32 - Zarządzanie danymi i wymiana” . www.iso.org . Źródło 2 stycznia 2021 r .
- ^ ANSI/ISO/IEC International Standard (IS). Język baz danych SQL — część 2: Podstawy (SQL/Foundation). 1999.
- ^ „Programowanie serwera PostgreSQL”. Oficjalna dokumentacja PostgreSQL 9.1 . postgresql.org. 2011. Pobrano 2012-03-09 .
- ^ „O PostgreSQL”. Oficjalna strona internetowa PostgreSQL 9.1 . PostgreSQL Global Development Group. 2012. Pobrano 9 marca 2012.
PostgreSQL szczyci się zgodnością ze standardami. Jego implementacja SQL jest ściśle zgodna ze standardem ANSI-SQL:2008
. - ^ „Mimer SQL, zbudowany na standardach”. Oficjalna strona Mimer SQL . Mimer Information Technology. 2009.
- ^ „4.1. Struktura leksykalna”. Dokumentacja PostgreSQL . 2018.
- ^ „(Drugi nieformalny projekt przeglądu) ISO/IEC 9075:1992, Język baz danych SQL, Sekcja 5.2, reguła składniowa 11”. 30 lipca 1992.
- ^ Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep; Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown, Lance; Baer, Hermann; Bellamkonda, Shrikanth (październik 2010) [1996]. „Podstawowe elementy Oracle SQL: typy danych”. Oracle Database SQL Language Reference 11g Release 2 (11.2) . Biblioteka dokumentacji bazy danych Oracle. Redwood City, CA: Oracle USA, Inc . Pobrano 29 grudnia 2010 .
Dla każdej
wartości Oracle przechowuje następujące informacje: wiek, rok, miesiąc, datę, godzinę, minutę i sekundę.
DATE - ^ Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep; Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown, Lance; Baer, Hermann; Bellamkonda, Shrikanth (październik 2010) [1996]. „Podstawowe elementy Oracle SQL: typy danych”. Oracle Database SQL Language Reference 11g Release 2 (11.2) . Biblioteka dokumentacji bazy danych Oracle. Redwood City, CA: Oracle USA, Inc . Pobrano 29 grudnia 2010 .
Typy danych datetime to
...
DATE - ^ Lorentz, Diana; Roeser, Mary Beth; Abraham, Sundeep; Amor, Angela; Arora, Geeta; Arora, Vikas; Ashdown, Lance; Baer, Hermann; Bellamkonda, Shrikanth (październik 2010) [1996]. „Podstawowe elementy Oracle SQL: typy danych”. Oracle Database SQL Language Reference 11g Release 2 (11.2) . Biblioteka dokumentacji bazy danych Oracle. Redwood City, CA: Oracle USA, Inc . Pobrano 29 grudnia 2010 .
Nie definiuj kolumn z następującymi typami danych SQL/DS i DB2, ponieważ nie mają one odpowiadającego im typu danych Oracle:...
TIME - ^ Data, Chris J. (2013). Teoria relacyjna dla profesjonalistów komputerowych: czym naprawdę są relacyjne bazy danych (1. wyd.). Sebastopol, Kalifornia: O'Reilly Media. ISBN 978-1-449-36943-9.
- ^ „Pomoc w znalezieniu”. X3H2 Records, 1978–95 . Amerykański Narodowy Instytut Normalizacyjny.
- ^ Doll, Shelley (19 czerwca 2002). „Czy SQL jest już standardem?”. TechRepublic's Builder.com . TechRepublic. Zarchiwizowano z oryginału 2012-07-05 . Pobrano 2016-04-12 .
- ^ ab Gillespie, Patrick. „Wymawianie SQL: SQL czy sequel?” . Pobrano 12 lutego 2012 r .
- ^ Melton, Jim; Alan R Simon (1993). „1.2. Co to jest SQL?” . Zrozumieć nowy SQL: kompletny przewodnik. Morgan Kaufmann. s. 536. ISBN 978-1-55860-245-8.
SQL (poprawnie wymawiane „ess cue ell”, zamiast dość powszechnego „sequel”)...
- ^ Wagner, Michael (2010). SQL/XML:2006 - Ocena standardowej konformität ausgewählter Datenbanksysteme . Wydawnictwo Dyplomowe. P. 100. ISBN 978-3-8366-9609-8.
- ^ „SQL:2008 jest teraz zatwierdzonym międzynarodowym standardem ISO”. Sybase. Lipiec 2008. Zarchiwizowano z oryginału 2011-06-28.
- ^ Krishna Kulkarni, Jan-Eike Michels (wrzesień 2012). „Funkcje tymczasowe w SQL: 2011” (PDF) . Rekord SIGMOD . 41 (3).
- ^ Fred Zemke (2012). „Co nowego w SQL:2011” (PDF) . Oracle Corporation.
- Norma ISO/IEC 9075
- ^ SQL:1992 projekt (tekst)
- ^ Projekt SQL:2008 (Zip) , Whitemarsh Information Systems Corporation
- ^ Projekt SQL:2011, Whitemarsh Information Systems Corporation, zarchiwizowano z oryginału (Zip) 25 maja 2023 r.
- ^ Fernando Saenz-Perez. „Połączenia zewnętrzne w dedukcyjnym systemie bazy danych” (PDF) . Lbd.udc.es . Pobrano 2017-01-16 .
- ^ Reinsch, R. (1988). „Rozproszona baza danych dla SAA”. IBM Systems Journal . 27 (3): 362–389. doi :10.1147/sj.273.0362.
- ^ Dokument referencyjny dotyczący architektury rozproszonej relacyjnej bazy danych . IBM Corp. SC26-4651-0. 1990.
- ^ Brandon, Jamie (lipiec 2021). „Against SQL” . Pobrano 2 sierpnia 2021 .
- ^ „Obsługa standardu SQL 2003 w bazie danych Oracle 10g” (PDF) . Oracle . Oracle Corporation . Listopad 2003 . Pobrano 2024-03-27 .Obsługę formatu XML dodano w ANSI SQL 2003, część 14.
Źródła
- Codd, Edgar F (czerwiec 1970). „Relacyjny model danych dla dużych współdzielonych banków danych”. Communications of the ACM . 13 (6): 377–87. doi : 10.1145/362384.362685 . S2CID 207549016.
- Dyskusja na temat domniemanych luk w SQL (wiki C2)
- CJ Date z Hugh Darwenem : Przewodnik po standardzie SQL: podręcznik użytkownika standardowego języka baz danych SQL, wyd. 4 , Addison Wesley, USA 1997, ISBN 978-0-201-96426-4
Linki zewnętrzne
- 1995 SQL Reunion: People, Projects, and Politics, autorstwa Paula McJonesa (red.): zapis spotkania absolwentów poświęconego osobistej historii relacyjnych baz danych i języka SQL.
- American National Standards Institute. Zapisy X3H2, 1978–1995. Kolekcja Charles Babbage Institute dokumentuje prace komitetu H2 nad standardami NDL i SQL.
- Wywiad historii mówionej z Donaldem D. Chamberlinem Charles Babbage Institute W tej historii mówionej Chamberlin opowiada o swoim wczesnym życiu, edukacji w Harvey Mudd College i na Uniwersytecie Stanforda oraz o swojej pracy nad technologią relacyjnych baz danych. Chamberlin był członkiem zespołu badawczego System R i wraz z Raymondem F. Boyce'em opracował język baz danych SQL. Chamberlin krótko omawia również swoje nowsze badania nad językami zapytań XML.