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)