===================================================================================
========================================================
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
===================================================================================
========================================================
TRANSACT-SQL
===================================================================================
========================================================
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
===================================================================================
========================================================
SQL commands instructions:
===================================================================================
========================================================
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
===================================================================================
========================================================
Commands of the DML:
Command [SELECT]
O comando select é usado para consultar dados de um banco de
dados. Ele permite que você recupere
informações de uma ou mais tabelas, de acordo com os critérios que você
definir.
O [SELECT] pode ser simples ou incluir filtros, ordenação,
junções e agregações, dependendo do que
você precisa.
EXEMPLO:
SELECT coluna1, coluna2, ...
FROM tabela1;
-> [coluna1, coluna2, ...]: São os nomes das colunas que
você quer selecionar
-> [tabela]: O nome da tabela de onde você está extraindo
os dados
obs:
Existem alguns comando que podem auxiliar nesse processo de
acesso e busca dedos um deles é o comando
[WHERE] ele é utilizado como um filtro dentro da tabela como mostrado
no exemplo:
Ex: [SELECT] nome, idade [FROM] cliente [WHERE] idade > 18;
Podemos organizar os resuldados de uma consulta com [ORDER BY]
ele permite que você ordene de forma
crescente [ASC] e decrescente [DESC] como podemos ver no exemplo:
Ex: [SELECT] nome, idade [FROM] clientes [ORDER BY] idade [DESC]
[SELECT] nome, idade [FROM] clientes [ORDER BY] idade [ASC]
Podendo também limitar a quantidade de resposta em relação ao banco com
o comando [LIMIT]:
===================================================================================
========================================================
Command [INSERT]
O comando [INSERT] é usado para adicionar novos registros
(linhas) a uma tabela.
O comando insere os dados diretamente nas colunas da tabela, e a
estrutura básica de um comando
[INSERT] envolve o nome da tabela e os valores que vocÊ deseja inserir.
Ex: [INSERT INTO] tabela (coluna1, coluna2, coluna3, ...)
[VALUES] (valor1, valor2, valor3, ...)
-> [tabela]: O nome da tabela onde você deseja inserir os
dados.
-> [coluna1, coluna2, coluna3, ...]: Os nomes das colunas
nas quais os dados serão inseridos.
-> [valor1, valor2, valor3, ...] Os valores correspondentes
que você quer inserir nessas colunas.
Ex: Suponhamos que você tenha uma tabela chamada [CLIENTES] com as
colunas [ID], [NOME] e [IDADE].
Para inserir um novo cliente na tabela, você faria o seguinte:
[INSERT INTO] CLIENTE (ID, NAME, IDADE)
[VALUES] (1, 'João Silva', 30);
Para inserios varios registros de uma vez basta fazer assim:
[INSERT INTO] CLIENTE (ID, NAME, IDADE)
[VALUES]
(2, 'Maria Oliveira', 25),
(3, 'Pedro Souza', 40),
(4, 'Ana Costa', 35);
Se não for especificado em qual coluna os dados devem ser alterados
será inserido em todas as colunas
com a mesma disposição dos values
Ex: [INSET INTO] CLIENTE
[VALUES] (5, 'Carlos Pereira', 28);
===================================================================================
========================================================
Command [UPDATE]
O comando [UPDATE] é utilizado para modificar dados existentes em
uma tabela. Ele permite alterar
valores em uma ou mais colunas de uma ou várias linhas de uma tabela.
A estrutura do comando é a seguinte:
Ex: [UPDATE] nome_da_tabela
[SET] nome_da_coluna = valor1, nome_da_coluna2 = valor2, ...
[WHERE] condição;
-> [nome_da_tabela]: é o nome da tabela onde você deseja
atualizar os dados.
-> [SET]: define quais colunas devem ser alteradas e os
novos valores que devem ser atribuídos a
essas colunas.
[WHERE] define uma condição para especificar quais linhas serão
atualizadas. Se a condição for
omitida, todas as linhas da tabela serão alteradas.
Ex: [UPDATE] empregados
[SET] salario = R$5000
[WHERE] id = 3;
===================================================================================
========================================================
Command [DELETE]
O comando [DELETE] é utilizado para excluir registros de uma
tabela.
Ele permite remover uma ou mais linhas com base em uma condição
especificada.
Estrutura:
[DELETE FROM] nomde_da_tabela
[WHERE] condição;
-> [nome_da_tabela]: é o nome da tabela da qual você quer
remover os dados.
-> [WHERE]: define a condição para especificar quais linhas
excluídas. Se a condição for
omitida, todas as linhas da tabela serão deletadas.
Ex: [DELETE FROM] empregados
[WHERE] id = 3;
Esse comando vai excluir o empregado com o [ID] igual a 3.
===================================================================================
========================================================
Command [COUNT]
O comando [COUNT] é utilizado para contar o número de registros
em uma tabela ou o número de registros que atendem a uma
condição específica. Ele pode ser usado de duas maneiras principais:
1° Contar o numéro total de registros em uma tabela:
Quando você usa [COUNT](*), ele conta todas as linhas da
tabela, independentemente de haver valores nulos ou não.
Ex: [SELECT] [COUNT](*) [FROM] table_name;
2° Contar registro em base de uma condição específica:
Se você quiser contar apenas as linhas que atendem a uma
determinada condição, pode usar o [COUNT] junto com a cláusula
[WHERE]. Por exemplo, contar quantos registros têm um valor
específico em uma coluna.
Ex: [SELECT] [COUNT](*) [FROM] table_name [WHERE] column =
'value';
3° Contar registro de uma coluna específica:
Se você deseja contar apenas os registros onde a coluna não
tem valor [NULL], pode usar o [COUNT] com o nome de uma coluna.
Ele só conta as linhas onde essa coluna possui valores diferentes
de [NULL].
Ex: [SELECT] [COUNT](column_name) FROM (table_name);
===================================================================================
========================================================
Command [AS]
O comando [AS] é usado para atribuir um alias(apelido) a uma
tabela ou coluna dentro de uma consulta.
O alias facilita a leitura e compreensão da consulta, tornando os
resultados mais claros ou simplificando a referência a
tabelas ou colunas.
Você pode usar AS para dar um nome mais amigável ou mais curto
para uma coluna nos resultados da consulta. Isso não altera o
nome da coluna na tabela, apenas como ela será exibida no resultado.
Ex: [SELECT] name [AS] user_name, age [AS] user_age
[FROM] User;
A coluna [name] será exibida como [user_name].
A coluna [age] será exibida como [user_age].
===================================================================================
========================================================
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
===================================================================================
========================================================
Commands of the DDL
Command [CREATE]
O comando [CREATE] é usadoid para criar novos objetos dentro de
um banco de dados, como tabelas, bancos de dados, índices,
usuários e outros. A sintaxe varia dependendo do que você deseja criar.
Ex: [CREATE] DATABASE bank_name
dessa forma é criado um novo banco de dados chamado 'bank_name'
[CREATE TABLE] customers ( id [{INT} PRIMARY KEY AUTO_INCREMENT],
name {VARCHAR(100)} [NOT NULL],
email {VARCHAR(100)} [UNIQUE NOT NULL],
date_birth [DATE]
dessa forma é criado uma nova tabela com colunas e especificações
dos dados armazenados nelas.
===================================================================================
========================================================
Command [ALTER]
O comando [ALTER] é usado para modificar a estrutura de uma
tabela existente. Ele permite adicionar, modificar ou remover
colunas, além de alterar restrições (constraints).
A estrutura base dela é asseguinte.
Ex: [ALTER TABLE] table_name action;
Segue alguns exemplos de finalidades para o comando [ALTER]:
1° Add a new column
[ALTER TABLE] customers [ADD] telephone
{VARCHAR(15)};
Adiciona a coluna telefone do tipo VARCHAR(15)
na tabela clientes.
Se precisar definir que a nova coluna não pode ser
nula e tenha um valor padrão:
[ALTER TABLE] customers [ADD] telephone {VARCHAR(20)}
[NOT NULL DEFAULT] 'active'
2° Modify an existing column
Alterando o tipo de dado de uma coluna:
[ALTER TABLE] customers [MODIFY] telephone
{VARCHAR(20)};
Isso muda o tipo da coluna telefone para
VARCHAR(20).
Renomear uma coluna:
[ALTER TABLE] customer [CHANGE] telephone call
phone {VARCHAR(20)};
Isso muda o nome da coluna telefone para
celular e mantém o tipo VARCHAR(20).
Alterar o valor padrão de uma coluna:
[ALTER TABLE] customer [ALTER] balance [SET
DEFAULT] 100.00;
3° Remove column
[ALTER TABLE] customer [DROP COLUMN] telephone;
4° Add or remover a restriction (constraint)
Adicionar uma nova chave estrangeira:
[ALTER TABLE] customer [ADD CONSTRAINT] fk_city
[FOREIGN] KEY (city_id) [REFERENCES] city(id);
Remover uma chave estrangeira:
[ALTER TABLE] customer [DROP FOREIGN] KEY
fk_city;
===================================================================================
========================================================
Command [DROP]
O comando é usado para excluir completamente objetos do banco de
dados, como tabelas, bancos de dados, colunas, índices e
restrições.
[DROP] objeto tipo;
1° Delete a database
[DROP] DATABASE bank_name
Isso exclui todo o banco de dados e todos os dados dentro dele.
2° Delete a table
[DROP TABLE] customer;
Isso remove completamente a tabela [customer] e todos os
registros nela.
Se quiser apenas apagar os dados os dados da tabela sem remover
sua estrutura, use:
[TRUNCATE TABLE] customer;
[DROP TABLE] Apaga a tabela inteira e sua estrutura.
[TRUNCATE] Apaga apenas os registros, mas mantem a
estrutura da tabela.
3° Delete a specific column from a table
[ALTER TABLE] customer [DROP COLUMN] telephone;
Isso remove apenas a coluna telefone, sem excluir a tabela
inteira.
4° Delete a (constraint)
[ALTER TABLE] customer [DROP CONSTRAINT] fk_city;
ou, se for uma chave estrangeira no MySQL:
[ALTER TABLE] customer [DROP FOREIGN] KEY fk_city;
Se houver uma chave estrangeira (FOREIGN KEY), um índice (INDEX)
ou outra restrição que precisa ser removida
===================================================================================
========================================================
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
===================================================================================
========================================================
Commands of the DCL ([REVOKE] e [DENY])
Command [GRANT]
O comando [GRANT] é usado para conceder permissões a usuarios ou
roles(Grupos de usuarios) no banco de dados, ele permite
definir quais ações um usuário pode realizar, como selecionar, inserir,
atualizar, excluir e até administrar objetos do banco.
1° Grant basic permissions to a user
[GRANT] [SELECT], [INSERT], [UPDATE ON] database.customer
[TO] 'usuario'@'localhost';
Isso dá ao usuário ['usuario'@'localhost'] permissão para
selecionar, inserir e atualizar dados na tabela [clientes] do banco
de [dados banco_dados].
[SELECT] Permite ler os dados da tabela.
[INSERT] Permite adicionar novos registro.
[UPDATE] Permite modificar registro existence.
2° Grant all permissions (ADMIN)
[GRANT] [ALL] Previleges [ON] database.* [TO]
'admin_user'@'%';
Isso dá todas permissões ao usuários 'admin_user' para todas as
tabelas do banco de dados [database].
O carater "*" significa todas as tabelas do banco.
O "%" indica que o usuário pode acessar de qualquer IP.
===================================================================================
========================================================
Command [REVOKE]
===================================================================================
========================================================
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
===================================================================================
========================================================
Data type:
Numérico exato Numérico Caractere
Data/Hora Binário Outros
aproximado
TINYINT FLOAT char
date binary cursor
SMALLINT real varchar
time varbinary hierarchyid
INT text
DATETIME image sql_variant
BIGINT NCHAR
DATETIME2 table
bit
NVARCHAR smalldatetime
timestamp
decimal/numeric ntext
datetimeoffset UNIQUEIDENTIFIER
numeric
Xml
money
geografia
SMALLMONEY
geometria
===================================================================================
========================================================
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
===================================================================================
========================================================
O que
são NULLs?
[NULLs]
o valor [NULL] é utilizado para representar a ausência de dados ou
valores desconhecidos em uma coluna de uma tabela. Quando
uma célula em uma tabela contém um valor [NULL], isso significa que o valor
não foi definido ou está indefinido. Ele simplesmente
indica que o dado não existe ou não foi fornecido.
Ex:[INSERT INTO] funcionarios (id, name, wage, date_dismissal)
[VALUE]
(1, 'João Silva', $3000.00, NULL),
(2, 'Maria Oliveira', $3500.00, '2023-12-15'),
(3, 'Carlos Souza', $2500.00, NULL);
CONSIDERAÇÕES:
1° Comparação com [NULL]
Quando se compara um valor a [NULL] ( por exemplo, coluna =
[NULL]), o resultado sempre será falso, Para verificar se
uma coluna tem [NULL], você deve usar [IS NULL] ou [IS NOT NULL].
[IS NULL] e [IS NOT NULL]
O comando [IS NULL] em SQL é utilizado para verificar se um
valor em uma coluna é nulo. Esse comando retorna todas as
linhas onde a coluna especificada tem valor nulo.
Da mesma forma, se você quiser verificar se uma coluna não
é nula, você pode usar o comando [IS NOT NULL]
Ex: [SELECT] * [FROM] tabela [WHERE] coluna [IS NULL]
2° Funções com [NULL]
Algumas funções tem comportamentos diferentes especiais
qunado lidam com [NULL]. Por exemplo a função [COALESCE]
pode ser usada para substituir valores [NULL] por um valor
específico:
[COALESCE]
O comando [COALESCE] em SQL é uma função que retorna o
primeiro valor não nulo em uma lista de expressões. Ele
avalia cada valor da esquerda para a direita e retorna o primeiro
valor que não seja nulo. Se todos os valores forem
nulos, ele retorna nulo.
Ex: [SELECT] [COALESCE] (coluna, 'Valor Padrão') [FROM] tabela;
3° [NULLs] em agregações
Funções de agregadas, como [SUN], [AVG], [COUNT], ignoram
valores [NULLs] em seus cálculos(exceto o [COUNT](*), que
conta todas as linhas, incluido as [NULLs]).
[SUN]
O comando [SUM] é uma função agregada em SQL usada para
somar os valores de uma coluna.
Ele é muito útil quando você quer calcular o total de uma coluna.
A função [SUM] retorna a soma de todos os valores na
coluna especificada, ignorando os valores nulos.
Ex: [SELECT] [SUM] (coluna)
[FROM] tabela
[WHERE] condição;
[AVG]
O comando [AVG] é usado para cálcular a média de valores em
uma coluna numérica. Ele soma todos os valores de uma
coluna e, em seguida, divide pela quantidade de valores não
nulos, retornando o valor médio.
Ex: [SELECT] [AVG] (coluna)
[FROM] tabela
[WHERE] condição;
===================================================================================
========================================================
[ISNULL]
O comando [ISNULL] é uma função usada em SQL para substituir valores
[NULL] por um valor alternativo, se a expressão for
[NULL]. Se a expressão não for [NULL], o valor original é retornado.
Ex: [SELECT] FirstName,
[ISNULL](MiddleName, 'nome') [AS] MiddleifAny,
LastName
[FROM] Sales.Customer;
O exemplo anterior processou um valor nulo na tabela de origem, mas você pode
usar [ISNULL] com qualquer expressão que possa
retornar [NULL], incluindo o alinhamento de uma função [TRY_CONVERT] em uma função
[ISNULL].
===================================================================================
========================================================
[NULLIF]
A função NULLIF permite que você retorne NULL sob determinadas
condições.
Ex: [SELECT] SalesOrderId,
ProductId,
UnitPrice,
[NULLIF](UnitePriceDiscount, 0) [AS] Discount
[FROM] Sales.SalesOrderDetail;
Neste exemplo, NULLIF substitui um desconto de 0 por um NULL. Ele retornará o
valor de desconto se não for 0
===================================================================================
========================================================
///////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
===================================================================================
========================================================