Aby utworzyć tabelę w SQL Server za pomocą zapytania:
- W programie SQL Server Management Studio kliknij Nowe zapytanie przycisk na pasku narzędzi
- Wpisz lub wklej
CREATE TABLE
skrypt (przykład poniżej) - Kliknij ! Wykonaj przycisk na pasku narzędzi
Oto przykład:
Skrypt CREATE TABLE
Oto skrypt SQL w powyższym przykładzie:
CREATE TABLE Status( StatusId int IDENTITY(1,1) NOT NULL, StatusName varchar(50) NOT NULL, DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated DEFAULT (getdate()), CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId) )
Skrypt wykonuje następujące czynności:
- tworzy tabelę
- dodaje 3 kolumny
- ustawia typ danych
- określa, że StatusId jest kolumną tożsamości i że wartość pierwszego rekordu będzie wynosić 1, a wartość każdego kolejnego rekordu wzrośnie o 1
- określa, że dowolna wartość w kolumnie StatusName może mieć maksymalną długość 50
- określa, że wartości NULL są niedozwolone
- ustawia domyślną wartość bieżącej daty dla kolumny DateCreated
- ustawia pole StatusId jako klucz podstawowy
Jest to podstawowy skrypt, który tworzy tylko jedną małą tabelkę. Możesz równie łatwo uruchomić skrypt, który tworzy całą bazę danych, ze wszystkimi jej obiektami, danymi i uprawnieniami za jednym razem.
Poprawa skryptu
Podczas tworzenia obiektów bazy danych dobrą praktyką jest sprawdzenie, czy obiekt już istnieje, czy nie. Zapobiega to występowaniu błędów, gdy skrypt próbuje utworzyć tabelę, która jest już w bazie danych.
Uruchamiaj tylko wtedy, gdy tabela jeszcze nie istnieje
Do powyższego skryptu można dodać następujący wiersz, dzięki czemu skrypt CREATE TABLE będzie działał tylko wtedy, gdy tabela nie istnieje już w bazie danych (lub tabela o tej samej nazwie):
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='Status' AND xtype='U')
Tak więc cały skrypt wyglądałby tak:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='Status' AND xtype='U') CREATE TABLE Status( StatusId int IDENTITY(1,1) NOT NULL, StatusName varchar(50) NOT NULL, DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated DEFAULT (getdate()), CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId) )
Wymień tabelę, jeśli już istnieje
Skrypt można również przepisać, aby zastąpić tabelę, jeśli już istnieje. Można to zrobić najpierw, upuszczając istniejącą tabelę, a następnie tworząc nową.
Serwer SQL 2016
W SQL Server 2016 wprowadzono klauzulę DROP IF EXISTS. Tak więc w SQL Server 2016 możemy dodać na początku skryptu następujące elementy:
DROP TABLE IF EXISTS [TaskTracker].[Status]
(TaskTracker to nazwa bazy danych. Status to nazwa tabeli).
DROP TABLE IF EXISTS [TaskTracker].[Status] CREATE TABLE Status( StatusId int IDENTITY(1,1) NOT NULL, StatusName varchar(50) NOT NULL, DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated DEFAULT (getdate()), CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId) )
SQL Server 2014 i wcześniejsze
Jeśli używasz wcześniejszej wersji SQL Server, możesz użyć następujących poleceń, aby usunąć istniejącą tabelę:
IF EXISTS (SELECT * FROM sysobjects WHERE name='Status' AND xtype='U') DROP TABLE Status
Tak więc cały skrypt wyglądałby tak:
IF EXISTS (SELECT * FROM sysobjects WHERE name='Status' AND xtype='U') DROP TABLE Status CREATE TABLE Status( StatusId int IDENTITY(1,1) NOT NULL, StatusName varchar(50) NOT NULL, DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated DEFAULT (getdate()), CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId) )
Generowanie skryptu z istniejącej tabeli
Skrypt SQL można wygenerować z istniejącej tabeli za pomocą Eksploratora obiektów w GUI SSMS. Gdy to zrobisz, SQL Server wygeneruje cały kod SQL z tabeli i utworzy skrypt.
Aby to zrobić, po prostu kliknij prawym przyciskiem myszy tabelę i wybierz Tabela skryptów jako... następnie postępuj zgodnie z instrukcjami.
Nie ogranicza się to tylko do tabel – możesz skryptować dowolny obiekt bazy danych przy użyciu tej samej metody.
Jeśli nie masz doświadczenia w tworzeniu skryptów SQL, możesz spróbować utworzyć tabelę za pomocą GUI, a następnie wygenerować skrypt SQL z tabeli.