T-SQL - Guia rápido

Na década de 1970, o produto denominado 'SEQUEL', linguagem de consulta estruturada em inglês, desenvolvido pela IBM e posteriormente SEQUEL foi renomeado para 'SQL' que significa Structured Query Language.

Em 1986, o SQL foi aprovado pelo ANSI (American National Standards Institute) e em 1987, foi aprovado pela ISO (International Standards Organization).

SQL é uma linguagem de consulta de estrutura que é uma linguagem de banco de dados comum para todos os produtos RDBMS. Diferentes fornecedores de produtos RDBMS desenvolveram sua própria linguagem de banco de dados estendendo o SQL para seus próprios produtos RDBMS.

T-SQL significa Transact Structure Query Language, que é um produto da Microsoft e é uma extensão da linguagem SQL.

Exemplo

MS SQL Server - SQL \ T-SQL

ORACLE - SQL \ PL-SQL

O tipo de dados do SQL Server é um atributo que especifica os tipos de dados de qualquer objeto. Cada coluna, variável e expressão tem tipo de dados relacionado no SQL Server. Esses tipos de dados podem ser usados ​​ao criar tabelas. Você pode escolher um tipo de dados específico para uma coluna da tabela com base em seus requisitos.

O SQL Server oferece sete categorias, incluindo outras categorias de tipos de dados para uso.

Tipos numéricos exatos

Tipo De Para
bigint -9.223.372.036.854.775.808 9.223.372.036.854.775.807
int -2.147.483.648 2.147.483.647
smallint -32.768 32.767
tinyint 0 255
mordeu 0 1
decimal -10 ^ 38 +1 10 ^ 38 –1
numérico -10 ^ 38 +1 10 ^ 38 –1
dinheiro -922.337.203.685.477.5808 +922.337.203.685.477.5807
dinheirinho -214.748,3648 +214.748.3647

Numérico e decimal são tipos de dados de precisão e escala fixos e são funcionalmente equivalentes.

Tipos Numéricos Aproximados

Tipo De Para
Flutuador -1,79E + 308 1,79E + 308
Real -3,40E + 38 3,40E + 38

Tipos de data e hora

Tipo De Para

datetime(Precisão de 3,33 milissegundos)

1 ° de janeiro de 1753 31 de dezembro de 9999

smalldatetime(Precisão de 1 minuto)

1 ° de janeiro de 1900 6 de junho de 2079

date(Precisão de 1 dia. Introduzido no SQL Server 2008)

1º de janeiro de 0001 31 de dezembro de 9999

datetimeoffset(Precisão de 100 nanossegundos. Introduzido no SQL Server 2008)

1º de janeiro de 0001 31 de dezembro de 9999

datetime2(Precisão de 100 nanossegundos. Introduzido em SQL Server 2008)

1º de janeiro de 0001 31 de dezembro de 9999

time(Precisão de 100 nanossegundos. Introduzido em SQL Server 2008)

00: 00: 00.0000000 23: 59: 59,9999999

Strings de personagem

Sr. Não Tipo e descrição
1

char

Dados de caracteres não Unicode de comprimento fixo com comprimento máximo de 8.000 caracteres.

2

varchar

Dados não Unicode de comprimento variável com no máximo 8.000 caracteres.

3

Varchar (max)

Dados não Unicode de comprimento variável com comprimento máximo de 231 caracteres (introduzidos no SQL Server 2005).

4

text

Dados não Unicode de comprimento variável com comprimento máximo de 2.147.483.647 caracteres

Strings de caracteres Unicode

Sr. Não Tipo e descrição
1

nchar

Dados Unicode de comprimento fixo com comprimento máximo de 4.000 caracteres.

2

nvarchar

Dados Unicode de comprimento variável com comprimento máximo de 4.000 caracteres.

3

Nvarchar (max)

Dados Unicode de comprimento variável com comprimento máximo de 2 30 caracteres (introduzidos no SQL Server 2005).

4

ntext

Dados Unicode de comprimento variável com comprimento máximo de 1.073.741.823 caracteres.

Strings Binárias

Sr. Não Tipo e descrição
1

binary

Dados binários de comprimento fixo com comprimento máximo de 8.000 bytes.

2

varbinary

Dados binários de comprimento variável com comprimento máximo de 8.000 bytes.

3

varbinary(max)

Dados binários de comprimento variável com comprimento máximo de 2 31 bytes (introduzidos no SQL Server 2005).

4

image

Dados binários de comprimento variável com comprimento máximo de 2.147.483.647 bytes.

Outros Tipos de Dados

  • sql_variant - Armazena valores de vários tipos de dados com suporte do SQL Server, exceto text, ntext e timestamp.

  • timestamp - Armazena um número exclusivo em todo o banco de dados que é atualizado sempre que uma linha é atualizada.

  • uniqueidentifier - Armazena um identificador globalmente exclusivo (GUID).

  • xml- Armazena dados XML. Você pode armazenar instâncias XML em uma coluna ou variável (introduzido no SQL Server 2005).

  • cursor - Uma referência a um cursor.

  • table - Armazena um conjunto de resultados para processamento posterior.

  • hierarchyid - Um tamanho variável, tipo de dados do sistema usado para representar a posição em uma hierarquia (introduzido no SQL Server 2008).

Criar uma tabela básica envolve nomear a tabela e definir suas colunas e o tipo de dados de cada coluna.

O SQL Server CREATE TABLE instrução é usada para criar uma nova tabela.

Sintaxe

A seguir está a sintaxe básica da instrução CREATE TABLE -

CREATE TABLE table_name( 
   column1 datatype, 
   column2 datatype, 
   column3 datatype, 
   ..... 
   columnN datatype, 
   PRIMARY KEY( one or more columns ));

CREATE TABLE é a palavra-chave que diz ao sistema de banco de dados o que você deseja fazer. Neste caso, você deseja criar uma nova tabela. O nome ou identificador exclusivo da tabela segue a instrução CREATE TABLE. Em seguida, entre colchetes, vem a lista que define cada coluna da tabela e que tipo de tipo de dados é. A sintaxe se torna mais clara para entender com o exemplo a seguir.

Uma cópia de uma tabela existente pode ser criada usando uma combinação da instrução CREATE TABLE e da instrução SELECT. Você pode verificar os detalhes completos em Criar tabela usando outra tabela.

Exemplo

Neste exemplo, vamos criar uma tabela CUSTOMERS com ID como chave primária e NOT NULL são as restrições que mostram que esses campos não podem ser NULL ao criar registros nesta tabela -

CREATE TABLE CUSTOMERS( 
   ID   INT              NOT NULL, 
   NAME VARCHAR (20)     NOT NULL, 
   AGE  INT              NOT NULL, 
   ADDRESS  CHAR (25) , 
   SALARY   DECIMAL (18, 2),        
   PRIMARY KEY (ID));

Você pode verificar se a sua tabela foi criada com sucesso olhando a mensagem exibida pelo servidor SQL, caso contrário, você pode usar o seguinte comando -

exec sp_columns CUSTOMERS

O comando acima produz a seguinte saída.

TABLE_QUALIFIER   TABLE_OWNER   TABLE_NAME   COLUMN_NAME   DATA_TYPE   TYPE_NAME
   PRECISION   LENGTH SCALE   RADIX   NULLABLE   REMARKS   COLUMN_DEF   SQL_DATA_TYPE 
   SQL_DATETIME_SUB   CHAR_OCTET_LENGTH   ORDINAL_POSITION   IS_NULLABLE   SS_DATA_TYPE
   
TestDB    dbo    CUSTOMERS   ID        4    int      10   4    0      10     0
   NULL   NULL   4   NULL    NULL      1    NO       56 
   
TestDB    dbo    CUSTOMERS   NAME      12   varchar  20   20   NULL   NULL   0
   NULL   NULL   12   NULL   20        2    NO       39
  
TestDB    dbo    CUSTOMERS   AGE       4    int      10   4    0      10     0
   NULL   NULL   4   NULL    NULL      3    NO       56 
 
TestDB    dbo    CUSTOMERS   ADDRESS   1    char     25   25   NULL   NULL   1
   NULL   NULL   1   NULL    25   4    YES  39  

TestDB    dbo    CUSTOMERS   SALARY    3    decimal  18   20   2      10     1
   NULL   NULL   3   NULL    NULL      5    YES      106

Agora você pode ver que a tabela CLIENTES está disponível em seu banco de dados, que pode ser usada para armazenar as informações necessárias relacionadas aos clientes.

O SQL Server DROP TABLE instrução é usada para remover uma definição de tabela e todos os dados, índices, gatilhos, restrições e especificações de permissão para essa tabela.

Note - Você deve ter cuidado ao usar este comando porque uma vez que uma tabela é excluída, todas as informações disponíveis na tabela também serão perdidas para sempre.

Sintaxe

A seguir está a sintaxe básica da instrução DROP TABLE -

DROP TABLE table_name;

Exemplo

Vamos primeiro verificar a tabela CLIENTES e, em seguida, vamos excluí-la do banco de dados -

Exec sp_columns CUSTOMERS;

O comando acima mostra a seguinte tabela.

TABLE_QUALIFIER   TABLE_OWNER   TABLE_NAME   COLUMN_NAME   DATA_TYPE   TYPE_NAME
   PRECISION   LENGTH SCALE   RADIX   NULLABLE   REMARKS   COLUMN_DEF   SQL_DATA_TYPE 
   SQL_DATETIME_SUB   CHAR_OCTET_LENGTH   ORDINAL_POSITION   IS_NULLABLE   SS_DATA_TYPE
   
TestDB    dbo    CUSTOMERS   ID        4   int        10   4    0      10     0
   NULL   NULL   4   NULL    NULL      1   NO         56 
   
TestDB    dbo    CUSTOMERS   NAME      12  varchar    20   20   NULL   NULL   0
   NULL   NULL   12   NULL   20        2   NO         39
  
TestDB    dbo    CUSTOMERS   AGE       4   int        10   4    0      10     0
   NULL   NULL   4   NULL    NULL      3   NO         56 
 
TestDB    dbo    CUSTOMERS   ADDRESS   1   char       25   25   NULL   NULL   1
   NULL   NULL   1   NULL    25        4   YES        39  

TestDB    dbo    CUSTOMERS   SALARY   3   decimal     18   20   2      10     1
   NULL   NULL   3   NULL    NULL     5   YES         106

A tabela CUSTOMERS está disponível no banco de dados, então vamos descartá-la. A seguir está o comando para o mesmo.

DROP TABLE CUSTOMERS; 
Command(s) completed successfully.

Com o comando acima, você não obterá nenhuma linha.

Exec sp_columns CUSTOMERS; 
No rows\data will be displayed

O SQL Server INSERT INTO instrução é usada para adicionar novas linhas de dados a uma tabela no banco de dados.

Sintaxe

A seguir estão as duas sintaxes básicas da instrução INSERT INTO.

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]   
VALUES (value1, value2, value3,...valueN);

Onde coluna1, coluna2, ... colunaN são os nomes das colunas na tabela na qual você deseja inserir dados.

Você não precisa especificar o (s) nome (s) da (s) coluna (s) na consulta SQL se estiver adicionando valores para todas as colunas da tabela. Mas certifique-se de que a ordem dos valores esteja na mesma ordem das colunas da tabela. A seguir está a sintaxe SQL INSERT INTO -

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

Exemplo

As instruções a seguir criarão seis registros na tabela CLIENTES -

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
  
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );  

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );  

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 ); 
 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );  

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (6, 'Komal', 22, 'MP', 4500.00 );

Sintaxe

Você pode criar um registro na tabela CLIENTES usando a segunda sintaxe da seguinte forma -

INSERT INTO CUSTOMERS VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );

Todas as declarações acima produzirão os seguintes registros na tabela CLIENTES -

ID  NAME       AGE         ADDRESS              SALARY 
1   Ramesh     32          Ahmedabad            2000.00 
2   Khilan     25          Delhi                1500.00 
3   kaushik    23          Kota                 2000.00 
4   Chaitali   25          Mumbai               6500.00 
5   Hardik     27          Bhopal               8500.00 
6   Komal      22          MP                   4500.00 
7   Muffy      24          Indore               10000.00

Preencher uma tabela usando outra tabela

Você pode preencher dados em uma tabela por meio da instrução SELECT em outra tabela, desde que outra tabela tenha um conjunto de campos, que são necessários para preencher a primeira tabela. A seguir está a sintaxe -

INSERT INTO first_table_name  
   SELECT column1, column2, ...columnN  
      FROM second_table_name 
      [WHERE condition];

servidor SQL SELECTdeclaração é usada para buscar os dados de uma tabela de banco de dados que retorna dados na forma de tabela de resultados. Essas tabelas de resultados são chamadasresult-sets.

Sintaxe

A seguir está a sintaxe básica da instrução SELECT -

SELECT column1, column2, columnN FROM table_name;

Onde, coluna1, coluna2 ... são os campos de uma tabela cujos valores você deseja buscar. Se você deseja buscar todos os campos disponíveis no campo, você pode usar a seguinte sintaxe -

SELECT * FROM table_name;

Exemplo

Considere a tabela CLIENTES com os seguintes registros -

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00

O comando a seguir é um exemplo, que buscaria os campos ID, Nome e Salário dos clientes disponíveis na tabela CLIENTES -

SELECT ID, NAME, SALARY FROM CUSTOMERS;

O comando acima produzirá a seguinte saída.

ID  NAME          SALARY 
1   Ramesh        2000.00 
2   Khilan        1500.00 
3   kaushik       2000.00 
4   Chaitali      6500.00 
5   Hardik        8500.00 
6   Komal         4500.00 
7   Muffy         10000.00

Se você deseja buscar todos os campos da tabela CUSTOMERS, use a seguinte consulta -

SELECT * FROM CUSTOMERS;

O acima irá produzir a seguinte saída.

ID  NAME       AGE       ADDRESS              SALARY 
1   Ramesh     32        Ahmedabad            2000.00 
2   Khilan     25        Delhi                1500.00 
3   kaushik    23        Kota                 2000.00 
4   Chaitali   25        Mumbai               6500.00 
5   Hardik     27        Bhopal               8500.00 
6   Komal      22        MP                   4500.00 
7   Muffy      24        Indore               10000.00

O SQL Server UPDATE A consulta é usada para modificar os registros existentes em uma tabela.

Você pode usar a cláusula WHERE com a consulta UPDATE para atualizar as linhas selecionadas, caso contrário, todas as linhas seriam afetadas.

Sintaxe

A seguir está a sintaxe básica da consulta UPDATE com a cláusula WHERE -

UPDATE table_name 
SET column1 = value1, column2 = value2...., columnN = valueN 
WHERE [condition];

Você pode combinar um número N de condições usando os operadores AND ou OR.

Exemplo

Considere a tabela CLIENTES com os seguintes registros -

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00

O comando a seguir é um exemplo, que atualizaria ADDRESS para um cliente cujo ID é 6 -

UPDATE CUSTOMERS 
SET ADDRESS = 'Pune' 
WHERE ID = 6;

A tabela CUSTOMERS agora terá os seguintes registros -

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        Pune                4500.00 
7   Muffy      24        Indore              10000.00

Se você deseja modificar todos os valores das colunas ADDRESS e SALARY na tabela CUSTOMERS, não é necessário usar a cláusula WHERE. A consulta UPDATE seria a seguinte -

UPDATE CUSTOMERS 
SET ADDRESS = 'Pune', SALARY = 1000.00;

A tabela CUSTOMERS agora terá os seguintes registros.

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Pune             1000.00 
2   Khilan     25        Pune             1000.00 
3   kaushik    23        Pune             1000.00 
4   Chaitali   25        Pune             1000.00 
5   Hardik     27        Pune             1000.00 
6   Komal      22        Pune             1000.00 
7   Muffy      24        Pune             1000.00

O SQL Server DELETE A consulta é usada para excluir os registros existentes de uma tabela.

Você deve usar a cláusula WHERE com a consulta DELETE para excluir as linhas selecionadas, caso contrário, todos os registros serão excluídos.

Sintaxe

A seguir está a sintaxe básica da consulta DELETE com a cláusula WHERE -

DELETE FROM table_name 
WHERE [condition];

Você pode combinar um número N de condições usando os operadores AND ou OR.

Exemplo

Considere a tabela CLIENTES com os seguintes registros -

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00

O comando a seguir é um exemplo, que EXCLUIRIA um cliente, cujo ID é 6 -

DELETE FROM CUSTOMERS 
WHERE ID = 6;

A tabela CUSTOMERS agora terá os seguintes registros.

ID  NAME       AGE       ADDRESS              SALARY 
1   Ramesh     32        Ahmedabad            2000.00 
2   Khilan     25        Delhi                1500.00 
3   kaushik    23        Kota                 2000.00 
4   Chaitali   25        Mumbai               6500.00 
5   Hardik     27        Bhopal               8500.00 
7   Muffy      24        Indore               10000.00

Se você deseja DELETE todos os registros da tabela CUSTOMERS, você não precisa usar a cláusula WHERE. A consulta DELETE seria a seguinte -

DELETE FROM CUSTOMERS;

A tabela CUSTOMERS agora não terá nenhum registro.

O MS SQL Server WHERE cláusula é usada para especificar uma condição ao buscar os dados de uma única tabela ou unir-se a várias tabelas.

Se a condição fornecida for satisfeita, somente então ele retornará um valor específico da tabela. Você terá que usar a cláusula WHERE para filtrar os registros e buscar apenas os registros necessários.

A cláusula WHERE não é usada apenas na instrução SELECT, mas também é usada na instrução UPDATE, DELETE, etc., que examinaremos nos capítulos subsequentes.

Sintaxe

A seguir está a sintaxe básica da instrução SELECT com a cláusula WHERE -

SELECT column1, column2, columnN  
FROM table_name 
WHERE [condition]

Você pode especificar uma condição usando comparação ou operadores lógicos como>, <, =, LIKE, NOT, etc. O exemplo a seguir tornará este conceito claro.

Exemplo

Considere a tabela CLIENTES com os seguintes registros -

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00

O comando a seguir é um exemplo que buscaria os campos ID, Nome e Salário da tabela CLIENTES onde o salário é maior que 2.000.

SELECT ID, NAME, SALARY  
FROM CUSTOMERS 
WHERE SALARY > 2000;

O comando acima produzirá a seguinte saída.

ID  NAME       SALARY 
4   Chaitali   6500.00 
5   Hardik     8500.00 
6   Komal      4500.00 
7   Muffy      10000.00

O comando a seguir é um exemplo, que buscaria os campos ID, Nome e Salário da tabela CLIENTES para um cliente com o nome 'Hardik'. É importante notar que todas as strings devem ser fornecidas entre aspas simples (''), enquanto os valores numéricos devem ser fornecidos sem as aspas como no exemplo acima -

SELECT ID, NAME, SALARY  
FROM CUSTOMERS 
WHERE NAME = 'Hardik';

O comando acima produzirá a seguinte saída.

ID  NAME     SALARY 
5   Hardik   8500.00

O MS SQL Server LIKEcláusula é usada para comparar um valor a valores semelhantes usando operadores curinga. Existem dois curingas usados ​​em conjunto com o operador LIKE -

  • O sinal de porcentagem (%)
  • O sublinhado (_)

O sinal de porcentagem representa zero, um ou vários caracteres. O sublinhado representa um único número ou caractere. Os símbolos podem ser usados ​​em combinações.

Sintaxe

A seguir está a sintaxe básica de% e _.

SELECT *\column-list FROM table_name 
WHERE column LIKE 'XXXX%' 
 
or   

SELECT *\column-list FROM table_name 
WHERE column LIKE '%XXXX%'  

or  

SELECT *\column-list FROM table_name 
WHERE column LIKE 'XXXX_'  

or  

SELECT *\column-list FROM table_name 
WHERE column LIKE '_XXXX'  

or  

SELECT  *\column-list FROM table_name 
WHERE column LIKE '_XXXX_'

Você pode combinar um número N de condições usando os operadores AND ou OR. XXXX pode ser qualquer valor numérico ou string.

Exemplo

A seguir estão alguns exemplos que mostram a parte WHERE com cláusulas LIKE diferentes com os operadores '%' e '_'.

Sr. Não Declaração e descrição
1

WHERE SALARY LIKE '200%'

Encontra todos os valores que começam com 200

2

WHERE SALARY LIKE '%200%'

Encontra qualquer valor que tenha 200 em qualquer posição

3

WHERE SALARY LIKE '_00%'

Encontra qualquer valor que tenha 00 na segunda e terceira posições

4

WHERE SALARY LIKE '2_%_%'

Encontra qualquer valor que comece com 2 e tenha pelo menos 3 caracteres de comprimento

5

WHERE SALARY LIKE '%2'

Encontra todos os valores que terminam com 2

6

WHERE SALARY LIKE '_2%3'

Encontra qualquer valor que tenha um 2 na segunda posição e termine com um 3

7

WHERE SALARY LIKE '2___3'

Encontra qualquer valor em um número de cinco dígitos que começa com 2 e termina com 3

Considere a tabela CUSTOMERS com os seguintes registros.

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00

O comando a seguir é um exemplo, que exibirá todos os registros da tabela CUSTOMERS onde SALARY começa com 200.

SELECT * FROM CUSTOMERS 
WHERE SALARY LIKE '200%';

O comando acima produzirá a seguinte saída.

ID   NAME     AGE     ADDRESS       SALARY 
1    Ramesh   32      Ahmedabad     2000.00 
3    kaushik  23      Kota          2000.00

O MS SQL Server ORDERA cláusula BY é usada para classificar os dados em ordem crescente ou decrescente, com base em uma ou mais colunas. Algumas consultas de classificação de banco de dados resultam em ordem crescente por padrão.

Sintaxe

A seguir está a sintaxe básica da cláusula ORDER BY.

SELECT column-list  
FROM table_name  
[WHERE condition]  
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

Você pode usar mais de uma coluna na cláusula ORDER BY. Certifique-se de que qualquer coluna que você está usando para classificar, essa coluna deve estar na lista de colunas.

Exemplo

Considere a tabela CLIENTES com os seguintes registros -

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00

O comando a seguir é um exemplo, que classificaria o resultado em ordem crescente por NOME e SALÁRIO.

SELECT * FROM CUSTOMERS 
   ORDER BY NAME, SALARY

O comando acima produzirá a seguinte saída.

ID  NAME       AGE       ADDRESS           SALARY 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
3   kaushik    23        Kota              2000.00 
2   Khilan     25        Delhi             1500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00 
1   Ramesh     32        Ahmedabad         2000.00

O comando a seguir é um exemplo, que classificaria o resultado em ordem decrescente por NOME.

SELECT * FROM CUSTOMERS 
   ORDER BY NAME DESC

O comando acima produzirá o seguinte resultado -

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00
7   Muffy      24        Indore             10000.00  
6   Komal      22        MP                 4500.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00
5   Hardik     27        Bhopal             8500.00
4   Chaitali   25        Mumbai             6500.00

O SQL Server GROUP BY cláusula é usada em colaboração com a instrução SELECT para organizar dados idênticos em grupos.

A cláusula GROUP BY segue a cláusula WHERE em uma instrução SELECT e precede a cláusula ORDER BY.

Sintaxe

A seguir está a sintaxe básica da cláusula GROUP BY. A cláusula GROUP BY deve seguir as condições da cláusula WHERE e deve preceder a cláusula ORDER BY, se uma for usada.

SELECT column1, column2 
FROM table_name 
WHERE [ conditions ] 
GROUP BY column1, column2 
ORDER BY column1, column2

Exemplo

Considere que a tabela CUSTOMERS tem os seguintes registros -

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00

Se você quiser saber o valor total do salário de cada cliente, a seguir será feita a consulta GROUP BY.

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME;

O comando acima produzirá a seguinte saída.

NAME        sum of salary 
Chaitali    6500.00 
Hardik      8500.00 
kaushik     2000.00 
Khilan      1500.00 
Komal       4500.00 
Muffy       10000.00 
Ramesh      2000.00

Vamos agora considerar a seguinte tabela CLIENTES com os seguintes registros com nomes duplicados.

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00 
2   Khilan     25        Delhi             1500.00 
3   kaushik    23        Kota              2000.00 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00

Se quisermos saber o valor total do salário de cada cliente, a seguir será feita a consulta GROUP BY.

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME

O comando acima produzirá a seguinte saída.

NAME        sum of salary 
Hardik      8500.00 
kaushik     8500.00 
Komal       4500.00 
Muffy       10000.00 
Ramesh      3500.00

O MS SQL Server DISTINCT A palavra-chave é usada em conjunto com a instrução SELECT para eliminar todos os registros duplicados e buscar apenas registros únicos.

Pode haver uma situação em que você tenha vários registros duplicados em uma tabela. Ao buscar esses registros, faz mais sentido buscar apenas registros únicos em vez de buscar registros duplicados.

Sintaxe

A seguir está a sintaxe básica da palavra-chave DISTINCT para eliminar registros duplicados.

SELECT DISTINCT column1, column2,.....columnN  
FROM table_name 
WHERE [condition]

Exemplo

Considere a tabela CUSTOMERS com os seguintes registros.

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00

Vejamos como a seguinte consulta SELECT retorna registros de salários duplicados.

SELECT SALARY FROM CUSTOMERS 
   ORDER BY SALARY

O comando acima produzirá a seguinte saída onde o salário 2000 vem duas vezes, o que é um registro duplicado da tabela original.

SALARY 
1500.00 
2000.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

Vamos agora usar a palavra-chave DISTINCT com a consulta SELECT acima e ver o resultado.

SELECT DISTINCT SALARY FROM CUSTOMERS 
   ORDER BY SALARY

O comando acima produz a seguinte saída, onde não temos nenhuma entrada duplicada.

SALARY 
1500.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

O MS SQL Server Joinscláusula é usada para combinar registros de duas ou mais tabelas em um banco de dados. Um JOIN é um meio de combinar campos de duas tabelas usando valores comuns a cada uma.

Considere as duas tabelas a seguir, (a) A tabela CLIENTES é a seguinte -

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00

(b) Outra tabela é ORDERS da seguinte forma -

OID  DATE                       CUSTOMER_ID        AMOUNT 
100  2009-10-08 00:00:00.000    3                  1500.00 
101  2009-11-20 00:00:00.000    2                  1560.00 
102  2009-10-08 00:00:00.000    3                  3000.00 
103  2008-05-20 00:00:00.000    4                  2060.00

Vamos juntar essas duas tabelas em nossa instrução SELECT da seguinte maneira -

SELECT ID, NAME, AGE, AMOUNT 
   FROM CUSTOMERS, ORDERS 
   WHERE  CUSTOMERS.ID = ORDERS.CUSTOMER_ID 
OR 
SELECT A.ID, A.NAME, A.AGE, B.AMOUNT 
   FROM CUSTOMERS A inner join  ORDERS B on A.ID = B.Customer_ID

O comando acima produzirá a seguinte saída.

ID   NAME      AGE    AMOUNT 
2    Khilan    25     1560.00 
3    kaushik   23     1500.00 
3    kaushik   23     3000.00 
4    Chaitali  25     2060.00

É perceptível que a junção é realizada na cláusula WHERE. Vários operadores podem ser usados ​​para unir tabelas, como =, <,>, <>, <=,> =,! =, BETWEEN, LIKE e NOT; todos eles podem ser usados ​​para unir tabelas. No entanto, o operador mais comum é o símbolo de igual.

Tipos de junção do MS SQL Server -

Existem diferentes tipos de junções disponíveis no MS SQL Server -

  • INNER JOIN - Retorna linhas quando há uma correspondência em ambas as tabelas.

  • LEFT JOIN - Retorna todas as linhas da tabela da esquerda, mesmo se não houver correspondências na tabela da direita.

  • RIGHT JOIN - Retorna todas as linhas da tabela da direita, mesmo se não houver correspondências na tabela da esquerda.

  • FULL JOIN - Retorna linhas quando há uma correspondência em uma das tabelas.

  • SELF JOIN - Isso é usado para unir uma tabela a si mesma como se a tabela fosse duas tabelas, renomeando temporariamente pelo menos uma tabela na instrução do MS SQL Server.

  • CARTESIAN JOIN - Retorna o produto cartesiano dos conjuntos de registros de duas ou mais tabelas unidas.

UMA sub-query ou Inner query ou Nested queryé uma consulta dentro de outra consulta do SQL Server e incorporada na cláusula WHERE. Uma subconsulta é usada para retornar dados que serão usados ​​na consulta principal como uma condição para restringir ainda mais os dados a serem recuperados.

Subconsultas podem ser usadas com as instruções SELECT, INSERT, UPDATE e DELETE junto com os operadores como =, <,>,> =, <=, IN, BETWEEN, etc.

Existem algumas regras que as subconsultas devem seguir -

  • Você deve colocar uma subconsulta entre parênteses.

  • Uma subconsulta deve incluir uma cláusula SELECT e uma cláusula FROM.

  • Uma subconsulta pode incluir cláusulas WHERE, GROUP BY e HAVING opcionais.

  • Uma subconsulta não pode incluir cláusulas COMPUTE ou FOR BROWSE.

  • Você pode incluir uma cláusula ORDER BY somente quando uma cláusula TOP estiver incluída.

  • Você pode aninhar subconsultas em até 32 níveis.

Subconsultas com instrução SELECT

Sintaxe

As subconsultas são usadas com mais freqüência com a instrução SELECT. A seguir está a sintaxe básica.

SELECT column_name [, column_name ] 
FROM   table1 [, table2 ] 
WHERE  column_name OPERATOR 
   (SELECT column_name [, column_name ] 
   FROM table1 [, table2 ] 
   [WHERE])

Exemplo

Considere a tabela CUSTOMERS com os seguintes registros.

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00

Vamos aplicar a seguinte subconsulta com a instrução SELECT.

SELECT *  
   FROM CUSTOMERS
   WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)

O comando acima produzirá a seguinte saída.

ID  NAME       AGE       ADDRESS          SALARY 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
7   Muffy      24        Indore           10000.00

Subconsultas com instrução INSERT

Subconsultas também podem ser usadas com instruções INSERT. A instrução INSERT usa os dados retornados da subconsulta para inserir em outra tabela. Os dados selecionados na subconsulta podem ser modificados com qualquer uma das funções de caractere, data ou número.

Sintaxe

A seguir está a sintaxe básica.

INSERT INTO table_name [ (column1 [, column2 ]) ] 
   SELECT [ *|column1 [, column2 ] 
   FROM table1 [, table2 ] 
   [ WHERE VALUE OPERATOR ]

Exemplo

Considere uma tabela CUSTOMERS_BKP com estrutura semelhante à tabela CUSTOMERS. A seguir está a sintaxe para copiar a tabela CUSTOMERS completa para CUSTOMERS_BKP.

INSERT INTO CUSTOMERS_BKP 
   SELECT * FROM CUSTOMERS  
   WHERE ID IN (SELECT ID FROM CUSTOMERS)

Subconsultas com instrução UPDATE

A subconsulta pode ser usada em conjunto com a instrução UPDATE. Uma única coluna ou várias colunas em uma tabela podem ser atualizadas ao usar uma subconsulta com a instrução UPDATE.

Sintaxe

A seguir está a sintaxe básica.

UPDATE table 
SET column_name = new_value 
[ WHERE OPERATOR [ VALUE ] 
   (SELECT COLUMN_NAME 
   FROM TABLE_NAME) 
   [ WHERE) ]

Exemplo

Vamos supor que temos a tabela CUSTOMERS_BKP disponível, que é o backup da tabela CUSTOMERS.

O exemplo de comando a seguir atualiza SALÁRIO em 0,25 vezes na tabela CLIENTES para todos os clientes cuja IDADE seja maior ou igual a 27.

UPDATE CUSTOMERS 
   SET SALARY = SALARY * 0.25 
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 )

Isso afetará duas linhas e, finalmente, a tabela CUSTOMERS terá os seguintes registros.

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           500.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              2125.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00

Subconsultas com instrução DELETE

A subconsulta pode ser usada em conjunto com a instrução DELETE como com qualquer outra instrução mencionada acima.

Sintaxe

A seguir está a sintaxe básica.

DELETE FROM TABLE_NAME 
[ WHERE OPERATOR [ VALUE ] 
   (SELECT COLUMN_NAME 
   FROM TABLE_NAME) 
   [ WHERE) ]

Exemplo

Vamos supor que temos a tabela CUSTOMERS_BKP disponível, que é o backup da tabela CUSTOMERS.

O exemplo de comando a seguir exclui registros da tabela CLIENTES para todos os clientes cuja IDADE seja maior ou igual a 27.

DELETE FROM CUSTOMERS 
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >=27 )

Isso impactaria duas linhas e, finalmente, a tabela CUSTOMERS terá os seguintes registros.

ID  NAME       AGE       ADDRESS          SALARY 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00  
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00

O MS SQL Server Stored procedure é usado para economizar tempo para escrever código repetidamente, armazenando o mesmo no banco de dados e também obter a saída necessária passando parâmetros.

Sintaxe

A seguir está a sintaxe básica da criação de procedimento armazenado.

Create procedure <procedure_Name> 
As 
Begin 
<SQL Statement> 
End 
Go

Exemplo

Considere a tabela CUSTOMERS com os seguintes registros.

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00

O comando a seguir é um exemplo que buscaria todos os registros da tabela CUSTOMERS no banco de dados Testdb.

CREATE PROCEDURE SelectCustomerstabledata 
AS 
SELECT * FROM Testdb.Customers 
GO

O comando acima produzirá a seguinte saída.

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00 
2   Khilan     25        Delhi             1500.00 
3   kaushik    23        Kota              2000.00 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00

UMA transactioné uma unidade de trabalho executada em um banco de dados. As transações são unidades ou sequências de trabalho realizadas em uma ordem lógica, seja de forma manual por um usuário ou automaticamente por algum tipo de programa de banco de dados.

Uma transação é a propagação de uma ou mais alterações no banco de dados. Por exemplo, se você estiver criando um registro ou atualizando um registro ou excluindo um registro da tabela, então você está executando uma transação na tabela. É importante controlar as transações para garantir a integridade dos dados e lidar com os erros do banco de dados.

Praticamente, você agrupará muitas consultas SQL em um grupo e executará todas elas juntas como parte de uma transação.

Propriedades das transações

As transações têm as quatro propriedades padrão a seguir, geralmente conhecidas pela sigla ACID -

  • Atomicity- Garante que todas as operações dentro da unidade de trabalho sejam concluídas com sucesso; caso contrário, a transação é abortada no ponto de falha e as operações anteriores voltam ao estado anterior.

  • Consistency - Garante que o banco de dados mude de estado corretamente após uma transação confirmada com sucesso.

  • Isolation - Permite que as transações operem de forma independente e transparente entre si.

  • Durability - Garante que o resultado ou efeito de uma transação confirmada persiste em caso de falha do sistema.

Controle de transações

Existem seguintes comandos usados ​​para controlar as transações -

  • COMMIT - Para salvar as alterações.

  • ROLLBACK - Para reverter as alterações.

  • SAVEPOINT - Cria pontos dentro de grupos de transações nas quais ROLLBACK.

  • SET TRANSACTION - Coloca um nome em uma transação.

Os comandos de controle transacional são usados ​​apenas com os comandos DML INSERT, UPDATE e DELETE. Eles não podem ser usados ​​ao criar tabelas ou eliminá-los porque essas operações são confirmadas automaticamente no banco de dados.

Para usar comandos de controle transacional no MS SQL Server, temos que começar a transação com 'begin tran' ou o comando begin transaction, caso contrário, esses comandos não funcionarão.

Comando COMMIT

O comando COMMIT é o comando transacional usado para salvar as alterações invocadas por uma transação no banco de dados. Este comando salva todas as transações no banco de dados desde o último comando COMMIT ou ROLLBACK.

Sintaxe

A seguir está a sintaxe do comando COMMIT.

COMMIT;

Exemplo

Considere a tabela CUSTOMERS com os seguintes registros.

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00 
2   Khilan     25        Delhi             1500.00 
3   kaushik    23        Kota              2000.00 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00

O exemplo de comando a seguir irá deletar registros da tabela com idade = 25 e então COMMIT as mudanças no banco de dados.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25 
COMMIT

Como resultado, duas linhas da tabela seriam excluídas e a instrução SELECT produzirá a seguinte saída.

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00
3   kaushik    23        Kota              2000.00
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00

Comando ROLLBACK

O comando ROLLBACK é o comando transacional usado para desfazer transações que ainda não foram salvas no banco de dados. Este comando só pode ser usado para desfazer transações desde o último comando COMMIT ou ROLLBACK foi emitido.

Sintaxe

A seguir está a sintaxe do comando ROLLBACK.

ROLLBACK

Exemplo

Considere a tabela CUSTOMERS com os seguintes registros.

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00

O exemplo de comando a seguir excluirá os registros da tabela com idade = 25 e, em seguida, ROLLBACK as alterações no banco de dados.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25; 
ROLLBACK

Como resultado, a operação de exclusão não afetará a tabela e a instrução SELECT produzirá o seguinte resultado.

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00

Comando SAVEPOINT

SAVEPOINT é um ponto em uma transação em que você pode reverter a transação para um determinado ponto sem reverter toda a transação.

Sintaxe

A seguir está a sintaxe do comando SAVEPOINT.

SAVE TRANSACTION SAVEPOINT_NAME

Este comando serve apenas na criação de um SAVEPOINT entre as instruções transacionais. O comando ROLLBACK é usado para desfazer um grupo de transações.

A seguir está a sintaxe para reverter para um SAVEPOINT.

ROLLBACK TO SAVEPOINT_NAME

No exemplo a seguir, excluiremos três registros diferentes da tabela CUSTOMERS. Teremos que criar um SAVEPOINT antes de cada exclusão, para que possamos ROLLBACK para qualquer SAVEPOINT a qualquer momento para retornar os dados apropriados ao seu estado original.

Exemplo

Considere a tabela CLIENTES com os seguintes registros -

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00

A seguir está a série de operações -

Begin Tran 
SAVE Transaction SP1 
Savepoint created. 
DELETE FROM CUSTOMERS WHERE ID = 1  
1 row deleted. 
SAVE Transaction SP2 
Savepoint created. 
DELETE FROM CUSTOMERS WHERE ID = 2 
1 row deleted.
SAVE Transaction SP3 
Savepoint created. 
DELETE FROM CUSTOMERS WHERE ID = 3 
1 row deleted.

As três exclusões ocorreram, no entanto, mudamos de ideia e decidimos ROLLBACK para o SAVEPOINT que identificamos como SP2. Como o SP2 foi criado após a primeira exclusão, as duas últimas exclusões foram desfeitas -

ROLLBACK Transaction SP2 
Rollback complete.

Observe que apenas a primeira exclusão ocorreu desde que voltamos para o SP2.

SELECT * FROM CUSTOMERS

6 linhas selecionadas.

ID  NAME       AGE       ADDRESS          SALARY 
2   Khilan     25        Delhi        1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00

Comando SET TRANSACTION

O comando SET TRANSACTION pode ser usado para iniciar uma transação do banco de dados. Este comando é usado para especificar características para a transação que se segue.

Sintaxe

A seguir está a sintaxe para SET TRANSACTION.

SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>

Indexessão tabelas de pesquisa especiais que o mecanismo de pesquisa de banco de dados pode usar para acelerar a recuperação de dados. Simplificando, umindexé um ponteiro para dados em uma tabela. Um índice em um banco de dados é muito semelhante a um índice no final de um livro.

Por exemplo, se você quiser fazer referência a todas as páginas de um livro que discute um determinado tópico, consulte primeiro o índice, que lista todos os tópicos em ordem alfabética e, em seguida, é referido a um ou mais números de página específicos.

Um índice ajuda a acelerar as consultas SELECT e cláusulas WHERE, mas retarda a entrada de dados, com instruções UPDATE e INSERT. Os índices podem ser criados ou eliminados sem nenhum efeito nos dados.

A criação de um índice envolve a instrução CREATE INDEX, que permite nomear o índice, especificar a tabela e qual coluna ou colunas indexar e indicar se o índice está em ordem crescente ou decrescente.

Os índices também podem ser exclusivos, semelhantes à restrição UNIQUE, no sentido de que o índice evita entradas duplicadas na coluna ou combinação de colunas nas quais há um índice.

Comando CREATE INDEX

A seguir está a sintaxe básica de CREATE INDEX.

Sintaxe

CREATE INDEX index_name ON table_name

Índices de coluna única

Um índice de coluna única é aquele criado com base em apenas uma coluna da tabela. A seguir está a sintaxe básica.

Sintaxe

CREATE INDEX index_name 
ON table_name (column_name)

Exemplo

CREATE INDEX singlecolumnindex 
ON customers (ID)

Índices Únicos

Índices exclusivos são usados ​​não apenas para desempenho, mas também para integridade de dados. Um índice exclusivo não permite que nenhum valor duplicado seja inserido na tabela. A seguir está a sintaxe básica.

Sintaxe

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

Exemplo

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Índices Compostos

Um índice composto é um índice em duas ou mais colunas de uma tabela. A seguir está a sintaxe básica.

Sintaxe

CREATE INDEX index_name on table_name (column1, column2)

Exemplo

CREATE INDEX compositeindex 
on customers (NAME, ID)

Seja para criar um índice de coluna única ou um índice composto, leve em consideração a (s) coluna (s) que você pode usar com muita frequência na cláusula WHERE de uma consulta como condições de filtro.

Se houver apenas uma coluna usada, um índice de coluna única deve ser a escolha. Se houver duas ou mais colunas que são freqüentemente usadas na cláusula WHERE como filtros, o índice composto seria a melhor escolha.

Índices implícitos

Índices implícitos são índices criados automaticamente pelo servidor de banco de dados quando um objeto é criado. Os índices são criados automaticamente para restrições de chave primária e restrições exclusivas.

Comando DROP INDEX

Um índice pode ser eliminado usando o comando MS SQL SERVER DROP. Deve-se ter cuidado ao descartar um índice, pois o desempenho pode ser reduzido ou melhorado.

Sintaxe

A seguir está a sintaxe básica.

DROP INDEX tablename.index_name

Quando evitar índices?

Embora os índices tenham como objetivo melhorar o desempenho dos bancos de dados, há momentos em que eles devem ser evitados. As seguintes diretrizes indicam quando o uso de um índice deve ser reconsiderado -

  • Os índices não devem ser usados ​​em tabelas pequenas.

  • As tabelas que possuem operações de inserção ou atualização de lote grandes e frequentes não devem ser indexadas.

  • Os índices não devem ser usados ​​em colunas que contêm um grande número de valores NULL.

  • As colunas que são frequentemente manipuladas não devem ser indexadas.

O MS SQL Server possui muitas funções integradas para executar o processamento em strings ou dados numéricos. A seguir está a lista de todas as funções integradas de SQL úteis -

  • SQL Server COUNT Function - A função de agregação COUNT do SQL Server é usada para contar o número de linhas em uma tabela de banco de dados.

  • SQL Server MAX Function - A função agregada SQL Server MAX permite selecionar o valor mais alto (máximo) para uma determinada coluna.

  • SQL Server MIN Function - A função agregada MIN do SQL Server permite selecionar o valor mais baixo (mínimo) para uma determinada coluna.

  • SQL Server AVG Function - A função de agregação do AVG do SQL Server seleciona o valor médio para determinada coluna da tabela.

  • SQL Server SUM Function - A função agregada SUM do SQL Server permite selecionar o total para uma coluna numérica.

  • SQL Server SQRT Function - Isso é usado para gerar uma raiz quadrada de um determinado número.

  • SQL Server RAND Function - Isso é usado para gerar um número aleatório usando o comando SQL.

  • SQL Server CONCAT Function - Isso é usado para concatenar vários parâmetros em um único parâmetro.

  • SQL Server Numeric Functions - Lista completa de funções SQL necessárias para manipular números em SQL.

  • SQL Server String Functions - Lista completa de funções SQL necessárias para manipular strings em SQL.

As funções de string do MS SQL Server podem ser aplicadas ao valor da string ou retornarão o valor da string ou dados numéricos.

A seguir está a lista de funções String com exemplos.

ASCII ()

O valor do código Ascii virá como saída para uma expressão de caractere.

Exemplo

A consulta a seguir fornecerá o valor do código Ascii de um determinado caractere.

Select ASCII ('word')

CARACTERES()

O caractere virá como saída para um determinado código Ascii ou inteiro.

Exemplo

A consulta a seguir fornecerá o caractere para um determinado inteiro.

Select CHAR(97)

NCHAR ()

O caractere Unicode virá como saída para um determinado inteiro.

Exemplo

A consulta a seguir fornecerá o caractere Unicode para um determinado inteiro.

Select NCHAR(300)

CHARINDEX ()

A posição inicial para determinada expressão de pesquisa virá como saída em uma determinada expressão de string.

Exemplo

A consulta a seguir fornecerá a posição inicial do caractere 'G' para a expressão de string 'KING' fornecida.

Select CHARINDEX('G', 'KING')

ESQUERDA()

Parte esquerda de uma determinada string até que o número especificado de caracteres venha como saída para uma determinada string.

Exemplo

A consulta a seguir fornecerá a string 'WORL' conforme mencionado 4 números de caracteres para a string 'WORLD' fornecida.

Select LEFT('WORLD', 4)

DIREITO()

Parte direita da string dada até o número especificado de caracteres virão como saída para uma determinada string.

Exemplo

A consulta a seguir fornecerá a string 'DIA' conforme mencionado 3 números de caracteres para a string 'ÍNDIA' fornecida.

Select RIGHT('INDIA', 3)

SUBSTRING ()

Parte de uma string com base no valor da posição inicial e no valor do comprimento virá como saída para uma determinada string.

Exemplo

As consultas a seguir fornecerão as strings 'WOR', 'DIA', 'ING' conforme mencionamos (1,3), (3,3) e (2,3) como valores iniciais e de comprimento, respectivamente, para as strings 'WORLD' , 'INDIA' e 'KING'.

Select SUBSTRING ('WORLD', 1,3) 
Select SUBSTRING ('INDIA', 3,3) 
Select SUBSTRING ('KING', 2,3)

LEN ()

O número de caracteres virá como saída para uma determinada expressão de string.

Exemplo

A consulta a seguir fornecerá o 5 para a expressão de string 'OLÁ'.

Select LEN('HELLO')

MAIS BAIXO()

String minúscula virá como saída para um dado string fornecido.

Exemplo

A consulta a seguir fornecerá o 'sqlserver' para os dados de caractere 'SQLServer'.

Select LOWER('SQLServer')

SUPERIOR()

String maiúscula virá como saída para um dado string.

Exemplo

A consulta a seguir fornecerá o 'SQLSERVER' para os dados de caractere 'SqlServer'.

Select UPPER('SqlServer')

LTRIM ()

A expressão de string virá como saída para dados de string fornecidos após a remoção dos espaços em branco iniciais.

Exemplo

A consulta a seguir fornecerá o 'MUNDO' para os dados de caractere 'MUNDO'.

Select LTRIM('   WORLD')

RTRIM ()

A expressão de string virá como saída para um dado string após remover os espaços em branco à direita.

Exemplo

A consulta a seguir fornecerá o 'INDIA' para os dados de caractere 'INDIA'.

Select RTRIM('INDIA   ')

SUBSTITUIR()

A expressão de string virá como saída para um dado string após substituir todas as ocorrências do caractere especificado pelo caractere especificado.

Exemplo

A consulta a seguir fornecerá a string 'KNDKA' para os dados da string 'INDIA'.

Select REPLACE('INDIA', 'I', 'K')

REPLICAR ()

A repetição da expressão de string virá como saída para dados de string específicos com o número especificado de vezes.

Exemplo

A consulta a seguir fornecerá a string 'WORLDWORLD' para os dados da string 'WORLD'.

Select REPLICATE('WORLD', 2)

REVERTER()

A expressão reversa da string virá como saída para os dados de uma determinada string.

Exemplo

A consulta a seguir fornecerá a string 'DLROW' para os dados da string 'WORLD'.

Select REVERSE('WORLD')

SOUNDEX ()

Retorna o código de quatro caracteres (SOUNDEX) para avaliar a similaridade de duas strings fornecidas.

Exemplo

A consulta a seguir fornecerá o 'S530' para as strings 'Smith', 'Smyth'.

Select SOUNDEX('Smith'), SOUNDEX('Smyth')

DIFERENÇA()

O valor inteiro virá como saída de duas expressões fornecidas.

Exemplo

A consulta a seguir fornecerá 4 para as expressões 'Smith', 'Smyth'.

Select Difference('Smith','Smyth')

Note - Se o valor de saída for 0 indica fraco ou nenhuma semelhança entre dar 2 expressões.

ESPAÇO()

String virá como saída com o número especificado de espaços.

Exemplo

A consulta a seguir dará o 'I LOVE INDIA'.

Select 'I'+space(1)+'LOVE'+space(1)+'INDIA'

COISA()

A expressão da string virá como saída para um dado string após a substituição do caractere inicial até o comprimento especificado pelo caractere especificado.

Exemplo

A consulta a seguir fornecerá a string 'AIJKFGH' para os dados da string 'ABCDEFGH' conforme o caractere inicial e o comprimento fornecidos como 2 e 4, respectivamente, e 'IJK' como a string de destino especificada.

Select STUFF('ABCDEFGH', 2,4,'IJK')

STR ()

Os dados de caracteres virão como saída para os dados numéricos fornecidos.

Exemplo

A consulta a seguir fornecerá 187,37 para os 187,369 fornecidos com base no comprimento especificado como 6 e decimal como 2.

Select STR(187.369,6,2)

UNICODE ()

O valor inteiro virá como saída para o primeiro caractere de determinada expressão.

Exemplo

A consulta a seguir fornecerá 82 para a expressão 'RAMA'.

Select UNICODE('RAMA')

QUOTENAME ()

A string fornecida virá como saída com o delimitador especificado.

Exemplo

A consulta a seguir fornecerá o "RAMA" para a string 'RAMA' fornecida, conforme especificamos aspas duplas como delimitador.

Select QUOTENAME('RAMA','"')

PATINDEX ()

A posição inicial da primeira ocorrência da expressão dada, conforme especificamos a posição 'I', é necessária.

Exemplo

A consulta a seguir dará o 1 para 'ÍNDIA'.

Select PATINDEX('I%','INDIA')

FORMATO()

A expressão fornecida virá como saída com o formato especificado.

Exemplo

A consulta a seguir fornecerá 'segunda-feira, 16 de novembro de 2015' para a função getdate de acordo com o formato especificado com 'D' referente ao nome do dia da semana.

SELECT FORMAT ( getdate(), 'D')

CONCAT ()

Uma única string virá como saída após concatenar os valores de parâmetro fornecidos.

Exemplo

A consulta a seguir fornecerá 'A, B, C' para os parâmetros fornecidos.

Select CONCAT('A',',','B',',','C')

A seguir está a lista de funções de data no MS SQL Server.

GETDATE ()

Ele retornará a data atual junto com a hora.

Sintaxe

Sintaxe para a função acima -

GETDATE()

Exemplo

A consulta a seguir retornará a data atual junto com a hora no MS SQL Server.

Select getdate() as currentdatetime

DATEPART ()

Ele retornará a parte da data ou hora.

Sintaxe

Sintaxe para a função acima -

DATEPART(datepart, datecolumnname)

Exemplo

Example 1 - A consulta a seguir retornará a parte da data atual no MS SQL Server.

Select datepart(day, getdate()) as currentdate

Example 2 - A consulta a seguir retornará a parte do mês atual no MS SQL Server.

Select datepart(month, getdate()) as currentmonth

DATEADD ()

Ele exibirá a data e a hora adicionando ou subtraindo a data e o intervalo de tempo.

Sintaxe

Sintaxe para a função acima -

DATEADD(datepart, number, datecolumnname)

Exemplo

A consulta a seguir retornará a data e hora após 10 dias da data e hora atuais no MS SQL Server.

Select dateadd(day, 10, getdate()) as after10daysdatetimefromcurrentdatetime

DATEDIFF ()

Ele exibirá a data e a hora entre duas datas.

Sintaxe

Sintaxe para a função acima -

DATEDIFF(datepart, startdate, enddate)

Exemplo

A consulta a seguir retornará a diferença de horas entre as datas de 16/11/2015 e 11/11/2015 no MS SQL Server.

Select datediff(hour, 2015-11-16, 2015-11-11) as 
differencehoursbetween20151116and20151111

CONVERTER()

Ele exibirá a data e a hora em diferentes formatos.

Sintaxe

Sintaxe para a função acima -

CONVERT(datatype, expression, style)

Exemplo

As consultas a seguir retornarão a data e a hora em formatos diferentes no MS SQL Server.

SELECT CONVERT(VARCHAR(19),GETDATE()) 
SELECT CONVERT(VARCHAR(10),GETDATE(),10) 
SELECT CONVERT(VARCHAR(10),GETDATE(),110)

As funções numéricas do MS SQL Server podem ser aplicadas a dados numéricos e retornarão dados numéricos.

A seguir está a lista de funções numéricas com exemplos.

ABDÔMEN()

O valor absoluto virá como saída para a expressão numérica.

Exemplo

A consulta a seguir fornecerá o valor absoluto.

Select ABS(-22)

ACOS ()

O valor do arco cosseno virá como saída para a expressão numérica especificada.

Exemplo

A consulta a seguir fornecerá o valor do arco cosseno de 0.

Select ACOS(0)

COMO EM()

O valor do arco seno vem como saída para a expressão numérica especificada.

Exemplo

A consulta a seguir fornecerá o valor do arco seno de 0.

Select ASIN(0)

NUMA()

O valor da tangente do arco virá como saída para a expressão numérica especificada.

Exemplo

A consulta a seguir fornecerá o valor 0 da tangente do arco.

Select ATAN(0)

ATN2 ()

O valor da tangente do arco em todos os quatro quadrantes virá como saída para a expressão numérica especificada.

Exemplo

A consulta a seguir fornecerá o valor da tangente do arco em todos os quatro quadrantes de 0.

Select ATN2(0, -1)

Considere a tabela CUSTOMERS com os seguintes registros.

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00

ENTRE()

Se os valores existirem entre as duas expressões fornecidas, eles virão como saída.

Exemplo

A consulta a seguir fornecerá a seguinte saída.

SELECT salary from customers where salary between 2000 and 8500

Resultado

salary 
2000.00 
2000.00 
6500.00 
8500.00 
4500.00

MIN ()

O valor mínimo virá como saída da expressão fornecida.

Exemplo

A consulta a seguir fornecerá '1500,00' para a expressão de 'salário' fornecida na tabela de clientes.

Select MIN(salary)from CUSTOMERS

MAX ()

O valor máximo virá como saída da expressão fornecida.

Exemplo

A consulta a seguir fornecerá '10000,00' para a expressão 'salário' fornecida da tabela de clientes.

Select MAX(salary)from CUSTOMERS

SQRT ()

A raiz quadrada da expressão numérica fornecida virá como saída.

Exemplo

A consulta a seguir fornecerá 2 para as 4 expressões numéricas fornecidas.

Select SQRT(4)

PI ()

O valor PI virá como saída.

Exemplo

A consulta a seguir fornecerá 3,14159265358979 para o valor PI.

Select PI()

TETO()

O valor fornecido virá como saída após o arredondamento dos decimais, que é o próximo valor mais alto.

Exemplo

A consulta a seguir fornecerá 124 para o valor 123,25 fornecido.

Select CEILING(123.25)

CHÃO()

O valor fornecido virá como saída depois de arredondar os decimais que são menores ou iguais à expressão.

Exemplo

A consulta a seguir fornecerá 123 para o valor 123,25 fornecido.

Select FLOOR(123.25)

REGISTRO()

O logaritmo natural da expressão dada virá como saída.

Exemplo

A consulta a seguir fornecerá 0 para o valor 1 fornecido.

Select LOG(1)