Comparativa SQLplus y MySQL - Camilo Vargas
Comparativa SQLplus y MySQL - Camilo Vargas
IES Tetuán de las victorias (Madrid) Alumno: Camilo Andretti Vargas Sandoval
Sumario
1. Introducción....................................................................................................................................................4
Comparativa SQL*Plus (Oracle) y MySQL
2. El monitor de MySQL....................................................................................................................................5
3. El monitor de Oracle (SQL*Plus)..................................................................................................................6
4. Creación de Base de Datos y Esquemas.........................................................................................................7
SQL*Plus/Oracle:.............................................................................................................................................7
MySQL:............................................................................................................................................................8
5. Creación de Tablas.........................................................................................................................................9
SQL*Plus/Oracle..............................................................................................................................................9
Características Avanzadas:...........................................................................................................................9
MySQL............................................................................................................................................................10
Características Específicas:.........................................................................................................................10
6. Ejecución Comandos del Sistema Operativo...............................................................................................11
SQL*Plus....................................................................................................................................................11
MySQL........................................................................................................................................................11
Consideraciones de Seguridad....................................................................................................................11
7. Atributo Auto Increment..............................................................................................................................12
SQL*Plus:...................................................................................................................................................12
MySQL........................................................................................................................................................12
8. Clausula IF NOT EXISTS............................................................................................................................13
SQL*Plus:...................................................................................................................................................13
MySQL:......................................................................................................................................................13
9. Inserción Masiva..........................................................................................................................................14
SQL*Plus....................................................................................................................................................14
MySQL........................................................................................................................................................15
10. UPDATE ON CASCADE/ON DELETE CASCADE.................................................................................15
SQL*Plus....................................................................................................................................................15
MySQL........................................................................................................................................................16
11. Ejecución de Scripts.....................................................................................................................................17
SQL*Plus/Oracle............................................................................................................................................17
Ejecutando Scripts:.....................................................................................................................................17
Consideraciones Especiales:.......................................................................................................................18
MySQL............................................................................................................................................................19
Ejecutando Scripts:.....................................................................................................................................19
Consideraciones Especiales:.......................................................................................................................19
12. Manipulación de tablas.................................................................................................................................20
Conexión a la Base de Datos...........................................................................................................................20
SQL*Plus:...................................................................................................................................................20
MySQL:......................................................................................................................................................20
Ver las tablas...................................................................................................................................................20
Alumno: Camilo Vargas 2
Comparativa SQL*Plus (Oracle) y MySQL
SQL*Plus:...................................................................................................................................................20
MySQL:......................................................................................................................................................21
Descripción de tablas......................................................................................................................................21
SQL*Plus....................................................................................................................................................21
MySQL........................................................................................................................................................22
Inserción de Datos...........................................................................................................................................22
SQL*Plus:...................................................................................................................................................22
MySQL:......................................................................................................................................................22
Consulta de Datos...........................................................................................................................................23
SQL*Plus:...................................................................................................................................................23
MySQL:......................................................................................................................................................23
Eliminación de Datos......................................................................................................................................24
SQL*Plus:...................................................................................................................................................24
MySQL:......................................................................................................................................................24
13. Diccionario de datos.....................................................................................................................................25
SQL*Plus........................................................................................................................................................25
MySQL............................................................................................................................................................26
14. Bibliografía...................................................................................................................................................27
Introducción
Al comparar Oracle y MySQL, estamos evaluando dos de los sistemas de gestión de bases de datos (SGBD)
más influyentes y ampliamente utilizados en el mundo de la tecnología de la información. Ambos sirven al
propósito fundamental de almacenar, recuperar y gestionar datos, pero lo hacen de maneras que reflejan sus
distintas filosofías de diseño, capacidades técnicas y casos de uso ideales.
Oracle, conocido por su robustez, es un gigante en el mundo de las bases de datos empresariales, ofreciendo
un sistema altamente sofisticado y completo, con un amplio rango de funcionalidades avanzadas. Es
especialmente conocido por su lenguaje de programación PL/SQL, que permite a los usuarios escribir
aplicaciones de bases de datos altamente complejas y seguras. Su capacidad para manejar grandes volúmenes
de datos y transacciones complejas lo hace ideal para grandes corporaciones y aplicaciones críticas que
requieren alta disponibilidad, seguridad, y escalabilidad.
MySQL, por otro lado, es ampliamente reconocido por su simplicidad y eficiencia, siendo una opción popular
para aplicaciones web y empresas de todos los tamaños. Aunque no ofrece todas las capacidades avanzadas
de Oracle, su simplicidad, velocidad y facilidad de uso lo han convertido en la base de datos de elección para
una gran variedad de aplicaciones web modernas, especialmente aquellas que operan en entornos de hosting
compartido o que requieren una solución de base de datos más ligera y menos compleja.
PL/SQL (Oracle):
Lenguaje procedimental que extiende SQL, diseñado para una integración avanzada con Oracle.
Proporciona herramientas para crear aplicaciones robustas dentro de la base de datos.
SQL (MySQL):
Lenguaje de consulta estándar con extensiones para procedimientos almacenados, pero sin la profundidad o
complejidad de PL/SQL.
El monitor de MySQL
El monitor de MySQL, también conocido como MySQL Command Line Client, es una herramienta de línea
de comandos que permite a los usuarios interactuar directamente con el servidor MySQL. Esta herramienta
es esencialmente un cliente que se utiliza para enviar comandos SQL al servidor y recibir los resultados. Aquí
hay algunas características y aspectos clave del monitor de MySQL:
Interfaz de Línea de Comandos: El monitor opera en una interfaz de texto, donde los usuarios pueden
escribir y ejecutar comandos SQL. No tiene una interfaz gráfica, lo que significa que todos los comandos
deben ingresarse a través del teclado.
Ejecución de Consultas SQL: Permite a los usuarios ejecutar todo tipo de consultas SQL, como SELECT,
INSERT, UPDATE, DELETE, y muchas más. Las respuestas del servidor se muestran directamente en la
ventana de la consola.
SQL*Plus/Oracle:
Enfoque en Esquemas: Oracle adopta un enfoque centrado en esquemas más que en bases de datos
individuales. Un esquema en Oracle es efectivamente una cuenta de usuario que posee objetos de base de
datos, como tablas, vistas, procedimientos almacenados, etc. Cuando se crea un nuevo usuario, Oracle por
defecto crea un esquema asociado con ese usuario.
Alumno: Camilo Vargas 6
Comparativa SQL*Plus (Oracle) y MySQL
Creación de Usuarios/Esquemas: En Oracle, no se crea una "base de datos" por cada proyecto o aplicación.
En su lugar, se crean usuarios/esquemas, y a estos se les asignan los objetos de base de datos. La creación de
un usuario (y por ende un esquema) se realiza típicamente con comandos como CREATE USER username
IDENTIFIED BY password; seguido de la asignación de permisos con GRANT y la definición de cuotas en
tablespaces.
-- Crear un nuevo usuario (y por ende, un esquema)
CREATE USER mi_esquema IDENTIFIED BY mi_contraseña;
-- Otorgar permisos al usuario
GRANT CONNECT, RESOURCE TO mi_esquema;
-- Otorgar una cuota en el tablespace (si es necesario)
ALTER USER mi_esquema QUOTA 100M ON users;
MySQL:
Creación Directa de Bases de Datos: MySQL permite la creación directa de bases de datos, lo que es más
intuitivo para los usuarios que provienen de otros sistemas de gestión de bases de datos. Se utiliza el comando
CREATE DATABASE nombre_de_la_base; para iniciar una nueva base de datos, lo cual es una operación
común y sencilla.
Separación de Bases de Datos y Usuarios: A diferencia de Oracle, MySQL maneja las bases de datos y los
usuarios de forma separada. Un usuario puede tener permisos sobre una o varias bases de datos, y la creación
de la base de datos no está ligada a la creación de usuarios.
-- Crear una nueva base de datos
CREATE DATABASE mi_base_de_datos;
-- Crear un nuevo usuario
CREATE USER 'mi_usuario'@'localhost' IDENTIFIED BY 'mi_contraseña';
-- Otorgar permisos al usuario para la nueva base de datos
Creación de Tablas
SQL*Plus/Oracle
En Oracle, la creación de tablas se realiza a través de una sintaxis que puede incorporar una amplia gama de
características específicas de Oracle, como tipos de datos avanzados, opciones de almacenamiento y cláusulas
de particionamiento.
Tipos de Datos: Oracle ofrece tipos de datos específicos como VARCHAR2, NUMBER, CLOB, etc.
VARCHAR2 es más comúnmente utilizado que VARCHAR, siendo una especificidad de Oracle.
Funciones de Fecha: SYSDATE es una función de Oracle utilizada para asignar la fecha y hora actuales por
defecto.
Claves Primarias y Constraints: La declaración puede incluir constraints como claves primarias, únicas,
checks, etc., directamente en la definición de la tabla o como constraints separados.
Características Avanzadas:
Particionamiento: Oracle permite particionar tablas para mejorar el rendimiento y la gestión de grandes
volúmenes de datos, una característica valiosa para sistemas empresariales de gran escala.
Opciones de Almacenamiento: Puedes especificar opciones de almacenamiento detalladas, como
tablespaces, inicialización de extentos, entre otros.
MySQL
maneja la creación de tablas de manera más simplificada pero flexible, adecuada para una amplia gama de
aplicaciones, desde aplicaciones web simples hasta sistemas empresariales complejos.
Tipos de Datos: MySQL utiliza tipos de datos estándar SQL como VARCHAR, INT, TEXT, etc.
AUTO_INCREMENT se utiliza para generar un nuevo valor de clave primaria automáticamente.
Funciones de Fecha: CURRENT_TIMESTAMP es utilizado para asignar la fecha y hora actuales como valor
predeterminado.
Claves Primarias y Constraints: Al igual que en Oracle, puedes definir constraints dentro de la definición de
la tabla.
Características Específicas:
o simplemente
MySQL:
Utiliza el comando SYSTEM o bien el comando \! para ejecutar comandos del sistema operativo sin salir del
prompt de MySQL.
o simplemente
Figura 10: Uso del comando cls(windows10) dentro del prompt MySQL
Consideraciones de Seguridad
La capacidad de ejecutar comandos del sistema operativo desde SQL*Plus o MySQL es potente, pero conlleva
riesgos de seguridad. Los usuarios con acceso a estas funciones pueden potencialmente ejecutar comandos
maliciosos, comprometiendo el servidor de la base de datos. Por lo tanto, es crucial:
MySQL:
Utiliza el atributo AUTO_INCREMENT para incrementar automáticamente un campo.
SQL*Plus:
Oracle no soporta directamente la sintaxis IF NOT EXISTS en la creación de tablas. Necesitarías escribir un
bloque PL/SQL o controlar esto mediante un script.
Ejemplo Conceptual en PL/SQL
Podrías usar un bloque PL/SQL para verificar si una tabla existe antes de intentar crearla. Aquí hay un
enfoque conceptual; no es un código directamente ejecutable, pero ilustra la idea:
MySQL:
Soporta IF NOT EXISTS para evitar errores al intentar crear tablas que ya existen.
Inserción Masiva
La inserción masiva se refiere al proceso de insertar múltiples registros en una base de datos de una sola vez.
Esto es útil para mejorar el rendimiento al reducir el número de llamadas a la base de datos, especialmente
cuando se necesita insertar una gran cantidad de datos simultáneamente
SQL*Plus:
En Oracle, no tienes un comando directo que permita la inserción masiva de datos como en MySQL con su
sintaxis de inserción extendida. Sin embargo, puedes usar diferentes técnicas para lograr un resultado similar.
Alumno: Camilo Vargas 13
Comparativa SQL*Plus (Oracle) y MySQL
INSERT ALL: Esta es una forma de insertar múltiples filas en una o varias tablas en una única operación.
Para inserciones masivas, se suele utilizar la funcionalidad de INSERT ALL o un procedimiento PL/SQL.
Aquí, INSERT ALL permite especificar múltiples subinstrucciones INTO, cada una de las cuales inserta una
fila en la tabla. El SELECT FROM dual al final es necesario para que la sintaxis sea válida, ya que Oracle
espera una consulta que proporcionará las filas a insertar.
Usando PL/SQL: También puedes usar un bloque PL/SQL para realizar inserciones masivas, especialmente
útil cuando se insertan datos dinámicamente o en grandes cantidades.
MySQL:
SQL*Plus:
Oracle no soporta directamente un "ON UPDATE CASCADE". En Oracle, las restricciones de integridad
referencial para las claves foráneas se pueden configurar para realizar acciones en cascada cuando se eliminan
filas (ON DELETE CASCADE), pero no cuando se actualizan. La falta de soporte para "ON UPDATE
CASCADE" significa que tendrás que manejar las actualizaciones manualmente, posiblemente a través de
disparadores (triggers) o procedimientos almacenados que aseguren la integridad referencial.
En este ejemplo, si se elimina una fila en parent_table, cualquier fila en child_table que haga referencia a la
misma parent_id se eliminará automáticamente. Sin embargo, si se necesita una actualización en cascada, se
debe implementar manualmente, posiblemente con un trigger.
MySQL:
MySQL sí soporta la acción "ON UPDATE CASCADE" en las restricciones de clave foránea. Esto significa
que, si actualizas una clave primaria en la tabla principal, todas las claves foráneas correspondientes en la
tabla relacionada se actualizarán automáticamente.
Ejecución de Scripts
SQL*Plus/Oracle
En Oracle, los scripts SQL se utilizan ampliamente para automatizar la administración de la base de datos,
ejecutar lotes de comandos SQL, y realizar tareas de mantenimiento y configuración. La ejecución de scripts
es una parte integral del trabajo con Oracle, especialmente en entornos empresariales donde las tareas
complejas necesitan ser realizadas de manera regular y automatizada.
Ejecutando Scripts:
SQL*Plus o SQLcl: Son las interfaces de línea de comandos más comunes para Oracle. Para ejecutar
un script, normalmente se usa el comando @ seguido del nombre del archivo del script, por ejemplo,
@mi_script.sql. Esto ejecuta el script en el contexto de la sesión actual de SQL*Plus o SQLcl.
PL/SQL Blocks: Además de los scripts SQL estándar, Oracle permite la ejecución de bloques
PL/SQL, que pueden incluir lógica condicional, bucles y otras estructuras de control de flujo,
proporcionando una potente herramienta para scripts avanzados.
Scheduled Jobs: Oracle proporciona una forma robusta de programar la ejecución de scripts a través
de DBMS_SCHEDULER o DBMS_JOB, permitiendo la automatización de tareas de mantenimiento
y operaciones de larga duración.
Supongamos que tienes un procedimiento almacenado llamado actualizar_estadisticas que deseas
ejecutar automáticamente a medianoche todos los días.
Una vez que este código se ejecuta en Oracle, el trabajo job_actualizar_estadisticas se activará
automáticamente a medianoche todos los días, ejecutando el procedimiento actualizar_estadisticas.
Consideraciones Especiales:
Variables de Sustitución: SQL*Plus y SQLcl permiten el uso de variables de sustitución para
personalizar la ejecución de scripts, lo cual es útil para scripts que deben ejecutarse en múltiples
contextos o con diferentes conjuntos de datos.
Errores y Manejo de Excepciones: Los scripts pueden diseñarse para manejar errores o excepciones,
registrando problemas o incluso deteniendo la ejecución según la gravedad del error.
MySQL
MySQL también soporta la ejecución de scripts SQL para tareas de administración, inicialización y
mantenimiento. La ejecución de scripts en MySQL es una herramienta esencial para los desarrolladores y
administradores de bases de datos, facilitando la automatización y la ejecución eficiente de operaciones en
lotes.
Ejecutando Scripts:
MySQL Command-Line Tool: Para ejecutar un script en MySQL, puedes usar el comando source o el
carácter de comando de ejecución \. en la interfaz de línea de comandos de MySQL, como en source
mi_script.sql; o \. mi_script.sql;. Esto ejecutará el script SQL en el contexto de la sesión actual de MySQL.
Automatización y Mantenimiento: Al igual que en Oracle, los scripts en MySQL se utilizan para la
automatización de tareas de administración, como la realización de copias de seguridad, la actualización de
datos, o la realización de cambios en la estructura de la base de datos.
Consideraciones Especiales:
Scripts en Aplicaciones: Los scripts no solo se usan para la administración directa de la base de datos, sino
también pueden ser parte de aplicaciones más grandes, ejecutándose durante la inicialización de la aplicación,
durante las actualizaciones, o como parte de la lógica de la aplicación.
Manejo de Errores: La estructura y la lógica de manejo de errores en los scripts de MySQL pueden ser
fundamentales para asegurar que las operaciones de base de datos se realicen correctamente y que cualquier
problema sea capturado y tratado adecuadamente.
Manipulación de tablas
Conexión a la Base de Datos
SQL*Plus:
Para conectar a una base de datos Oracle usando SQL*Plus, se utiliza el siguiente comando:
sqlplus username/password@database
MySQL:
Para conectar a una base de datos MySQL, se utiliza:
mysql -u username -p -h host database
MySQL:
En MySQL, la forma de ver las tablas es un poco más directa. Puedes usar el siguiente comando después de
seleccionar una base de datos:
SHOW TABLES; o SHOW FULL TABLES;
Descripción de tablas
SQL*Plus
puedes utilizar el comando DESC o DESCRIBE para ver la estructura de una tabla. El comando muestra la
información de las columnas, incluyendo el nombre, tipo de dato, si pueden ser nulos, y otras propiedades
relacionadas con las columnas.
DESC nombre_de_la_tabla; o DESCRIBE nombre_de_la_tabla;
MySQL
El comando para ver la descripción de una tabla es muy similar. Utilizas el comando DESCRIBE o
simplemente DESC, seguido del nombre de la tabla. También puedes usar el comando SHOW COLUMNS
FROM
Inserción de Datos
SQL*Plus:
INSERT INTO empleados (id, nombre, edad) VALUES (1, 'Juan', 30);
MySQL:
INSERT INTO empleados (id, nombre, edad) VALUES (1, 'Juan', 30);
La inserción de datos es bastante similar en ambos sistemas; la sintaxis es prácticamente la misma.
Consulta de Datos
SQL*Plus:
SELECT * FROM empleados;
MySQL:
SELECT * FROM empleados;
Las consultas básicas son idénticas en ambos sistemas. Sin embargo, SQL*Plus y Oracle tienen muchas
funciones avanzadas para trabajar con conjuntos de datos complejos, los cuales pueden no estar disponibles o
ser diferentes en MySQL.
Eliminación de Datos
SQL*Plus:
DELETE FROM empleados WHERE id = 1;
MySQL:
DELETE FROM empleados WHERE id = 1;
La eliminación de datos también sigue la sintaxis SQL estándar en ambos entornos.
Diccionario de datos
SQL*Plus
En Oracle, el diccionario de datos es una colección integral de tablas y vistas que Oracle utiliza para mantener
la información sobre todos los objetos de la base de datos. Las vistas más comunes que se consultan en el
diccionario de datos son:
USER_TABLES: Lista todas las tablas propiedad del usuario actual.
ALL_TABLES: Lista todas las tablas a las que el usuario actual tiene acceso.
DBA_TABLES: Lista todas las tablas en la base de datos (requiere privilegios de DBA).
USER_TAB_COLUMNS: Muestra información sobre las columnas en las tablas propiedad del usuario.
USER_CONSTRAINTS: Muestra las restricciones en las tablas del usuario.
USER_INDEXES: Proporciona información sobre los índices creados en las tablas del usuario.
MySQL
MySQL utiliza el esquema information_schema, que es una base de datos estándar que contiene información
sobre todas las otras bases de datos y objetos dentro del servidor MySQL. Algunas de las vistas importantes
en information_schema son:
TABLES: Proporciona información sobre todas las tablas en todas las bases de datos.
COLUMNS: Ofrece detalles sobre las columnas en todas las tablas.
STATISTICS: Muestra información sobre los índices de las tablas.
TABLE_CONSTRAINTS: Contiene información sobre las restricciones de las tablas.
Bibliografía
MySQL Documentation
https://docs.oracle.com/cd/E17952_01/index.html