Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте таблица в SQL Server 2017

Тук създаваме три таблици в SQL Server, след което анализираме скрипта, който ги е създал. Изпълняваме и друг скрипт, за да проверим дали таблицата е създадена.

По-рано създадохме база данни от скрипт. Въпреки това базата данни е празна база данни - тя не съдържа таблици или данни.

Сега ще създадем някои таблици за нашата база данни.

Първо, за освежаване, ето какво направихме досега:

CREATE DATABASE Music;

Това създаде празна база данни. Ако все още не сте го направили, стартирайте този скрипт.

Сега стартирайте следния скрипт:

USE Music;

CREATE TABLE Artists (
  ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  ArtistName nvarchar(255) NOT NULL,
  ActiveFrom date
);
GO

CREATE TABLE Genres (
  GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  Genre nvarchar(50) NOT NULL
);

CREATE TABLE Albums (
  AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  AlbumName nvarchar(255) NOT NULL,
  ReleaseDate date NOT NULL,
  ArtistId int NOT NULL,
  GenreId int NOT NULL

  CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
    REFERENCES dbo.Artists (ArtistId)     
    ON DELETE NO ACTION    
    ON UPDATE NO ACTION    
);

Този скрипт добавя три таблици към базата данни. Таблиците се наричат ​​Artists , Genres и Albums .

Ето резултата в SQL Operations Studio/Azure Data Studio:

Всеки GUI инструмент ще покаже таблиците по почти същия начин. Всяка таблица може да бъде разширена, за да разкрие нейните колони, както и всички индекси, тригери, ключове и т.н. Можете също да разширите Колоните възел, за да разкрие списъка с колони и техните типове данни, както и всички ограничения, които са били посочени.

Обяснение на CREATE TABLE Изявление

Скриптът, който току-що изпълнихме, се състои от три CREATE TABLE изрази — всеки от тях създава различна таблица. Скриптът добавя и ограничение за външен ключ, но ще го разгледаме по-късно.

Засега нека анализираме първия CREATE TABLE изявление в нашия скрипт:

USE Music;

CREATE TABLE Artists (
  ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  ArtistName nvarchar(255) NOT NULL,
  ActiveFrom date
);
GO

Този SQL израз създава таблица, наречена Artists с три колони, наречени ArtistId , ArtistName и ActiveFrom . Дефиницията на всяка колона започва с нейното име, последвано от нейния тип данни и всички ограничения, които трябва да бъдат приложени към тази колона.

Ето по-подробно описание "ред по ред":

USE Music;
Тази част всъщност не е част от CREATE TABLE изявление. Той е там само за превключване към Музика база данни. Може да има много бази данни на сървъра и искаме да сме сигурни, че създаваме таблиците в правилната база данни. Нямате нужда от този ред, ако вече работите в правилната база данни.
CREATE TABLE Artists (
Това е началото на CREATE TABLE изявление. Следва името на таблицата (в този случай Artists ), последвано от първата от скобите, които обхващат дефиницията на таблицата.
ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
След това дефинираме първата колона. В този случай го наричаме ArtistId , посочете неговия тип данни като цяло число (int ), задайте го като колона за идентичност (тази колона ще предостави уникалния идентификатор за таблицата и стойността ще се увеличава с всеки добавен ред), (1,1) означава, че стойността започва от 1 и се увеличава с 1, NOT NULL означава, че полето не може да съдържа нулеви стойности и PRIMARY KEY задава тази колона като първичен ключ за таблицата. първичен ключ е колона, която е конфигурирана като поле за уникален идентификатор за таблицата.
ArtistName nvarchar(255) NOT NULL,
Следващата колона се нарича ArtistName и неговият тип данни е nvarchar(255) , което означава, че приема Unicode низови данни с променлива дължина с максимална дължина от 255 знака. Ние също така задаваме тази колона на NOT NULL така че не може да съдържа нулеви записи.
ActiveFrom date
Последната колона се нарича ActiveFrom и го настроихме да приема тип данни date
);
След това използваме ) за да затворите дефиницията и ; за да завършите изявлението (точката и запетаята е терминатор на израза).
GO
Сигнализира края на партида Transact-SQL оператори. Това всъщност не е изявление на Transact-SQL. Това е команда, разпозната от помощните програми sqlcmd и osql и редактора на код на SQL Server Management Studio, за да сигнализира за края на партида Transact-SQL изрази.

Как да извлечете информация за таблицата, когато използвате инструмент за команден ред

Когато използвате инструмент за команден ред, нямате лукса да виждате таблиците на базата си данни, разположени в страничния панел, чакащи да бъдат разширени с едно щракване. Но това не означава, че не можете да преглеждате информация за вашите таблици или други обекти на базата данни.

Когато използвате инструмент за команден ред, можете да изпълните следното изявление, за да покажете информация за таблиците в горната база данни:

USE Music; 
SELECT column_name, data_type, character_maximum_length, is_nullable 
FROM information_schema.columns;
Резултат
column_name  data_type  character_maximum_length  is_nullable
-----------  ---------  ------------------------  -----------
ArtistId     int        null                      NO         
ArtistName   nvarchar   255                       NO         
ActiveFrom   date       null                      YES        
GenreId      int        null                      NO         
Genre        nvarchar   50                        NO         
AlbumId      int        null                      NO         
AlbumName    nvarchar   255                       NO         
ReleaseDate  date       null                      NO         
ArtistId     int        null                      NO         
GenreId      int        null                      NO         

10 row(s) returned

Executed in 1 ms

Въпросната таблица е в базата данни, наречена Музика затова първо преминаваме към него.

Можете също да го стесните до конкретна таблица, като използвате WHERE клауза:

USE Music; 
SELECT column_name, data_type, character_maximum_length, is_nullable 
FROM information_schema.columns 
WHERE table_name = 'Artists';
Резултат
column_name  data_type  character_maximum_length  is_nullable
-----------  ---------  ------------------------  -----------
ArtistId     int        null                      NO         
ArtistName   nvarchar   255                       NO         
ActiveFrom   date       null                      YES        

3 row(s) returned

Executed in 1 ms

Има много повече полета, които могат да бъдат върнати от information_schema.columns . Можете да използвате SELECT * да ги върнете всички, ако желаете.

Методът на командния ред за извличане на информация от таблицата също работи при използване на GUI инструмент (в края на краищата те са просто SQL изрази). Можете да въведете едни и същи SQL изрази, за да извлечете едни и същи данни, независимо дали използвате sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver или друг инструмент за управление на SQL Server:

GO Команда

Може да се наложи да добавите GO до края на скрипта (при използване на sqlcmd например).

Много реда

Може да откриете, че получавате грешка, ако се опитате да разпространите горните скриптове на няколко реда с инструмент за команден ред.

Ако случаят е такъв, опитайте да добавите обратна наклонена черта в края на всеки ред. Като това:

USE Music; \
SELECT column_name, data_type, character_maximum_length, is_nullable \
FROM information_schema.columns;

Ако не ви харесва идеята да добавяте обратна наклонена черта, друга опция е да запишете многоредовия скрипт в .sql файл, след което да го стартирате от командния ред.

Методът за изпълнение на скрипт от командния ред ще зависи от помощната програма на командния ред, която използвате.

Ето как да използвате sqlcmd, за да стартирате файл, записан на машина с Windows:

sqlcmd -S myServer\instanceName -i C:\myScript.sql

И ето как да използвате sql-cli, за да стартирате файл, записан на Mac:

.run /myScript.sql

Очевидно пълният път и имената на файловете ще зависят от името на файла и къде сте го запазили.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ExecuteNonQuery:Свойството на връзката не е инициализирано.

  2. Научете се да съхранявате и анализирате документи във файлова система на Windows със семантично търсене на SQL Server – част 1

  3. Разделяне на разделени стойности в SQL колона на множество реда

  4. Може ли SQL Server Express LocalDB да бъде свързан отдалечено?

  5. Как да търсите низ в бази данни на SQL Server