SQL Basico
SQL Basico
SQL Basico
1) Introducción
3) Tipos de Datos
4) Comandos y Cláusulas
8) Consultas de Selección
9) Consultas de Acción
El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se
combinan en las instrucciones para crear, actualizar y manipular las bases de datos.
SQL proporciona métodos para definir la base datos, para manipular la información y para gestionar los permisos de
acceso a dicha información.
Para que un gestor de bases de datos sea considerado como relacional, debe soportar SQL, independientemente de
las características particulares que dicho gestor pueda aportar.
Existen muchísimas aplicaciones para la administración y gestión de base de datos, muchas de carácter
empresarial (licenciadas) y algunas libres.
Para nuestro curso utilizaremos la aplicación Sqlite Studio, la cual es de licencia publica y es muy fácil de
usar.
SQLite es una biblioteca en proceso que implementa un motor de base de datos SQL transaccional
independiente, sin servidor y de configuración cero. El código para SQLite es de dominio público y por
lo tanto, es gratuito para cualquier uso, comercial o privado.
SQLite es la base de datos más implementada del mundo con más aplicaciones de las que podemos contar,
incluidos varios proyectos de alto perfil.
El GUI o Interface Gráfica de Usuario de SQLite se llama SQLite Studio, la misma nos permite
administrar bases de datos de forma gráfica y fácil.
Una vez descomprimido abrimos el archivo SQLiteStudio.exe, el cual abrirá el GUI de SQLite Studio, ya
que como mencionamos esta aplicación es portable.
Al abrir la aplicación nos encontramos con la interface de la misma, la cual esta compuesta por los
siguientes elementos:
La barra de titulo nos muestra el titulo de la aplicación.
La Barra de menú nos muestra los diferentes menús y submenús disponibles
La Barra de Herramientas nos muestra las herramientas con las que disponemos, desde abrir una base
de datos hasta ejecutar una consulta (query).
La Barra de Data Base Toolsbar, nos permite conectarnos, desconectarnos, agregar, editar y
refrescar una base de datos.
La Barra de Structure ToolsBar, nos permite crear, editar o eliminar tablas, cadenas, índices y
vistas.
La Barra de Tools, nos permite abrir el editor de SQL, Abrir el historial de las Bases de datos
utilizadas, abrir las funciones del editor de SQL, abrir el editor de colaciones, importar o exportar
una base de datos, una tabla o una consulta (query) y abrir el menú de configuración.
La Barra View Toolsbar, nos permite elegir la forma de vista de nuestras ventanas dentro del GUI.
Adicional a estas barras de herramientas, contamos también con la barra de Herramientas de Consulta, con
la cual podemos de izquierda a derecha:
El espacio de Árbol de base de datos nos muestra todas las bases de datos con las cuales estamos
trabajando y si están conectadas o desconectadas, y a su vez podemos observar el árbol completo que
conforma cada una de ellas (tablas, indices, etc).
En la Interfaz de Múltiples Documentos podemos abrir el editor de SQL para crear, abrir o ejecutar una
consulta (query), también tenemos la sección de formato de vista, en el cual podemos escoger cómo ver los
datos arrojados por la consulta; como cuadricula (Grid) o como formulario (Form).
Y por ultimo tenemos el Área de Status y Mensajes, en la cual se nos muestran mensajes sobre posibles
errores al ejecutar las consultas y el status de conexión de las base de datos.
Tipos de Datos
En esta Lección veremos los tipos de datos existentes en SQL.
SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las
tablas, los tipos de datos pueden ser numéricos (con o sin decimales), alfanuméricos, de fecha o
booleanos (sí o no).
Según el gestor de base de datos que estemos utilizando, los tipos de datos varían, pero se reducen
básicamente a los expuestos anteriormente, aunque en la actualidad casi todos los gestores de bases de datos
soportan un nuevo tipo, el BLOB (Binary Large Object), que es un tipo de datos especial destinado a
almacenar archivos, imágenes, entre otros.
El tamaño del campo varía en función a cada base de datos, siendo 255 el valor por default, este viene
delimitado por el tamaño de las páginas de datos.
Para este tipo de datos se aplica lógica booleana, ceo (0) es falso y no cero verdadero.
DDL (Data Definition Language) que permiten crear y definir nuevas bases de datos, campos e índices.
Cláusulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o
manipular.
Operadores y Funciones de Agregado
Operadores
Los operadores se pueden definir como combinaciones de caracteres que se utilizan tanto para realizar
asignaciones como comparaciones entre datos.
Operadores Lógicos
Operadores de Comparación
Dada una sentencia SQL de selección que incluye todas las posibles cláusulas, el orden de ejecución de las
mismas es el siguiente:
1. Cláusula SELECT
2. Cláusula FROM
3. Cláusula WHERE
4. Cláusula GROUP BY
5. Cláusula HAVING
6. Cláusula ORDER BY
Funciones de Agregado
Las funciones agregadas proporcionan a SQL utilidades de cálculo sobre los datos de las tablas. Y se usan
dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un
grupo de registros.
Creación de una Base de Datos
En esa lección se les mostrará cómo crear una base de datos, utilizando la interfaz gráfica de SQLite.
Para crear una base de datos solo debemos abrir el SQLite Studio, y hacer clic en el botón de Add a database
o (Control + O):
En el cual le haremos clic al botón de Create new database file, en el cual nos aparecerá una ventana donde
debemos seleccionar la carpeta donde será guardada nuestra base de datos, el nombre de la misma, en
nuestro caso, la llamaremos Empleados y haremos clic en Guardar y luego Ok en el cuadro de dialogo
anterior.
Guardar Base de Datos
Al darle a Ok, se creará la base de datos con el nombre Empleados:
Una vez creada, nos dispondremos a crear la tabla llamada Trabajadores, a la cual le crearemos los campos
necesarios para trabajar con las consultas.
Para crear la tabla nos posamos en la base de datos Empleados, y hacemos doble clic para desplegar toda
la estructura de la misma, o hacemos clic en la flecha que aparece del lado izquierdo de la base de datos, nos
posamos en Tables (tablas), y hacemos clic derecho>Create a Table (crear Tabla), del lado derecho en el
MID, nos aparecerán varias pestañas, en la de estructura (Structure), en la sección Table name (Nombre
de la Tabla) colocaremos Trabajadores.
Crear Tabla
Nombrar Tabla
Ahora le agregamos las columnas que compondrán la tabla (para nuestro ejemplo solo agregaremos una y más
adelante les mostraré como agregar las demás), para ello hacemos clic en el botón Add columns (Ins), nos abrirá un
cuadro de dialogo donde colocaremos en Column Name: ID, Data Type: NUMERIC y abajo seleccionaremos Primary
Key, para indicarle que este será el campo de clave primaria de la misma:
Insertar Columnas
Le damos a Ok y hacemos clic en el botón verde de Commit structure Changes, para crear y guardar la
tabla:
Tabla Creada
Una vez creada la tabla le agregaremos los otros campos que necesitamos para luego cargar la data desde
un archivo externo.
Para agregar las otras columnas nos posamos sobre la tabla Trabajadores y hacemos clic en el botón Add
columns (Ins), el nombre del campo es Type_ID, el tipo de dato es Texto (text), y marcamos la restricción
(constraints), Not NULL para indicar que este campo no puede ser nulo, y le damos a OK.
Campo Type_ID
Ahora, a manera de ejercicio crearemos los otros campos que compondrán la tabla con las siguientes
especificaciones:
Columnas a Crear
Columnas a Crear
Y una vez estemos seguros de todas las columnas a crear le damos al botón Commit Structure Changes,
para guardar los cambios, y luego le damos a Ok.
Columnas
Creadas
Listo, ya creamos nuestra base de datos con las columnas necesarias, en la próxima lección importaremos la
data desde un archivo.
Importar y Exportar Data
En esta lección aprenderemos cómo importar data desde un archivo externo y exportar data desde la base de
datos a un archivo.
Una vez creada nuestra base de datos con sus tabla(s) estructurada(s), podemos llenar las misma(s) de
manera periódica (agregar uno a uno los datos) o de manera masiva, que puede ser copiar y pegar o
importarla desde un archivo externo, como cuando tenemos información guardada en un archivo por
ejemplo un excel, xlsx, para cada uno de los casos el procedimiento es el siguiente:
De manera Periódica y Masiva (copiar y Pegar): este es el caso donde se irá agregando información a
la(s) tabla(s) constantemente, y la información puede ser agregada manualmente de acuerdo a la cantidad de
registros a ingresar.
Ejemplo: tenemos la tabla Trabajadores, la cual solo contendrá la información del personal activo de una
compañía, es decir, que a la misma se le van agregando registros del personal de nuevo ingreso o se le
van removiendo los registros del personal egresado, esta tabla siempre estará en constante actualización de
forma manual. Para nuestro caso la tabla ya contiene información y queremos agregarle dos nuevos
ingresos, de los cuales tenemos los datos en un archivo de excel y se debe ingresar a la tabla, el
procedimiento seria el siguiente:
Nos posamos en la base de datos Empleados > Tabla Trabajadores > Pestaña Data.
Agregamos el numero de filas a agregar, (dos en nuestro caso) haciendo clic en el botón verde de Insert Row (ins) el
numero de veces conforme al número de registros a ingresar:
Filas Insertadas
Ahora copiamos la data a ingresar sin los títulos de la columnas.
Data a Ingresar
NOTA: la información a ingresar debe tener el mismo formato de la tabla, en cuanto a estructura (orden de
campos) y el formato de los mismos, con el fin de mantener la estructura de la tabla y no ingresar datos
incorrectos donde no deben estar.
Ahora nos posamos sobre la primera celda del campo ID de las columnas agregadas y pegamos la
información:
Información Agregada
Como podemos observar, la información agregada aparece resaltada en azul, esto nos indica que son las filas
nuevas a agregar y que aún no han sido guardadas.
NOTA: antes de guardar cualquier cambio es conveniente fijarse en que la información cargada tenga el
formato correcto y resten en las columnas que les corresponden.
Una vez chequeado el formato de la información hacemos clic en el botón de check verde Commit:
Datos Almacenados
Para eliminar información de la tabla, solo debemos sombrear las filas y le hacemos clic al botón Rojo
Delete Select Row:
Borrar Información
Una vez borrada la información nos quedará de esta manera, indicándonos que no hemos guardado los
cambios:
Información Borrada
Importar Información desde Archivo Externo: para este procedimiento debemos descargar el siguiente
archivo .csv con la información que se cargará en la tabla:
https://mega.nz/#!7dtBzazI!8PU26aM86_q2mnKkt9IEK5A5aZvHnH-ikhg8QbvzoUc
Esta información sera la utilizada en las siguientes lecciones para realizar los ejercicios de consultas, y
también servirá para hacer a manera de ejercicio la importación de data.
NOTA: la información a importar en este ejercicio está bajo el formato separado por comas (.csv), la
información debe tener el mismo formato que la tabla a actualizar, con el fin de garantizar la correcta
importación de los datos.
Una vez descargado el archivo procedemos a importarlo para actualizar nuestra tabla Trabajadores, para
ello debemos posarnos sobre la tabla Trabajadores, y hacer clic en Import:
Importar
Nos aparecerá un cuadro de dialogo que nos muestra la base de datos (Empleados), y seleccionamos la
tabla a actualizar, en nuestro caso (Trabajadores) y hacemos clic en Next:
Tabla a Actualizar
Al darle a Next, nos aparecerá otro cuadro de dialogo, con lo siguiente:
Detalles de Importación
Una vez seleccionados todos los parámetros necesarios para realizar la importación, hacemos clic en Finish
Al Finalizar de importar nos aparecerá la data cargada en la tabla y el mensaje en el panel de mensajes
indicando la carga completa:
Importación Finalizada
En el Panel de Status y Mensajes observamos el mensaje indicándonos que no se pudo importar la fila 633,
y que fue ignorada por no cumplir con la condición NOT NULL del Campo Type_ID.
Si revisamos nuestro archivo de data de origen, el mismo solo tiene 632 filas con información, es decir, que
la data fue cargada satisfactoriamente, y este error es dado por la aplicación por tomar una celda sin datos.
Y con esto ya tenemos cargada nuestra Tabla Trabajadores de la Base de datos Empleados.
Es importante la correcta realización de este ejercicio, ya que en las lecciones siguientes utilizaremos esta
tabla para nuestros ejercicios de consulta.
Consultas de Selección
Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases
de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un
objeto recordset. Este conjunto de registros puede ser modificable.
Para abrir el editor de SQL, hacemos clic en el botón de Open SQL Editor (Alt + E), y en la pestaña
Query, procederemos a armar nuestras consultas:
Editor de SQL
Consultas Básicas
SELECT
FROM
Tabla
Donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por
ejemplo:
Select
From
Trabajadores
Esta sentencia devuelve un conjunto de resultados con el campo nombre, apellido y teléfono, de la tabla
Trabajadores:
Resultado de la Consulta
Cabe acotar que los demás datos aparecerán a medida que bajemos la barra de desplazamiento.
Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante
la cláusula ORDER BY Campo, donde Lista de campos representa los campos a ordenar.
Ejemplo:
Order By
Y nos trae el siguiente resultado:
Resultado Ordenado
Podemos utilizar la Cláusula Order by combinada con cualquiera de los campos de la tabla.
Se pueden ordenar los registros por más de un campo, como por ejemplo:
Incluso se puede especificar el orden de los registros: ascendente mediante la cláusula (ASC - se toma este
valor por defecto) o descendente (DESC).
Uso de Indices de las tablas
Si deseamos que la sentencia SQL utilice un índice para mostrar los resultados se puede utilizar la palabra
reservada INDEX de la siguiente forma:
SELECT *
Normalmente los motores de las bases de datos deciden qué índice se debe utilizar para la consulta, para ello
utilizan criterios de rendimiento y sobre todo los campos de búsqueda especificados en la cláusula WHERE.
Si se desea forzar a no utilizar ningún índice utilizaremos la siguiente sintaxis:
SELECT *
El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar, los posibles predicados
son:
Predicados
ALL
Si no se incluye ninguno de los predicados se asume ALL. El motor de base de datos selecciona todos los
registros que cumplen las condiciones de la instrucción SQL y devuelve todos y cada uno de sus campos. No
es conveniente abusar de este predicado, ya que obligamos al motor de la base de datos a analizar la
estructura de la tabla para averiguar los campos que contiene, es mucho más rápido indicar el listado de
campos deseados.
SELECT *
FROM
Predicado ALL
TOP (LIMIT)
Devuelve un cierto número de registros que entran al principio o al final de un rango especificado por una
cláusula ORDER BY.
En SQLite el predicado es sustituido por LIMIT. Supongamos que queremos recuperar los nombres,
apellidos y números de teléfono de los 10 primeros trabajadores:
SELECT TOP 10
Nombre, Apellido
FROM
Trabajadores
ORDER BY
Numtlf DESC
SELECT
FROM
Trabajadores
Order by
numtlf desc
LIMIT 10
Top (LIMIT)
SELECT DISTINCT
Apellido
FROM
Trabajadores
Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la
cláusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es
actualizable y no refleja los cambios subsiguientes realizados por otros usuarios.
ALIAS
En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un
conjunto devuelto, otras veces por simple capricho o porque estamos recuperando datos de diferentes tablas
y resultan tener un campo con igual nombre.
Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que
deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la
columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto), que se llame
Empleado. En este caso procederíamos de la siguiente forma:
SELECT
Nombre AS Empleado
FROM
Trabajadores
Alias AS
Otra forma mas fácil de hacerlo es simplemente escribir el alias luego del campo a consultar, y también
podemos usarlos de manera combinada:
Alias
AS no es una palabra reservada de ANSI, existen diferentes sistemas de asignar los alias en función del
motor de bases de datos. En ORACLE para asignar un alias a un campo hay que hacerlo de la siguiente
forma:
SELECT
Apellido AS "Empleado"
FROM
Trabajadores
Consultas de Acción
Las consultas de acción son aquellas que no devuelven ningún registro, son las encargadas de acciones como
añadir, borrar y modificar registros. Tanto las sentencias de actualización como las de borrado desencadenan
(según el motor de datos) las actualizaciones en cascada, borrados en cascada, restricciones y valores por
defecto definidos para los diferentes campos o tablas afectadas por la consulta.
DELETE
Crea una consulta de eliminación que elimina los registros de una o más de las tablas listadas en la cláusula
FROM que satisfagan la cláusula WHERE. Esta consulta elimina los registros completos, no es posible
eliminar el contenido de algún campo en concreto. Su sintaxis es:
Una vez que se han eliminado los registros utilizando una consulta de borrado, no puede deshacer la
operación.
Si desea saber qué registros se eliminarán, primero examine los resultados de una consulta de selección que
utilice el mismo criterio y después ejecute la consulta de borrado. Mantenga copias de seguridad de sus
datos en todo momento. Si elimina los registros equivocados podrá recuperarlos desde las copias de
seguridad.
DELETE
FROM
Trabajadores
WHERE
Cargo = 'Vendedor'
Para nuestro ejemplo, agregaremos un registro nuevo (inventado), respetando los tipos de datos de la tabla, y
con el cargo de Vendedor:
SELECT *
FROM
Trabajadores
WHERE
Cargo = 'Vendedor'
Datos a Borrar
Ahora una vez corroborados los datos a borrar, procedemos a ejecutar la consulta DELETE:
Delete From Trabajadores
Registros Borrados
Si nos fijamos en la sección de Status, nos aparece un mensaje indicando las Filas Afectadas (borradas), y
para verificar que haya sido borrado con éxito, ejecutamos nuevamente la consulta de búsqueda:
Verificación
INSERT INTO
Agrega un registro en una tabla. Se la conoce como una consulta de datos añadidos. Esta consulta puede ser
de dos tipos: Insertar un único registro o Insertar en una tabla los registros contenidos en otra tabla.
VALUES ('1', 'V', 'AulaFacil.com', 'AulaFacil.com', 'M', '4120000000', '5555', '01/01/01', 'Vendedor',
'AulaFacil.com', 'AulaFacil.com').
Datos Insertados
UPDATE
Crea una consulta de actualización que cambia los valores de los campos de una tabla especificada
basándose en un criterio específico. Su sintaxis es:
WHERE Criterio
UPDATE es especialmente útil cuando se desea cambiar un gran número de registros o cuando éstos se
encuentran en múltiples tablas. Puede cambiar varios campos a la vez.
Antes de realizar un UPDATE, se recomienda hacer una consulta para saber cuantos datos serán
actualizados:
SELECT*
FROM Trabajadores
WHERE Nivel_Academico= 'Bachiller'
Datos a Actualizar
Como vemos, si nos desplazamos al final del resultado de la consulta son 114 registros con el nivel
académico Bachiller.
Otra forma de saber cuántos registros serán modificados es usar COUNT, el cual realiza un conteo de
cuántos registros hay en la tabla bajo el criterio de Nivel Académico Bachiller:
SELECT Count(*)
From Trabajadores
WHERE Nivel_Academico = 'Bachiller'
Cantidad de Registros
Como podemos observar, ambas consultas nos sirven para saber la cantidad de registros que serán
actualizados, la única diferencia es que la primera nos muestra el detalle completo de los registros a
actualizar y la segunda solo la cantidad de registros que serán modificados.
UPDATE Trabajadores
UPDATE no genera ningún resultado. Para saber qué registros se van a cambiar, hay que examinar primero
el resultado de una consulta de selección que utilice el mismo criterio y después ejecutar la consulta de
actualización.
UPDATE Realizado
Si en una consulta de actualización suprimimos la cláusula WHERE, todos los registros de la tabla señalada
serán actualizados.
UPDATE Trabajadores
Esta consulta realizaría la actualización de todos los datos de la columna Nivel_Académico, por TSU, solo
debe realizarse cuando tenemos un dato en común en la misma columna, como por ejemplo cambiar los
datos NULL (Nulos) por algún otro valor.
Criterios de Selección
En el apartado anterior se vio la forma de recuperar los registros de las tablas, las formas empleadas
devolvían todos los registros de la mencionada tabla. A lo largo de este apartado se estudiarán las
posibilidades de filtrar los registros con el fin de recuperar solamente aquellos que cumplan unas
condiciones preestablecidas.
Antes de comenzar el desarrollo de este apartado hay que recalcar dos detalles de vital importancia.
El primero de ellos es que cada vez que se desee establecer una condición referida a un campo de texto la
condición de búsqueda debe ir encerrada entre comillas simples.
Operadores Lógicos
Los operadores lógicos soportados por SQL son: AND, OR, XOR, Eqv, Imp, Is y Not.
Operadores Lógicos
El último operador denominado Is se emplea para comparar dos variables de tipo objeto Is. Este operador
devuelve verdad si los dos objetos son iguales.
SELECT *
FROM Trabajadores
Valores Nulos
En muchas ocasiones es necesario emplear como criterio de selección valores nulos en los campos. Podemos
emplear el operación IS NULL para realizar esta operación. Por ejemplo:
SELECT *
FROM Trabajadores
WHERE ID IS NULL
SELECT *
FROM Trabajadores
Nuestra consulta no nos arrojará nada ya que el campo ID tiene como condición no ser NULL.
Criterios de Selección II
Intervalos de Valores
Para indicar que deseamos recuperar los registros según el intervalo de valores de un campo emplearemos el
operador Between, cuya sintaxis es:
En este caso la consulta devolvería los registros que contengan en "campo" un valor incluido en el intervalo
valor1, valor2 (ambos inclusive). Si anteponemos la condición Not devolverá aquellos valores no incluidos
en el intervalo.
SELECT *
FROM Trabajadores
Esta consulta traerá como resultado aquellos trabajadores que sus números de empleado resten entre los
números 15 y 79:
Resultado Consulta Between
Like
Se utiliza para comparar una expresión de cadena con un modelo en una expresión SQL. Su sintaxis es:
En donde expresión es una cadena modelo o campo contra el que se compara la expresión. Se puede utilizar
el operador Like para encontrar valores en los campos que coincidan con el modelo especificado.
Por modelo se puede especificar un valor completo (Hola), o se puede utilizar una cadena de caracteres
comodín como los reconocidos por el sistema operativo para encontrar un rango de valores (Like 'Ho%').
El operador Like se puede utilizar en una expresión para comparar un valor de un campo con una expresión
de cadena. Por ejemplo, si introduce Like 'C%' en una consulta SQL, la consulta devuelve todos los valores
de campo que comiencen por la letra C. En una consulta con parámetros, puede hacer que el usuario escriba
el modelo que se va a utilizar.
SELECT *
FROM Trabajadores
Like
Como vemos, nuestra consulta nos trajo todos aquellos trabajadores que su Apellido empieza por Me, se
pueden hacer múltiples combinaciones, por ejemplo si colocamos un NOT Like, nos traerá todos aquellos
registros que no comiencen con Me.
SELECT *
FROM Trabajadores
In
Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los de una lista a
buscar, se usa cuando tenemos multíplices valores que consultar. Su sintaxis es:
SELECT *
FROM Trabajadores
Operador IN
La Cláusula WHERE
La cláusula WHERE puede usarse para determinar qué registros de las tablas enumeradas en la cláusula
FROM aparecerán en los resultados de la instrucción SELECT. Después de escribir esta cláusula se deben
especificar las condiciones expuestas en los apartados anteriores. Si no se emplea esta cláusula, la consulta
devolverá todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuación de
FROM.
FROM Trabajadores
Order by ID asc
Cláusula Where
Como Observamos en la imagen, tenemos una consulta donde buscamos el ID, Nombre, Apellido, Sueldo,
Fecho de Ingreso y Departamento, de los trabajadores, donde el Type_ID sea V, que su sueldo sea mayor
a 5000, su fecha de ingreso sea mayor al 01-03-2008, que su nombre empiece por AN, y que no
pertenezca a los departamentos Presidencia y Operaciones, y a su vez sean ordenados de menor a mayor
por el ID.
Por lo que observamos la clausula WHERE nos permite agregar cuantas condiciones queramos, siempre y
cuando no existan ambigüedades.
Recomendaciones Finales
Muchas gracias por haber ampliado tus conocimientos con nuestro curso gratuito de SQL Básico