Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SQL - Inicio
SQL - Descripción general
SQL - Conceptos RDBMS
SQL - Bases de datos
SQL - Sintaxis
SQL - Tipos de datos
SQL - Operadores
SQL - Expresiones
SQL - Crear base de datos
SQL - Eliminar base de datos
SQL - Seleccionar base de datos
SQL - Crear tabla
SQL - Descartar tabla
SQL - Insertar consulta
SQL - Seleccionar consulta
SQL - Cláusula Where
SQL - Cláusulas AND & OR
SQL - Consulta de actualización
SQL - Eliminar consulta
SQL - Cláusula Like
SQL - Cláusula superior
SQL - Ordenar por
SQL - Agrupar por
SQL: palabra clave distinta
SQL - Resultados de clasificación
SQL avanzado
SQL - Restricciones
SQL: uso de combinaciones
SQL - Cláusula de uniones
SQL - Valores NULL
SQL: sintaxis de alias
SQL - Índices
SQL - Alterar comando
SQL - Truncar tabla
SQL: uso de vistas
SQL - Tener cláusula
SQL - Transacciones
SQL - Comodines
SQL - Funciones de fecha
SQL - Tablas temporales
SQL - Tablas de clonación
SQL - Subconsultas
SQL: uso de secuencias
SQL - Manejo de duplicados
Inyección SQL
SQL - Descripción general
SQL es un lenguaje para operar bases de datos; incluye la creación de bases
de datos, eliminación, recuperación de filas, modificación de filas, etc. SQL es
un lenguaje estándar ANSI (American National Standards Institute), pero hay
muchas versiones diferentes del lenguaje SQL.
¿Qué es el SQL?
SQL es el lenguaje de consulta estructurado, que es un lenguaje de
computadora para almacenar, manipular y recuperar datos almacenados en
una base de datos relacional.
SQL es el lenguaje estándar para el sistema de base de datos
relacional. Todos los sistemas de gestión de bases de datos relacionales
(RDMS) como MySQL, MS Access, Oracle, Sybase, Informix, Postgres y SQL
Server utilizan SQL como su lenguaje de base de datos estándar.
Además, están usando diferentes dialectos, como -
Proceso SQL
Cuando está ejecutando un comando SQL para cualquier RDBMS, el sistema
determina la mejor manera de llevar a cabo su solicitud y el motor SQL
determina cómo interpretar la tarea.
Hay varios componentes incluidos en este proceso.
Estos componentes son -
Despachador de consultas
Motores de optimización
Motor de consulta clásico
Motor de consultas SQL, etc.
Un motor de consulta clásico maneja todas las consultas que no son SQL,
pero un motor de consulta SQL no maneja archivos lógicos.
El siguiente es un diagrama simple que muestra la arquitectura SQL:
www.postparaprogramadores.com
/
Comandos SQL
Los comandos SQL estándar para interactuar con bases de datos relacionales
son CREATE, SELECT, INSERT, UPDATE, DELETE y DROP. Estos
comandos se pueden clasificar en los siguientes grupos según su naturaleza:
No Comando y descripción
Señor.
1 CREAR
Crea una nueva tabla, una vista de una tabla u otro objeto en la base de datos.
ALTERAR
2
Modifica un objeto de base de datos existente, como una tabla.
SOLTAR
3 Elimina una tabla completa, una vista de una tabla u otros objetos en la base de
datos.
No Comando y descripción
Señor.
1 SELECCIONE
Recupera ciertos registros de una o más tablas.
INSERTAR
2
Crea un registro.
ACTUALIZAR
3
Modifica registros.
ELIMINAR
44
Borra registros.
DCL - Lenguaje de control de datos
No Comando y descripción
Señor.
1 CONCEDER
Da un privilegio al usuario.
REVOCAR
2
Retira los privilegios otorgados por el usuario.
¿Qué es un campo?
Cada tabla se divide en entidades más pequeñas llamadas campos. Los
campos en la tabla CLIENTES consisten en ID, NOMBRE, EDAD,
DIRECCIÓN y SALARIO.
Un campo es una columna en una tabla que está diseñada para mantener
información específica sobre cada registro en la tabla.
Restricciones SQL
Las restricciones son las reglas impuestas en las columnas de datos en una
tabla. Estos se usan para limitar el tipo de datos que pueden ir a una
tabla. Esto garantiza la precisión y fiabilidad de los datos en la base de datos.
Las restricciones pueden ser a nivel de columna o de tabla. Las restricciones
de nivel de columna se aplican solo a una columna, mientras que las
restricciones de nivel de tabla se aplican a toda la tabla.
Las siguientes son algunas de las restricciones más utilizadas disponibles en
SQL:
Restricción NOT NULL : garantiza que una columna no puede tener un valor
NULL.
Restricción POR DEFECTO : proporciona un valor predeterminado para una
columna cuando no se especifica ninguno.
Restricción ÚNICA : garantiza que todos los valores de una columna sean
diferentes.
Clave PRIMARIA : identifica de forma exclusiva cada fila / registro en una tabla de
base de datos.
Clave EXTRANJERA : identifica de forma exclusiva una fila / registro en cualquier
otra tabla de base de datos.
Restricción de COMPROBACIÓN: la restricción de COMPROBACIÓN garantiza
que todos los valores de una columna satisfagan ciertas condiciones.
ÍNDICE : se utiliza para crear y recuperar datos de la base de datos muy
rápidamente.
MySQL
MySQL es una base de datos SQL de código abierto, desarrollada por una
empresa sueca: MySQL AB. MySQL se pronuncia como "my ess-que-ell", en
contraste con SQL, se pronuncia "secuela".
MySQL es compatible con muchas plataformas diferentes, incluidas Microsoft
Windows, las principales distribuciones de Linux, UNIX y Mac OS X.
MySQL tiene versiones gratuitas y de pago, dependiendo de su uso (no
comercial / comercial) y características. MySQL viene con un servidor de base
de datos SQL muy rápido, multiproceso, multiusuario y robusto.
Historia
Caracteristicas
Alto rendimiento.
Alta disponibilidad.
Escalabilidad y flexibilidad Ejecute cualquier cosa.
Soporte transaccional robusto.
Fortalezas de Web y Data Warehouse.
Fuerte protección de datos.
Desarrollo integral de aplicaciones.
Facilidad de gestión.
Libertad de código abierto y soporte 24 x 7.
Costo total de propiedad más bajo.
MS SQL Server
MS SQL Server es un sistema de gestión de bases de datos relacionales
desarrollado por Microsoft Inc. Sus lenguajes de consulta principales son:
T-SQL
ANSI SQL
Historia
Caracteristicas
Alto rendimiento
Alta disponibilidad
Duplicación de bases de datos
Instantáneas de bases de datos
Integración CLR
Service Broker
Disparadores DDL
Funciones de clasificación
Niveles de aislamiento basados en versiones de fila
Integración XML
TRATA DE ATRAPARLO
Correo de base de datos
ORÁCULO
Es un gran sistema de gestión de bases de datos basado en múltiples
usuarios. Oracle es un sistema de gestión de bases de datos relacionales
desarrollado por 'Oracle Corporation'.
Oracle trabaja para administrar eficientemente sus recursos, una base de
datos de información entre los múltiples clientes que solicitan y envían datos
en la red.
Es una excelente opción de servidor de base de datos para la computación
cliente / servidor. Oracle admite todos los principales sistemas operativos tanto
para clientes como para servidores, incluidos MSDOS, NetWare, UnixWare,
OS / 2 y la mayoría de las versiones de UNIX.
Historia
Caracteristicas
Concurrencia
Consistencia de lectura
Mecanismos de bloqueo
Quiesce Database
Portabilidad
Base de datos autogestionada
SQL * Plus
ASM
Programador
Administrador de recursos
Almacenamiento de datos
Vistas materializadas
Índices de mapa de bits
Tabla de compresión
Ejecución Paralela
SQL analítico
Procesamiento de datos
Fraccionamiento
MS Access
Este es uno de los productos de Microsoft más populares. Microsoft Access es
un software de administración de bases de datos de nivel básico. La base de
datos de MS Access no solo es económica sino también una base de datos
poderosa para proyectos a pequeña escala.
MS Access utiliza el motor de base de datos Jet, que utiliza un dialecto
específico del lenguaje SQL (a veces denominado Jet SQL).
MS Access viene con la edición profesional del paquete de MS Office. MS
Access tiene una interfaz gráfica intuitiva fácil de usar.
1992 - Lanzamiento de la versión 1.0 de Access.
1993 - Access 1.1 lanzado para mejorar la compatibilidad con la inclusión del
lenguaje de programación Access Basic.
La transición más significativa fue de Access 97 a Access 2000.
2007 - Access 2007, se introdujo un nuevo formato de base de datos ACCDB que
admite tipos de datos complejos, como campos de valores múltiples y adjuntos.
Caracteristicas
SQL - Sintaxis
A SQL le sigue un conjunto único de reglas y pautas llamado Sintaxis. Este
tutorial le ofrece un comienzo rápido con SQL al enumerar toda la sintaxis
SQL básica.
Todas las declaraciones SQL comienzan con cualquiera de las palabras clave
como SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE,
SHOW y todas las declaraciones terminan con un punto y coma (;).
El punto más importante a tener en cuenta aquí es que SQL no distingue entre
mayúsculas y minúsculas, lo que significa que SELECT y select tienen el
mismo significado en las declaraciones SQL. Mientras que MySQL hace la
diferencia en los nombres de las tablas. Por lo tanto, si está trabajando con
MySQL, debe proporcionar los nombres de las tablas tal como existen en la
base de datos.
Cláusula SQL Y / O
Cláusula SQL IN
SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name;
SELECT COUNT(column_name)
FROM table_name
WHERE CONDITION;
DESC table_name;
ROLLBACK;
SQL - Tipos de datos
Tipo de datos SQL es un atributo que especifica el tipo de datos de cualquier
objeto. Cada columna, variable y expresión tiene un tipo de datos relacionado
en SQL. Puede usar estos tipos de datos mientras crea sus tablas. Puede
elegir un tipo de datos para una columna de tabla según sus requisitos.
SQL Server ofrece seis categorías de tipos de datos para su uso que se
enumeran a continuación:
En t -2,147,483,648 2,147,483,647
tinyint 00 255
poco 00 1
decimal -10 ^ 38 +1 10 ^ 38 -1
numérico -10 ^ 38 +1 10 ^ 38 -1
hora Almacena una hora del día como las 12:30 p.m.
Nota : Aquí, la fecha y hora tiene una precisión de 3,33 milisegundos, mientras
que la fecha pequeña tiene una precisión de 1 minuto.
varchar
2
Máximo de 8,000 caracteres. (Datos no Unicode de longitud variable).
varchar (max)
3 Longitud máxima de 2E + 31 caracteres, datos de longitud variable no Unicode
(solo SQL Server 2005).
texto
44 Datos no Unicode de longitud variable con una longitud máxima de
2,147,483,647 caracteres.
1 nchar
Longitud máxima de 4.000 caracteres. (Longitud fija Unicode)
nvarchar
2
Longitud máxima de 4.000 caracteres. (Longitud variable Unicode)
nvarchar (max)
3 Longitud máxima de 2E + 31 caracteres (solo SQL Server 2005). (Longitud
variable Unicode)
ntext
44
Longitud máxima de 1,073,741,823 caracteres. (Longitud variable Unicode)
varbinary
2
Longitud máxima de 8,000 bytes. (Datos binarios de longitud variable)
varbinary (max)
3 Longitud máxima de 2E + 31 bytes (solo SQL Server 2005). (Datos binarios de
longitud variable)
imagen
44
Longitud máxima de 2,147,483,647 bytes. (Datos binarios de longitud variable)
sql_variant
1
Almacena valores de varios tipos de datos compatibles con SQL Server, excepto
texto, ntext y marca de tiempo.
marca de tiempo
2 Almacena un número único de toda la base de datos que se actualiza cada vez
que se actualiza una fila
identificador único
3
Almacena un identificador único global (GUID)
xml
44 Almacena datos XML. Puede almacenar instancias xml en una columna o una
variable (solo SQL Server 2005).
cursor
55
Referencia a un objeto cursor
mesa
66
Almacena un conjunto de resultados para su posterior procesamiento
SQL - Operadores
¿Qué es un operador en SQL?
Un operador es una palabra reservada o un carácter utilizado principalmente
en la cláusula WHERE de una declaración SQL para realizar operaciones,
como comparaciones y operaciones aritméticas. Estos operadores se utilizan
para especificar condiciones en una declaración SQL y para servir como
conjunciones para múltiples condiciones en una declaración.
Operadores aritméticos
Operadores de comparación
Operadores logicos
Los operadores solían negar condiciones
Comprueba si los valores de dos operandos son iguales o no, si los (a! = b)
!= valores no son iguales, la condición se vuelve verdadera. es
cierto.
Comprueba si los valores de dos operandos son iguales o no, si los (a <> b)
<> valores no son iguales, la condición se vuelve verdadera. es
cierto.
No Operador y Descripción
Señor.
TODOS
1
El operador ALL se usa para comparar un valor con todos los valores en otro
conjunto de valores.
Y
2 El operador AND permite la existencia de múltiples condiciones en una cláusula
WHERE de una declaración SQL.
NINGUNA
3 El operador CUALQUIER se utiliza para comparar un valor con cualquier valor
aplicable en la lista según la condición.
ENTRE
44 El operador ENTRE se utiliza para buscar valores que están dentro de un
conjunto de valores, dado el valor mínimo y el valor máximo.
EXISTE
55 El operador EXISTS se utiliza para buscar la presencia de una fila en una tabla
especificada que cumple un determinado criterio.
EN
66 El operador IN se utiliza para comparar un valor con una lista de valores literales
que se han especificado.
ME GUSTA
77 El operador LIKE se usa para comparar un valor con valores similares utilizando
operadores comodín.
NO
ES NULO
10
El operador NULL se usa para comparar un valor con un valor NULL.
ÚNICO
11 El operador ÚNICO busca en cada fila de una tabla específica la unicidad (sin
duplicados).
SQL - Expresiones
Una expresión es una combinación de uno o más valores, operadores y
funciones SQL que evalúan un valor. Estas EXPRESIONES SQL son como
fórmulas y están escritas en lenguaje de consulta. También puede usarlos
para consultar en la base de datos un conjunto específico de datos.
Sintaxis
Booleano
Numérico
Fecha
Discutamos ahora cada uno de estos en detalle.
Expresiones booleanas
Las expresiones booleanas de SQL obtienen los datos en función de la
coincidencia de un solo valor. La siguiente es la sintaxis:
SELECT column1, column2, columnN
FROM table_name
WHERE SINGLE VALUE MATCHING EXPRESSION;
Considere la tabla CLIENTES que tiene los siguientes registros:
SQL> SELECT * FROM CUSTOMERS;
+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+
7 rows in set (0.00 sec)
Expresión numérica
Estas expresiones se utilizan para realizar cualquier operación matemática en
cualquier consulta. La siguiente es la sintaxis:
SELECT numerical_expression as OPERATION_NAME
[FROM table_name
WHERE CONDITION] ;
Aquí, la expresión numérica se usa para una expresión matemática o
cualquier fórmula. El siguiente es un ejemplo simple que muestra el uso de
expresiones numéricas de SQL:
SQL> SELECT (15 + 6) AS ADDITION
+----------+
| ADDITION |
+----------+
| 21 |
+----------+
1 row in set (0.00 sec)
Hay varias funciones integradas como avg (), sum (), count (), etc., para
realizar lo que se conoce como los cálculos de datos agregados contra una
tabla o una columna de tabla específica.
SQL> SELECT COUNT(*) AS "RECORDS" FROM CUSTOMERS;
+---------+
| RECORDS |
+---------+
| 7 |
+---------+
1 row in set (0.00 sec)
Expresiones de fecha
Las expresiones de fecha devuelven los valores actuales de fecha y hora del
sistema:
SQL> SELECT CURRENT_TIMESTAMP;
+---------------------+
| Current_Timestamp |
+---------------------+
| 2009-11-12 06:40:23 |
+---------------------+
1 row in set (0.00 sec)
Otra expresión de fecha es como se muestra a continuación:
SQL> SELECT GETDATE();;
+-------------------------+
| GETDATE |
+-------------------------+
| 2009-10-22 12:07:18.140 |
+-------------------------+
1 row in set (0.00 sec)
Sintaxis
La sintaxis básica de esta instrucción CREATE DATABASE es la siguiente:
CREATE DATABASE DatabaseName;
Siempre el nombre de la base de datos debe ser único dentro del RDBMS.
Ejemplo
Si desea crear una nueva base de datos <testDB>, la instrucción CREATE
DATABASE sería la siguiente:
SQL> CREATE DATABASE testDB;
Asegúrese de tener el privilegio de administrador antes de crear cualquier
base de datos. Una vez que se crea una base de datos, puede verificarla en la
lista de bases de datos de la siguiente manera:
SQL> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| AMROOD |
| POSTPARAPROGRAMADORES |
| mysql |
| orig |
| test |
| testDB |
+--------------------+
7 rows in set (0.00 sec)
SQL - DROP o DELETE Database
La instrucción SQL DROP DATABASE se usa para descartar una base de
datos existente en el esquema SQL.
Sintaxis
La sintaxis básica de la instrucción DROP DATABASE es la siguiente:
DROP DATABASE DatabaseName;
Siempre el nombre de la base de datos debe ser único dentro del RDBMS.
Ejemplo
Si desea eliminar una base de datos existente <testDB>, la instrucción DROP
DATABASE sería la que se muestra a continuación:
SQL> DROP DATABASE testDB;
NOTA - Tenga cuidado antes de usar esta operación porque al eliminar una
base de datos existente se produciría la pérdida de información completa
almacenada en la base de datos.
Asegúrese de tener el privilegio de administrador antes de descartar cualquier
base de datos. Una vez que se descarta una base de datos, puede verificarla
en la lista de bases de datos como se muestra a continuación:
SQL> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| AMROOD |
| POSTPARAPROGRAMADORES |
| mysql |
| orig |
| test |
+--------------------+
6 rows in set (0.00 sec)
Sintaxis
La sintaxis básica de la instrucción USE es la siguiente:
USE DatabaseName;
Siempre el nombre de la base de datos debe ser único dentro del RDBMS.
Ejemplo
Puede consultar las bases de datos disponibles como se muestra a
continuación:
SQL> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| AMROOD |
| POSTPARAPROGRAMADORES |
| mysql |
| orig |
| test |
+--------------------+
6 rows in set (0.00 sec)
Sintaxis
La sintaxis básica de la instrucción CREATE TABLE es la siguiente:
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 desea hacer. En este caso, desea crear una nueva tabla. El nombre o
identificador único para la tabla sigue la instrucción CREATE TABLE.
Luego, entre paréntesis, aparece la lista que define cada columna de la tabla y
qué tipo de datos es. La sintaxis se vuelve más clara con el siguiente ejemplo.
Se puede crear una copia de una tabla existente utilizando una combinación
de la instrucción CREATE TABLE y la instrucción SELECT. Puede consultar
los detalles completos en Crear tabla usando otra tabla.
Ejemplo
El siguiente bloque de código es un ejemplo, que crea una tabla CLIENTES
con una 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:
SQL> 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 correctamente mirando el mensaje
que muestra el servidor SQL; de lo contrario, puede usar el comando DESC
de la siguiente manera:
SQL> DESC CUSTOMERS;
+---------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| ID | int(11) | NO | PRI | | |
| NAME | varchar(20) | NO | | | |
| AGE | int(11) | NO | | | |
| ADDRESS | char(25) | YES | | NULL | |
| SALARY | decimal(18,2) | YES | | NULL | |
+---------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
Ahora, tiene una tabla CLIENTES disponible en su base de datos que puede
usar para almacenar la información requerida relacionada con los clientes.
Sintaxis
La sintaxis básica de esta instrucción DROP TABLE es la siguiente:
DROP TABLE table_name;
Ejemplo
Primero verifiquemos la tabla CLIENTES y luego la eliminaremos de la base
de datos como se muestra a continuación:
SQL> DESC CUSTOMERS;
+---------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| ID | int(11) | NO | PRI | | |
| NAME | varchar(20) | NO | | | |
| AGE | int(11) | NO | | | |
| ADDRESS | char(25) | YES | | NULL | |
| SALARY | decimal(18,2) | YES | | NULL | |
+---------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
Esto significa que la tabla CLIENTES está disponible en la base de datos, por
lo tanto, permítanos eliminarla como se muestra a continuación.
SQL> DROP TABLE CUSTOMERS;
Query OK, 0 rows affected (0.01 sec)
Sintaxis
Ejemplo
Sintaxis
La sintaxis básica de la instrucción SELECT es la siguiente:
SELECT column1, column2, columnN FROM table_name;
Aquí, column1, column2 ... 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 |
+----+----------+-----+-----------+----------+
Sintaxis
La sintaxis básica de la instrucción SELECT con la cláusula WHERE es la que
se muestra a continuación.
SELECT column1, column2, columnN
FROM table_name
WHERE [condition]
Puede especificar una condición utilizando los operadores lógicos o de
comparación como>, <, =, LIKE, NOT , etc. Los siguientes ejemplos aclararían
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 código es un ejemplo que buscaría los campos ID, Nombre y
Salario de la tabla CLIENTES, donde el salario es mayor que 2000:
SQL> SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000;
Esto produciría el siguiente resultado:
+----+----------+----------+
| ID | NAME | SALARY |
+----+----------+----------+
| 4 | Chaitali | 6500.00 |
| 5 | Hardik | 8500.00 |
| 6 | Komal | 4500.00 |
| 7 | Muffy | 10000.00 |
+----+----------+----------+
La siguiente consulta es un ejemplo, que buscaría los campos ID, Nombre y
Salario de la tabla CLIENTES para un cliente con el nombre Hardik .
Aquí, es importante tener en cuenta que todas las cadenas deben aparecer entre comillas
simples (''). Mientras que, los valores numéricos deben darse sin ninguna cita como en el
ejemplo anterior.
SQL> SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE NAME = 'Hardik';
Esto produciría el siguiente resultado:
+----+----------+----------+
| ID | NAME | SALARY |
+----+----------+----------+
| 5 | Hardik | 8500.00 |
+----+----------+----------+
SQL: operadores conjuntivos AND y OR
Los operadores SQL AND & OR se utilizan para combinar varias condiciones
para limitar los datos en una instrucción SQL. Estos dos operadores se
denominan operadores conjuntivos.
Estos operadores proporcionan un medio para realizar comparaciones
múltiples con diferentes operadores en la misma instrucción SQL.
El operador AND
El operador AND permite la existencia de múltiples condiciones en una
cláusula WHERE de una declaración SQL.
Sintaxis
La sintaxis básica del operador AND con una cláusula WHERE es la siguiente:
SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];
Puede combinar N número de condiciones con el operador AND. Para que la
instrucción SQL tome una acción, ya sea una transacción o una consulta,
todas las condiciones separadas por AND deben ser VERDADERAS.
Ejemplo
El operador de quirófano
El operador OR se usa para combinar múltiples condiciones en una cláusula
WHERE de una declaración SQL.
Sintaxis
Ejemplo
Sintaxis
La sintaxis básica de la consulta UPDATE con una cláusula WHERE es la
siguiente:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
Puede combinar N número de condiciones utilizando los 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 |
+----+----------+-----+-----------+----------+
La siguiente consulta actualizará la DIRECCIÓN para un cliente cuyo número
de identificación es 6 en la tabla.
SQL> UPDATE CUSTOMERS
SET ADDRESS = 'Pune'
WHERE ID = 6;
Ahora, la tabla CLIENTES tendría 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 la columna DIRECCIÓN y SALARIO
en la tabla CLIENTES, no necesita usar la cláusula WHERE ya que la consulta
ACTUALIZAR sería suficiente como se muestra en el siguiente bloque de
código.
SQL> UPDATE CUSTOMERS
SET ADDRESS = 'Pune', SALARY = 1000.00;
Sintaxis
La sintaxis básica de la consulta DELETE con la cláusula WHERE es la
siguiente:
DELETE FROM table_name
WHERE [condition];
Puede combinar N número de condiciones utilizando los 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 código tiene una consulta, que BORRARÁ un cliente, cuyo ID es
6.
SQL> DELETE FROM CUSTOMERS
WHERE ID = 6;
Sintaxis
La sintaxis básica de% y _ es la siguiente:
SELECT FROM table_name
WHERE column LIKE 'XXXX%'
or
or
or
or
Ejemplo
La siguiente tabla tiene algunos ejemplos que muestran la parte WHERE que
tiene una cláusula LIKE diferente con los operadores '%' y '_' -
No Declaración y descripción
Señor.
Sintaxis
La sintaxis básica de la cláusula TOP con una instrucción SELECT sería la
siguiente.
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE [condition]
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 |
+----+----------+-----+-----------+----------+
La siguiente consulta es un ejemplo en el servidor SQL, que buscaría los 3
registros principales de la tabla CLIENTES.
SQL> SELECT TOP 3 * FROM CUSTOMERS;
Esto produciría 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 |
+----+---------+-----+-----------+---------+
Si está utilizando el servidor MySQL, este es un ejemplo equivalente:
SQL> SELECT * FROM CUSTOMERS
LIMIT 3;
Sintaxis
La sintaxis básica de la cláusula ORDER BY es la siguiente:
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
Puede usar más de una columna en la cláusula ORDER BY. Asegúrese de
que la columna que esté utilizando 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 bloque de código tiene un ejemplo, que ordenaría el resultado en
orden ascendente por el NOMBRE y el SALARIO:
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME, SALARY;
Esto produciría 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 bloque de código tiene un ejemplo, que ordenaría el resultado en
orden descendente por NOMBRE.
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME DESC;
Esto produciría 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 |
+----+----------+-----+-----------+----------+
SQL - Agrupar por
La cláusula SQL GROUP BY se usa en colaboración con la instrucción
SELECT para organizar datos idénticos en grupos. Esta cláusula GROUP BY
sigue la cláusula WHERE en una instrucción SELECT y precede a la cláusula
ORDER BY.
Sintaxis
La sintaxis básica de una cláusula GROUP BY se muestra en el siguiente
bloque de código. 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 usa 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, la consulta
GROUP BY sería la siguiente.
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Esto produciría el siguiente resultado:
+----------+-------------+
| NAME | SUM(SALARY) |
+----------+-------------+
| Chaitali | 6500.00 |
| Hardik | 8500.00 |
| kaushik | 2000.00 |
| Khilan | 1500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 2000.00 |
+----------+-------------+
Ahora, veamos una tabla donde la tabla CLIENTES tiene los siguientes
registros con nombres duplicados:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Ahora, de nuevo, si desea conocer la cantidad total de salario de cada cliente,
la consulta GROUP BY sería la siguiente:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Esto produciría el siguiente resultado:
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
SQL: palabra clave distinta
La palabra clave DISTINCT de SQL 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 esos registros
únicos en lugar de buscar registros duplicados.
Sintaxis
La sintaxis básica de la palabra clave DISTINCT para eliminar los registros
duplicados es la siguiente:
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
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 |
+----+----------+-----+-----------+----------+
Primero, veamos cómo la siguiente consulta SELECT devuelve los registros
de salario duplicados.
SQL> SELECT SALARY FROM CUSTOMERS
ORDER BY SALARY;
Esto produciría 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 |
+----------+
Ahora, usemos la palabra clave DISTINCT con la consulta SELECT anterior y
luego veamos el resultado.
SQL> SELECT DISTINCT SALARY FROM CUSTOMERS
ORDER BY SALARY;
Esto produciría el siguiente resultado donde no tenemos ninguna entrada
duplicada.
+----------+
| SALARY |
+----------+
| 1500.00 |
| 2000.00 |
| 4500.00 |
| 6500.00 |
| 8500.00 |
| 10000.00 |
+----------+
SQL - Clasificación de resultados
La cláusula ORDER BY de SQL se utiliza para ordenar los datos en orden
ascendente o descendente, en función de una o más columnas. Algunas
bases de datos clasifican los resultados de la consulta en orden ascendente
de forma predeterminada.
Sintaxis
La sintaxis básica de la cláusula ORDER BY que se usaría para ordenar el
resultado en orden ascendente o descendente es la siguiente:
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
Puede usar más de una columna en la cláusula ORDER BY. Asegúrese de
que cualquier columna que esté utilizando 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 |
+----+----------+-----+-----------+----------+
Para buscar las filas con su propio orden preferido, la consulta SELECT
utilizada sería la siguiente:
SQL> SELECT * FROM CUSTOMERS
ORDER BY (CASE ADDRESS
WHEN 'DELHI' THEN 1
WHEN 'BHOPAL' THEN 2
WHEN 'KOTA' THEN 3
WHEN 'AHMADABAD' THEN 4
WHEN 'MP' THEN 5
ELSE 100 END) ASC, ADDRESS DESC;
Esto produciría el siguiente resultado:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
Esto ordenará a los clientes por DIRECCIÓN en su propio orden de
preferencia primero y en un orden natural para las direcciones
restantes. Además, las direcciones restantes se ordenarán en orden alfabético
inverso.
SQL - Restricciones
Las restricciones son las reglas impuestas en las columnas de datos de una
tabla. Estos se usan para limitar el tipo de datos que pueden ir a una
tabla. Esto garantiza la precisión y fiabilidad de los datos en la base de datos.
Las restricciones pueden estar en un nivel de columna o en un nivel de
tabla. Las restricciones de nivel de columna se aplican solo a una columna,
mientras que las restricciones de nivel de tabla se aplican a toda la tabla.
Las siguientes son algunas de las restricciones más utilizadas disponibles en
SQL. Estas restricciones ya se han discutido en el capítulo SQL - Conceptos
de RDBMS , pero vale la pena revisarlas en este punto.
Restricción NOT NULL : garantiza que una columna no puede tener un valor
NULL.
Restricción POR DEFECTO : proporciona un valor predeterminado para una
columna cuando no se especifica ninguno.
Restricción ÚNICA : garantiza que todos los valores de una columna sean
diferentes.
Clave PRIMARIA : identifica de forma exclusiva cada fila / registro en una tabla de
base de datos.
Clave EXTRANJERA : identifica de forma exclusiva una fila / registro en cualquiera
de la tabla de base de datos dada.
Restricción de COMPROBACIÓN: la restricción de COMPROBACIÓN garantiza
que todos los valores de una columna satisfagan ciertas condiciones.
ÍNDICE : se utiliza para crear y recuperar datos de la base de datos muy
rápidamente.
Las restricciones se pueden especificar cuando se crea una tabla con la
instrucción CREATE TABLE o puede usar la instrucción ALTER TABLE para
crear restricciones incluso después de crear la tabla.
Restricciones de caída
Cualquier restricción que haya definido puede eliminarse utilizando el
comando ALTER TABLE con la opción DROP CONSTRAINT.
Por ejemplo, para descartar la restricción de clave principal en la tabla
EMPLEADOS, puede usar el siguiente comando.
ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;
Algunas implementaciones pueden proporcionar accesos directos para
eliminar ciertas restricciones. Por ejemplo, para eliminar la restricción de clave
principal para una tabla en Oracle, puede usar el siguiente comando.
ALTER TABLE EMPLOYEES DROP PRIMARY KEY;
Restricciones de integridad
Las restricciones de integridad se utilizan para garantizar la precisión y la
coherencia de los datos en una base de datos relacional. La integridad de los
datos se maneja en una base de datos relacional a través del concepto de
integridad referencial.
Hay muchos tipos de restricciones de integridad que juegan un papel en
la integridad referencial (RI) . Estas restricciones incluyen la clave primaria,
la clave externa, las restricciones únicas y otras restricciones que se
mencionan anteriormente.
Sintaxis
La sintaxis básica de una cláusula UNION es la siguiente:
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION
Ejemplo
Considere las siguientes dos tablas.
Tabla 1 - 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 |
+----+----------+-----+-----------+----------+
Tabla 2 - PEDIDOS La tabla es la siguiente.
+-----+---------------------+-------------+--------+
|OID | DATE | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 | 3 | 3000 |
| 100 | 2009-10-08 00:00:00 | 3 | 1500 |
| 101 | 2009-11-20 00:00:00 | 2 | 1560 |
| 103 | 2008-05-20 00:00:00 | 4 | 2060 |
+-----+---------------------+-------------+--------+
Ahora, unámonos a estas dos tablas en nuestra instrucción SELECT de la
siguiente manera:
SQL> SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
LEFT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
RIGHT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Sintaxis
UNION ALL
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
Aquí, la condición dada podría ser cualquier expresión dada según su
requisito.
Ejemplo
Sintaxis
La sintaxis básica de NULL al crear una tabla.
SQL> 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)
);
Aquí, NOT NULL significa que la columna siempre debe aceptar un valor
explícito del tipo de datos dado. Hay dos columnas donde no utilizamos NOT
NULL, lo que significa que estas columnas podrían ser NULL.
Un campo con un valor NULL es el que se ha dejado en blanco durante la
creación del registro.
Ejemplo
El valor NULL puede causar problemas al seleccionar datos. Sin embargo,
porque al comparar un valor desconocido con cualquier otro valor, el resultado
siempre es desconocido y no se incluye en los resultados. Debe usar
los operadores IS NULL o IS NOT NULL para verificar un valor NULL.
Considere la siguiente tabla CLIENTES con los registros que se muestran a
continuación.
+----+----------+-----+-----------+----------+
| 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 | |
| 7 | Muffy | 24 | Indore | |
+----+----------+-----+-----------+----------+
Ahora, a continuación se muestra el uso del operador IS NOT NULL .
SQL> SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
WHERE SALARY IS NOT NULL;
Esto produciría 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 |
+----+----------+-----+-----------+----------+
Ahora, a continuación se muestra el uso del operador IS NULL .
SQL> SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
WHERE SALARY IS NULL;
Esto produciría el siguiente resultado:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 6 | Komal | 22 | MP | |
| 7 | Muffy | 24 | Indore | |
+----+----------+-----+-----------+----------+
SQL: sintaxis de alias
Puede cambiar el nombre de una tabla o columna temporalmente dando otro
nombre conocido como Alias . El uso de alias de tabla es cambiar el nombre
de una tabla en una instrucción SQL específica. El cambio de nombre es un
cambio temporal y el nombre real de la tabla no cambia en la base de
datos. Los alias de columna se usan para cambiar el nombre de las columnas
de una tabla con el propósito de una consulta SQL particular.
Sintaxis
La sintaxis básica de un alias de tabla es la siguiente.
SELECT column1, column2....
FROM table_name AS alias_name
WHERE [condition];
La sintaxis básica de un alias de columna es la siguiente.
SELECT column_name AS alias_name
FROM table_name
WHERE [condition];
Ejemplo
Considere las siguientes dos tablas.
Tabla 1 - 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 |
+----+----------+-----+-----------+----------+
Tabla 2 - PEDIDOS La tabla es la siguiente.
+-----+---------------------+-------------+--------+
|OID | DATE | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 | 3 | 3000 |
| 100 | 2009-10-08 00:00:00 | 3 | 1500 |
| 101 | 2009-11-20 00:00:00 | 2 | 1560 |
| 103 | 2008-05-20 00:00:00 | 4 | 2060 |
+-----+---------------------+-------------+--------+
Ahora, el siguiente bloque de código muestra el uso de un alias de tabla .
SQL> SELECT C.ID, C.NAME, C.AGE, O.AMOUNT
FROM CUSTOMERS AS C, ORDERS AS O
WHERE C.ID = O.CUSTOMER_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 insertar ningún valor
duplicado en la tabla. La sintaxis básica es la siguiente.
CREATE UNIQUE INDEX index_name
on table_name (column_name);
Índices compuestos
Índices implícitos
Los índices implícitos son índices que el servidor de la base de datos crea
automáticamente cuando se crea un objeto. Los índices se crean
automáticamente para restricciones de clave principal y restricciones únicas.
Sintaxis
La sintaxis básica de un comando ALTER TABLE para agregar una nueva
columna en una tabla existente es la siguiente.
ALTER TABLE table_name ADD column_name datatype;
La sintaxis básica de un comando ALTER TABLE para DROP COLUMN en
una tabla existente es la siguiente.
ALTER TABLE table_name DROP COLUMN column_name;
La sintaxis básica de un comando ALTER TABLE para cambiar el TIPO DE
DATOS de una columna en una tabla es la siguiente.
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
La sintaxis básica de un comando ALTER TABLE para agregar
una restricción NOT NULL a una columna en una tabla es la siguiente.
ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
La sintaxis básica de ALTER TABLE para AGREGAR RESTRICCIONES
ÚNICAS a una tabla es la siguiente.
ALTER TABLE table_name
ADD CONSTRAINT MyUniqueConstraint UNIQUE(column1,
column2...);
La sintaxis básica de un comando ALTER TABLE para AGREGAR CHECK
CONSTRAINT a una tabla es la siguiente.
ALTER TABLE table_name
ADD CONSTRAINT MyUniqueConstraint CHECK (CONDITION);
La sintaxis básica de un comando ALTER TABLE para AGREGAR
la restricción PRIMARY KEY a una tabla es la siguiente.
ALTER TABLE table_name
ADD CONSTRAINT MyPrimaryKey PRIMARY KEY (column1,
column2...);
La sintaxis básica de un comando ALTER TABLE para DROP
CONSTRAINT de una tabla es la siguiente.
ALTER TABLE table_name
DROP CONSTRAINT MyUniqueConstraint;
Si está utilizando MySQL, el código es el siguiente:
ALTER TABLE table_name
DROP INDEX MyUniqueConstraint;
La sintaxis básica de un comando ALTER TABLE para DROP PRIMARY
KEY de una tabla es la siguiente.
ALTER TABLE table_name
DROP CONSTRAINT MyPrimaryKey;
Si está utilizando MySQL, el código es el siguiente:
ALTER TABLE table_name
DROP PRIMARY KEY;
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 es el ejemplo para AGREGAR una nueva columna a una tabla
existente:
ALTER TABLE CUSTOMERS ADD SEX char(1);
Ahora, la tabla CUSTOMERS cambia y se generará el siguiente resultado de
la instrucción SELECT.
+----+---------+-----+-----------+----------+------+
| ID | NAME | AGE | ADDRESS | SALARY | SEX |
+----+---------+-----+-----------+----------+------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 | NULL |
| 2 | Ramesh | 25 | Delhi | 1500.00 | NULL |
| 3 | kaushik | 23 | Kota | 2000.00 | NULL |
| 4 | kaushik | 25 | Mumbai | 6500.00 | NULL |
| 5 | Hardik | 27 | Bhopal | 8500.00 | NULL |
| 6 | Komal | 22 | MP | 4500.00 | NULL |
| 7 | Muffy | 24 | Indore | 10000.00 | NULL |
+----+---------+-----+-----------+----------+------+
El siguiente es el ejemplo para DROP columna de sexo de la tabla existente.
ALTER TABLE CUSTOMERS DROP SEX;
Ahora, la tabla CUSTOMERS cambia y la siguiente sería la salida de la
instrucción SELECT.
+----+---------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+---------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+---------+-----+-----------+----------+
SQL: comando TRUNCATE TABLE
El comando SQL TRUNCATE TABLE se usa para eliminar datos completos
de una tabla existente.
También puede usar el comando DROP TABLE para eliminar la tabla
completa, pero eliminaría la estructura completa de la tabla de la base de
datos y necesitaría volver a crear esta tabla una vez más si desea almacenar
algunos datos.
Sintaxis
La sintaxis básica de un comando TRUNCATE TABLE es la siguiente.
TRUNCATE TABLE table_name;
Ejemplo
Considere una tabla CLIENTES que tenga 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 es el ejemplo de un comando Truncar.
SQL > TRUNCATE TABLE CUSTOMERS;
Ahora, la tabla CLIENTES está truncada y el resultado de la instrucción
SELECT será como se muestra en el bloque de código a continuación:
SQL> SELECT * FROM CUSTOMERS;
Empty set (0.00 sec)
SQL: uso de vistas
Una vista no es más que una declaración SQL que se almacena en la base de
datos con un nombre asociado. Una vista es en realidad una composición de
una tabla en forma de una consulta SQL predefinida.
Una vista puede contener todas las filas de una tabla o seleccionar filas de
una tabla. Se puede crear una vista a partir de una o varias tablas que
dependen de la consulta SQL escrita para crear una vista.
Las vistas, que son un tipo de tablas virtuales, permiten a los usuarios hacer lo
siguiente:
Estructura los datos de una manera que los usuarios o clases de usuarios
encuentren natural o intuitiva.
Restrinja el acceso a los datos de tal manera que un usuario pueda ver y (a veces)
modificar exactamente lo que necesita y nada más.
Resuma datos de varias tablas que se pueden usar para generar informes.
Crear vistas
Las vistas de la base de datos se crean usando la instrucción CREATE
VIEW . Las vistas se pueden crear desde una sola tabla, varias tablas u otra
vista.
Para crear una vista, un usuario debe tener el privilegio de sistema apropiado
de acuerdo con la implementación específica.
La sintaxis básica de CREATE VIEW es la siguiente:
CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];
Puede incluir varias tablas en su instrucción SELECT de manera similar a
como las usa en una consulta SQL SELECT normal.
Ejemplo
Se pueden insertar filas de datos en una vista. Las mismas reglas que se
aplican al comando ACTUALIZAR también se aplican al comando INSERTAR.
Aquí, no podemos insertar filas en CUSTOMERS_VIEW porque no hemos
incluido todas las columnas NOT NULL en esta vista; de lo contrario, puede
insertar filas en una vista de forma similar a como las inserta en una tabla.
Las filas de datos se pueden eliminar de una vista. Las mismas reglas que se
aplican a los comandos UPDATE e INSERT se aplican al comando DELETE.
El siguiente es un ejemplo para eliminar un registro que tiene EDAD = 22.
SQL > DELETE FROM CUSTOMERS_VIEW
WHERE age = 22;
Esto finalmente eliminaría una fila de la tabla base CLIENTES y lo mismo se
reflejaría en la vista misma. Ahora, intente consultar la tabla base y la
instrucción SELECT producirá el siguiente resultado.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 35 | 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 |
+----+----------+-----+-----------+----------+
Vistas caídas
Obviamente, donde tiene una vista, necesita una forma de soltar la vista si ya
no es necesaria. La sintaxis es muy simple y se da a continuación:
DROP VIEW view_name;
El siguiente es un ejemplo para descartar CUSTOMERS_VIEW de la tabla
CUSTOMERS.
DROP VIEW CUSTOMERS_VIEW;
Sintaxis
El siguiente bloque de código muestra la posición de la Cláusula HAVING en
una consulta.
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
La cláusula HAVING debe seguir a la cláusula GROUP BY en una consulta y
también debe preceder a la cláusula ORDER BY si se usa. El siguiente bloque
de código tiene la sintaxis de la instrucción SELECT, incluida la cláusula
HAVING:
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
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 |
+----+----------+-----+-----------+----------+
Propiedades de transacciones
Las transacciones tienen las siguientes cuatro propiedades estándar,
generalmente referidas por el acrónimo ACID .
Atomicidad : garantiza que todas las operaciones dentro de la unidad de trabajo
se completen con éxito. De lo contrario, la transacción se cancela en el punto de
falla y todas las operaciones anteriores se revierten a su estado anterior.
Consistencia : garantiza que la base de datos cambie correctamente los estados
tras una transacción confirmada con éxito.
Aislamiento : permite que las transacciones operen independientemente y sean
transparentes entre sí.
Durabilidad : garantiza que el resultado o efecto de una transacción
comprometida persista en caso de falla del sistema.
Control de transacciones
El comando COMMIT
El comando ROLLBACK
El comando SAVEPOINT
No Comodín y descripción
Señor.
or
or
or
or
Ejemplo
La siguiente tabla tiene varios ejemplos que muestran la parte WHERE que
tiene diferentes cláusulas LIKE con operadores '%' y '_'.
No Declaración y descripción
Señor.
No Función descriptiva
Señor.
AGREGAR ()
1
Agrega fechas
AGREGAR TIEMPO()
2
Agrega tiempo
CONVERT_TZ ()
3
Convierte de una zona horaria a otra
CURDATE ()
44
Devuelve la fecha actual
CURTIME ()
8
Devuelve la hora actual
DATE_ADD ()
99 Agrega dos fechas
FORMATO DE FECHA()
10
Fecha de formatos como se especifica
DATE_SUB ()
11
Resta dos fechas
FECHA()
12
Extrae la parte de fecha de una expresión de fecha o fecha y hora
DATEDIFF ()
13
Resta dos fechas
DÍA()
14 Sinónimo de DAYOFMONTH ()
DAYNAME ()
15
Devuelve el nombre del día de la semana
DÍA DE LA SEMANA()
17
Devuelve el índice del día de la semana del argumento
DAYOFYEAR ()
18 años Devuelve el día del año (1-366)
EXTRAER
19
Extrae parte de una fecha
FROM_DAYS ()
20
Convierte un número de día en una fecha
FROM_UNIXTIME ()
21
Fecha de formatos como marca de tiempo UNIX
HORA()
22 Extrae la hora
ÚLTIMO DÍA
23
Devuelve el último día del mes para el argumento.
LOCALTIMESTAMP, LOCALTIMESTAMP ()
25
Sinónimo de NOW ()
26 MAKEDATE ()
Crea una fecha a partir del año y el día del año.
HACER TIEMPO
27
HACER TIEMPO()
MICROSEGUNDO()
28
Devuelve los microsegundos del argumento
MINUTO()
29
Devuelve el minuto del argumento
MES()
30
Devuelve el mes desde la fecha pasada
AHORA()
32
Devuelve la fecha y hora actuales
PERIOD_ADD ()
33
Agrega un período a un año-mes
PERIOD_DIFF ()
34
Devuelve el número de meses entre períodos.
TRIMESTRE()
35
Devuelve el trimestre de un argumento de fecha
SEC_TO_TIME ()
36
Convierte segundos al formato 'HH: MM: SS'
SEGUNDO()
37 Devuelve el segundo (0-59)
STR_TO_DATE ()
38 Convierte una cadena en una fecha
SUBDATE ()
39
Cuando se invoca con tres argumentos, un sinónimo de DATE_SUB ()
SUBTIME ()
40
Resta tiempos
SYSDATE ()
41 Devuelve la hora a la que se ejecuta la función
FORMATO DE TIEMPO()
42
Formatos como tiempo
TIME_TO_SEC ()
43
Devuelve el argumento convertido a segundos
HORA()
44
Extrae la porción de tiempo de la expresión pasada
TIMEDIFF ()
45 Resta tiempo
TIMESTAMP ()
46 Con un solo argumento, esta función devuelve la expresión de fecha o fecha y
hora. Con dos argumentos, la suma de los argumentos
TIMESTAMPADD ()
47
Agrega un intervalo a una expresión de fecha y hora
TIMESTAMPDIFF ()
48
Resta un intervalo de una expresión de fecha y hora
TO_DAYS ()
49
Devuelve el argumento de fecha convertido a días
UNIX_TIMESTAMP ()
50 Devuelve una marca de tiempo UNIX
UTC_DATE ()
51
Devuelve la fecha UTC actual
UTC_TIME ()
52
Devuelve la hora UTC actual
53 UTC_TIMESTAMP ()
Devuelve la fecha y hora UTC actual
SEMANA()
54
Devuelve el número de semana.
DÍA LABORABLE()
55
Devuelve el índice del día de la semana.
WEEKOFYEAR ()
56
Devuelve la semana calendario de la fecha (1-53)
AÑO()
57
Devuelve el año
AÑO ()
58
Devuelve el año y la semana.
CURDATE ()
Devuelve la fecha actual como un valor en formato 'AAAA-MM-DD' o
AAAAMMDD, dependiendo de si la función se utiliza en una cadena o en un
contexto numérico.
mysql> SELECT CURDATE();
+---------------------------------------------------------+
| CURDATE() |
+---------------------------------------------------------+
| 1997-12-15 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURRENT_DATE y CURRENT_DATE ()
CURRENT_DATE y CURRENT_DATE () son sinónimos de CURDATE ()
CURTIME ()
Devuelve la hora actual como un valor en formato 'HH: MM: SS' o HHMMSS,
dependiendo de si la función se utiliza en una cadena o en un contexto
numérico. El valor se expresa en la zona horaria actual.
mysql> SELECT CURTIME();
+---------------------------------------------------------+
| CURTIME() |
+---------------------------------------------------------+
| 23:50:26 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURRENT_TIME y CURRENT_TIME ()
CURRENT_TIME y CURRENT_TIME () son sinónimos de CURTIME ().
CURRENT_TIMESTAMP y CURRENT_TIMESTAMP
()
CURRENT_TIMESTAMP y CURRENT_TIMESTAMP () son sinónimos de
NOW ().
FECHA (expr)
Extrae la parte de fecha de la expresión de fecha o fecha y hora expr.
mysql> SELECT DATE('2003-12-31 01:02:03');
+---------------------------------------------------------+
| DATE('2003-12-31 01:02:03') |
+---------------------------------------------------------+
| 2003-12-31 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SEGUNDO SEGUNDOS
MINUTO MINUTOS
HORA Horas
DÍA DIAS
SEMANA SEMANAS
MES MESES
TRIMESTRE CUARTELES
AÑO AÑOS
SEGUNDO_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTOS.MICROSECONDS'
DAY_MICROSECOND 'DAYS.MICROSECONDS'
No Especificador y Descripción
Señor.
1 %un
Nombre abreviado del día de la semana (Sun..Sat)
%si
2
Nombre abreviado del mes (enero ... diciembre)
%C
3
Mes, numérico (0..12)
%RE
44
Día del mes con sufijo en inglés (0º, 1º, 2º, 3º,.)
%re
55
Día del mes, numérico (00..31)
%mi
66
Día del mes, numérico (0..31)
%F
77
Microsegundos (000000..999999)
%H
8
Hora (00..23)
%h
99
Hora (01..12)
%YO
10
Hora (01..12)
%yo
11
Minutos, numéricos (00..59)
%j
12
Día del año (001..366)
%k
13
Hora (0..23)
%l
14
Hora (1..12)
%METRO
15
Nombre del mes (enero ... diciembre)
%metro
dieciséis
Mes, numérico (00..12)
%pag
17
Am o PM
%r
18 años
Tiempo, 12 horas (hh: mm: ss seguido de AM o PM)
%S
19
Segundos (00..59)
%s
20
Segundos (00..59)
%T
21
Tiempo, 24 horas (hh: mm: ss)
%U
22
Semana (00..53), donde el domingo es el primer día de la semana
%u
23
Semana (00..53), donde el lunes es el primer día de la semana
%V
24 Semana (01..53), donde el domingo es el primer día de la semana; usado con%
X
%v
25
Semana (01..53), donde el lunes es el primer día de la semana; usado con% x
%W
26
Nombre del día de la semana (domingo ... sábado)
27 %w
Día de la semana (0 = domingo..6 = sábado)
%X
28 Año de la semana en que el domingo es el primer día de la semana, numérico,
cuatro dígitos; usado con% V
%X
29 Año de la semana, donde el lunes es el primer día de la semana, numérico,
cuatro dígitos; usado con% v
%Y
30
Año, numérico, cuatro dígitos
%y
31
Año, numérico (dos dígitos)
%%
32
Un literal.%. personaje
%X
33
x, para any.x. no mencionado anteriormente
DAYNAME (fecha)
Devuelve el nombre del día de la semana para la fecha.
mysql> SELECT DAYNAME('1998-02-05');
+---------------------------------------------------------+
| DAYNAME('1998-02-05') |
+---------------------------------------------------------+
| Thursday |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFMONTH (fecha)
Devuelve el día del mes para la fecha, en el rango de 0 a 31.
mysql> SELECT DAYOFMONTH('1998-02-03');
+---------------------------------------------------------+
| DAYOFMONTH('1998-02-03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFWEEK (fecha)
Devuelve el índice del día de la semana para la fecha (1 = domingo, 2 =
lunes,., 7 = sábado). Estos valores de índice corresponden al estándar ODBC.
mysql> SELECT DAYOFWEEK('1998-02-03');
+---------------------------------------------------------+
|DAYOFWEEK('1998-02-03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFYEAR (fecha)
Devuelve el día del año para la fecha, en el rango de 1 a 366.
mysql> SELECT DAYOFYEAR('1998-02-03');
+---------------------------------------------------------+
| DAYOFYEAR('1998-02-03') |
+---------------------------------------------------------+
| 34 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DESDE_DÍAS (N)
Dado un día número N, devuelve un valor DATE.
mysql> SELECT FROM_DAYS(729669);
+---------------------------------------------------------+
| FROM_DAYS(729669) |
+---------------------------------------------------------+
| 1997-10-07 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Nota : utilice FROM_DAYS () con precaución en fechas anteriores. No está
diseñado para usarse con valores que preceden al advenimiento del
calendario gregoriano (1582).
FROM_UNIXTIME (unix_timestamp)
FROM_UNIXTIME (unix_timestamp, formato)
Devuelve una representación del argumento unix_timestamp como un valor
en formato 'AAAA-MM-DD HH: MM: SS o AAAAMMDDHHMMSS,
dependiendo de si la función se usa en una cadena o en un contexto
numérico. El valor se expresa en la zona horaria actual. El argumento
unix_timestamp es un valor interno de fecha y hora, que es producido por la
función UNIX_TIMESTAMP () .
Si se da el formato, el resultado se formatea de acuerdo con la cadena de
formato, que se usa de la misma manera que se enumera en la entrada para
la función DATE_FORMAT () .
mysql> SELECT FROM_UNIXTIME(875996580);
+---------------------------------------------------------+
| FROM_UNIXTIME(875996580) |
+---------------------------------------------------------+
| 1997-10-04 22:23:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
HORA (tiempo)
Devuelve la hora por tiempo. El rango del valor de retorno es de 0 a 23 para
los valores de hora del día. Sin embargo, el rango de valores TIME es mucho
mayor, por lo que HOUR puede devolver valores mayores que 23.
mysql> SELECT HOUR('10:05:03');
+---------------------------------------------------------+
| HOUR('10:05:03') |
+---------------------------------------------------------+
| 10 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LAST_DAY (fecha)
Toma una fecha o valor de fecha y hora y devuelve el valor correspondiente
para el último día del mes. Devuelve NULL si el argumento no es válido.
mysql> SELECT LAST_DAY('2003-02-05');
+---------------------------------------------------------+
| LAST_DAY('2003-02-05') |
+---------------------------------------------------------+
| 2003-02-28 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LOCALTIME y LOCALTIME ()
LOCALTIME y LOCALTIME () son sinónimos de NOW ().
LOCALTIMESTAMP y LOCALTIMESTAMP ()
LOCALTIMESTAMP y LOCALTIMESTAMP () son sinónimos de NOW ().
MAKEDATE (año, día del año)
Devuelve una fecha, valores de año y día del año dados. El valor del día del
año debe ser mayor que 0 o el resultado será NULL.
mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
+---------------------------------------------------------+
| MAKEDATE(2001,31), MAKEDATE(2001,32) |
+---------------------------------------------------------+
| '2001-01-31', '2001-02-01' |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MICROSECOND (expr)
Devuelve los microsegundos de la expresión de hora o fecha y hora (expr)
como un número en el rango de 0 a 999999.
mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456') |
+---------------------------------------------------------+
| 123456 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MINUTO (tiempo)
Devuelve el minuto por tiempo, en el rango de 0 a 59.
mysql> SELECT MINUTE('98-02-03 10:05:03');
+---------------------------------------------------------+
| MINUTE('98-02-03 10:05:03') |
+---------------------------------------------------------+
| 5 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MES (fecha)
Devuelve el mes para la fecha, en el rango de 0 a 12.
mysql> SELECT MONTH('1998-02-03')
+---------------------------------------------------------+
| MONTH('1998-02-03') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
AHORA()
Devuelve la fecha y hora actuales como un valor en formato 'AAAA-MM-DD
HH: MM: SS' o AAAAMMDDHHMMSS, dependiendo de si la función se utiliza
en una cadena o contexto numérico. Este valor se expresa en la zona horaria
actual.
mysql> SELECT NOW();
+---------------------------------------------------------+
| NOW() |
+---------------------------------------------------------+
| 1997-12-15 23:50:26 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
PERIOD_ADD (P, N)
Agrega N meses a un período P (en el formato AAAAM o AAAAMM). Devuelve
un valor en el formato AAAAMM. Tenga en cuenta que el argumento de
período P no es un valor de fecha.
mysql> SELECT PERIOD_ADD(9801,2);
+---------------------------------------------------------+
| PERIOD_ADD(9801,2) |
+---------------------------------------------------------+
| 199803 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TRIMESTRE (fecha)
Devuelve el trimestre del año para la fecha, en el rango de 1 a 4.
mysql> SELECT QUARTER('98-04-01');
+---------------------------------------------------------+
| QUARTER('98-04-01') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Segunda vez)
Devuelve el segundo por tiempo, en el rango de 0 a 59.
mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SEC_TO_TIME (segundos)
Devuelve el argumento de segundos, convertido a horas, minutos y segundos,
como un valor en formato 'HH: MM: SS' o HHMMSS, dependiendo de si la
función se utiliza en una cadena o contexto numérico.
mysql> SELECT SEC_TO_TIME(2378);
+---------------------------------------------------------+
| SEC_TO_TIME(2378) |
+---------------------------------------------------------+
| 00:39:38 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SYSDATE ()
Devuelve la fecha y hora actuales como un valor en formato 'AAAA-MM-DD
HH: MM: SS' o AAAAMMDDHHMMSS, dependiendo de si la función se utiliza
en una cadena o en un contexto numérico.
mysql> SELECT SYSDATE();
+---------------------------------------------------------+
| SYSDATE() |
+---------------------------------------------------------+
| 2006-04-12 13:47:44 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIEMPO (expr)
Extrae la parte de tiempo de la expresión de hora o fecha y hora expr y la
devuelve como una cadena.
mysql> SELECT TIME('2003-12-31 01:02:03');
+---------------------------------------------------------+
| TIME('2003-12-31 01:02:03') |
+---------------------------------------------------------+
| 01:02:03 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
FRAC_SECOND
SEGUNDO MINUTO
HORA, DIA
SEMANA
MES
TRIMESTRE o
AÑO
El valor unitario se puede especificar utilizando una de las palabras clave
como se muestra o con un prefijo de SQL_TSI_.
Por ejemplo, DAY y SQL_TSI_DAY son legales.
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
+---------------------------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2003-01-02') |
+---------------------------------------------------------+
| 2003-01-02 00:01:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIME_TO_SEC (hora)
Devuelve el argumento de tiempo convertido a segundos.
mysql> SELECT TIME_TO_SEC('22:23:00');
+---------------------------------------------------------+
| TIME_TO_SEC('22:23:00') |
+---------------------------------------------------------+
| 80580 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Fecha)
Dada una fecha, devuelve un número de día (el número de días desde el año
0).
mysql> SELECT TO_DAYS(950501);
+---------------------------------------------------------+
| TO_DAYS(950501) |
+---------------------------------------------------------+
| 728779 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UNIX_TIMESTAMP (), UNIX_TIMESTAMP (fecha)
Si se llama sin argumento, esta función devuelve una marca de tiempo Unix
(segundos desde '1970-01-01 00:00:00' UTC) como un entero sin signo. Si se
llama a UNIX_TIMESTAMP () con un argumento de fecha, devuelve el valor
del argumento como segundos desde '1970-01-01 00:00:00' UTC. La fecha
puede ser una cadena DATE, una cadena DATETIME, un TIMESTAMP o un
número en el formato YYMMDD o AAAAMMDD.
mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP() |
+---------------------------------------------------------+
| 882226357 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_DATE, UTC_DATE ()
Devuelve la fecha UTC actual como un valor en formato 'AAAA-MM-DD' o
AAAAMMDD, dependiendo de si la función se utiliza en una cadena o contexto
numérico.
mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+---------------------------------------------------------+
| UTC_DATE(), UTC_DATE() + 0 |
+---------------------------------------------------------+
| 2003-08-14, 20030814 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_TIME, UTC_TIME ()
Devuelve el tiempo UTC actual como un valor en formato 'HH: MM: SS' o
HHMMSS, dependiendo de si la función se utiliza en una cadena o contexto
numérico.
mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+---------------------------------------------------------+
| UTC_TIME(), UTC_TIME() + 0 |
+---------------------------------------------------------+
| 18:07:53, 180753 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_TIMESTAMP, UTC_TIMESTAMP ()
Devuelve la fecha y hora UTC actual como un valor en 'AAAA-MM-DD HH:
MM: SS' o en un formato AAAAMMDDHHMMSS, dependiendo de si la función
se utiliza en una cadena o en un contexto numérico.
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
+---------------------------------------------------------+
| UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0 |
+---------------------------------------------------------+
| 2003-08-14 18:08:04, 20030814180804 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
WEEKOFYEAR (fecha)
Devuelve la semana calendario de la fecha como un número en el rango de 1
a 53. WEEKOFYEAR () es una función de compatibilidad que es equivalente a
WEEK (fecha, 3).
mysql> SELECT WEEKOFYEAR('1998-02-20');
+---------------------------------------------------------+
| WEEKOFYEAR('1998-02-20') |
+---------------------------------------------------------+
| 8 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
AÑO (fecha)
Devuelve el año para la fecha, en el rango de 1000 a 9999, o 0 para el
cero. fecha.
mysql> SELECT YEAR('98-02-03');
+---------------------------------------------------------+
| YEAR('98-02-03') |
+---------------------------------------------------------+
| 1998 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Ejemplo
Ejemplo
Pruebe el siguiente ejemplo para crear una tabla de clonación
para TUTORIALS_TBL cuya estructura es la siguiente:
Paso 1 : obtenga la estructura completa de la tabla.
SQL> SHOW CREATE TABLE TUTORIALS_TBL \G;
*************************** 1. row
***************************
Table: TUTORIALS_TBL
Create Table: CREATE TABLE 'TUTORIALS_TBL' (
'tutorial_id' int(11) NOT NULL auto_increment,
'tutorial_title' varchar(100) NOT NULL default '',
'tutorial_author' varchar(40) NOT NULL default '',
'submission_date' date default NULL,
PRIMARY KEY ('tutorial_id'),
UNIQUE KEY 'AUTHOR_INDEX' ('tutorial_author')
) TYPE = MyISAM
1 row in set (0.00 sec)
Paso 2 : cambie el nombre de esta tabla y cree otra tabla.
SQL> CREATE TABLE `CLONE_TBL` (
-> 'tutorial_id' int(11) NOT NULL auto_increment,
-> 'tutorial_title' varchar(100) NOT NULL default '',
-> 'tutorial_author' varchar(40) NOT NULL default '',
-> 'submission_date' date default NULL,
-> PRIMARY KEY (`tutorial_id'),
-> UNIQUE KEY 'AUTHOR_INDEX' ('tutorial_author')
-> ) TYPE = MyISAM;
Query OK, 0 rows affected (1.80 sec)
Paso 3 : después de ejecutar el paso 2, clonarás una tabla en tu base de
datos. Si desea copiar datos de una tabla anterior, puede hacerlo utilizando la
instrucción INSERT INTO ... SELECT.
SQL> INSERT INTO CLONE_TBL (tutorial_id,
-> tutorial_title,
-> tutorial_author,
-> submission_date)
-> SELECT tutorial_id,tutorial_title,
-> tutorial_author,submission_date,
-> FROM TUTORIALS_TBL;
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0
Finalmente, tendrá una tabla de clonación exacta como quería tener.
SQL - Subconsultas
Una consulta de consulta secundaria o interna o una consulta anidada es una
consulta dentro de otra consulta SQL 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 usar con las instrucciones SELECT, INSERT,
UPDATE y DELETE junto con los operadores como =, <,>,> =, <=, IN,
BETWEEN, etc.
Hay algunas reglas que las subconsultas deben seguir:
Las subconsultas deben estar entre paréntesis.
Una subconsulta solo puede tener una columna en la cláusula SELECT, a menos
que haya varias columnas en la consulta principal para que la subconsulta
compare sus columnas seleccionadas.
Un comando ORDER BY no se puede usar en una subconsulta, aunque la
consulta principal puede usar un ORDER BY. El comando GROUP BY se puede
utilizar para realizar la misma función que ORDER BY en una subconsulta.
Las subconsultas que devuelven más de una fila solo se pueden usar con
operadores de valores múltiples, como el operador IN.
La lista SELECT no puede incluir referencias a valores que evalúen a BLOB,
ARRAY, CLOB o NCLOB.
Una subconsulta no puede encerrarse inmediatamente en una función establecida.
El operador ENTRE no se puede utilizar con una subconsulta. Sin embargo, el
operador ENTRE se puede utilizar dentro de la subconsulta.
Subconsultas con la instrucción SELECT
Las subconsultas se usan con mayor frecuencia con la instrucción
SELECT. La sintaxis básica es la siguiente:
SELECT column_name [, column_name ]
FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
Ejemplo
Ejemplo
Ejemplo
Ejemplo
Ejemplo
Pruebe el siguiente ejemplo. Esto creará una tabla y luego insertará algunas
filas en esta tabla donde no es necesario dar una ID de registro porque
MySQL la incrementa automáticamente.
mysql> CREATE TABLE INSECT
-> (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id),
-> name VARCHAR(30) NOT NULL, # type of insect
-> date DATE NOT NULL, # date collected
-> origin VARCHAR(30) NOT NULL # where collected
);
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO INSECT (id,name,date,origin) VALUES
-> (NULL,'housefly','2001-09-10','kitchen'),
-> (NULL,'millipede','2001-09-10','driveway'),
-> (NULL,'grasshopper','2001-09-10','front yard');
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM INSECT ORDER BY id;
+----+-------------+------------+------------+
| id | name | date | origin |
+----+-------------+------------+------------+
| 1 | housefly | 2001-09-10 | kitchen |
| 2 | millipede | 2001-09-10 | driveway |
| 3 | grasshopper | 2001-09-10 | front yard |
+----+-------------+------------+------------+
3 rows in set (0.00 sec)
Ejemplo PERL
Ejemplo de PHP
Sintaxis
La sintaxis básica de una palabra clave DISTINCT para eliminar registros
duplicados es la siguiente.
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
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 |
+----+----------+-----+-----------+----------+
Primero, veamos cómo la siguiente consulta SELECT devuelve registros de
salario duplicados.
SQL> SELECT SALARY FROM CUSTOMERS
ORDER BY SALARY;
Esto produciría el siguiente resultado donde el salario de 2000 se duplicará, lo
cual es un registro duplicado de la tabla original.
+----------+
| SALARY |
+----------+
| 1500.00 |
| 2000.00 |
| 2000.00 |
| 4500.00 |
| 6500.00 |
| 8500.00 |
| 10000.00 |
+----------+
Ahora, usemos la palabra clave DISTINCT con la consulta SELECT anterior y
veamos el resultado.
SQL> SELECT DISTINCT SALARY FROM CUSTOMERS
ORDER BY SALARY;
El dilema COMO