Guía Completa de SQLite y SQL
Guía Completa de SQLite y SQL
de la
Información
1
Ing. En Diseño y Animación Digital
Debido a la falta de universalidad de las implementaciones comerciales de SQL, así como a la rápida
evolución del mercado, en este libro se seguirá la sintaxis SQL estándar. Conocido el estándar, la
adaptación del lector a la sintaxis de cualquier otra versión de SQL será una tarea rápida y sencilla.
Salvo que se indique lo contrario, se utilizará como referencia el estándar SQL:1999, ya que las
versiones posteriores se centran en características que quedan fuera del ámbito de este texto. Se
muestra una sintaxis simplificada en aras de garantizar un enfoque práctico.
2. SQLITE
SQLite es una biblioteca en proceso que implementa un motor de base de datos SQL transaccional
autónomo, sin servidor y sin configuración. Es la única base de datos sin configuración, lo que
significa que, al igual que otras bases de datos, no necesita configurarse en el sistema.
El motor SQLite no es un proceso independiente como otras bases de datos; puede vincularlo
estática o dinámicamente con su aplicación según sus
necesidades. SQLite accede directamente a sus archivos de almacenamiento.
• 2000 - D. Richard Hipp diseñó SQLite con el propósito de que no se necesitara administración
para operar un programa.
• 2000 - en agosto, se lanzó SQLite 1.0 con GNU Database Manager.
4. LIMITACIONES DE SQLITE
Hay algunas características no compatibles de SQL92 en SQLite que se muestran a continuación.
Característica Descripción
RIGHT OUTER JOIN Sólo se implementa LEFT OUTER JOIN.
FULL OUTER JOIN Sólo se implementa LEFT OUTER JOIN.
2
Ing. En Diseño y Animación Digital
Se admiten las variantes RENAME TABLE y ADD COLUMNA del comando ALTER TABLE. No se admiten las
ALTER TABLE
variantes DROP COLUMNA, ALTER COLUMNA ni ADD CONSTRAINT.
Soporte Trigger Se admiten los triggers FOR EACH ROW pero no los triggers FOR EACH STATEMENT
Las vistas en SQLite son de solo lectura. No se pueden ejecutar sentencias DELETE, INSERT ni UPDATE en
VISTAS
una vista.
Los únicos permisos de acceso que se pueden aplicar son los permisos de acceso a archivos normales
GRANT and REVOKE
del sistema operativo subyacente.
5. TIPOS DE DATOS
El tipo de dato de SQLite es un atributo que especifica el tipo de dato de cualquier objeto. Cada
columna, variable y La expresión tiene un tipo de datos relacionado en SQLite.
Utilizaría estos tipos de datos al crear sus tablas. SQLite utiliza un sistema de tipos dinámicos más
general. En SQLite, el tipo de dato de un valor se asocia al valor mismo, no a su contenedor.
• Clases de almacenamiento:
Cada valor almacenado en una base de datos SQLite tiene una de las siguientes clases de
almacenamiento
Clase de
Descripción
almacenamiento
NULL El valor es un valor NULL.
INTEGER El valor es un entero con signo, almacenado en 1, 2, 3, 4, 6 u 8 bytes según la magnitud del valor.
REAL El valor es un valor de punto flotante, almacenado como un número de punto flotante IEEE de 8 bytes.
El valor es una cadena de texto, almacenada utilizando la codificación de la base de datos (UTF-8, UTF-16BE
TEXT
o UTF-16LE)
BLOB El valor es un conjunto de datos, almacenados exactamente como se ingresó.
La clase de almacenamiento SQLite es ligeramente más general que un tipo de dato. La clase de
almacenamiento INTEGER, por ejemplo, incluye seis tipos de datos enteros diferentes de distintas
longitudes.
• Tipo de afinidad
SQLite admite el concepto de afinidad de tipos en columnas. Cualquier columna puede almacenar
cualquier tipo de datos, pero la clase de almacenamiento preferida para una columna se denomina
afinidad. A cada columna de tabla en una base de datos SQLite3 se le asigna una de las siguientes
afinidades de tipos:
Afinidad Descripción
TEXT Esta columna almacena todos los datos utilizando las clases de almacenamiento NULL, TEXT o BLOB
NUMERIC Esta columna puede contener valores que utilicen las cinco clases de almacenamiento
INTEGER Se comporta igual que una columna con afinidad NUMERIC con una excepción en un CAST
Se comporta como una columna con afinidad NUMERIC excepto que fuerza los valores enteros a una representación
REAL
de punto flotante
Una columna con afinidad NINGUNA no prefiere una clase de almacenamiento sobre otra y no se intenta
NONE
forzar datos de una clase de almacenamiento a otra.
3
Ing. En Diseño y Animación Digital
• Afinidad y nombres de tipos
La siguiente tabla enumera varios nombres de tipos de datos que se pueden usar al crear tablas
SQLite3 y también se muestra la afinidad aplicada correspondiente:
Tipo de dato Afinidad
INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT INTEGER
BIGINT
UNSIGNED BIG INT
INT2
INT8
CHARACTER (20)
VARCHAR (255)
VARYING CHARACTER (255
NCHAR (55)
TEXT
NATIVE CHARACTER (70)
NVARCHAR (100)
TEXT
CLOB
BLOB
NONE
no datatype specified
REAL
DOUBLE
REAL
DOUBLE PRECISION
FLOAT
NUMERIC
DECIMAL (10,5)
BOOLEAN NUMERIC
DATE
DATETIME
Puede elegir almacenar fechas y horas en cualquiera de estos formatos y convertir libremente entre
formatos utilizando las funciones de fecha y hora integradas.
4
Ing. En Diseño y Animación Digital
6. COMANDOS DE SQLITE:
Los comandos estándar de SQLite para interactuar con bases de datos relacionales son similares a
los de SQL. Son CREATE, SELECT, INSERT, UPDATE, DELETE y DROP. Estos comandos se pueden
clasificar en grupos según su naturaleza operativa:
CREATE TABLE es la palabra clave que indica al sistema de base de datos que cree una nueva tabla.
El nombre único o identificador de la tabla sigue a la instrucción CREATE TABLE. Opcionalmente,
puede especificar nombre_basededatos junto con nombre_tabla.
Ejemplo:
A continuación, se muestra un ejemplo, que crea una tabla EMPLEADO 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:
5
Ing. En Diseño y Animación Digital
Creemos una tabla más, que utilizaremos en nuestros ejercicios en los capítulos siguientes:
La sintaxis básica de ALTER TABLE para agregar una nueva columna en una tabla existente es la
siguiente:
Ahora, intentemos cambiar el nombre de esta tabla usando la declaración ALTER TABLE de la
siguiente manera:
6
Ing. En Diseño y Animación Digital
La instrucción SQLite anterior cambiará el nombre de la tabla EMPLEADO a EMPLEADOS.
Ahora, intentemos agregar una nueva columna en la tabla EMPLEADOS de la siguiente manera:
Se debe tener en cuenta que la columna recién agregada se completa con valores NULL.
7.3. Eliminar Tabla (DROP TABLE)
La declaración DROP TABLE de SQLite se utiliza para eliminar una definición de tabla y todos los
datos, índices, triggers, restricciones y especificaciones de permisos para esa tabla.
Debe tener cuidado al utilizar 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:
La sintaxis básica de la instrucción DROP TABLE es la siguiente. Opcionalmente, puede especificar
el nombre de la base de datos junto con el nombre de la tabla, como se indica a continuación:
Ejemplo
Primero verificaremos la tabla EMPLEADO y luego la eliminaremos de la base de
datos de la siguiente manera:
8. RESTRICCIONES DE SQLITE
Las restricciones son reglas que se aplican a las columnas de datos de una tabla. Se utilizan para
limitar el tipo de datos que se pueden incluir en una tabla. Esto garantiza la precisión y fiabilidad de
los datos en la base de datos.
7
Ing. En Diseño y Animación Digital
Las restricciones pueden ser a nivel de columna o de tabla. Las restricciones a nivel de columna se
aplican solo a una columna, mientras que las
restricciones a nivel de tabla se aplican a toda la tabla.
A continuación, se muestran las restricciones más utilizadas disponibles en SQLite.
• Restricción NOT NULL: garantiza que una columna no pueda tener un valor NULL.
• Restricción DEFAULT: proporciona un valor predeterminado para una columna cuando no
se especifica ninguno.
• Restricción UNIQUE: garantiza que todos los valores de una columna sean diferentes.
• Clave PRIMARIA: Identifica de forma única cada fila/registro en una tabla de base de datos.
• Restricción CHECK: la restricción CHECK asegura que todos los valores de una columna
satisfagan ciertas condiciones.
8
Ing. En Diseño y Animación Digital
9
Ing. En Diseño y Animación Digital
Si una tabla tiene una clave principal definida en cualquiera de los campos, entonces no puede
haber dos registros que tengan el mismo valor de ese campo.
EJEMPLO:
Ya has visto varios ejemplos arriba donde hemos creado la tabla EMPLEADO con ID como clave
principal
10
Ing. En Diseño y Animación Digital
Sintaxis:
El uso básico de la palabra clave AUTOINCREMENT es el siguiente:
Ejemplo:
Considere la tabla EMPLEADO que se creará de la siguiente manera:
Aquí, columna1, columna2, ...columnaN son los nombres de las columnas de la tabla en la que
desea insertar datos.
11
Ing. En Diseño y Animación Digital
Es posible que no necesite especificar el nombre de las columnas en la consulta SQLite si agrega
valores para todas las columnas de la tabla. Sin embargo, asegúrese de que el orden de los valores
coincida con el de las columnas de la tabla. La sintaxis INSERT INTO de SQLite sería la siguiente:
Ejemplo:
Considere que ya ha creado la tabla Empresa en su [Link] de la siguiente manera:
Puede crear un registro en la tabla EMPLEADO utilizando la segunda sintaxis de la siguiente manera:
INSERT INTO EMPLEADO VALUES (7, 'NEYSA MENDEZ ROJAS', 2,'RELOJ #5',10000);
Todas las instrucciones anteriores crearían los siguientes registros en la tabla EMPLEADO.
12
Ing. En Diseño y Animación Digital
Aquí, columna1, columna2... son los campos de una tabla cuyos valores desea recuperar. Si desea
recuperar todos los campos disponibles en el campo, puede usar la siguiente sintaxis:
Ejemplo:
Considere que la tabla EMPLEADO tiene los siguientes registros:
SELECT *
FROM Empleado;
Si desea obtener solo los campos seleccionados de la tabla EMPLEADO, utilice la siguiente consulta:
13
Ing. En Diseño y Animación Digital
NOMBRECOMPLETO SALARIO
------------------------------------ ------------
PEDRO PEREZ MALDONADO 5000
JUAN PEREZ ACEITUNO 22000
MARIA GALARDO ROJAS 15000
XIMENA ANZE MENDEZ 4500
ROGER MACHACA 6500
RAUL RIOS PEREZ 8900
NEYSA MENDEZ ROJAS 10000
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2, ..., columnaN = valorN
WHERE [condición];
14
Ing. En Diseño y Animación Digital
Si desea modificar todos los valores de las columnas DIRECCIÓN y SALARIO en la tabla EMPRESA,
no necesita utilizar la Cláusula WHERE y la consulta UPDATE serían las siguientes:
15
Ing. En Diseño y Animación Digital
Ahora, la tabla EMPLEADO tendrá los siguientes registros
Si desea ELIMINAR todos los registros de la tabla EMPLEADO, no necesita usar la Cláusula WHERE
con consulta DELETE, que quedaría así:
Ahora, la tabla EMPLEADO no tiene ningún registro porque todos los registros han sido eliminados
por la instrucción DELETE.
16
Ing. En Diseño y Animación Digital
• Sentencias SQLite
Todas las declaraciones de SQLite comienzan con cualquiera de las palabras clave como SELECT,
INSERT, UPDATE, DELETE, ALTER, DROP, etc., y todas las declaraciones terminan con un punto y
coma (;).
• Cláusula AND/OR:
• Cláusula BETWEEN:
• Cláusula COUNT:
• Cláusula DISTINCT
• Cláusula EXISTS
• Cláusula GROUP BY
17
Ing. En Diseño y Animación Digital
• Cláusula HAVING
• Cláusula IN
• Cláusula NOT IN
• Cláusula LIKE
• Cláusula ORDER BY
• Cláusula WHERE
18
Ing. En Diseño y Animación Digital
11. OPERADORES
¿Qué es un operador en SQLite?
Un operador es una palabra reservada o un carácter utilizado principalmente en la Cláusula WHERE
de una declaración SQLite para realizar operaciones, como comparaciones y operaciones
aritméticas.
Los operadores se utilizan para especificar condiciones en una declaración SQLite y para servir
como conjunciones para múltiples condiciones en una declaración.
• Operadores aritméticos
• Operadores de comparación
• Operadores lógicos
• Operadores bit a bit
19
Ing. En Diseño y Animación Digital
Ejemplo
Considere que la tabla Empleado tiene los siguientes registros:
La siguiente declaración SELECT enumera todos los registros cuyo SALARIO es igual a 22000:
La siguiente declaración SELECT enumera todos los registros cuyo SALARIO no es igual a 22000:
20
Ing. En Diseño y Animación Digital
La siguiente declaración SELECT enumera todos los registros cuyo SALARIO no es igual a 22000:
La siguiente declaración SELECT enumera todos los registros cuyo SALARIO sea mayor o igual a
10000:
21
Ing. En Diseño y Animación Digital
El operador NOT invierte el significado del operador lógico con el que se utiliza. Por ejemplo, NOT EXISTS, NOT
NOT
BETWEEN, NOT IN, etc. Este es un operador de negación.
OR El operador OR se utiliza para combinar múltiples condiciones en la Cláusula WHERE de una declaración SQL.
IS NULL El operador NULL se utiliza para comparar un valor con un valor NULL.
IS El operador IS funciona como =
IS NOT El operador IS NOT funciona como !=
|| Agrega dos cadenas diferentes y crea una nueva.
UNIQUE El operador UNIQUE busca unicidad (sin duplicados) en cada fila de una tabla específica.
Ejemplo
Considere que la tabla EMPLEADO tiene los siguientes registros:
A continuación, se muestran ejemplos sencillos que muestran el uso de los operadores lógicos de
SQLite. La siguiente instrucción SELECT lista todos los registros donde NROHIJOS es mayor o igual
a 2 y SALARIO es mayor o igual a 10000:
SELECT * FROM Empleado WHERE NROHIJOS >= 2 AND SALARIO >= 10000;
La siguiente declaración SELECT enumera todos los registros donde NROHIJOS es mayor o igual a
2 o SALARIO es mayor o igual a 8000
22
Ing. En Diseño y Animación Digital
La siguiente declaración SELECT enumera todos los registros donde NROHIJOS no es NULL, lo que
significa todos los registros porque ninguno de los registros tiene NROHIJOS igual a NULL:
La siguiente declaración SELECT enumera todos los registros donde NOMBRECOMPLETO comienza
con 'MA', sin importar lo que venga después de 'MA'.
La siguiente declaración SELECT enumera todos los registros donde NOMBRECOMPLETO comienza
con 'MA', sin importar lo que venga después de 'MA':
La siguiente declaración SELECT enumera todos los registros donde el valor AGE es 25 o 27:
23
Ing. En Diseño y Animación Digital
La siguiente declaración SELECT enumera todos los registros donde el valor NROHIJOS no es ni 2 ni 3:
La siguiente declaración SELECT enumera todos los registros donde el valor de NROHIJOS está ENTRE
(BETWEEN) 2 y 3:
La siguiente declaración SELECT hace uso de una subconsulta SQL donde la subconsulta encuentra
todos los registros con el campo NROHIJOS que tiene SALARIO > 10000 y luego se usa la Cláusula
WHERE junto con el operador EXISTS para enumerar todos los registros donde NROHIJOS de la
consulta externa existe en el resultado devuelto por la subconsulta:
NROHIJO
----
2
3
4
2
1
4
2
La siguiente declaración SELECT hace uso de una subconsulta SQL donde la subconsulta encuentra
todos los registros con el campo NROHIJOS que tiene SALARIO > 10000 y la Cláusula WHERE
posterior se usa junto con el operador > para enumerar todos los registros donde la NROHIJOS de la
consulta externa es mayor que el número de hijos en el resultado devuelto por la subconsulta:
24
Ing. En Diseño y Animación Digital
25
Ing. En Diseño y Animación Digital
12.2. Expresión Numérica
Estas expresiones se utilizan para realizar cualquier operación matemática en cualquier consulta. A
continuación, se muestra la sintaxis:
ADICION
--------
21
Hay varias funciones integradas como AVG(), SUM(), COUNT(), etc., para realizar lo que se conoce
como cálculos de datos agregados contra una tabla o una columna de tabla específica.
REGISTROS
--------
7
SELECT CURRENT_TIMESTAMP;
CURRENT_TIMESTAMP
--------------
2025-10-20 18:43:48
26
Ing. En Diseño y Animación Digital
13. CLÁUSULA WHERE
La Cláusula WHERE de SQLite se utiliza para especificar una condición al obtener datos de una o
varias tablas.
Si se cumple la condición dada (es decir, verdadero), se devuelve un valor específico de la tabla. Se
usaría la Cláusula WHERE para filtrar los registros y obtener solo los necesarios.
La Cláusula WHERE no solo se utiliza en la declaración SELECT, sino que también se utiliza en las
declaraciones UPDATE, DELETE, etc.
Sintaxis:
La sintaxis básica de la declaración SELECT de SQLite con Cláusula WHERE es la siguiente:
Ejemplo
Puede especificar una condición utilizando operadores de comparación o lógicos como >, <, =, LIKE,
NOT, etc. Considere la tabla EMPLEADO:
A continuación, se muestran ejemplos sencillos que muestran el uso de los operadores lógicos de
SQLite. La siguiente instrucción SELECT lista todos los registros donde NROHIJOS es mayor o igual a
25 y salario es mayor o igual a 15000:
SELECT * FROM EMPLEADO WHERE NROHIJOS >= 2 AND SALARIO >= 15000;
La siguiente declaración SELECT enumera todos los registros donde NROHIJOS es mayor o igual a 2 O
SALARIO es mayor o igual a 15000:
27
Ing. En Diseño y Animación Digital
La siguiente declaración SELECT enumera todos los registros donde NROHIJOS no es NULL, lo que
significa todos los registros porque ninguno de los registros tiene NROHIJOS igual a NULL:
La siguiente declaración SELECT enumera todos los registros donde NOMBRECOMPLETO comienza
con 'MA', sin importar lo que venga después de 'MA'.
La siguiente declaración SELECT enumera todos los registros donde NOMBRECOMPLETO comienza
con 'MA', sin importar lo que venga después de 'MA':
La siguiente declaración SELECT enumera todos los registros donde el valor NROHIJOS es 2 o 3:
28
Ing. En Diseño y Animación Digital
La siguiente declaración SELECT enumera todos los registros donde el valor NROHIJOS no es ni 2 ni
3:
La siguiente declaración SELECT enumera todos los registros donde el valor de NROHIJOS está
ENTRE 2 Y 3:
La siguiente declaración SELECT hace uso de una subconsulta SQL donde la subconsulta encuentra
todos los registros con el campo NROHIJOS que tiene SALARIO > 65000 y luego se usa la Cláusula
WHERE junto con el operador EXISTS para enumerar todos los registros donde NROHIJOS de la
consulta externa existe en el resultado devuelto por la subconsulta:
SELECT NROHIJOS
FROM EMPLEADO
WHERE EXISTS (SELECT NROHIJOS FROM EMPLEADO WHERE SALARIO > 15000);
NROHIJOS
-----------
2
3
4
2
1
4
2
29
Ing. En Diseño y Animación Digital
La siguiente declaración SELECT hace uso de una subconsulta SQL donde la subconsulta encuentra
todos los registros con el campo NROHIJOS que tiene SALARIO> 15000 y la Cláusula WHERE
posterior se usa junto con el operador > para enumerar todos los registros donde la NROHIJOS de la
consulta externa es mayor que la edad en el resultado devuelto por la subconsulta:
Se pueden combinar N condiciones mediante el operador AND. Para que la sentencia SQLite realice
una acción, ya sea una transacción o una consulta, todas las condiciones separadas por AND deben
ser verdaderas.
Ejemplo:
Considere la tabla Empleado para el ejemplo:
La siguiente declaración SELECT enumera todos los registros donde NROHIJOS es mayor o igual a 2
AND SALARIO es mayor o igual a 15000.
SELECT * FROM EMPLEADO WHERE NROHIJOS >= 2 AND SALARIO >= 15000;
30
Ing. En Diseño y Animación Digital
Se pueden combinar N condiciones mediante el operador OR. Para que la sentencia SQLite realice
una acción, ya sea una transacción o una consulta, solo UNA de las condiciones separadas por el
operador OR debe ser VERDADERA.
Ejemplo:
Considere la tabla EMPLEADO para el ejemplo:
La siguiente declaración SELECT enumera todos los registros donde NROHIJOS es mayor o igual a 2
O SALARIO es mayor o igual a 15000
31
Ing. En Diseño y Animación Digital
15. CLÁUSULA LIKE
El operador LIKE de SQLite se utiliza para comparar valores de texto con un patrón mediante
comodines. Si la expresión de búsqueda coincide con la expresión de patrón, el operador LIKE
devolverá verdadero, que es 1. Hay dos comodines que se utilizan junto con el operador LIKE:
• El signo de porcentaje (%)
• El guión bajo (_)
El signo de porcentaje representa cero, uno o varios números o caracteres. El guion bajo representa
un solo número o carácter. Estos símbolos pueden combinarse.
Sintaxis:
La sintaxis básica de % y _ es como sigue:
Puede combinar N condiciones mediante los operadores AND u OR. Aquí, XXXX puede ser cualquier
valor numérico o de cadena.
Ejemplo:
A continuación, se muestran varios ejemplos que muestran la parte WHERE con diferentes
Cláusulas LIKE con operadores '%' y '_':
Declaración Descripción
WHERE SALARY LIKE '200%' Encuentra cualquier valor que comience con 200.
WHERE SALARY LIKE '%200%' Encuentra cualquier valor que tenga 200 en cualquier posición.
WHERE SALARY LIKE '_00%' Encuentra cualquier valor que tenga 00 en la segunda y tercera posición.
WHERE SALARY LIKE '2_%_%' Encuentra cualquier valor que comience con 2 y tenga al menos 3 caracteres de longitud.
WHERE SALARY LIKE '%2' Encuentra cualquier valor que termine en 2.
WHERE SALARY LIKE '_2%3' Encuentra cualquier valor que tenga un 2 en la segunda posición y termine con un 3.
WHERE SALARY LIKE '2___3' Encuentra cualquier valor en un número de cinco dígitos que comience con 2 y termine con 3
32
Ing. En Diseño y Animación Digital
Tomemos un ejemplo real, consideremos que la tabla EMPLEADO tiene los siguientes registros:
A continuación, se muestra un ejemplo que mostrará todos los registros de la tabla EMPLEADO
donde NOMBRECOMPLETO comienza con ‘R%’:
A continuación, se muestra un ejemplo que mostrará todos los registros de la tabla EMPLEADO
donde DIRECCIÓN tendrá un guion (-) dentro del texto
33
Ing. En Diseño y Animación Digital
Sintaxis:
La sintaxis básica de * y ? es la siguiente:
Puedes combinar N condiciones mediante los operadores AND u OR. Aquí, XXXX puede ser cualquier
valor numérico o de cadena.
Ejemplo:
A continuación, se muestran varios ejemplos que muestran la parte WHERE que tiene una Cláusula
LIKE diferente con '*' y operadores '?':
Declaración Descripción
WHERE SALARY GLOB '200*' Encuentra cualquier valor que comience con 200.
WHERE SALARY GLOB '*200*' Encuentra cualquier valor que tenga 200 en cualquier posición.
WHERE SALARY GLOB '?00*' Encuentra cualquier valor que tenga 00 en la segunda y tercera posición.
WHERE SALARY GLOB '2??' Encuentra cualquier valor que comience con 2 y tenga al menos 3 caracteres de longitud.
WHERE SALARY GLOB '*2' Encuentra cualquier valor que termine en 2.
WHERE SALARY GLOB '?2*3' Encuentra cualquier valor que tenga un 2 en la segunda posición y termine con un 3.
WHERE SALARY GLOB '2???3' Encuentra cualquier valor en un número de cinco dígitos que comience con 2 y termine con 3
Tomemos un ejemplo real, consideremos que la tabla EMPLEADO tiene los siguientes registros:
34
Ing. En Diseño y Animación Digital
A continuación, se muestra un ejemplo que mostrará todos los registros de la tabla EMPLEADO
donde NOMBRECOMPLETO comienza con R:
A continuación, se muestra un ejemplo que mostrará todos los registros de la tabla EMPLEADO
donde DIRECCIÓN tendrá un guion (-) dentro del texto:
A continuación, se muestra la sintaxis de la Cláusula LIMIT cuando se utiliza junto con la Cláusula
OFFSET:
El motor SQLite devolverá filas comenzando desde la siguiente fila hasta el DESPLAZAMIENTO
indicado como se muestra a continuación en el último ejemplo.
35
Ing. En Diseño y Animación Digital
Ejemplo:
Considere que la tabla EMPLEADO tiene los siguientes registros
A continuación, se muestra un ejemplo que limita la fila de la tabla según la cantidad de filas que
desea obtener de la tabla:
36
Ing. En Diseño y Animación Digital
18. CLÁUSULA ORDER BY
La Cláusula ORDER BY de SQLite se utiliza para ordenar los datos en orden ascendente o
descendente, según uno o más columnas.
Sintaxis:
La sintaxis básica de la Cláusula ORDER BY es la siguiente:
SELECT lista_columnas
FROM nombre_tabla
[WHERE condición]
[ORDER BY columna1, columna2, … columnaN] [ASC | DESC];
Puede usar más de una columna en la Cláusula ORDER BY. Asegúrese de que la columna que use
para ordenar esté disponible en la lista de columnas.
Ejemplo:
Considere que la tabla EMPLEADO tiene los siguientes registros:
Como resultado:
37
Ing. En Diseño y Animación Digital
A continuación, se muestra un ejemplo que ordenaría el resultado en orden descendente por
NOMBRECOMPLETO y SALARIO:
Como resultado:
Como resultado:
38
Ing. En Diseño y Animación Digital
SELECT lista_columnas
FROM nombre_tabla
WHERE [condición]
GROUP BY columna1, columna2....columnaN
ORDER BY columna1, columna2....columnaN
Puede usar más de una columna en la Cláusula GROUP BY. Asegúrese de que la columna que use
para agrupar esté disponible en la lista de columnas.
Ejemplo:
Considere que la tabla EMPLEADO tiene los siguientes registros:
Si desea saber el monto total del salario de cada cliente, entonces la consulta GROUP BY sería la
siguiente:
Como resultado:
NOMBRECOMPLETO SUM(SALARIO)
----------------------- --------
JUAN PEREZ ACEITUNO 22000
MARIA GALARDO ROJAS 15000
NEYSA MENDEZ ROJAS 10000
PEDRO PEREZ MALDONADO 5000
RAUL RIOS PEREZ 8900
ROGER MACHACA 6500
XIMENA ANZE MENDEZ 4500
Ahora, creemos DOS registros más en la tabla EMPELADO usando las siguientes instrucciones
INSERT:
INSERT INTO EMPLEADO VALUES (8, ' RAUL RIOS PEREZ ', 1, ' LOA # 200', 25000.);
INSERT INTO EMPLEADO VALUES (9, 'JUAN PEREZ ACEITUNO', 1, 'CALVO # 300', 19000);
39
Ing. En Diseño y Animación Digital
Ahora, nuestra tabla tiene los siguientes registros con nombres duplicados:
Nuevamente, usemos la misma declaración para agrupar todos los registros usando la columna
NOMBRE de la siguiente manera:
Como resultado:
NOMBRECOMPLETO SUM(SALARIO)
----------------------- --------
JUAN PEREZ ACEITUNO 41000
MARIA GALARDO ROJAS 15000
NEYSA MENDEZ ROJAS 10000
PEDRO PEREZ MALDONADO 5000
RAUL RIOS PEREZ 33900
ROGER MACHACA 6500
XIMENA ANZE MENDEZ 4500
40
Ing. En Diseño y Animación Digital
Como resultado:
NOMBRECOMPLETO SUM(SALARIO)
----------------------- --------
XIMENA ANZE MENDEZ 4500
ROGER MACHACA 6500
RAUL RIOS PEREZ 33900
PEDRO PEREZ MALDONADO 5000
NEYSA MENDEZ ROJAS 10000
MARIA GALARDO ROJAS 15000
JUAN PEREZ ACEITUNO 41000
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 utiliza. A continuación, se muestra la sintaxis de la instrucción SELECT,
incluyendo la Cláusula HAVING:
41
Ing. En Diseño y Animación Digital
Ejemplo:
Considere que la tabla EMPLEADO tiene los siguientes registros:
A continuación, se muestra un ejemplo que mostrará un registro cuyo número de nombres es menor
a 2:
SELECT *
FROM EMPLEADO
GROUP BY nombrecompleto
HAVING count(nombrecompleto) < 2;
Como resultado:
A continuación, se muestra un ejemplo que mostrará un registro cuyo número de nombres es mayor
que 2:
SELECT *
FROM EMPLEADO
GROUP BY nombrecompleto
HAVING count(nombrecompleto) > 1;
Como resultado:
42
Ing. En Diseño y Animación Digital
21. CLÁUSULA DISTINCT
La palabra clave DISTINCT de SQLite se utiliza junto con la declaración SELECT para eliminar todos
los registros duplicados y obtener solo registros únicos.
Puede darse el caso de que haya varios registros duplicados en una tabla. Al obtener estos registros,
es más conveniente obtener solo los únicos en lugar de los duplicados.
Sintaxis:
La sintaxis básica de la palabra clave DISTINCT para eliminar registros duplicados es la siguiente:
Ejemplo:
Considere que la tabla EMPLEADO tiene los siguientes registros:
Primero, veamos cómo la siguiente consulta SELECT devuelve registros de salario duplicados:
NOMBRECOMPLETO
------------------------------
PEDRO PEREZ MALDONADO
JUAN PEREZ ACEITUNO
MARIA GALARDO ROJAS
XIMENA ANZE MENDEZ
ROGER MACHACA
RAUL RIOS PEREZ
NEYSA MENDEZ ROJAS
RAUL RIOS PEREZ
JUAN PEREZ ACEITUNO
43
Ing. En Diseño y Animación Digital
Ahora, usemos la palabra clave DISTINCT con la consulta SELECT anterior y veamos el resultado:
NOMBRECOMPLETO
------------------------------
PEDRO PEREZ MALDONADO
JUAN PEREZ ACEITUNO
MARIA GALARDO ROJAS
XIMENA ANZE MENDEZ
ROGER MACHACA
RAUL RIOS PEREZ
NEYSA MENDEZ ROJAS
44
Ing. En Diseño y Animación Digital
Aquí está la lista de declaraciones INSERT para completar la tabla DEPARTAMENTO:
ID NOMBRE IDEMP
---- ----------------------- --------
1 DTIC 1
2 INGENIERIA 2
3 FINANZAS 7
Basándonos en las tablas anteriores, podemos escribir una unión cruzada de la siguiente manera:
45
Ing. En Diseño y Animación Digital
22.2. La unión interna (INNER JOIN)
Una unión interna crea una nueva tabla de resultados combinando los valores de las columnas de
dos tablas (tabla1 y tabla2) según el predicado de unión. La consulta compara cada fila de la tabla1
con cada fila de la tabla2 para encontrar todos los pares de filas que cumplen el predicado de unión.
Cuando se cumple el predicado de unión, los valores de las columnas de cada par coincidente de
filas A y B se combinan en una fila de resultados.
Una unión interna (INNER JOIN) es el tipo de unión más común y el predeterminado. Puede usar la
palabra clave INNER opcionalmente.
A continuación, se muestra la sintaxis de INNER JOIN:
Para evitar redundancia y mantener la redacción más breve, las condiciones INNER JOIN se pueden
declarar con una Expresión USING. Esta expresión especifica una lista de una o más columnas:
SELECT ... FROM tabla1 JOIN tabla2 USING (columna1, ...) ...
Una NATURAL JOIN es similar a una JOIN...USING, solo que prueba automáticamente la igualdad
entre los valores de cada columna que existe en ambas tablas:
Basándonos en las tablas anteriores, podemos escribir un INNER JOIN de la siguiente manera:
CI NombreCompleto NOMBRE
---- ---------------------------------- --------
1 PEDRO PEREZ MALDONADO DTIC
2 JUAN PEREZ ACEITUNO INGENIERIA
3 MARIA GALARDO ROJAS FINANZAS
46
Ing. En Diseño y Animación Digital
Una vez calculada la unión principal, una unión externa toma las filas no unidas de una o ambas
tablas, las rellena con valores NULL y las añade a la tabla resultante.
A continuación, se muestra la sintaxis de LEFT OUTER JOIN:
SELECT ... FROM tabla1 LEFT OUTER JOIN tabla2 ON expresión_condicional ...
Para evitar redundancias y abreviar la redacción, las condiciones de OUTER JOIN pueden declararse
con una expresión USING. Esta expresión especifica una lista de una o más columnas:
SELECT ... FROM tabla1 LEFT OUTER JOIN tabla2 USING (columna1, ...) ...
Basándonos en las tablas anteriores, podemos escribir una unión interna de la siguiente manera:
CI NombreCompleto NOMBRE
---- ----------------------------------- --------
1 PEDRO PEREZ MALDONADO DTIC
2 JUAN PEREZ ACEITUNO INGENIERIA
7 MARIA GALARDO ROJAS FINANZAS
XIMENA ANZE MENDEZ
ROGER MACHACA
RAUL RIOS PEREZ
NEYSA MENDEZ ROJAS
47
Ing. En Diseño y Animación Digital
Aquí la condición dada podría ser cualquier expresión dada según su requisito.
Ejemplo:
A continuación, se utilizará las tablas EMPLEADO y DEPARTAMENTO:
Ahora, unamos estas dos tablas usando la declaración SELECT junto con la Cláusula UNION de la
siguiente manera:
CI NombreCompleto NOMBRE
---- ------------------------------ --------
1 PEDRO PEREZ MALDONADO DTIC
2 JUAN PEREZ ACEITUNO INGENIERIA
7 MARIA GALARDO ROJAS FINANZAS
Aquí la condición dada podría ser cualquier expresión dada según su requisito.
48
Ing. En Diseño y Animación Digital
Ejemplo:
Ahora, unamos las dos tablas mencionadas anteriormente en nuestra declaración SELECT de la
siguiente manera:
CI NombreCompleto NOMBRE
---- ------------------------------------ --------
1 PEDRO PEREZ MALDONADO DTIC
2 JUAN PEREZ ACEITUNO INGENIERIA
7 MARIA GALARDO ROJAS FINANZAS
1 PEDRO PEREZ MALDONADO DTIC
2 JUAN PEREZ ACEITUNO INGENIERIA
7 MARIA GALARDO ROJAS FINANZAS
Aquí, NOT NULL significa que la columna siempre debe aceptar un valor explícito del tipo de dato
indicado. Hay dos columnas donde no se usó NOT NULL, lo que significa que podrían ser NULL.
Un campo con un valor NULL es aquel que se dejó en blanco durante la creación del registro.
49
Ing. En Diseño y Animación Digital
Ejemplo:
Sin embargo, el valor NULL puede causar problemas al seleccionar datos, ya que, al comparar un
valor desconocido con cualquier otro, el resultado siempre es desconocido y no se incluye en los
resultados finales. Considere la siguiente tabla, EMPLEADO, con los siguientes registros:
Utilicemos la declaración UPDATE para establecer algunos valores que aceptan valores NULL como
NULL de la siguiente manera:
A continuación, veamos el uso del operador IS NOT NULL para enumerar todos los registros donde
SALARIO no es NULL:
50
Ing. En Diseño y Animación Digital
A continuación, se muestra el uso del operador IS NULL, que enumerará todos los registros donde
SALARIO es NULL:
Ejemplo:
Considere las tablas EMPLEADO y DEPARTAMENTO
A continuación, se muestra el uso de TABLE ALIAS donde usamos E y D como alias para EMPLEADO
y DEPARTAMENTO respectivamente:
51
Ing. En Diseño y Animación Digital
ID NombresCompleto NOMBRE
---- ------------------------------ -----------
1 PEDRO PEREZ MALDONADO DTIC
2 JUAN PEREZ ACEITUNO INGENIERIA
3 MARIA GALARDO ROJAS FINANZAS
Veamos un ejemplo del uso de COLUMN ALIAS donde IDENTIFICADOR es un alias de la columna ID
y NombreDepartamento es un alias de la columna de nombre:
52