2009-06-04 9 views
6

Pamiętam w college'u zajęcia z bazy danych, w ramach których my, studenci, mieliśmy możliwość wyboru naszego Systemu Zarządzania Bazą Danych. Będąc moim pierwszym doświadczeniem z bazami danych pamiętam, że byłem zdezorientowany, że składnia instrukcji SQL różniła się w zależności od używanego Systemu Zarządzania Bazą Danych. Aż do tej klasy miałem wrażenie, że język SQL jest językiem uniwersalnym, z którego użytkownik mógłby się komunikować ze wszystkimi bazami danych.Czy istnieje zdefiniowany i zaakceptowany standardowy język SQL?

Więc jaka jest umowa? Czy istnieje zdefiniowany standard SQL? Jeśli tak, dlaczego producenci systemów zarządzania bazami danych różnią się od specyfikacji? Czy standard został zaprojektowany jako niekompletny z myślą, że firmy wykorzystają go jako podstawę do rozszerzenia języka? Czy oryginalny standard SQL był nieaktualny, a producenci potrzebowali więcej funkcjonalności? Czy oryginał nie był aktualizowany w tempie zgodnym z najnowszymi potrzebami aplikacji? Czy to było stworzenie modelu biznesowego dla przychodów?

Dzięki.

Odpowiedz

7

Tak, istnieją standardy SQL ANSI, zobacz np. a draft of the SQL-92 one. Jednak każdy dostawca baz danych implementuje "rozszerzony podzbiór" standardowego SQL - a jeśli o tym pomyślisz, wszystko jest w pewnym sensie "rozszerzonym podzbiorem" czegoś innego ;-). Nie ma wątpliwości, że istnieją ku temu powody, ale nawet niekomercyjne implementacje, takie jak PostgreSQL, zachowują się tak samo ...

+0

Wiem, że mój wykładowca z Podstawowej Bazy Danych powiedział, że używa PostgresSQL na podstawie tego, że był "najbardziej podobny" do tradycyjnego standardu SQL. Nie wiem, czy to prawda, czy nie. – Margaret

+0

Może, ale PostgreSQL z pewnością ma swoje własne rozszerzenia - słodkie i użyteczne, ale też poza standardem ;-). –

+0

Czy standardem może być tylko "Wybierz język tłumaczenia"? – gimel

8

Istnieje SQL standardy:

http://en.wikipedia.org/wiki/SQL#Standardization

Jednak większość DBMS nadal realizują nieco zwyczaj lub rozszerzoną wersją standardu. (Microsoft SQL Server jest głównym podejrzanym).

+1

Czy masz jakieś porównanie "Orable vy Sybase vs MS SQL Server vs kompatybilność MySQL ANSI? Czy to tylko założenie, ponieważ jest to stwardnienie rozsiane? – gbn

+1

SQL Server naprawdę nie jest taki zły, kiedy zastanowisz się, co robi MySQL. Z mojego doświadczenia wynika, że ​​Oracle z komercyjnego świata i Firebird ze świata open source to najbardziej zgodne z normami systemy DBMS. –

+0

Wikipedia mówi, że składnia PL/SQL bardzo przypomina składankę Ady. Od kiedy to jest ANSI SQL? – gbn

4

Możesz różnić się między językiem manipulowania danymi (SELECT, UPDATE, INSERT: SQL), językiem definicji danych (CREATE, DELETE: SQL), język sterowania danymi (GRANT: SQL).

SQL może obejmować wszystkie te części, ale czasami dostawcy nie podoba im się sposób, w jaki robi to SQL. Czasem nie implementują części (patrz DCL). Jeszcze częściej standard "tropi" po rzeczywistości (zobacz wyrażenia Xpath w DML) i po prostu tworzą własną składnię.

3

był oryginalny standardem SQL nieaktualne i producenci potrzebne do zbudowania więcej funkcjonalność? Czy oryginał nie został zaktualizowany w , aby być na bieżąco z najnowszymi potrzebami aplikacji? Czy to było stworzyć model biznesowy dla przychodów?

Myślę, że to są główne czynniki. Standard nie obejmował niektórych przydatnych funkcji, a dostawcy chętnie dodawali funkcje, które sprawiłyby, że klienci wybierają ich implementację, a nie lobbowanie, aby jak najszybciej ujednolicić standard.

2

Istnieje standaryzowany SQL. Inne odpowiedzi wskazują, że dostawcy baz danych mają rozszerzenia specyficzne dla ich silników baz danych.

Z mojego doświadczenia z bazami danych (szczególnie w przypadku dużych baz danych), próba wdrożenia bazy danych "cross vendor" ma niewielkie znaczenie. Rozszerzenia w języku definicji danych, na przykład, pozwalają programistom/dba na optymalizację wydajności bazy danych przy użyciu specyficznych funkcji dostawcy (np. Phisical reprezentacja tabel, szczegóły dotyczące przechowywania tabeli, właściwości indeksów, itp.). W przypadku zapytań ponownie w przypadku dużych baz danych może być konieczne podanie wskazówek do silnika bazy danych w celu zbudowania planu wykonania.Składnia podpowiedzi jest po raz kolejny specyficzna dla dostawcy.

Oto kilka przykładów "niestandardowych" funkcji, które mogą mieć znaczący wpływ.

Ponownie, z mojego doświadczenia, niestety, wielu klientów lub technicznych facetów (architektów?) Zwraca mniejszą uwagę na szczegóły bazy danych i tęskni za potężnymi funkcjami bazy danych zapewniającej zarządzanie danymi i dostęp.

Powiązane problemy