Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Consultas Básicas en SQL: Un Tutorial Práctico con Ejemplos, Apuntes de Algoritmos Avanzados

Base de datos contiene script y clases de estudio

Tipo: Apuntes

2020/2021

Subido el 29/05/2021

kayn-g4
kayn-g4 🇵🇪

5 documentos

1 / 31

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
SQL: DML MANIPULACIÓN DE DATOS
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 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.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Vista previa parcial del texto

¡Descarga Consultas Básicas en SQL: Un Tutorial Práctico con Ejemplos y más Apuntes en PDF de Algoritmos Avanzados solo en Docsity!

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.

CONSULTAS BÁSICAS EN SQL

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]...];

CONSULTAS BÁSICAS EN SQL

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’;

CONSULTAS BÁSICAS EN SQL

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’;

CONSULTAS BÁSICAS EN SQL

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;

CONSULTAS BÁSICAS EN SQL

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.

CONSULTAS BÁSICAS EN SQL

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.

CONSULTAS BÁSICAS EN SQL

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.

CONSULTAS CON CONDICIONES DE BÚSQUEDA

  1. Contrastes de comparació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 ;

CONSULTAS CON CONDICIONES DE BÚSQUEDA

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';

CONSULTAS CON CONDICIONES DE BÚSQUEDA

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);

CONSULTAS CON CONDICIONES DE BÚSQUEDA

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);

CONSULTAS CON CONDICIONES DE BÚSQUEDA

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%’;

CONSULTAS CON CONDICIONES DE BÚSQUEDA

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%’;