W języku SQL, aby utworzyć nową bazę danych, należy zastosować polecenie
A.
CREATE DATABASE
B.
NEW DATABASE
C.
INSERT DATABASE
D.
CREATE INTO
Polecenie CREATE DATABASE jest właściwą składnią SQL służącą do utworzenia nowej bazy danych. W praktyce zapisuje się je zwykle z nazwą bazy, na przykład: CREATE DATABASE sklep; albo CREATE DATABASE szkola;. Słowo CREATE należy do grupy poleceń DDL, czyli Data Definition Language, odpowiedzialnych za definiowanie struktury danych: baz, tabel, indeksów, widoków i innych obiektów. DATABASE wskazuje, że tworzonym obiektem ma być właśnie baza danych, a nie tabela czy użytkownik. Moim zdaniem warto od razu zapamiętać pełny schemat: najpierw operacja, potem typ obiektu, potem nazwa. To pomaga później przy CREATE TABLE, ALTER TABLE czy DROP DATABASE. W dobrych praktykach branżowych nazwę bazy zapisuje się czytelnie, bez spacji i polskich znaków, np. firma_crm albo blog_app. W wielu systemach, takich jak MySQL, PostgreSQL czy SQL Server, mogą dojść jeszcze opcje związane z kodowaniem znaków, uprawnieniami albo właścicielem bazy, ale podstawowa idea zostaje taka sama: CREATE DATABASE tworzy pustą bazę, do której dopiero potem dodaje się tabele i dane.
W SQL tworzenie bazy danych nie polega na wstawianiu danych ani na użyciu ogólnego słowa NEW. To częsty skrót myślowy, bo w zwykłym języku mówimy: utwórz nową bazę, więc komuś może się wydawać, że składnia NEW DATABASE byłaby logiczna. Problem w tym, że SQL ma ściśle określone słowa kluczowe i ich kolejność. Standardowo do definiowania nowych obiektów służy CREATE, a nie NEW. SQL nie jest językiem opisowym w stylu naturalnego zdania, tylko językiem deklaratywnym z konkretną gramatyką, więc takie zamiany słów po prostu nie przejdą w interpreterze zapytań.
INSERT DATABASE także jest niepoprawne, ponieważ INSERT służy do dodawania rekordów do istniejącej tabeli, na przykład INSERT INTO uczniowie (...). Nie tworzy ani bazy, ani tabeli. To polecenie należy do DML, czyli Data Manipulation Language, a więc pracuje na danych, które już mają gdzie trafić. Z mojego doświadczenia wynika, że uczniowie często mylą tworzenie struktury z dodawaniem zawartości. Najpierw trzeba mieć bazę i tabele, dopiero później sens ma INSERT.
CREATE INTO też nie pasuje do tej sytuacji. CREATE rzeczywiście rozpoczyna polecenia tworzące obiekty, ale INTO jest kojarzone raczej z operacjami wstawiania albo kopiowania danych, zależnie od systemu bazodanowego, np. INSERT INTO. Nie określa typu tworzonego obiektu. Poprawna składnia musi jasno mówić, że tworzona jest baza danych, dlatego używa się CREATE DATABASE nazwa_bazy;. W praktyce warto pilnować tej różnicy, bo błędna komenda zatrzyma skrypt instalacyjny aplikacji albo migrację bazy, a potem człowiek szuka problemu nie tam gdzie trzeba.
INSERT DATABASE także jest niepoprawne, ponieważ INSERT służy do dodawania rekordów do istniejącej tabeli, na przykład INSERT INTO uczniowie (...). Nie tworzy ani bazy, ani tabeli. To polecenie należy do DML, czyli Data Manipulation Language, a więc pracuje na danych, które już mają gdzie trafić. Z mojego doświadczenia wynika, że uczniowie często mylą tworzenie struktury z dodawaniem zawartości. Najpierw trzeba mieć bazę i tabele, dopiero później sens ma INSERT.
CREATE INTO też nie pasuje do tej sytuacji. CREATE rzeczywiście rozpoczyna polecenia tworzące obiekty, ale INTO jest kojarzone raczej z operacjami wstawiania albo kopiowania danych, zależnie od systemu bazodanowego, np. INSERT INTO. Nie określa typu tworzonego obiektu. Poprawna składnia musi jasno mówić, że tworzona jest baza danych, dlatego używa się CREATE DATABASE nazwa_bazy;. W praktyce warto pilnować tej różnicy, bo błędna komenda zatrzyma skrypt instalacyjny aplikacji albo migrację bazy, a potem człowiek szuka problemu nie tam gdzie trzeba.