























Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Base de datos contiene script y clases de estudio
Tipo: Apuntes
1 / 31
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
























El lenguaje de consulta de SQL es declarativo, también llamado no procedural, lo que significa que permite especificar cuáles datos se recuperan sin dar los procedimientos para recuperarlos. SQL se puede usar como un lenguaje interactivo para consultas, incrustado en un lenguaje de programación huésped o como un lenguaje completo en sí con el uso de SQL/PSM (Persistent Stored Modules – módulos de almacenamiento persistentes), una extensión del SQL que incluye estructuras de programación de propósito general para la definición de módulos (procedimientos y funciones) que se almacenan dentro del sistema de bases de datos
Los enunciados DML SQL son: SELECT, UPSET, INSERT Y DELETE.
Símbolo Significado [ ] Los corchetes encierran alternativas opcionales.
{ } Las llaves encierran opciones tales que solo uno de ellas es requerida, es decir, encierran alternativas excluyentes.
| La barra vertical separa alternativas en corchetes y llaves.
… Los puntos suspensivos muestran sintaxis que puede ser repetida.
SQL tiene una sentencia para recuperar información de una base de datos: SELECT. Es un comando poderoso, que realiza el equivalente de SELECT, PROYECT y JOIN del álgebra relacional, así como otras funciones, en un sola sentencia simple.
La forma general de SELECT es
SELECT [DISTINCT] nombre col [AS nombre nuevo][,nombre col...]...
FROM nombre tabla [alias] [, nombre tabla]... [WHERE predicado] [GROUP BY nombre col [, nombre col]... [HAVING predicado]
o
[ORDER BY nombre col [, nombre col]...];
Esquema University: Student(stuId, lastName, firstName, major, créditos)
Faculty(facId, name, departamento, rank)
Class(classNumber, facId, schedule, room)
Enroll(stuId, classumber, grade)
Ejemplo 1. Recuperación simple con condición
Pregunta: Obtener nombres, identificaciones y número de créditos de todos los que tienen especialidad Math.
Solución: La información solicitada aparece en la tabla Student. Se seleccionan las filas de Student que tienen un valor de 'Math' para major. Para dichas filas, sólo se despliegan las columnas lastName, firstName, stuId y credits. Se hace el equivalente al SELECT (al encontrar las filas) y PROJECT (al desplegar sólo ciertas columnas) del álgebra relacional. También se reordenan las columnas. El resultado es una tabla o un multiconjunto.
Consulta SQL: SELECT lastName, firstName, stuId, credits
FROM Student
WHERE major = ‘Math’;
Ejemplo 2. Uso de notación asterisco para “todas las columnas”
Pregunta: Obtener toda la información acerca de los docentes del departamento ‘CSC’.
Solución: Se quiere todo el registro Faculty de cualquier miembro del personal docente cuyo departamento sea 'CSC'. Dado que muchas recuperaciones SQL requieren todas las columnas de una sola tabla, existe una forma corta de expresar "todas las columnas", a saber, con el uso de un asterisco en lugar de los nombres de columna en la línea SELECT.
Consulta SQL:
SELECT *
FROM Faculty
WHERE department = ‘CSC’;
Ejemplo 3. Operación sin condición, uso de "distinto", uso de nombres calificados
Pregunta: Obtener el número de todos los cursos en los que están inscritos los estudiantes.
Solución: Se usa la tabla Enroll en lugar de la tabla Class, porque es posible que exista un registro Class para una clase planeada en la que nadie esté inscrito. A partir de la tabla Enroll podría pedir una lista de todos los valores classNumber, del modo siguiente:
Consulta SQL: SELECT classNumber
FROM Enroll;
Dado que no necesita un predicado, no se usa la línea WHERE. Habrá muchos duplicados en el resultado; es un multiconjunto, no una relación. A diferencia del PROJECT del álgebra relacional, el SELECT de SQL no elimina duplicados cuando se “proyecta” sobre las columnas. Para eliminar los duplicados, se usa la opción DISTINCT en la línea del SELECT.
SELECT DISTINCT classNumber FROM Enroll;
Ejemplo 3. Operación sin condición, uso de "distinto", uso de nombres calificados
En cualquier recuperación, especialmente si existe una posibilidad de confusión debido a que el mismo nombre de columna aparece en dos tablas diferentes, especifique nombretabla.nombrecol. En este ejemplo se pudo haber escrito:
SELECT DISTINCT Enroll.classNumber FROM Enroll;
Aquí, no es necesario usar el nombre calificado, pues la línea FROM dice al sistema que use la tabla Enroll, y los nombres de columnas siempre son únicos dentro de una tabla. Sin embargo, nunca es equivocado usar un nombre calificado, y a veces es necesario hacerlo cuando dos o más tablas aparecen en la línea FROM.
Ejemplo 5. Uso de "ORDER BY" y AS
Pregunta: Obtener nombres e identificaciones de todos los docentes ordenados en orden alfabético por nombre. Solicite las columnas resultantes FacultyName y FacultyNumber.
Solución: La opción ORDER BY (ordenar por) en el SELECT de SQL permite ordenar los registros recuperados en orden ascendente (ASC, por defecto) o descendente (DESC) en cualquier campo o combinación de campos, sin importar si dicho campo aparece en los resultados. Si se ordenan por más de un campo, el que se nombró primero determina orden mayor, el siguiente orden menor, etcétera.
Consulta SQL: SELECT name AS FacultyName, facId AS
FacultyNumber FROM Faculty ORDER BY name;
Los encabezados de columna se cambian a los especificados en la cláusula AS. Se puede renombrar cualquier columna o columnas para desplegarla de esta forma.
Ejemplo 6. Uso de condiciones múltiples
Pregunta: Obtener los nombres de todos los estudiantes quienes tienen especialidad Math que tengan más de 30 créditos.
Solución: De la tabla Student, elija aquellas filas donde la especialidad sea 'Math' y el número de créditos sea mayor que 30. Estas dos conexiones se expresan al conectarlas con 'AND'. Sólo se despliegan lastName y firstName.
Consulta SQL:
SELECT lastName, firstName FROM Student WHERE major = 'Math' AND credits > 30;
El predicado puede ser tan complejo como sea necesario con el uso de los operadores de comparación estándar =, <>, <, <=, >, >= y los operadores lógicos estándar AND, OR y NOT, con paréntesis, si se necesita o desea, para mostrar el orden de evaluación.
Mediante los contrastes de comparación, SQL calcula y compara los valores de dos expresiones SQL para cada fila de datos utilizando los operadores de comparación de SQL (=, <>, <, <=, >, >=).
Ejemplo: Obtener los nombres de los vendedores contratados antes de 1988 :
SELECT nombre
FROM repventas
WHERE contrato < ‘01-ENE-88’;
Ejemplos siguientes: Obtener las oficinas cuyas ventas están por debajo del 80 % del objetivo y las oficinas no dirigidas por el empleado número 108 :
SELECT *
FROM oficinas
WHERE ventas < (0.8*objetivo);
SELECT *
FROM oficinas WHERE dir <> 108 ;
2. Contraste de rango: cláusula BETWEEN...AND
El contraste del rango comprueba si un valor se encuentra entre dos valores especificados.
Ejemplo: Obtener el nombre del curso, el número del curso y la descripción de todos los cursos cuya descripción comience por la palabra ES.
SELECT cnombre, cno, cdescp
FROM curso
WHERE cnombre BETWEEN 'ES' AND 'ESZ’;
Ejemplo: Obtener todas las características de los pedidos que se han realizado entre el 1 de octubre y el 31 de diciembre de 1989.
SELECT *
FROM pedidos
WHERE fecha_pedido BETWEEN '01-OCT-89' AND '31-DIC-89';
3. Contraste de pertenencia a un conjunto: cláusula IN
Este tipo de consultas comprueba si un valor dado coincide con uno de una lista de valores especificada.
Ejemplo: Obtener toda la información disponible sobre cualquier curso que tenga una tarifa coincidente con algún número del conjunto { 12 , 12 , 50 , 75 , 90 , 100 , 500 }:
SELECT *
FROM curso
WHERE ctarifa IN (12, 12, 50, 75, 90, 100, 500);
Ejemplo: Obtener toda la información de los vendedores que trabajan en las oficinas de representación 11 , 13 y 22 :
SELECT *
FROM repventas
WHERE oficina_rep IN (11, 13, 22);
3. Contraste de pertenencia a un conjunto: cláusula IN
Este tipo de consultas comprueba si un valor dado coincide con uno de una lista de valores especificada.
Ejemplo: Obtener toda la información disponible sobre cualquier curso que tenga una tarifa coincidente con algún número del conjunto { 12 , 12 , 50 , 75 , 90 , 100 , 500 }:
SELECT *
FROM curso
WHERE ctarifa IN (12, 12, 50, 75, 90, 100, 500);
Ejemplo: Obtener toda la información de los vendedores que trabajan en las oficinas de representación 11 , 13 y 22 :
SELECT *
FROM repventas
WHERE oficina_rep IN (11, 13, 22);
4. Contraste de correspondencia con patrón: cláusula LIKE
Las consultas de correspondencia con patrón recuperan filas para las que el contenido de una columna de texto se corresponde con un texto dado, es decir, comprueban si el valor de una columna se ajusta a un patrón especificado. En este tipo de consultas, el signo de porcentaje % se utiliza como comodín.
Ejemplo: Obtener toda la información sobre cualquier curso que tenga una descripción que comience con la cadena 'PARA'.
SELECT *
FROM curso
WHERE cdescp LIKE 'PARA%’
Ejemplo: Obtener el límite de crédito de la empresa Smithson Corp:
SELECT empresa, limite_credito
FROM clientes
WHERE empresa LIKE ‘Smith%’;
4. Contraste de correspondencia con patrón: cláusula LIKE
Ejemplo: La consulta siguiente devuelve la información relativa a todas las empresas cuyo límite de crédito no es 20 , 000 :
SELECT *
FROM clientes
WHERE limite_credito NOT LIKE '20000';
Dentro de la cláusula LIKE juega un papel importante el símbolo subrayado bajo (_), que representa exactamente una posición de carácter. La diferencia entre el símbolo % y el símbolo subrayado bajo es significativa. En primer lugar, el símbolo % permite cualquier número de caracteres, mientras que el subrayado bajo permite solo uno. En segundo lugar, el símbolo subrayado siempre requiere que aparezca un carácter, mientras que en el símbolo % se considera como una coincidencia la simple ausencia de carácter.
Ejemplo: La consulta siguiente devuelve la información relativa a todas las empresas que tienen como segunda letra de su nombre la letra e:
SELECT * FROM clientes WHERE empresa LIKE ‘_e%’;