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 casoArtists
), 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 ePRIMARY 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 comoNOT 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 dedate
);
- 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.