Guía de SQL (Oracle) PDF
Document Details
Uploaded by StellarLute
Facultad de Contaduría Pública y Administración
Tags
Summary
Esta guía proporciona una introducción a las sentencias SQL, tipos de datos y funciones en Oracle. Incluye ejemplos de comandos y operaciones básicas para trabajar con las bases de datos relacionales. Con ejemplos y explicaciones paso a paso que son útiles para principiantes en desarrollo de software.
Full Transcript
Having: Específica una condición de búsqueda para un grupo o agregado. **Ejecutar un script SQL** - **Comando:** start c:\\ruta\\nombreArchivo.sql; - **Explicación:** Este comando inicia la ejecución de un archivo SQL ubicado en la ruta especificada. - **Nota:** En versiones an...
Having: Específica una condición de búsqueda para un grupo o agregado. **Ejecutar un script SQL** - **Comando:** start c:\\ruta\\nombreArchivo.sql; - **Explicación:** Este comando inicia la ejecución de un archivo SQL ubicado en la ruta especificada. - **Nota:** En versiones anteriores de Oracle, se utilizaba el símbolo @ en lugar de start. **Guardar sentencias o comandos SQL** - **Iniciar el proceso de guardado:** spool c:\\ruta\\nombreArchivo.sql; - **Explicación:** Este comando inicia el proceso de guardar todas las sentencias SQL subsiguientes en el archivo especificado. - **Finalizar el proceso de guardado:** spool off; - **Explicación:** Este comando detiene el proceso de guardado. **Editar y ejecutar sentencias SQL** - **Abrir el editor:** edit - **Explicación:** Este comando abre un editor de texto (generalmente el bloc de notas) para que puedas modificar las sentencias SQL. - **Ejecutar la sentencia editada:** - **Explicación:** Una vez que hayas realizado los cambios en el editor y lo hayas cerrado, simplemente escribe una diagonal / en SQL\*Plus para ejecutar la sentencia editada. **Tipos de Datos en Oracle** **Alfanuméricos** - **CHAR:** Almacena cadenas de caracteres de longitud fija. El espacio en blanco al final se conserva. - **NCHAR:** Similar a CHAR, pero almacena caracteres Unicode. - **VARCHAR2:** Almacena cadenas de caracteres de longitud variable. Más flexible que CHAR. - **NVARCHAR2:** Similar a VARCHAR2, pero almacena caracteres Unicode. - **RAW:** Almacena datos binarios en formato hexadecimal. - **CLOB:** Almacena grandes objetos de caracteres, como textos largos. - **NCLOB:** Similar a CLOB, pero almacena grandes objetos de caracteres Unicode. **Fecha** - **DATE:** Almacena fechas y horas con una precisión de segundos. - **TIMESTAMP:** Almacena fechas y horas con una mayor precisión, incluyendo fracciones de segundo. **Caracteres 2G** - **LONG:** Almacena cadenas de caracteres de longitud variable, pero con limitaciones de tamaño. - **LONG RAW:** Almacena datos binarios de longitud variable, pero con limitaciones de tamaño. **Numéricos** - **NUMBER:** Almacena números de precisión arbitraria, tanto enteros como decimales. - **BINARY FLOAT:** Almacena números de punto flotante de precisión simple. - **BINARY DOUBLE:** Almacena números de punto flotante de doble precisión. **Multimedia** - **BLOB:** Almacena grandes objetos binarios, como imágenes, sonidos o archivos ejecutables. - **BFILE:** Almacena la ruta a un archivo de gran tamaño fuera de la base de datos. Comandos dml Insert, update, select, delete. \"INSERT agrega uno o más nuevos registros a una tabla.\" Delete: Se utiliza para eliminar registros de una tabla. TRUNCATE quita todas las filas de una tabla sin registrar las eliminaciones individuales de filas. Desde un punto de vista funcional, TRUNCATE TABLE es equivalente a la instrucción DELETE sin una cláusula WHERE; no obstante, TRUNCATE TABLE es más rápida y utiliza menos recursos de registros de transacciones y de sistema. UPDATE permite modificar uno o varios datos de un registro, grupo de registros o todos los registros de una sola tabla o vista. SELECT es el tipo de sentencia más utilizado. La sentencia SELECT nos permite consultar/recuperar los datos almacenados en una o más tablas de la base de datos. FILTRANDO DATOS con WHERE El proceso de filtrado de datos en Oracle implica especificar los criterios para mostrar solo las filas con los datos requeridos. Métodos para realizar el filtrado incluyen: \- Operadores de comparación \- Operadores lógicos \- Comparaciones de valores de tipo cadena \- Rangos de valores \- Listas de valores NULL: indica que un valor es desconocido ORDER BY: Especifica el orden utilizado en las columnas devueltas en una instrucción SELECT. El orden puede ser ASC (Ascendente) o DESC (Descendente), al no especificarse alguno de estos se considera por default una ordenación ascendente. La palabra clave DISTINCT elimina las filas duplicadas de los resultados de una instrucción SELECT. Si no se especifica DISTINCT, se devuelven todas las filas, incluidas las duplicadas. El resultado de las instrucciones que incluyen DISTINCT depende de la intercalación de la columna o expresión a la que se aplica DISTINCT. ROWNUM: Se usa para obtener los primeros N registros. FUNCIONES DE AGREGADO Las funciones de agregado realizan un cálculo sobre un conjunto de valores y devuelven un solo valor. AVG: Promedio de los valores de una columna. COUNT(\*): Cuenta los valores de una columna (si especifica un nombre de columna) o de todas las filas de una tabla (\*). COUNT (campo) no toma en cuenta los valores nulos, pero COUNT(\*) si los incluye. SUM: Suma los valores de una columna. MAX: Valor máximo de una columna. MIN: Valor mínimo de una columna. GROUP BY: Es usada para agrupar registros como un conjunto de resultados. SUBSECUENCIA: Es una sentencia SELECT que aparece dentro de otra sentencia SELECT, INSERT, UPDATE y DELETE. **OPERACIONES: UNIÓN, INTERSECCIÓN Y DIFERENCIA.** **UNIÓN:** Elimina renglones duplicados del resultado, también puede ser usado para unir dos conjuntos de datos que tienen las mismas columnas y en el mismo orden. **INTERSECCIÓN:** Devuelve como resultado todos los registros comunes de ambas tablas. **DIFERENCIA:** Devuelve como resultado todos los registros que estén en la primera tabla y que no estén en la segunda. Funciones en SQL Existen en SQL una serie de funciones predefinidas, las cuales pueden ser llamadas desde un programa PL/SQL, estas funciones son de diferentes tipos: - Carácter - Numéricas - Fecha - Otros tipos **FUNCIONES TIPO CARÁCTER:** Este tipo de funciones aceptan argumentos de tipo carácter y regresan en su mayoría valores de tipo VARCHAR2. Algunas funciones pueden devolver otro tipo de dato. **Funciones Numéricas:** Oracle cuenta con una serie de funciones del tipo numérico, las cuales reciben parámetros numéricos y devuelven valores numéricos. Siguiendo un orden alfabético se explicarán las principales funciones disponibles. **Funciones de fecha**: Las funciones para el manejo de fechas utilizan argumentos del tipo DATE, con la excepción de la función MONTHS\_BETWEEN que devuelve un valor numérico, todas las funciones de fecha devuelven valores tipo DATE. Es posible con algunas funciones llevar a cabo operaciones aritméticas con fechas. Siguiendo un orden alfabético se explicarán las principales funciones disponibles. **Funciones.** Las funciones en PL/SQL son muy similares a los procedimientos, ambos reciben parámetros, tienen las mismas secciones declarativas, ejecutables y de excepciones, se pueden almacenar en la base de datos, usa parámetros posicionales y nominales, valores por omisión, etc. La **diferencia principal** entre funciones y procedimientos es que los procedimientos son llamados como una orden explícita en PL/SQL mientras que una función es llamada por medio de una expresión. ¿Qué es PL/SQL? PL/SQL (\"Procedural Language extensions to SQL\") es un lenguaje de programación procedural, que \"extiende\" el funcionamiento del SQL. Con PL/SQL se pueden usar instrucciones SQL para manipular los datos por medio de instrucciones para el control del flujo de la ejecución, se combina el poder del SQL con la flexibilidad de un lenguaje de programación procedural. Características del PL/SQL Las principales características del PL/SQL son las siguientes: - Estructura de bloques - Variables y Constantes - Cursores - Atributos - Estructuras de control - Modularidad - Manejo de errores **Estructura de bloques:** PL/SQL es un lenguaje estructurado en bloques, cada unidad lógica de programación está organizada por medio de bloques, los cuales pueden obtener bloques anidados o sub-bloques. **VARIABLES Y CONSTANTES:** PL/SQL permite la declaración de variables y constantes que pueden ser usadas para construir expresiones de diferentes tipos (numéricos, carácter, lógicos). **DECLARACIONES:** En un programa de PL/SQL se pueden declarar constantes y variables en la sección declarativa de un PL/SQL. **Uso del DEFAULT en declaraciones:** Por omisión los valores de las variables son nulos, sin embargo, se puede usar la opción DEFAULT para definir el valor por omisión de una variable **Uso del NOT NULL en declaraciones:** Se puede utilizar la opción NOT NULL, para forzar a las variables a tener un valor definido. **Uso de %TYPE en declaraciones:** Se puede utilizar también el atributo %TYPE para obtener el tipo de dato de una variable o de una columna de una tabla. **Uso de %ROWTYPE en declaraciones:** El atributo %ROWTYPE representa el tipo de registro del renglón de una tabla, también se puede utilizar para asignar el tipo de un renglón de un cursor. Nota: el atributo %ROWTYPE toma los mismos nombres y tipo de datos de la tabla, sin embargo, los constraints de nulidad (NULL y NOT NULL) no son heredados al registro creado. **Resolución de nombres**: Un problema potencial en PL/SQL es la ambigüedad en los nombres definidos para las variables. **ASIGNACIONES**: Para asignar valores a una variable se utiliza la combinación de caracteres **":=."** De igual forma se utiliza para resolver una expresión. **Procedimientos:** Los procedimientos tienen la misma estructura de un bloque anónimo, es decir, cuentan con una sección declarativa (se omite la palabra DECLARE), una sección ejecutable y una sección de manejo de excepciones. Cuando un procedimiento es llamado sucede lo siguiente: - Cuando se llama a un procedimiento se le pueden enviar parámetros (no es obligatorio), de igual forma el procedimiento puede regresar un resultado. - El control pasa a la primera línea ejecutable del procedimiento. - Cuando el procedimiento termina el control regresa a la siguiente línea de la llamada al procedimiento. **Subprogramas de Oracle:** Procedimientos o funciones. **LOOP:** En su forma más simple el uso del LOOP, encierra una secuencia a ejecutar repetidas veces. **Sentencia CASE:** Para elegir entre varios valores o cursos de acción, se puede usar la sentencia CASE. La sentencia CASE evalúa una condición, y desarrolla una acción, tal como un bloque de código PL/SQL, para cada caso. **Introducción a las estructuras de control:** En PL/SQL existen tres tipos de estructuras de control: - Para selección - De iteración - Procesamiento secuencial (GOTO) **Estructuras de selección:** Este tipo de estructuras evalúan una condición, ejecutan una o más instrucciones si la evaluación da como resultado verdadero, de lo contrario se puede ejecutar otro grupo de instrucciones. **ESTRUCTURAS DE ITERACIÓN:** Este tipo de estructuras ejecuta una serie de instrucciones en secuencia, en forma repetida, hasta que una condición se cumple. **ESTRUCTURA SECUENCIAL:** En esta estructura se ejecutan las instrucciones una detrás de la otra en el orden en que se presentan. **ESTRUCTURA IF:** Para ejecutar una o más instrucciones dependiendo de alguna condición, se cuenta con la instrucción IF, la cual tiene tres diferentes formas: IF-THEN IF-THEN-ELSE IF-THEN-ELSIF Un **FULL JOIN** en SQL es un tipo de combinación entre dos tablas que devuelve todos los registros de ambas, sin importar si hay coincidencias o no en las condiciones de la clave. Es decir, recupera tanto los registros que tienen coincidencias en ambas tablas como aquellos que no tienen coincidencias, **RIGHT JOIN** (o \"unión derecha\") es un tipo de join que devuelve todos los registros de la tabla de la **derecha** (tabla B) y los registros coincidentes de la tabla de la **izquierda** (tabla A). Si no hay coincidencia entre las tablas, los resultados de la tabla A aparecerán como NULL. **LEFT JOIN**: Lo que hace el **LEFT JOIN** es devolver todos los registros de la tabla de la izquierda (la primera tabla que se menciona en la consulta) y los registros coincidentes de la tabla de la derecha (la segunda tabla). Si no hay coincidencia, los resultados de la tabla de la derecha aparecerán como **NULL**. **INNER JOIN:** un **INNER JOIN** es un tipo de operación que se utiliza para combinar filas de dos o más tablas, basándose en una condición relacionada. El **INNER JOIN** devuelve únicamente las filas que tienen valores coincidentes en ambas tablas involucradas. **UNION ALL:** UNION ALL es una operación en SQL que se utiliza para combinar los resultados de dos o más consultas en una sola tabla de resultados. A diferencia de la operación UNION, que elimina las filas duplicadas, UNION ALL incluye **todos los registros**, incluso si hay duplicados.