Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Significado das sintaxes USE, GO, SET e ON, NULL e tag de comentário

Boa tarde!

No exercício da aula 3 a resposta de um exercício gerou o código abaixo. Porém como n fomos apresentados a essas novas sintaxes, gostaria de saber o que significam.

1° USE, GO, SET e ON, também o que significa ANSI_NULLS ON, QUOTED IDENTIFIER, PRIMARY

2° se /** é uma sintaxe para comentário.

3° Por que existe a tag NULL após a declaração das colunas na tabela vendedores?

USE [SUCOS_VENDAS]
GO

/****** Object:  Table [dbo].[TABELA DE VENDEDORES 02]    Script Date: 19/03/2018 15:27:53 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[TABELA DE VENDEDORES 02](
        [MATRICULA] [varchar](5) NULL,
        [NOME] [varchar](100) NULL,
        [PERCENTUAL COMISSÃO] [float] NULL
) ON [PRIMARY]
GO
2 respostas
solução!

Olá Giseli!

1º - O " USE " é para alterar o contexto de banco de dados para o banco de dados, ele é responsável por informar qual é o banco de dados que queremos usar os comandos a seguir.

O " GO " sinaliza o término de um lote de instruções Transact-SQL acima dele, assim ele não é uma instrução Transact-SQL (você vai aprender mais sobre Transact-SQL nos próximos cursos).

A instrução " SET " é para inserir alguma coisa, geralmente para inserir um valor em uma variável (esse conceito também será abordado nos próximos cursos), então nesse caso o SET insere o valor " ON " na variável ANSI_NULLS e essa variável "especifica o comportamento compatível com ISO dos operadores de comparação Igual a (=) e Diferente de (<>) quando usados com valores nulos na SQL Server" (documentação).

Segundo a documentação, "quando ANSI_NULLS é definido como ON, uma instrução SELECT que usa WHERE column_name = NULL retornará zero linha, mesmo que haja valores nulos em column_name. Uma instrução SELECT usando WHERE column_name <> NULL retorna zero linha mesmo que haja valores não nulos em column_name. Quando ANSI_NULLS for OFF, os operadores de comparação Igual a (=) e Não Igual a (<>) não seguem o padrão ISO. Uma instrução SELECT que usa WHERE column_name = NULL retorna as linhas que têm valores nulos em column_name. Uma instrução SELECT que usa WHERE column_name <> NULL retorna as linhas que têm valores não nulos na coluna. Além disso, uma instrução SELECT que usa WHERE column_name <> XYZ_value retorna todas as linhas que não são XYZ_value e que não são nulas."

Já o " QUOTED_IDENTIFIER " faz com que o SQL Server siga as regras ISO relativas às aspas que delimitam identificadores e cadeias de caracteres literais. Identificadores delimitados por aspas duplas podem ser palavras-chave reservadas Transact-SQL ou podem conter caracteres que nem sempre são permitidos pelas regras da sintaxe Transact-SQL para identificadores, leia mais aqui.

Já o " ON [PRIMARY] " define o grupo de arquivos em que a tabela será criada, nesse caso é no grupo PRIMARY que é o padrão, porém você poderia especificar outro, assim você pode ter vários grupos de arquivos, onde o armazenamento físico pode ser em varia-os locais, diretórios ou discos.

2º - Exatamente Giseli, o " /** " informa que o conteúdo a frente é um comentário, e para encerrar esse comentário pasta colocar " **/ ". Outra forma de declarar um comentário é " -- " (traço traço);

3º - Tag NULL apos a declarações das colunas é para que o campo possa aceitar valores nulos, assim todas as colunas dessa tabela podem aceitar nulos.

Espero ter esclarecido suas dúvidas Giseli!!

Muito obrigada pelas informações!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software