T-SQL - Guía rápida

En la década de 1970, el producto llamado 'SEQUEL', lenguaje de consulta estructurado en inglés, desarrollado por IBM y más tarde SEQUEL pasó a llamarse 'SQL', que significa lenguaje de consulta estructurado.

En 1986, SQL fue aprobado por ANSI (American National Standards Institute) y en 1987, fue aprobado por ISO (International Standards Organisation).

SQL es un lenguaje de consulta de estructura que es un lenguaje de base de datos común para todos los productos RDBMS. Diferentes proveedores de productos RDBMS han desarrollado su propio lenguaje de base de datos ampliando SQL para sus propios productos RDBMS.

T-SQL significa Transact Structure Query Language, que es un producto de Microsoft y es una extensión del lenguaje SQL.

Ejemplo

MS SQL Server - SQL \ T-SQL

ORACLE - SQL \ PL-SQL

El tipo de datos de SQL Server es un atributo que especifica los tipos de datos de cualquier objeto. Cada columna, variable y expresión tiene un tipo de datos relacionado en SQL Server. Estos tipos de datos se pueden utilizar al crear tablas. Puede elegir un tipo de datos en particular para una columna de tabla según sus necesidades.

SQL Server ofrece siete categorías que incluyen otra categoría de tipos de datos para su uso.

Tipos numéricos exactos

Tipo Desde A
Empezando -9,223,372,036,854,775,808 9.223.372.036.854.775.807
En t -2,147,483,648 2,147,483,647
pequeño -32,768 32,767
diminuto 0 255
poco 0 1
decimal -10 ^ 38 +1 10 ^ 38 –1
numérico -10 ^ 38 +1 10 ^ 38 –1
dinero -922,337,203,685,477.5808 +922,337,203,685,477.5807
poco dinero -214,748.3648 +214,748.3647

Numérico y decimal son tipos de datos de precisión fija y escala y son funcionalmente equivalentes.

Tipos numéricos aproximados

Tipo Desde A
Flotador -1,79E + 308 1,79E + 308
Real -3,40E + 38 3.40E + 38

Tipos de fecha y hora

Tipo Desde A

datetime(3,33 milisegundos de precisión)

1 de enero de 1753 31 de diciembre de 9999

smalldatetime(Precisión de 1 minuto)

1 de enero de 1900 6 de junio de 2079

date(Precisión de 1 día. Introducido en SQL Server 2008)

1 de enero de 0001 31 de diciembre de 9999

datetimeoffset(Precisión de 100 nanosegundos. Introducido en SQL Server 2008)

1 de enero de 0001 31 de diciembre de 9999

datetime2(100 nanosegundos de precisión. Introducido en SQL Server 2008)

1 de enero de 0001 31 de diciembre de 9999

time(100 nanosegundos de precisión. Introducido en SQL Server 2008)

00: 00: 00.0000000 23: 59: 59.9999999

Cadenas de caracteres

No Señor Tipo y descripción
1

char

Datos de caracteres no Unicode de longitud fija con una longitud máxima de 8.000 caracteres.

2

varchar

Datos no Unicode de longitud variable con un máximo de 8.000 caracteres.

3

Varchar (max)

Datos no Unicode de longitud variable con una longitud máxima de 231 caracteres (introducido en SQL Server 2005).

4

text

Datos no Unicode de longitud variable con una longitud máxima de 2,147,483,647 caracteres

Cadenas de caracteres Unicode

No Señor Tipo y descripción
1

nchar

Datos Unicode de longitud fija con una longitud máxima de 4000 caracteres.

2

nvarchar

Datos Unicode de longitud variable con una longitud máxima de 4000 caracteres.

3

Nvarchar (max)

Datos Unicode de longitud variable con una longitud máxima de 2 30 caracteres (introducido en SQL Server 2005).

4

ntext

Datos Unicode de longitud variable con una longitud máxima de 1.073.741.823 caracteres.

Cadenas binarias

No Señor Tipo y descripción
1

binary

Datos binarios de longitud fija con una longitud máxima de 8.000 bytes.

2

varbinary

Datos binarios de longitud variable con una longitud máxima de 8.000 bytes.

3

varbinary(max)

Datos binarios de longitud variable con una longitud máxima de 2 31 bytes (introducido en SQL Server 2005).

4

image

Datos binarios de longitud variable con una longitud máxima de 2,147,483,647 bytes.

Otros tipos de datos

  • sql_variant - Almacena valores de varios tipos de datos compatibles con SQL Server, excepto texto, ntext y marca de tiempo.

  • timestamp - Almacena un número único en toda la base de datos que se actualiza cada vez que se actualiza una fila.

  • uniqueidentifier - Almacena un identificador único global (GUID).

  • xml- Almacena datos XML. Puede almacenar instancias XML en una columna o variable (introducido en SQL Server 2005).

  • cursor - Una referencia a un cursor.

  • table - Almacena un conjunto de resultados para su posterior procesamiento.

  • hierarchyid - Un tipo de datos del sistema de longitud variable que se utiliza para representar la posición en una jerarquía (introducido en SQL Server 2008).

Crear una tabla básica implica nombrar la tabla y definir sus columnas y el tipo de datos de cada columna.

El servidor SQL CREATE TABLE La declaración se usa para crear una nueva tabla.

Sintaxis

A continuación se muestra la sintaxis básica de la declaración CREATE TABLE:

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

CREATE TABLE es la palabra clave que le dice al sistema de base de datos lo que quieres hacer. En este caso, desea crear una nueva tabla. El nombre o identificador exclusivo de la tabla sigue a la instrucción CREATE TABLE. Luego, entre paréntesis, aparece la lista que define cada columna de la tabla y qué tipo de tipo de datos es. La sintaxis se vuelve más clara de entender con el siguiente ejemplo.

Se puede crear una copia de una tabla existente usando una combinación de la instrucción CREATE TABLE y la instrucción SELECT. Puede consultar los detalles completos en Crear tabla con otra tabla.

Ejemplo

En este ejemplo, creemos una tabla CUSTOMERS con ID como clave principal y NOT NULL son las restricciones que muestran que estos campos no pueden ser NULL al crear registros en esta tabla -

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));

Puede verificar si su tabla se ha creado con éxito mirando el mensaje que muestra el servidor SQL; de lo contrario, puede usar el siguiente comando:

exec sp_columns CUSTOMERS

El comando anterior produce la siguiente salida.

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

Ahora puede ver que la tabla CLIENTES está disponible en su base de datos y puede usarla para almacenar la información requerida relacionada con los clientes.

El servidor SQL DROP TABLE La declaración se utiliza para eliminar una definición de tabla y todos los datos, índices, activadores, restricciones y especificaciones de permisos para esa tabla.

Note - Debe tener cuidado al usar este comando porque una vez que se elimina una tabla, toda la información disponible en la tabla también se perderá para siempre.

Sintaxis

A continuación se muestra la sintaxis básica de la declaración DROP TABLE:

DROP TABLE table_name;

Ejemplo

Primero verifiquemos la tabla CLIENTES y luego la borraremos de la base de datos -

Exec sp_columns CUSTOMERS;

El comando anterior muestra la siguiente tabla.

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

La tabla CUSTOMERS está disponible en la base de datos, así que déjela caer. A continuación se muestra el comando para el mismo.

DROP TABLE CUSTOMERS; 
Command(s) completed successfully.

Con el comando anterior, no obtendrá ninguna fila.

Exec sp_columns CUSTOMERS; 
No rows\data will be displayed

El servidor SQL INSERT INTO La declaración se usa para agregar nuevas filas de datos a una tabla en la base de datos.

Sintaxis

A continuación se muestran las dos sintaxis básicas de la instrucción INSERT INTO.

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

Donde columna1, columna2, ... columnaN son los nombres de las columnas de la tabla en la que desea insertar datos.

No es necesario que especifique el nombre de la (s) columna (s) en la consulta SQL si está agregando valores para todas las columnas de la tabla. Pero asegúrese de que el orden de los valores esté en el mismo orden que las columnas de la tabla. A continuación se muestra la sintaxis SQL INSERT INTO:

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

Ejemplo

Las siguientes declaraciones crearán seis registros en la tabla 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 );

Sintaxis

Puede crear un registro en la tabla CLIENTES utilizando la segunda sintaxis de la siguiente manera:

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

Todas las declaraciones anteriores producirán los siguientes registros en la tabla 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

Rellenar una tabla con otra tabla

Puede completar datos en una tabla a través de la instrucción SELECT sobre otra tabla siempre que otra tabla tenga un conjunto de campos, que son necesarios para completar la primera tabla. A continuación se muestra la sintaxis:

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

servidor SQL SELECTLa declaración se utiliza para obtener los datos de una tabla de base de datos que devuelve datos en forma de tabla de resultados. Estas tablas de resultados se denominanresult-sets.

Sintaxis

A continuación se muestra la sintaxis básica de la instrucción SELECT:

SELECT column1, column2, columnN FROM table_name;

Donde, columna1, columna2 ... son los campos de una tabla cuyos valores desea obtener. Si desea obtener todos los campos disponibles en el campo, puede usar la siguiente sintaxis:

SELECT * FROM table_name;

Ejemplo

Considere la tabla CLIENTES que tiene los siguientes 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

El siguiente comando es un ejemplo, que obtendría los campos ID, Nombre y Salario de los clientes disponibles en la tabla CLIENTES:

SELECT ID, NAME, SALARY FROM CUSTOMERS;

El comando anterior producirá el siguiente resultado.

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

Si desea obtener todos los campos de la tabla CLIENTES, utilice la siguiente consulta:

SELECT * FROM CUSTOMERS;

Lo anterior producirá el siguiente 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

El servidor SQL UPDATE La consulta se utiliza para modificar los registros existentes en una tabla.

Puede usar la cláusula WHERE con la consulta UPDATE para actualizar las filas seleccionadas, de lo contrario todas las filas se verían afectadas.

Sintaxis

A continuación se muestra la sintaxis básica de la consulta UPDATE con la cláusula WHERE:

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

Puede combinar N número de condiciones utilizando operadores AND u OR.

Ejemplo

Considere la tabla CLIENTES que tiene los siguientes 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

El siguiente comando es un ejemplo, que actualizaría ADDRESS para un cliente cuyo ID es 6 -

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

La tabla CLIENTES ahora tendrá los siguientes 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

Si desea modificar todos los valores de las columnas ADDRESS y SALARY en la tabla CUSTOMERS, no necesita usar la cláusula WHERE. La consulta UPDATE sería la siguiente:

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

La tabla CLIENTES ahora tendrá los siguientes 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

El servidor SQL DELETE La consulta se utiliza para eliminar los registros existentes de una tabla.

Debe usar la cláusula WHERE con la consulta DELETE para eliminar las filas seleccionadas; de lo contrario, se eliminarían todos los registros.

Sintaxis

A continuación se muestra la sintaxis básica de la consulta DELETE con la cláusula WHERE:

DELETE FROM table_name 
WHERE [condition];

Puede combinar N número de condiciones utilizando operadores AND u OR.

Ejemplo

Considere la tabla CLIENTES que tiene los siguientes 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

El siguiente comando es un ejemplo, que BORRARÍA un cliente, cuyo ID es 6 -

DELETE FROM CUSTOMERS 
WHERE ID = 6;

La tabla CLIENTES ahora tendrá los siguientes 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

Si desea BORRAR todos los registros de la tabla CUSTOMERS, no necesita usar la cláusula WHERE. La consulta DELETE sería la siguiente:

DELETE FROM CUSTOMERS;

La tabla CLIENTES ahora no tendrá ningún registro.

El servidor MS SQL WHERE La cláusula se utiliza para especificar una condición al obtener los datos de una sola tabla o al unirse con varias tablas.

Si se cumple la condición dada, solo entonces devuelve un valor específico de la tabla. Tendrá que usar la cláusula WHERE para filtrar los registros y obtener solo los registros necesarios.

La cláusula WHERE no solo se usa en la instrucción SELECT, sino que también se usa en la instrucción UPDATE, DELETE, etc., que examinaremos en capítulos posteriores.

Sintaxis

A continuación se muestra la sintaxis básica de la instrucción SELECT con la cláusula WHERE:

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

Puede especificar una condición utilizando operadores lógicos o de comparación como>, <, =, LIKE, NOT, etc. El siguiente ejemplo aclarará este concepto.

Ejemplo

Considere la tabla CLIENTES que tiene los siguientes 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

El siguiente comando es un ejemplo que obtendría los campos ID, Nombre y Salario de la tabla CLIENTES donde el salario es mayor que 2000.

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

El comando anterior producirá el siguiente resultado.

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

El siguiente comando es un ejemplo, que obtendría los campos ID, Nombre y Salario de la tabla CLIENTES para un cliente con el nombre 'Hardik'. Es importante tener en cuenta que todas las cadenas deben incluirse entre comillas simples (''), mientras que los valores numéricos deben darse sin ninguna comilla como en el ejemplo anterior:

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

El comando anterior producirá el siguiente resultado.

ID  NAME     SALARY 
5   Hardik   8500.00

El servidor MS SQL LIKELa cláusula se utiliza para comparar un valor con valores similares utilizando operadores comodín. Hay dos comodines que se utilizan junto con el operador LIKE:

  • El signo de porcentaje (%)
  • El subrayado (_)

El signo de porcentaje representa cero, uno o varios caracteres. El guión bajo representa un solo número o carácter. Los símbolos se pueden utilizar en combinaciones.

Sintaxis

A continuación se muestra la sintaxis básica de% y _.

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_'

Puede combinar N número de condiciones utilizando operadores AND u OR. XXXX puede ser cualquier valor numérico o de cadena.

Ejemplo

A continuación se muestran una serie de ejemplos que muestran la parte DONDE tiene una cláusula LIKE diferente con los operadores '%' y '_'.

No Señor Declaración y descripción
1

WHERE SALARY LIKE '200%'

Encuentra cualquier valor que comience con 200

2

WHERE SALARY LIKE '%200%'

Encuentra cualquier valor que tenga 200 en cualquier posición

3

WHERE SALARY LIKE '_00%'

Encuentra cualquier valor que tenga 00 en la segunda y tercera posiciones

4

WHERE SALARY LIKE '2_%_%'

Encuentra cualquier valor que comience con 2 y tenga al menos 3 caracteres de longitud

5

WHERE SALARY LIKE '%2'

Encuentra cualquier valor que termine en 2

6

WHERE SALARY LIKE '_2%3'

Encuentra cualquier valor que tenga un 2 en la segunda posición y termine con un 3

7

WHERE SALARY LIKE '2___3'

Encuentra cualquier valor en un número de cinco dígitos que comience con 2 y termine con 3

Considere que la tabla CLIENTES tiene los siguientes 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

El siguiente comando es un ejemplo, que mostrará todos los registros de la tabla CLIENTES donde SALARIO comienza con 200.

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

El comando anterior producirá el siguiente resultado.

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

El servidor MS SQL ORDERLa cláusula BY se utiliza para ordenar los datos en orden ascendente o descendente, según una o más columnas. Algunas consultas de clasificación de bases de datos dan como resultado un orden ascendente de forma predeterminada.

Sintaxis

A continuación se muestra la sintaxis básica de la cláusula ORDER BY.

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

Puede utilizar más de una columna en la cláusula ORDER BY. Asegúrese de que cualquier columna que esté usando para ordenar, esa columna debe estar en la lista de columnas.

Ejemplo

Considere la tabla CLIENTES que tiene los siguientes 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

El siguiente comando es un ejemplo, que clasificaría el resultado en orden ascendente por NOMBRE y SALARIO.

SELECT * FROM CUSTOMERS 
   ORDER BY NAME, SALARY

El comando anterior producirá el siguiente resultado.

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

El siguiente comando es un ejemplo, que clasificaría el resultado en orden descendente por NOMBRE.

SELECT * FROM CUSTOMERS 
   ORDER BY NAME DESC

El comando anterior producirá el siguiente 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

El servidor SQL GROUP BY La cláusula se usa en colaboración con la instrucción SELECT para organizar datos idénticos en grupos.

La cláusula GROUP BY sigue a la cláusula WHERE en una instrucción SELECT y precede a la cláusula ORDER BY.

Sintaxis

A continuación se muestra la sintaxis básica de la cláusula GROUP BY. La cláusula GROUP BY debe seguir las condiciones de la cláusula WHERE y debe preceder a la cláusula ORDER BY si se utiliza una.

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

Ejemplo

Considere que la tabla CLIENTES tiene los siguientes 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

Si desea conocer el monto total del salario de cada cliente, lo siguiente será la consulta GROUP BY.

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

El comando anterior producirá el siguiente resultado.

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

Consideremos ahora la siguiente tabla CUSTOMERS que tiene los siguientes registros con nombres 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

Si queremos saber el monto total del salario de cada cliente, lo siguiente será la consulta GRUPO POR.

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

El comando anterior producirá el siguiente resultado.

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

El servidor MS SQL DISTINCT La palabra clave se usa junto con la instrucción SELECT para eliminar todos los registros duplicados y obtener solo registros únicos.

Puede haber una situación en la que tenga varios registros duplicados en una tabla. Al buscar dichos registros, tiene más sentido buscar solo registros únicos en lugar de buscar registros duplicados.

Sintaxis

A continuación se muestra la sintaxis básica de la palabra clave DISTINCT para eliminar registros duplicados.

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

Ejemplo

Considere que la tabla CLIENTES tiene los siguientes 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

Veamos cómo la siguiente consulta SELECT devuelve registros de salario duplicados.

SELECT SALARY FROM CUSTOMERS 
   ORDER BY SALARY

El comando anterior producirá el siguiente resultado donde el salario 2000 viene dos veces, que es un registro duplicado de la tabla original.

SALARY 
1500.00 
2000.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

Usemos ahora la palabra clave DISTINCT con la consulta SELECT anterior y veamos el resultado.

SELECT DISTINCT SALARY FROM CUSTOMERS 
   ORDER BY SALARY

El comando anterior produce la siguiente salida donde no tenemos ninguna entrada duplicada.

SALARY 
1500.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

El servidor MS SQL JoinsLa cláusula se utiliza para combinar registros de dos o más tablas en una base de datos. Un JOIN es un medio para combinar campos de dos tablas usando valores comunes a cada uno.

Considere las dos tablas siguientes, (a) La tabla CLIENTES es la siguiente:

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) Otra tabla es PEDIDOS como sigue:

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

Unamos estas dos tablas en nuestra declaración SELECT de la siguiente manera:

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

El comando anterior producirá el siguiente resultado.

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

Es de notar que la unión se realiza en la cláusula WHERE. Se pueden usar varios operadores para unir tablas, como =, <,>, <>, <=,> =,! =, BETWEEN, LIKE y NOT; todos pueden usarse para unir tablas. Sin embargo, el operador más común es el símbolo igual.

Tipos de unión de MS SQL Server -

Hay diferentes tipos de combinaciones disponibles en MS SQL Server:

  • INNER JOIN - Devuelve filas cuando hay una coincidencia en ambas tablas.

  • LEFT JOIN - Devuelve todas las filas de la tabla de la izquierda, incluso si no hay coincidencias en la tabla de la derecha.

  • RIGHT JOIN - Devuelve todas las filas de la tabla de la derecha, incluso si no hay coincidencias en la tabla de la izquierda.

  • FULL JOIN - Devuelve filas cuando hay una coincidencia en una de las tablas.

  • SELF JOIN - Se utiliza para unir una tabla consigo misma como si fueran dos tablas, cambiando temporalmente el nombre de al menos una tabla en la declaración de MS SQL Server.

  • CARTESIAN JOIN - Devuelve el producto cartesiano de los conjuntos de registros de las dos o más tablas unidas.

UN sub-query o Inner query o Nested queryes una consulta dentro de otra consulta de SQL Server e incrustada dentro de la cláusula WHERE. Se utiliza una subconsulta para devolver datos que se utilizarán en la consulta principal como condición para restringir aún más los datos que se recuperarán.

Las subconsultas se pueden utilizar con las instrucciones SELECT, INSERT, UPDATE y DELETE junto con los operadores como =, <,>,> =, <=, IN, BETWEEN, etc.

Hay algunas reglas que deben seguir las subconsultas:

  • Debe incluir una subconsulta entre paréntesis.

  • Una subconsulta debe incluir una cláusula SELECT y una cláusula FROM.

  • Una subconsulta puede incluir cláusulas WHERE, GROUP BY y HAVING opcionales.

  • Una subconsulta no puede incluir cláusulas COMPUTE o FOR BROWSE.

  • Puede incluir una cláusula ORDER BY solo cuando se incluye una cláusula TOP.

  • Puede anidar subconsultas hasta 32 niveles.

Subconsultas con instrucción SELECT

Sintaxis

Las subconsultas se utilizan con mayor frecuencia con la instrucción SELECT. A continuación se muestra la sintaxis básica.

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

Ejemplo

Considere que la tabla CLIENTES tiene los siguientes 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

Apliquemos la siguiente subconsulta con la instrucción SELECT.

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

El comando anterior producirá el siguiente resultado.

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

Subconsultas con instrucción INSERT

Las subconsultas también se pueden usar con instrucciones INSERT. La instrucción INSERT utiliza los datos devueltos por la subconsulta para insertarlos en otra tabla. Los datos seleccionados en la subconsulta se pueden modificar con cualquiera de las funciones de carácter, fecha o número.

Sintaxis

A continuación se muestra la sintaxis básica.

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

Ejemplo

Considere una tabla CUSTOMERS_BKP con una estructura similar a la tabla CUSTOMERS. A continuación se muestra la sintaxis para copiar la tabla CUSTOMERS completa en CUSTOMERS_BKP.

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

Subconsultas con instrucción UPDATE

La subconsulta se puede utilizar junto con la instrucción UPDATE. Se pueden actualizar una o varias columnas en una tabla cuando se usa una subconsulta con la instrucción UPDATE.

Sintaxis

A continuación se muestra la sintaxis básica.

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

Ejemplo

Supongamos que tenemos la tabla CUSTOMERS_BKP disponible, que es una copia de seguridad de la tabla CUSTOMERS.

El siguiente ejemplo de comando actualiza SALARIO 0,25 veces en la tabla CLIENTES para todos los clientes cuya EDAD sea mayor o igual a 27.

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

Esto afectará a dos filas y finalmente la tabla CLIENTES tendrá los siguientes 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 con instrucción DELETE

La subconsulta se puede usar junto con la instrucción DELETE como con cualquier otra instrucción mencionada anteriormente.

Sintaxis

A continuación se muestra la sintaxis básica.

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

Ejemplo

Supongamos que tenemos la tabla CUSTOMERS_BKP disponible, que es una copia de seguridad de la tabla CUSTOMERS.

El siguiente ejemplo de comando elimina registros de la tabla CLIENTES para todos los clientes cuya EDAD sea mayor o igual a 27.

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

Esto afectaría a dos filas y finalmente la tabla CLIENTES tendrá los siguientes 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

El servidor MS SQL Stored procedure se utiliza para ahorrar tiempo al escribir código una y otra vez almacenando el mismo en la base de datos y también para obtener la salida requerida pasando parámetros.

Sintaxis

A continuación se muestra la sintaxis básica de la creación de procedimientos almacenados.

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

Ejemplo

Considere que la tabla CLIENTES tiene los siguientes 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

El siguiente comando es un ejemplo que buscaría todos los registros de la tabla CUSTOMERS en la base de datos Testdb.

CREATE PROCEDURE SelectCustomerstabledata 
AS 
SELECT * FROM Testdb.Customers 
GO

El comando anterior producirá el siguiente 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

UN transactiones una unidad de trabajo que se realiza en una base de datos. Las transacciones son unidades o secuencias de trabajo realizadas en un orden lógico, ya sea de forma manual por un usuario o automáticamente por algún tipo de programa de base de datos.

Una transacción es la propagación de uno o más cambios en la base de datos. Por ejemplo, si está creando un registro o actualizando un registro o eliminando un registro de la tabla, entonces está realizando una transacción en la tabla. Es importante controlar las transacciones para garantizar la integridad de los datos y manejar los errores de la base de datos.

Prácticamente, agrupará muchas consultas SQL en un grupo y las ejecutará todas juntas como parte de una transacción.

Propiedades de las transacciones

Las transacciones tienen las siguientes cuatro propiedades estándar, a las que generalmente se hace referencia con el acrónimo ACID:

  • Atomicity- Asegura que todas las operaciones dentro de la unidad de trabajo se completen con éxito; de lo contrario, la transacción se aborta en el momento del error y las operaciones anteriores se revierten a su estado anterior.

  • Consistency - Garantiza que la base de datos cambie correctamente de estado tras una transacción confirmada con éxito.

  • Isolation - Permite que las transacciones funcionen de forma independiente y transparente entre sí.

  • Durability - Asegura que el resultado o efecto de una transacción comprometida persista en caso de falla del sistema.

Control de transacciones

Existen los siguientes comandos que se utilizan para controlar las transacciones:

  • COMMIT - Para guardar los cambios.

  • ROLLBACK - Revertir los cambios.

  • SAVEPOINT - Crea puntos dentro de grupos de transacciones en los que ROLLBACK.

  • SET TRANSACTION - Coloca un nombre en una transacción.

Los comandos de control transaccional solo se utilizan con los comandos DML INSERT, UPDATE y DELETE únicamente. No se pueden usar al crear tablas o descartarlas porque estas operaciones se confirman automáticamente en la base de datos.

Para usar comandos de control transaccional en MS SQL Server, tenemos que comenzar la transacción con 'begin tran' o comenzar el comando de transacción, de lo contrario estos comandos no funcionarán.

Comando COMMIT

El comando COMMIT es el comando transaccional que se utiliza para guardar los cambios invocados por una transacción en la base de datos. Este comando guarda todas las transacciones en la base de datos desde el último comando COMMIT o ROLLBACK.

Sintaxis

A continuación se muestra la sintaxis del comando COMMIT.

COMMIT;

Ejemplo

Considere que la tabla CLIENTES tiene los siguientes 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

El siguiente ejemplo de comando eliminará los registros de la tabla con edad = 25 y luego COMPROMETE los cambios en la base de datos.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25 
COMMIT

Como resultado, se eliminarán dos filas de la tabla y la instrucción SELECT producirá el siguiente resultado.

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

El comando ROLLBACK es el comando transaccional que se utiliza para deshacer transacciones que aún no se han guardado en la base de datos. Este comando solo se puede usar para deshacer transacciones desde que se emitió el último comando COMMIT o ROLLBACK.

Sintaxis

A continuación se muestra la sintaxis del comando ROLLBACK.

ROLLBACK

Ejemplo

Considere que la tabla CLIENTES tiene los siguientes 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

El siguiente ejemplo de comando eliminará los registros de la tabla que tengan edad = 25 y luego ROLLBACK los cambios en la base de datos.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25; 
ROLLBACK

Como resultado, la operación de eliminación no afectará a la tabla y la instrucción SELECT producirá el siguiente 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 es un punto en una transacción en el que puede revertir la transacción hasta cierto punto sin revertir toda la transacción.

Sintaxis

A continuación se muestra la sintaxis del comando SAVEPOINT.

SAVE TRANSACTION SAVEPOINT_NAME

Este comando sirve solo en la creación de un SAVEPOINT entre declaraciones transaccionales. El comando ROLLBACK se utiliza para deshacer un grupo de transacciones.

A continuación se muestra la sintaxis para retroceder a un SAVEPOINT.

ROLLBACK TO SAVEPOINT_NAME

En el siguiente ejemplo, eliminaremos tres registros diferentes de la tabla CLIENTES. Tendremos que crear un SAVEPOINT antes de cada eliminación, para poder ROLLBACK a cualquier SAVEPOINT en cualquier momento para devolver los datos apropiados a su estado original.

Ejemplo

Considere la tabla CLIENTES que tiene los siguientes 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 continuación se muestran la serie de operaciones:

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.

Las tres eliminaciones han tenido lugar, sin embargo, hemos cambiado de opinión y decidimos ROLLBACK al SAVEPOINT que identificamos como SP2. Debido a que SP2 se creó después de la primera eliminación, las dos últimas eliminaciones se deshacen:

ROLLBACK Transaction SP2 
Rollback complete.

Tenga en cuenta que solo se llevó a cabo la primera eliminación desde que volvimos a SP2.

SELECT * FROM CUSTOMERS

6 filas seleccionadas.

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

El comando SET TRANSACTION se puede utilizar para iniciar una transacción de base de datos. Este comando se usa para especificar características para la transacción que sigue.

Sintaxis

A continuación se muestra la sintaxis de SET TRANSACTION.

SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>

Indexesson tablas de búsqueda especiales que el motor de búsqueda de la base de datos puede utilizar para acelerar la recuperación de datos. En pocas palabras, unindexes un puntero a datos en una tabla. Un índice en una base de datos es muy similar a un índice al final de un libro.

Por ejemplo, si desea hacer referencia a todas las páginas de un libro que tratan un tema determinado, primero debe consultar el índice, que enumera todos los temas en orden alfabético y luego se hace referencia a uno o más números de página específicos.

Un índice ayuda a acelerar las consultas SELECT y las cláusulas WHERE, pero ralentiza la entrada de datos, con declaraciones UPDATE e INSERT. Los índices se pueden crear o eliminar sin ningún efecto sobre los datos.

La creación de un índice implica la instrucción CREATE INDEX, que le permite nombrar el índice, especificar la tabla y qué columna o columnas indexar, e indicar si el índice está en orden ascendente o descendente.

Los índices también pueden ser únicos, similar a la restricción ÚNICA, en el sentido de que el índice evita entradas duplicadas en la columna o combinación de columnas en las que hay un índice.

Comando CREAR ÍNDICE

A continuación se muestra la sintaxis básica de CREATE INDEX.

Sintaxis

CREATE INDEX index_name ON table_name

Índices de una sola columna

Un índice de una sola columna es aquel que se crea basándose en una sola columna de la tabla. A continuación se muestra la sintaxis básica.

Sintaxis

CREATE INDEX index_name 
ON table_name (column_name)

Ejemplo

CREATE INDEX singlecolumnindex 
ON customers (ID)

Índices únicos

Los índices únicos se utilizan no solo para el rendimiento, sino también para la integridad de los datos. Un índice único no permite que se inserten valores duplicados en la tabla. A continuación se muestra la sintaxis básica.

Sintaxis

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

Ejemplo

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Índices compuestos

Un índice compuesto es un índice en dos o más columnas de una tabla. A continuación se muestra la sintaxis básica.

Sintaxis

CREATE INDEX index_name on table_name (column1, column2)

Ejemplo

CREATE INDEX compositeindex 
on customers (NAME, ID)

Ya sea para crear un índice de una sola columna o un índice compuesto, tenga en cuenta las columnas que puede usar con mucha frecuencia en la cláusula WHERE de una consulta como condiciones de filtro.

Si solo se usa una columna, la opción debe ser un índice de una sola columna. Si hay dos o más columnas que se utilizan con frecuencia en la cláusula WHERE como filtros, el índice compuesto sería la mejor opción.

Índices implícitos

Los índices implícitos son índices que el servidor de bases de datos crea automáticamente cuando se crea un objeto. Los índices se crean automáticamente para restricciones de clave primaria y restricciones únicas.

Comando DROP INDEX

Se puede eliminar un índice mediante el comando MS SQL SERVER DROP. Se debe tener cuidado al eliminar un índice porque el rendimiento se puede ralentizar o mejorar.

Sintaxis

A continuación se muestra la sintaxis básica.

DROP INDEX tablename.index_name

¿Cuándo evitar los índices?

Aunque los índices están destinados a mejorar el rendimiento de las bases de datos, hay ocasiones en las que deben evitarse. Las siguientes pautas indican cuándo se debe reconsiderar el uso de un índice:

  • Los índices no deben usarse en tablas pequeñas.

  • Las tablas que tienen operaciones de inserción o actualización por lotes grandes y frecuentes no deben indexarse.

  • Los índices no deben usarse en columnas que contienen un número elevado de valores NULL.

  • Las columnas que se manipulan con frecuencia no deben indexarse.

MS SQL Server tiene muchas funciones integradas para realizar el procesamiento de cadenas o datos numéricos. A continuación se muestra la lista de todas las funciones integradas de SQL útiles:

  • SQL Server COUNT Function - La función agregada COUNT de SQL Server se utiliza para contar el número de filas en una tabla de base de datos.

  • SQL Server MAX Function - La función agregada de SQL Server MAX permite seleccionar el valor más alto (máximo) para una determinada columna.

  • SQL Server MIN Function - La función agregada de SQL Server MIN permite seleccionar el valor más bajo (mínimo) para una determinada columna.

  • SQL Server AVG Function - La función agregada de SQL Server AVG selecciona el valor promedio para determinada columna de la tabla.

  • SQL Server SUM Function - La función agregada SUMA de SQL Server permite seleccionar el total para una columna numérica.

  • SQL Server SQRT Function - Esto se usa para generar una raíz cuadrada de un número dado.

  • SQL Server RAND Function - Esto se usa para generar un número aleatorio usando el comando SQL.

  • SQL Server CONCAT Function - Se utiliza para concatenar varios parámetros en un solo parámetro.

  • SQL Server Numeric Functions - Lista completa de funciones SQL necesarias para manipular números en SQL.

  • SQL Server String Functions - Lista completa de funciones SQL necesarias para manipular cadenas en SQL.

Las funciones de cadena de MS SQL Server se pueden aplicar a un valor de cadena o devolverán un valor de cadena o datos numéricos.

A continuación se muestra la lista de funciones de cadena con ejemplos.

ASCII ()

El valor del código ASCII vendrá como salida para una expresión de carácter.

Ejemplo

La siguiente consulta dará el valor del código Ascii de un carácter dado.

Select ASCII ('word')

CARBONIZARSE()

El carácter vendrá como salida para un código Ascii o un entero dado.

Ejemplo

La siguiente consulta dará el carácter de un entero dado.

Select CHAR(97)

NCHAR ()

El carácter Unicode vendrá como salida para un entero dado.

Ejemplo

La siguiente consulta dará el carácter Unicode para un entero dado.

Select NCHAR(300)

CHARINDEX ()

La posición inicial para una expresión de búsqueda dada vendrá como salida en una expresión de cadena dada.

Ejemplo

La siguiente consulta dará la posición inicial del carácter 'G' para la expresión de cadena dada 'KING'.

Select CHARINDEX('G', 'KING')

IZQUIERDA()

La parte izquierda de la cadena dada hasta que el número especificado de caracteres vendrá como salida para una cadena dada.

Ejemplo

La siguiente consulta dará la cadena 'WORL' como se menciona 4 números de caracteres para la cadena dada 'WORLD'.

Select LEFT('WORLD', 4)

DERECHO()

La parte derecha de la cadena dada hasta el número especificado de caracteres vendrá como salida para una cadena dada.

Ejemplo

La siguiente consulta dará la cadena 'DIA' como se menciona 3 números de caracteres para la cadena dada 'INDIA'.

Select RIGHT('INDIA', 3)

SUBSTRING ()

Parte de una cadena basada en el valor de la posición inicial y el valor de la longitud vendrá como salida para una cadena determinada.

Ejemplo

Las siguientes consultas darán las cadenas 'WOR', 'DIA', 'ING' como mencionamos (1,3), (3,3) y (2,3) como valores de inicio y longitud respectivamente para las cadenas dadas 'WORLD' , 'INDIA' y 'KING'.

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

LEN ()

El número de caracteres vendrá como salida para una expresión de cadena dada.

Ejemplo

La siguiente consulta dará el 5 para la expresión de cadena 'HELLO'.

Select LEN('HELLO')

INFERIOR()

La cadena en minúsculas vendrá como salida para una cadena de datos determinada.

Ejemplo

La siguiente consulta dará el 'sqlserver' para los datos de caracteres 'SQLServer'.

Select LOWER('SQLServer')

SUPERIOR()

La cadena en mayúsculas vendrá como salida para una cadena de datos determinada.

Ejemplo

La siguiente consulta dará el 'SQLSERVER' para los datos de caracteres 'SqlServer'.

Select UPPER('SqlServer')

LTRIM ()

La expresión de cadena vendrá como salida para una cadena de datos determinada después de eliminar los espacios en blanco iniciales.

Ejemplo

La siguiente consulta dará el 'MUNDO' para los datos de caracteres de 'MUNDO'.

Select LTRIM('   WORLD')

RTRIM ()

La expresión de cadena vendrá como salida para una cadena de datos determinada después de eliminar los espacios en blanco finales.

Ejemplo

La siguiente consulta dará la 'INDIA' para los datos de caracteres de 'INDIA'.

Select RTRIM('INDIA   ')

REEMPLAZAR()

La expresión de cadena vendrá como salida para un dato de cadena dado después de reemplazar todas las apariciones del carácter especificado con el carácter especificado.

Ejemplo

La siguiente consulta dará la cadena 'KNDKA' para los datos de la cadena 'INDIA'.

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

REPRODUCIR EXACTAMENTE()

La expresión de cadena repetida vendrá como salida para una cadena de datos dada con un número específico de veces.

Ejemplo

La siguiente consulta dará la cadena 'WORLDWORLD' para los datos de la cadena 'WORLD'.

Select REPLICATE('WORLD', 2)

CONTRARRESTAR()

La expresión de cadena inversa vendrá como salida para una cadena de datos determinada.

Ejemplo

La siguiente consulta dará la cadena 'DLROW' para los datos de la cadena 'WORLD'.

Select REVERSE('WORLD')

SOUNDEX ()

Devuelve código de cuatro caracteres (SOUNDEX) para evaluar la similitud de dos cadenas dadas.

Ejemplo

La siguiente consulta dará el 'S530' para las cadenas 'Smith', 'Smyth'.

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

DIFERENCIA()

El valor entero vendrá como resultado de dos expresiones dadas.

Ejemplo

La siguiente consulta dará el 4 para las expresiones 'Smith', 'Smyth'.

Select Difference('Smith','Smyth')

Note - Si el valor de salida es 0, indica una similitud débil o nula entre dos expresiones.

ESPACIO()

La cadena vendrá como salida con el número especificado de espacios.

Ejemplo

La siguiente consulta dará el 'I LOVE INDIA'.

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

COSAS()

La expresión de cadena vendrá como salida para una cadena de datos dada después de reemplazar desde el carácter inicial hasta la longitud especificada con el carácter especificado.

Ejemplo

La siguiente consulta dará la cadena 'AIJKFGH' para los datos de la cadena 'ABCDEFGH' según el carácter inicial dado y la longitud como 2 y 4 respectivamente y 'IJK' como cadena de destino especificada.

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

STR ()

Los datos de caracteres vendrán como salida para los datos numéricos dados.

Ejemplo

La siguiente consulta dará el 187.37 para el 187.369 dado basado en la longitud especificada como 6 y decimal como 2.

Select STR(187.369,6,2)

UNICODE ()

El valor entero vendrá como salida para el primer carácter de una expresión dada.

Ejemplo

La siguiente consulta dará el 82 para la expresión 'RAMA'.

Select UNICODE('RAMA')

QUOTENAME ()

La cadena dada vendrá como salida con el delimitador especificado.

Ejemplo

La siguiente consulta dará la "RAMA" para la cadena 'RAMA' dada como especificamos comillas dobles como delimitador.

Select QUOTENAME('RAMA','"')

PATINDEX ()

Se requiere la posición inicial de la primera ocurrencia de la expresión dada como especificamos la posición 'I'.

Ejemplo

La siguiente consulta dará el 1 para 'INDIA'.

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

FORMATO()

La expresión dada vendrá como salida con el formato especificado.

Ejemplo

La siguiente consulta dará el 'Lunes 16 de noviembre de 2015' para la función getdate según el formato especificado con 'D' se refiere al nombre del día de la semana.

SELECT FORMAT ( getdate(), 'D')

CONCAT ()

Una sola cadena vendrá como salida después de concatenar los valores de parámetro dados.

Ejemplo

La siguiente consulta dará 'A, B, C' para los parámetros dados.

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

A continuación se muestra la lista de funciones de fecha en MS SQL Server.

OBTENER LA FECHA()

Devolverá la fecha actual junto con la hora.

Sintaxis

Sintaxis de la función anterior:

GETDATE()

Ejemplo

La siguiente consulta devolverá la fecha actual junto con la hora en MS SQL Server.

Select getdate() as currentdatetime

DATEPART ()

Devolverá la parte de la fecha o la hora.

Sintaxis

Sintaxis de la función anterior:

DATEPART(datepart, datecolumnname)

Ejemplo

Example 1 - La siguiente consulta devolverá la parte de la fecha actual en MS SQL Server.

Select datepart(day, getdate()) as currentdate

Example 2 - La siguiente consulta devolverá la parte del mes actual en MS SQL Server.

Select datepart(month, getdate()) as currentmonth

DATEADD ()

Mostrará la fecha y la hora sumando o restando la fecha y el intervalo de tiempo.

Sintaxis

Sintaxis de la función anterior:

DATEADD(datepart, number, datecolumnname)

Ejemplo

La siguiente consulta devolverá la fecha y hora después de 10 días desde la fecha y hora actual en MS SQL Server.

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

DATEDIFF ()

Mostrará la fecha y la hora entre dos fechas.

Sintaxis

Sintaxis de la función anterior:

DATEDIFF(datepart, startdate, enddate)

Ejemplo

La siguiente consulta devolverá la diferencia de horas entre las fechas 2015-11-16 y 2015-11-11 en MS SQL Server.

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

CONVERTIR()

Mostrará la fecha y la hora en diferentes formatos.

Sintaxis

Sintaxis de la función anterior:

CONVERT(datatype, expression, style)

Ejemplo

Las siguientes consultas devolverán la fecha y la hora en un formato diferente en MS SQL Server.

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

Las funciones numéricas de MS SQL Server se pueden aplicar a datos numéricos y devolverán datos numéricos.

A continuación se muestra la lista de funciones numéricas con ejemplos.

ABDOMINALES()

El valor absoluto vendrá como salida para la expresión numérica.

Ejemplo

La siguiente consulta dará el valor absoluto.

Select ABS(-22)

ACOS ()

El valor del arco coseno vendrá como salida para la expresión numérica especificada.

Ejemplo

La siguiente consulta dará el valor de arco coseno de 0.

Select ACOS(0)

COMO EN()

El valor del arco sinusoidal vendrá como salida para la expresión numérica especificada.

Ejemplo

La siguiente consulta dará el valor del arco seno de 0.

Select ASIN(0)

UN BRONCEADO()

El valor de arco tangente vendrá como salida para la expresión numérica especificada.

Ejemplo

La siguiente consulta dará el valor de arco tangente de 0.

Select ATAN(0)

ATN2 ()

El valor de arco tangente en los cuatro cuadrantes vendrá como salida para la expresión numérica especificada.

Ejemplo

La siguiente consulta dará el valor de arco tangente en los cuatro cuadrantes de 0.

Select ATN2(0, -1)

Considere que la tabla CLIENTES tiene los siguientes 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()

Si los valores existen entre dos expresiones dadas, se obtendrán como salida.

Ejemplo

La siguiente consulta dará el siguiente resultado.

SELECT salary from customers where salary between 2000 and 8500

Salida

salary 
2000.00 
2000.00 
6500.00 
8500.00 
4500.00

MIN ()

El valor mínimo vendrá como resultado de la expresión dada.

Ejemplo

La siguiente consulta dará '1500.00' para la expresión de 'salario' dada de la tabla de clientes.

Select MIN(salary)from CUSTOMERS

MAX ()

El valor máximo vendrá como resultado de la expresión dada.

Ejemplo

La siguiente consulta dará '10000.00' para la expresión de 'salario' dada de la tabla de clientes.

Select MAX(salary)from CUSTOMERS

SQRT ()

La raíz cuadrada de la expresión numérica dada aparecerá como resultado.

Ejemplo

La siguiente consulta dará 2 para la expresión numérica 4 dada.

Select SQRT(4)

PI()

El valor PI vendrá como salida.

Ejemplo

La siguiente consulta dará 3,14159265358979 para el valor de PI.

Select PI()

TECHO()

El valor dado vendrá como salida después de redondear los decimales, que es el siguiente valor más alto.

Ejemplo

La siguiente consulta dará 124 para el valor 123.25 dado.

Select CEILING(123.25)

SUELO()

El valor dado vendrá como salida después de redondear los decimales que es menor o igual que la expresión.

Ejemplo

La siguiente consulta dará 123 para el valor 123,25 dado.

Select FLOOR(123.25)

INICIAR SESIÓN()

El logaritmo natural de la expresión dada aparecerá como resultado.

Ejemplo

La siguiente consulta dará 0 para el valor 1 dado.

Select LOG(1)