Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criar uma tabela no SQL Server 2017


Aqui criamos três tabelas no SQL Server, depois analisamos o script que as criou. Também executamos outro script para verificar se a tabela foi criada.

Anteriormente, criamos um banco de dados a partir de um script. No entanto, o banco de dados é um banco de dados em branco — não contém tabelas ou dados.

Agora vamos criar algumas tabelas para nosso banco de dados.

Primeiro, para relembrar, aqui está o que fizemos até agora:
CREATE DATABASE Music;

Isso criou um banco de dados em branco. Se você ainda não fez isso, execute esse script.

Agora execute o seguinte script:
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    
);

Esse script adiciona três tabelas ao banco de dados. As tabelas são chamadas de Artists , Genres e Albums .

Aqui está o resultado no SQL Operations Studio/Azure Data Studio:

Qualquer ferramenta GUI exibirá as tabelas praticamente da mesma maneira. Cada tabela pode ser expandida para revelar suas colunas, assim como quaisquer índices, gatilhos, chaves, etc. Você também pode expandir as Colunas node para revelar a lista de colunas e seus tipos de dados, bem como quaisquer restrições que tenham sido especificadas.

Explicação do CREATE TABLE Declaração


O script que acabamos de executar consiste em três CREATE TABLE instruções — cada uma cria uma tabela diferente. O script também adiciona uma restrição de chave estrangeira, mas veremos isso mais tarde.

Por enquanto, vamos analisar o primeiro CREATE TABLE declaração em nosso script:
USE Music;

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

Esta instrução SQL cria uma tabela chamada Artists com três colunas, chamado ArtistId , ArtistName e ActiveFrom . A definição de cada coluna começa com seu nome, seguido por seu tipo de dados e quaisquer restrições a serem aplicadas a essa coluna.

Aqui está uma descrição mais detalhada "linha por linha":
USE Music;
Esta parte não faz parte do CREATE TABLE demonstração. Está lá apenas para mudar para a Música base de dados. Pode haver muitos bancos de dados no servidor e queremos ter certeza de que estamos criando as tabelas no banco de dados correto. Você não precisa dessa linha se já estiver trabalhando no banco de dados correto.
CREATE TABLE Artists (
Este é o início do CREATE TABLE demonstração. É seguido pelo nome da tabela (neste caso Artists ), seguido pelo primeiro dos parênteses que delimitam a definição da tabela.
ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Depois definimos a primeira coluna. Neste caso, chamamos de ArtistId , especifique seu tipo de dados como um inteiro (int ), defina-a como uma coluna de identidade (esta coluna fornecerá o ID exclusivo para a tabela e o valor será incrementado com cada linha adicionada), o (1,1) significa que o valor começa em 1 e incrementa em 1, NOT NULL significa que o campo não pode conter valores nulos e PRIMARY KEY define esta coluna como a chave primária da tabela. Uma chave primária é uma coluna que foi configurada como o campo identificador exclusivo da tabela.
ArtistName nvarchar(255) NOT NULL,
A próxima coluna é chamada ArtistName e seu tipo de dados é nvarchar(255) , o que significa que aceita dados de cadeia de caracteres Unicode de comprimento variável, com um comprimento máximo de 255 caracteres. Também definimos esta coluna como NOT NULL para que não possa conter entradas nulas.
ActiveFrom date
A última coluna é chamada ActiveFrom e nós o configuramos para aceitar um tipo de dados de date
);
Nós então usamos ) para fechar a definição e ; para encerrar a instrução (o ponto e vírgula é um terminador de instrução).
GO
Sinaliza o final de um lote de instruções Transact-SQL. Esta não é realmente uma instrução Transact-SQL. É um comando reconhecido pelos utilitários sqlcmd e osql e pelo SQL Server Management Studio Code Editor para sinalizar o fim de um lote de instruções Transact-SQL.

Como recuperar informações da tabela ao usar uma ferramenta de linha de comando


Ao usar uma ferramenta de linha de comando, você não tem o luxo de ver suas tabelas de banco de dados no painel lateral esperando para serem expandidas com um único clique. Mas isso não significa que você não possa visualizar informações sobre suas tabelas ou outros objetos de banco de dados.

Ao usar uma ferramenta de linha de comando, você pode executar a seguinte instrução para exibir informações sobre as tabelas no banco de dados acima:
USE Music; 
SELECT column_name, data_type, character_maximum_length, is_nullable 
FROM information_schema.columns;
Resultado
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

A tabela em questão está na base de dados chamada Música então é por isso que mudamos para ele primeiro.

Você também pode reduzi-lo a uma tabela específica usando um WHERE cláusula:
USE Music; 
SELECT column_name, data_type, character_maximum_length, is_nullable 
FROM information_schema.columns 
WHERE table_name = 'Artists';
Resultado
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

Existem muitos outros campos que podem ser retornados por information_schema.columns . Você pode usar SELECT * para devolver todos eles, se desejar.

O método de linha de comando para recuperar informações de tabela também funciona ao usar uma ferramenta GUI (afinal, são apenas instruções SQL). Você pode inserir as mesmas instruções SQL para recuperar os mesmos dados usando sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver ou qualquer outra ferramenta de gerenciamento do SQL Server:

O GO Comando


Pode ser necessário adicionar GO ao final do script (ao usar sqlcmd, por exemplo).

Múltiplas Linhas


Você pode encontrar um erro se tentar espalhar os scripts acima em várias linhas com uma ferramenta de linha de comando.

Se este for o caso, tente adicionar uma barra invertida ao final de cada linha. Assim:
USE Music; \
SELECT column_name, data_type, character_maximum_length, is_nullable \
FROM information_schema.columns;

Se você não gosta da ideia de adicionar barras invertidas, outra opção é salvar o script de várias linhas em um arquivo .sql e executá-lo no prompt de comando.

O método para executar um script a partir do prompt de comando dependerá do utilitário de linha de comando usado.

Veja como usar o sqlcmd para executar um arquivo salvo em uma máquina Windows:
sqlcmd -S myServer\instanceName -i C:\myScript.sql

E aqui está como usar o sql-cli para executar um arquivo salvo em um Mac:
.run /myScript.sql

Obviamente, o caminho completo e os nomes dos arquivos dependerão do nome do arquivo e de onde você o salvou.