Sei sulla pagina 1di 15

BASES DE DATOS CON MYSQL OBTETOS.

Dos TABLAS se relacionan entre si a través de un


CAMPO CLAVE común en ambas
NIVEL I – CLASE Nº: 01  Todo REGISTRO (FILA) de una TABLA está formado por
diversos CAMPOS (COLUMNAS). Cada CAMPO representa un
 DATO: Es la unidad básica de información, que representa el ATRIBUTO (característica) especifica de la familia de
valor especifico de una propiedad asociado un objeto en un OBJETOS. Todo CAMPO contiene datos del mismo tipo
momento dado.
 INFORMACION: Es un conjunto de datos con significado propio, RECOMENDACIONES PARA CREAR UNA BD
que representa una idea completa
 BASE DE DATOS (BD): Es un conjunto de datos relacionados  Los nombres de los elementos MySQL (BD, TABLAS y
entre sí, que representan una información específica, CAMPOS) deben escribirse siempre en singular. NO debiendo
almacenados para su posterior uso usarse espacios en blanco ni caracteres especiales (incluida la
letra “ñ” y los acentos) para los nombres de los elementos
ERRORES COMUNES AL DISEÑAR UNA BD MySQL
 A fin de facilitar su lectura, cuando se requiera escribir nombres
1) REDUNDANCIA (Datos Repetidos): Valores iguales en distintas largos (de más de una palabra) se usara el sub-guión (guión bajo
tablas, es decir, la misma información esta almacenada varias “_”) como conector entre palabras (EJEMPLO: nombre_usuario)
veces en una BD. Se produce generalmente por fallas lógicas o se unirán las palabras colocando las iníciales de las mismas (a
(mala normalización) al momento de crear la BD partir de la segunda palabra) en mayúsculas (Ejemplo:
2) INCONSISTENCIA (Diferencias en un mismo dato) El mismo nombreUsuario)
objeto tiene diferentes datos almacenado. EJEMPLO: La cedula
1234 pertenece a dos o mas personas diferentes. Se produce CARACTERISTICAS IMPORTARTES DE LAS BDR
generalmente cuando se tiene acceso simultaneo a la BD desde
diversos sitios y la actualización de los registros se realiza de  Deberá existir un solo camino para llegar a los datos (ruta de
forma incorrecta (generando incoherencias) acceso única)
 Requieren una correcta normalización
MANEJADOR DE BASES DE DATOS (DBMS-SGBD):  Requieren el uso de campos claves con valores unicos
MODELADO: Técnica que permite convertir un problema real en una
Programa capaz de facilitar el proceso de creacion y manipulación de BD a fin de que pueda ser procesada por el computador
BD (Database Management System). EJEMPLO: MySQL, SQL
Server, Oracle, MS Access, etc. PASOS PARA EL DISEÑO DE BD

MODELO DE BASE DE DATOS RELACIONAL (BDR) 1) RECOLECCION Y ANÁLISIS DE REQUERIMIENTOS: Definir


problemas (necesidades) existentes – Comprender la
 Una BD es la unidad funcional de almacenamiento de información suministrada por el cliente
información, formada por una o mas TABLAS 2) DISEÑO CONCEPTUAL: Identificar Entidades – Definir
 Cada TABLA contiene la información (REGISTROS) Relaciones – Construir Diagrama E/R
correspondientes a una familia de OBJETOS especifica. Cada 3) DISEÑO LOGICO: Implementar modelo E/R (Entidad = Tabla)
REGISTRO representa (describe) a un OBJETO único dentro de (Atributo = Campo)
la TABLA, es decir, todo OBJETO es un ente especifico (real o 4) DISEÑO FÍSICO: Definir tipos y tamaños de los datos
abstracto) cuyos datos se encuentran almacenados en una
TABLA de la BD
 Toda TABLA es una ENTIDAD autónoma de almacenamiento
de la información relacionada a los diversos ATRIBUTOS de los
MODELO ENTIDAD-RELACIÓN 5) Examinar cada Entidad para ver como se relaciona con las otras
6) Definir relaciones
SÍMBOL NOMBRE DESCRIPCIÓN SIGNIFICAD 7) Establecer Cardinalidades
O O 8) Eliminar relaciones redundantes
ENTIDAD Objeto con Un nombre
(Tabla en características propias EJEMPLO DE DIAGRAMA E/R
BD)
ATRIBUTO Una característica de la Un valor Para el ejercicio 01 el Diagrama E/R seria el siguiente:
(Campo en entidad Id_Alumno Id_Asignatura
BD) Nombre Nombre
RELACIÓN La interacción entre Una Apellido Creditos
(Conexión) entidades dependencia
Alumno Asignatura N Pertenece
CLAVE: Elemento (Atributo) que identifica de manera única a cada
objeto especifico de la entidad. En el diagrama E/R es un atributo con a
el nombre subrayado N 1

TIPOS DE CLAVES
Corresponde a 1
 PRIMARIA: Identifica en forma única al objeto Aula
 FORÁNEA: Permite vincular tablas (Clave Auxiliar). La clave N
principal de una tabla auxiliar es una clave foránea en la tabla N Sección
Inscribe Id_Aula
principal
N Capacidad
 En una tabla pueden haber 0-N claves foráneas, pero siempre N
Id_Seccion Ubicación
debe existir SOLO UNA CLAVE PRINCIPAL
Nombre
CARDINALIDADES Tiene Dicta

1 1
Indican el numero (1-N) de elementos de una entidad B que pueden
relacionarse con un elemento de la entidad A Horario Profesor
DESCRIPCIÓN SIMBOLOGÍA REPRESENTACIÓN
UNO A UNO 1:1 Id_Horario
Id_Profesor
Inicio
UNO A MUCHOS 1:N Nombre
Fin
Apellido
Dia
MUCHOS A UNO N:1

MUCHOS A MUCHOS N:M EJERCICIO 01

Construir una BD para el control de Alumnos inscritos en cada


PASOS PARA CONSTRUIR UN DIAGRAMA E/R sección de diversas asignaturas:
a) cada asignatura tendrá un aula fija independiente de la sección
1) Identificar Entidades b) cada asignatura puede tener varias secciones
2) Eliminar Entidades duplicadas c) Un alumno puede inscribir varias asignaturas en diferentes
3) Establecer Atributos de cada Entidad secciones
4) Marcar Claves Primarias
d) Cada sección tiene su respectivo horario y esta asignada a un Profesor Id_Profesor (*)
profesor en particular Nombre
Almacenar nombres y apellidos de alumnos y profesores, descripción Apellido
de las asignaturas, secciones y horarios, capacidad de cada aula Sección Id_Seccion (*)
Nombre
SOLUCIÓN EJERCICIO 01 Asignatura Id_Asignatura (*)
Nombre
1) IDENTIFICAR ENTIDADES: En el enunciado del ejercicio Créditos
podemos notar que se hace referencia a los siguientes Aula Id_Aula (*)
elementos, que se consideraran como entidades de la BD. Capacidad
a. Alumnos Ubicación
IMPORTANTE
b. Secciones Horario Id_Horario (*)
c. Asignaturas Debemos recordar que los nombres de las Inicio
d. Aulas Entidades deben ir siempre en singular, es
Fin
e. Horarios decir, Alumno, Sección, Asignatura, Aula,
Horario, Profesor
Día
f. Profesores En este caso las claves primarias además de subrayarse han sido
También, se presentan otros elementos tales como: marcadas con (*) para su mejor visualización
a) Nombres y Apellidos de alumnos y profesores 5) DEFINIR RELACIONES: Establecer Modelo Conceptual (Usar
b) Descripciones de asignaturas, secciones y horarios simbología adecuada)
c) Capacidad de las aulas
Que, a pesar de estar presentes en el enunciado, representan
características propias (atributos) de los objetos almacenados en las
Alumno Asignatura Pertenece
Entidades (y no Entidades propiamente dichas) a
Hay que ser muy cuidadosos en este punto porque es el que se
presta generalmente a mayores confusiones (generando con esto
errores)
2) ELIMINAR ENTIDADES DUPLICADAS: En este caso no existen Corresponde a
3) ESTABLECER ATRIBUTOS DE CADA ENTIDAD: Aquí
debemos definir las características especificas de cada entidad Aula
(Ejemplo: Para la Entidad alumno, los atributos podrían ser entre
otros: Id_Alumno, Nombre, Apellido, fecha_nac,…). Debemos Inscribe Sección
recordar que diferentes entidades (tablas) pueden tener los
mismos nombres de atributos (campos) pero nunca pueden
existir dos campos con el mismo nombre en la misma tabla
4) MARCAR CLAVES PRIMARIAS: Las claves primarias deberán Tiene Dicta
ser subrayadas para su identificación, además es muy común
que los nombres de las claves primarias comiencen con el prefijo
“Id” (Ejemplo: Id_Alumno, Id_Profesor,…)
Horario Profesor
El resultado de estos primeros pasos sería algo similar a lo siguiente
(MODELO LOGICO): CONSIDERACIONES IMPORTANTES:
ENTIDADES ATRIBUTOS  Dos entidades solo pueden comunicarse a través de una
Alumno Id_Alumno (*) relación
Nombre  Para evitar redundancia solo debe existir una ruta para llegar de
Apellido una entidad a otra
ANALISIS DE CARDINALIDADES Profesor Id_Profesor (*) INT
Nombre VARCHART(20)
 Alumnos inscritos en cada Sección Al(N:M)S Apellido VARCHART(20)
 Sección de diversas Asignaturas S(N:1)As Sección Id_Seccion (*) INT
 Cada Asignatura tendrá un Aula fija As(N:1)Au Nombre VARCHART(50)
 Cada Asignatura puede tener varias Secciones As(1:N)S Asignatura Id_Asignatura (*) INT
 Cada Alumno puede inscribir varias Asignaturas Al(N:M)As Nombre VARCHART(20)
 Cada Sección tiene su Horario S(N:1)H Créditos INT
 Cada Sección esta asignado un Profesor S(N:1)P Aula Id_Aula (*) INT
Capacidad INT
Este tipo de análisis de las relaciones se considera indispensable, ya Ubicación VARCHART(50)
que las mismas representan los requerimientos específicos del Horario Id_Horario (*) INT
sistema Inicio TIME
Fin TIME
DEL DISEÑO CONCEPTUAL AL DISEÑO LOGICO Día DATE

 Las ENTIDADES se convierten en TABLAS TIPOS DE DATOS EN MySQL


 Los ATRIBUTOS se convierten en CAMPOS (Columnas) 1) NUMERICOS
 Se establecen las CLAVES PRIMARIAS existentes 2) CADENAS
 De ser necesario, se crean las claves faltantes (Recuerden que 3) TIEMPO
cada tabla debe poseer una CLAVE PRINCIPAL)
 Se especifican las CLAVES FORANEAS (AUXILIARES), USO DEL MySQL WORKBENCH
requeridas para establecer las relaciones existentes entre tablas Esta aplicación facilita el proceso (Requiere netframework 3.5 o
superior) de creación del diagrama físico
IMPORTANTE:
 Las cardinalidades (1:1 – 1:N – N:1) generan relaciones directas
entre dos tablas, mientras que las relaciones (N:M) requieren del
uso de una tabla auxiliar para establecer la relación entre dos
tablas
 El modelo lógico es muy similar al modelo físico, la diferencia
radica en que en el físico deben definirse los tipos y tamaños de
los diversos CAMPOS (ATRIBUTOS) correspondientes a cada
tabla, mientras que en el modelo lógico solo se listan los
ATRIBUTOS (CAMPOS) de cada tabla
 Se recomienda que todas las claves (tanto PRIMARIAS como
FORANEAS) sean de tipo numérico (INT), ya que esto acelera las
búsquedas y minimiza considerablemente la posibilidad de errores
de parte del usuario (especialmente por el uso inadecuado de
mayúsculas, minúsculas, caracteres especiales y acentuación)

El resumen del MODELO FÍSICO resultante sería:


ENTIDADES ATRIBUTOS
Alumno Id_Alumno (*) INT
Nombre VARCHART(20)
Apellido VARCHART(20)
MODELO FISICO DE LA BD ELABORADO USANDO WORKBENCH NIVEL I – CLASE Nº 02

REQUERIMIENTOS DE ALMACENAMIENTO
Cada tipo de datos tiene un valor especifico (tamaño en disco o
memoria) el cual puede ser utilizado para calcular (en forma
aproximada) los recursos consumidos por la base de datos

CONFIGURACION DEL EQUIPO BASE


SERVIDOR: MySQL
INTERFACE: WORKBENCH
USUARIO: root (DBA por defecto)
PASSWORD: (ninguno por defecto)

CONFIGURACION DETALLADA DE MySQL


1) TIPO DE PC
a) DEVELOPER (Desarrollador – Prueba)
b) SERVER (Servidor – Mixto)
c) DEDICATED (Dedicado – Solo MySQL)
2) TIPO DE BD
a) MULTIFUNCIONAL (Lectura y Escritura)
b) TRANSACCIONAL (Solo Lectura)
c) NO TRANSACCIONAL (Solo Escritura)
3) INNODB TABLESPACE SETTINGS: Ubicación o ruta de la BD
(Archivo Fisico)
a) UNIDAD DE DISCO
b) CARPETA DESTINO
4) INSTANCE (Concurrencia)
a) DECISION SUPPORT (Automatico)
b) ONLINE TRANSACCION PROCESSING
c) MANUAL
5) CONFIGURACION DE RED: Si tiene el firewall activo, recuerde
añadir la excepcion correspondiente
a) ENABLE TCP/IP NETWORKING
i) NUMERO DE PUERTO:
(1) 3306 (por defecto)
(2) 3307 (Asignado por usuario)
ii) AÑADOR EXCEPCION AL FIREWALL: SI
b) ENABLE STRICT MODE
6) JUEGO DE CARACTERES
a) STANDARD (Normal)
b) BEST SUPPORT (Automatico)
c) MANUAL
7) INSTALAR SERVICIO DE WINDOWS
a) NOMBRE DEL SERVICIO: MySQL
i) INICIAR AUTOMATICAMENTE: SI
8) MODIFICAR SEGURIDAD USO DE WORKBENCH
a) NEW ROOT PASSWORD: (CLAVE) Este programa presenta tres secciones:
b) CONFIRMAR: (REPETIR CLAVE)
c) ACTIVAR ACCESO A MAQUINA REMOTA: NO
9) PRUEBA DE EJECUCION
a) El sistema debe dar como correctos los 4 aspectos indicados
en esta pantalla
b) Si hay problemas y se requiere borrar completamente la
configuracion debera:
i) Activar las opciones requeridas para ver archivos ocultos:
(1) Abrir una carpeta (cualquiera)
(2) Seleccionar el menu HERRAMIENTAS
(3) Seleccionar OPCIONES DE CARPETA
(4) Seleccionar la pertaña VER
(5) Seleccionar la opcion MOSTRAR TODOS LOS
ARCHIVOS Y CARPETAS OCULTOS (es la quinta
de arriba hacia abajo)
(6) Desmarcar la opcion OCULTAR ARCHIVOS
PROTEGIDOS DEL SISTEMA OPERATIVO (es la
quinta de abajo hacia arriba)
ii) Acceder a la ruta: C:\DOCUMENTS AND
SETTINGS\ALL USERS\DATOS DE
PROGRAMA\MYSQL y borrar su contenido, a fin de
resetear todos los datos de configuracion del MySQL
iii) Configurar nuevamente el programa (No es necesario
reinstalarlo)
NOTA: En caso de tener desactivado el firewall, la instalacion dara
una advertencia (al no poder aplicar la excepcion solicitada) pero no
se preocupe, si los 4 aspectos dan OK no hay problema, en cambio si
alguno de los ítems queda en rojo hay que revisar ya que la
configuración habrá fallado

 SQL DEVELOPMENT: Permite conectarse a una BD, ejecutar


Consultas, Manipular Objetos
 DATA MODELING: Permite manipular modelos, realizar
ingeniería inversa
 SERVER ADMINISTRATION: Configurar el servidor de BD y las
cuentas de usuarios
(1) STANDARD (TCP/IP)
USO DE LA SECCIÓN 2: DATA MODELING (2) LOCAL SOCKET
Sus opciones son: (3) STANDARD TCP/IP OVER SSH
 OPEN EXISTING EER MODEL: Abrir modelo existente (Permite iii) HOSTNAME: LOCALHOST
cargar un modelo E/R desde un archivo guardado) iv) PUERTO. 3307
 CREATE NEW EER MODEL: Crear nuevo modelo E/R v) USER NAME:
 CREATE EER MODEL FROM EXISTING DATA BASE: Generar (1) root (por defecto)
un modelo E/R a partir de una base de datos existente (2) Usuario (suministrado por DBA)
 CREATE EER MODEL FROM SQL SCRIPT: Crear modelo E/R a vi) PASSWORD: (por defecto en blanco ó con el que se
partir de un archivo SQL existente coloco al configurar MySQL)
(1) STORE IN VAULT (Guardar)
En esta sección el trabajo consiste principalmente en dibujar el (2) CLEAR (BORRAR)
modelo, para ello contamos con objetos predeterminados, hay que vii) DEFAULT SCHEMA (BD predeterminada – principal –
tener mucho cuidado con la definición de las columnas (Atributos – por defecto)
Campos) y establecer correctamente las relaciones entre tablas c) PRUEBA DE CONEXIÓN A LA BD: Los tres ítems deben dar
correctos
Una vez creado el modelo podemos exportarlo para crear el archivo d) ESPECIFICAR SISTEMA OPERATIVO:
SQL capaz de generar la base de datos correspondiente, se i) OPERATIVE SYSTEM: WINDOWS
recomienda para facilitar su lectura presionar COPY TO CLIPBOARD ii) MySQL INSTALLATION TYPE: WINDOWS (MySQL 5.1
(guardar en portapapeles), luego abrir el block de notas y pegar la X86)
información guardándola finalmente con la extensión SQL e) PROBAR CONFIGURACION DEL HOST: 2 items OK
f) REVISION DE PARAMETROS: SIGUIENTE
USO DE LA SECCIÓN 3: SERVER ADMINISTRATION g) CREAR PERFIL DE LA INSTANCIA: nombre@servidor
Sus opciones son: (Ejemplo: prueba@localhost)
 SERVER ADMINISTRATION: Manipular servidor de BD existente
(Permite cargar una instancia de BD desde un archivo guardado) En server administration hacer doble click en el servidor creado para
 NEW SERVER INSTANCE: Crear nuevo servidor de BD acceder a la interface de administración, allí encontrara 7 pestañas,
(Instancia) entre ellas:
 MANAGE IMPORT / EXPORT: Generar un respaldo de la BD o  STARTUP: Permite Detener e Iniciar el Servidor
cargar BD a partir de respaldo  CONFIGURATION: Permite modificar los parámetros del servidor
 MANAGE SECURITY: Manipulacion de cuentas y asignación de  ACCOUNTS: Permite manipular los usuarios de la BD
privilegios o ACCESO AL SERVIDOR
 MANAGE SERVER INSTANCES: Configurar servidor de BD  Add Account: Crear nuevo usuario
existente (Añadir, modificar, borrar)  Remove: Eliminar Usuario (Seleccionar antes)
 Para modificar un usuario hay que seleccionarlo
CREACION DE NUEVA INSTANCIA  LOGIN: Nombre de usuario, Password y confirmación,
1) SERVER ADMINISTRATION Limite de conectividad (%)
2) NEW SERVER INSTANCE  ROL ADMINISTRATIVO: Conjunto predeterminado de
a) HOST MACHINE privilegios
i) LOCALHOST (IP LOCAL – 127.0.0.1)  Limites de la cuenta:
ii) REMOTE HOST (Suministrar IP) o max consultas (queries) = 10.000
iii) TAKE PARAMETERS FROM DB o max actualizaciones (updates) = 1.000
b) DB CONNECTION VALUES o max conexiones = 100
i) CONNECTION NAME: Nombre de la conexión o conexiones concurrentes (Simultaneas) = 10
ii) CONNECTION METHOD:  Presionar aplicar
Hasta aquí el usuario solo puede conectarse a la BD SQL DEVELOPMENT
o SCHEMA PRIVILEGIES (Privilegios sobre la BD) Este es el editor de consultas SQL
 Seleccionar Usuario (ejemplo: lrivas)
 Presionar ADD ENTRY (a la derecha en el medio)
 Seleccionar el servidor al que tendrá acceso el usuario
 ANY (%=TODOS)
 HOSTING MACHING 2
 SELECTED HOST (nombre del host)
 Seleccionar la BD (Schema) a los que tendrá acceso el
usuario
 ANY (%=TODOS)
 SCHEMAS MACHING 1
 SELECTED SCHEMA (nombre de la BD)
 Seleccionar los privilegios asignados al usuario (select,
insert, update,…) 3
 Presionar salvar cambios
 DATA DUMP: Permite importar/exportar datos. Las BD se pueden
guardar/cargar completas o solo las tablas seleccionadas.
Ademas, hay dos formatos: como carpeta (proyecto) con un
archivo por cada tabla y como archivo SQL único (completo)
o Export to disk (respaldar datos - guardar)
o Import from disk (recuperar datos - cargar)

IMPORTANTE: Recordar crear una nueva instancia por cada nuevo


usuario

DETERMINAR IP DE UN PC 1) En esta ventana se muestran las BD a las que tiene acceso el


INICIO  EJECUTAR  CMD  IPCONFIG usuario, asi como las tablas, funciones, procedimientos y vistas
Debiendo sustituir los valores mostrados por los suministrados por el que las conforman
sistema 2) En esta seccion se escriben las consultas SQL que se desean
VARIABLE VALOR aplicar a la BD activa (presionar CONTROL + ENTER para
DIRECCION IP 192.168.1.100 ejecutar la sentencia actual)
MASCARA DE SUB-RED 255.255.255.0 3) Aquí se muestra la estructura detallada de la BD y tambien los
PUERTA ENLACE PREDETERMINADA 192.168.1.1 resultados de las consultas ejecutadas
DETERMINAR EL MONBRE DE UN PC
COMENTARIOS EN MySQL
MI PC  PROPIEDADES  NOMBRE DE EQUIPO = PC
Es muy importante colocar informacion adicional a las sentencias
utilizadas (especialmente cuando son mas complejas) a fin de
CONEXIÓN A IP REMOTO CON WORKBENCH
Investigar mejorar su comprension

FORMATO EXPLICACION
/* TEXTO */ Comentario de N lineas
- - TEXTO Comentario de 1 linea
CLASIFICACION DE LAS SENTENCIAS SQL SINTAXIS PARA CREAR TABLA:
 DDL (DEFINICION DE DATOS) CREATE TABLE [IF NOT EXISTS] nombreDB.nombreTabla
 CREATE (CREAR) (nombreCampo1 tipoCampo1(tamañoCampo1) PRIMARY KEY,
 ALTER (MODIFICAR) nombreCampo2 tipoCampo2(tamañoCampo2) NOT NULL, … ,
 DROP (BORRAR) campoN tipoN(tamañoN) DEFAULT valor1);
 DML (MANIPULACION DE DATOS)
 INSERT (AÑADIR)  PRIMARY KEY: establece el campo a su izquierda como clave
 UPDATE (ACTUALIZAR) * principal
 DELETE (ELIMINAR) *  NOT NULL: convierte el campo a su izquierda en obligatorio
 DQL (CONSULTA DE DATOS)  DEFAULT: establece un valor inicial para el campo a su izquierda
 SELECT (MOSTRAR-CARGAR CAMPOS)  AUTO_INCREMENT: Hace que al ingresar un registro el
 FROM (TABLAS ORIGEN) contenido del campo numerico sea asignado automaticamente
 WHERE (CONDICION – FILTRO A VERIFICAR) igual al registro anterior mas 1

IMPORTANTE: Las clausulas UPDATE y DELETE siempre deben ir EJEMPLO: Crear para la BD traiorca una TABLA llamada usuario,
acompañadas de una sentencia WHERE (para evitar dañar datos por sus campos seran: contador clave principal con autoincremento,
error) ya que si no se especifica este parametro dichas clausulas idUsuario VARCHAR(10) obligatorio, clave INT no nulo, nivel INT
afectaran a TODOS LOS REGISTROS DE LA TABLA (que por defecto sera 0).

COMANDOS UTILES – MOSTRAR INFORMACION CREATE TABLE IF NOT EXISTS traiorca.usuario (contador INT NOT
(00-Mostrar Info.SQL) NULL PRIMARY KEY AUTO_INCREMENT, idUsuario
 Mostrar Bases de Datos existentes en el servidor: SHOW VARCHAR(10) NOT NULL, clave INT NOT NULL, nivel INT
DATABASES; DEFAULT 0);
 Activar una BD como actual (predeterminada): USE nombreBD; Tambien se puede crear una TABLA directamente desde el editor de
 Mostrar TABLAS existentes en la BD activa: SHOW TABLES; consultas del WORKBENCH, para ello hay que presionar boton
 Mostrar informacion de columnas (campos) pertenecientes a una derecho sobre la carpeta TABLES de la BD (en la ventana 1) y llenar
tabla existente: SHOW COLUMNS FROM traiorca.usuario; los datos requeridos

CLAUSULA CREATE (02-Clausula CREATE.SQL): IMPORTANTE: Recuerde actualizar periodicamente la ventana 1


Permite crear objetos nuevos de cualquier tipo (DATABASE, TABLE, para visualizar las modificaciones realizadas (Boton derecho
PROCEDURE, FUNCTION, TRIGGER, VIEW). La clausula IF NOT REFRESH ALL)
EXISTS evita que se produzca un error en caso de que el elemento
exista. De momento lo utilizaremos dos tipos: CLAUSULA ALTER
(03-ALTER-DROP.SQL):
SINTAXIS PARA CREAR BD: Permite modificar una tabla existente
CREATE DATABASE [IF NOT EXISTS] nombreDB;  ALTER TABLE nombreTabla [MODIFICADOR];
EJEMPLO: Crear una base de datos llamada traiorca.
MODIFICADOR EXPLICACION
CREATE DATABASE IF NOT EXISTS traiorca; ADD nombreCampo TipoCampo Añadir columna a la
(tamañoCampo); tabla
Tambien se puede crear una BD directamente desde el editor de DROP nombreCampo; Eliminar columna
consultas del WORKBENCH, para ello hay que presionar boton CHANGE nombreViejo nombreNuevo Cambiar nombre a
derecho en el espacio vacio de la ventana 1 y llenar los datos topoNuevo; columna
requeridos MODIFY nombreCampo tipoNuevo; Cambiar tipo a
columna
Para mostrar todos los campos en el orden original se usa el comodin
CLAUSULA DROP (*)
Permite eliminar un elemento existente
NIVEL 1 – CLASE Nº: 4
 DROP TABLE nombreTable;
 DROP DATABASE nombreDB; CONSULTAS SQL
 DROP VIEW nombreVista;
 SELECT campo1, …, campoN FROM tabla1, …, tablaX WHERE
NIVEL I – CLASE Nº: 3 condicion1 GROUP BY condicion2 ORDER BY condicion3;

MANEJO DE DATOS EN MySQL USO DE ALIAS PARA TABLAS:


El uso de alias (sobrenombres) para tablas tiene por finalidad
CLAUSULA INSERT principal hacer mas cortos los identificadores de las mismas,
(04-INSERT-UPDATE-DELETE.SQL) usandose por lo general la primera letra del nombre de la tabla
Permite añadir registros a una tabla (cuando no hay hotras tablas cuyos nombres comiencen por la misma
 INSERT [INTO] nombreTabla (campo1, …, campoN) VALUES letra) ó las primeras 2-3 letras cuando se producen coincidencias que
(valor1, …, valorN); pudieran generar confusion (ajemplo: alumno al, asignatura as, aula
Los valores pueden ser numericos, ‘cadenas’, expresiones ó default au)
 INSERT [INTO] nombreTabla SET campo1=valor1, …, campoN,  SELECT * FROM nombreTabla Alias;
valorN; EJEMPLO: SELECT * FROM traiorca.usuario t;

CLAUSULA UPDATE USO DE ALIAS PARA CAMPOS:


Permite modificar los registros de una tabla  SELECT campo1 AS alias1, …, campoN AS aliasN FROM
 UPDATE nombreTabla SET campo1=valor1, …, campoN=valorN nombreTabla;
WHERE condicion; EJEMPLO: SELECT usuario AS nombre, clave AS contraseña FROM
traiorca t;
CLAUSULA DELETE En el caso de los campos el uso de sobrenombres (alias) tiene como
Permite eliminar registros de una tabla funcion principal mejorar la apariencia de la salida generada por las
 DELETE FROM nombreTabla WHERE condicion; consultas, especialmente cuando provienen de calculos

IMPORTANTE: IMPORTANTE: Si se desea usar un alias de campo de una sola


 La sentencia UPDATE al igual que la sentencia DELETE siempre palabra se puede escribir normalmente, pero cuando se trata de alias
debe llevar la clausula WHERE a fin de evitar dañar los datos de mas de una palabra hay que usar comillas simples
la tabla (en caso contrario todos los registros serian alterados ó
borrados) Tambien es importante recordar que se pueden combinar los dos
 Para trabajar sin WHERE en sentencias UPDATE y DELETE (no tipos de alias en una misma sentencia
se recomienda): EDIT  PREFERENCES  SQL EDITOR  EJEMPLO: SELECT t.campo AS ‘Nombre a Mostrar’ FROM tabla t;
FORBID UPDATE/DELETE WITHOUT WHERE
IMPORTANTE: Es recomendable acostumbrarse a usar este tipo de
CLAUSULA SELECT sentencias ya que a la larga evitan muchos errores (sobretodo
Permite mostrar/cargar datos desde una base de datos cuando se tiene mas de una BD en el mismo equipo) ademas de que
 SELECT campo1, …, campoN FROM tabla WHERE condicion; facilita la comprension de las mismas
Para mostrar campos especificos en el orden deseado hay que
indicarlos RESPALDAR (GUARDAR) DATOS EN WORKBENCH
 SELECT * FROM nombreTabla;
1) SERVER ADMINISTRATION  LOWER(cad): Convierte la cadena a minusculas. EJEMPLO:
2) DATA DUMP cad=’HoLa’  ‘hola’
3) EXPORT TO DISK  UPPER(cad): Convierte la cadena a mayusculas. EJEMPLO:
4) SELECCIONAR BD A EXPORTAR cad=’HoLa’  ‘HOLA’
a) EN CASO DE REQUERIRLO HAGA CLICK SOBRE EL  LTRIM(cad): Elimina caracteres en blanco al principio de la
NOMBRE DE LA BD Y SELECCIONE TABLAS A cadena. EJEMPLO: cad=’ HoLa’  ‘HoLa’
EXPORTAR (esto es especialmente util en algunos casos en  LEFT(cad, num): Muestra una subcadena de num caracteres
los que no se desea exportar todo el contenido de la bd sino comenzando desde el principio de la cad. EJEMPLO: cad=’HoLa’;
solo algunas tablas especificas) num=3;  ‘HoL’
5) ESCOGER TIPO DE RESPALDO  RIGHT(cad, num): Muestra una subcadena de num caracteres
a) DUMP PROJECT FOLDER (Crea una carpeta con el nombre comenzando desde el final de la cad. EJEMPLO: cad=’HoLa’;
de la base de datos y dentro de ella cada tabla es guardada num=3;  ‘oLa’
como un archivo independiente)  SUBSTRING(cad, inicio, num): Muestra una subcadena de num
b) ARCHIVO AUTOCONTENIDO (Crea un anico archivo de tipo caracteres comenzando desde la posicion inicio de la cad.
SQL con toda la informacion de la BD) (Recomendado) EJEMPLO: cad=’HoLa’; inicio=2; num=2;  ‘oL’
6) SELECCIONAR UBICACIÓN DEL RESPALDO (ARCHIVO  CONCAT(cad1, cad2, …, cadN): Une varias cadenas. EJEMPLO:
DESTINO) cad1=’Hola’; cad2=’Todos’;  ‘HolaTodos’
7) PRESIONAR START EXPORT
USO DE LIKE PARA REALIZAR BUSQUEDAS
RESTAURAR (CARGAR) DATOS EN WORKBENCH (COMPARACION POR APROXIMACION)
SINTAXIS: expresion1 LIKE expresion2;
1) SERVER ADMINISTRATION expresion1 es el campo (variable) a verificar
2) DATA DUMP expresion 2 es el valor de muestra (patron) usado para la
3) IMPORT FROM DISK comparacion
4) SELECCIONAR EL TIPO DE RESPALDO COMODINES VALIDOS
a. DUMP PROJECT FOLDER % Cualquier carácter (todo). Es equivalente al * usado
b. ARCHIVO AUTOCONTENIDO en las sentencias select
5) SELECCIONAR UBICACIÓN DEL RESPALDO (ARCHIVO (porcentaje)
ORIGEN) _ (guion Permite sustituir un carácter desconocido
6) PRESIONAR START IMPORT (cualquiera)
bajo)
CONSULTA MULTITABLA
% _
MySQL permite realizar consultas donde se unan los datos de
diversas tablas, para ello debera existir un campo que sirva para Simb Significado Simb Significado
crear el vinculo entre ellas %a Que terminen en A _ _a Palabra de 3 letras con
A al final
SELECT * FROM bd.tabla1 t1, bd.tabla2 t2 WHERE t1.campoRef = a% Que comienzen con A a_ _ Palabra de 3 letras con
t2.campoRef; A al principio
%a% Que tengan A _a_ Palabra de 3 letras con
COMANDOS UTILES A en medio
 LIMIT N: Establece la cantidad de registros que se mostraran en _ _a% Palabra de N letras con A en la tercera pocision
la salida de la consulta
IMPORTANTE: La clausula SELECT no modifica las tablas, solo
permite cargar-visualizar los datos existentes en ellas
FUNCIONES PARA CADENAS DE CARACTERES
FUNCIONES MATEMATICAS MySQL  MONTH(DATE); Numero de Mes (1-12)
Las siguientes funciones solo pueden ser usadas en el select (donde  MONTHNAME(DATE); Nombre del mes
se escriben los campos a mostrar) nunca en el WHERE. Su resultado  DAY(DATE); Numero del dia del mes (1-31)
es un unico valor numerico  DAYOFWEEK(DATE); Numero de dia de la semana (1-7)
 MAX(expresion): Muestra el valor maximo de un conjunto de datos  LAST_DAY(DATE); Numero de dias que tiene el mes (28-31)
numericos  HOUR(TIME); Hora (0-23)
 MIN(expresion): Muestra el valor minimo de un conjunto de datos  MINUTE(TIME); Minutos (0-59)
numericos  DATE_FORMAT(DATE, FORMAT); Permite especificar el formato
 AVG(expresion): Calcula-Muestra el valor del promedio de un de visualizacion de la fecha/hora
conjunto de datos numericos
 SUM(expresion): Totaliza (suma) los valores de un conjunto de FORMATO DESCRIPCION
datos numericos %e Dia del mes (1-31)
 COUNT(*): Cuenta la cantidad de registros existentes en la tabla, %c Numero de mes (1-12)
basado en la condicion existente en la clausula where de la %m Numero de mes (01-12)
sentencia actual %h Hora (00-23)
%p AM-PM
NIVEL I – CLASE Nº: 5 %i Minutos (00-59)
%y Año (dos digitos)
FUNCIONES DE COMPARACION %Y Año (cuatro digitos)
(Se usan en el where) SUB-CONSULTA
 IS NULL (El campo esta vacio). EJEMPLO: SELECT * FROM
 IN: Muestra valores que esten presentes en la lista
tabla WHERE campo IS NOT NULL;  NOT IN: Muestra valores que no esten presentes en la lista
 IS NOT NULL (El campo no esta vacio). EJEMPLO: SELECT *
FROM tabla WHERE campo IS NOT NULL;
EJEMPLO: La siguiente sentencia muestra los registros de la tabla1
 BETWEEN num1 AND num2 (entre num1 y num2, incluidos los
que se encuentren presentes en la tabla2: SELECT * FROM tabla1
extremos). EJEMPLO: SELECT * FROM tabla WHERE campo
WHERE campoRef IN (SELECT campoRef FROM tabla2)
BETWEEN 5 AND 9; CLAUSULA JOIN
 LIKE: Busca registros similares a la condicion dada. SELECT *
Se usa para realizar consultas multitabla
FROM tabla WHERE campo LIKE ‘%a’;
Cuando los nombres de los campos de referencia son diferentes la
(Se usan en el selet)
sintaxis de la clausula join a utilizar seria la siguiente:
 DISTINT: Busca registros diferentes (NO REPETIDOS) de la
 SELECT * FROM tabla1 JOIN tabla2 ON tabla1.campoX =
condicion especificada. EJEMPLO: SELECT DISTINT campo tabla2.campoY JOIN tabla3 ON tabla2.campoY = tabla3.campoZ,
FROM tabla; GROUP BY campo;
FUNCIONES DE FECHA Y HORA
Cuando los nombres de los campos de referencia son iguales la
 NOW( ); Fecha y hora actual; Es equivalente a:
sintaxis de la clausula join a ser usada seria:
CURRENT_TIMESTAMP( );
 SELECT * FROM tabla1 JOIN tabla2 USING (campoRef1) JOIN
 CURDATE( ); Solo fecha actual; Es equivalente a: tabla 3 USING (campoRef2) GROUP BY campo;
CURRENT_DATE( );
 CURTIME( ); Solo hora actual; Es equivalente a:
CLAUSULA UNION
CURRENT_TIME( );
Combina los resultados de diferentes consultas, siempre y cuando
EXTRAER VALORES ESPECIFICOS DE CAMPOS DE FECHA Y
los campos sean iguales
HORA
NIVEL II – CLASE Nº: 01 IF (expresion1, expresionVerdadero, expresionFalso); la expresion1
es el condicional del if principal, la expresionVerdadero puede ser una
JOIN: Muestra elementos comunes a las 2 tablas cadena, valor numerico, calculo u otro if (anidado) la cual se activa
EJEMPLO: SELECT * FROM tabla1 JOIN tabla2 USING (campoRef); solo cuando el resultado de la expresion1 es verdadero, la
expresionFalso puede ser una cadena, valor numerico, calculo u otro
TIPOS DE JOINS: if (anidado) la cual se activa solo cuando el resultado de la
expresion1 es falso
 Tabla1 [INNER | CROSS] JOIN tabla2 (condicion);
 Tabla1 STRAIGHT_JOIN tabla2; IFNULL (expresion1, expresion2); Si el valor de de prueba es
 Tabla1 LEFT [OUTER] JOIN tabla2 (condicion); Muestra todos los diferente de NULL (NOT NULL) se ejecuta la expresion1 en caso
elementos de la tabla1 y sus elementos comunes en la tabla2 contratio (NULL) se ejecuta la expresion2
 Tabla1 RIGHT [OUTER] JOIN tabla2 (condicion); Muestra todos
los elementos de la tabla2 y sus elementos comunes en la tabla1 NIVEL II – CLASE Nº: 03
 Tabla1 NATURAL JOIN tabla2; Requiere de la existencia de
campos de referencia con los mismos nombres en ambas tablas FUNCIONES Y PROCEDIMIENTOS ALMACENADOS
Son elementos que permiten mejorar la seguridad y rendimiento de la
IMPORTANTE: Recuerde que usamos ON cuando los nombres de los BD. Asi mismo, se caracterizan por su capacidad de reutilizacion
campos de referencia son diferentes y USING (ó NATURAL) solo
cuando los nombres de los campos de referencia sean iguales PERMISOS REQUERIDOS:
 CREATE ROUTINE
VISTAS (VIEW)  ALTER ROUTINE
 EXECUTE
CREAR VISTA:
Se recomienda que al crear una vista se coloque el siguiente prefijo CAMBIAR DELIMITADOR
para facilitar su reconocimiento Para que los procedimientos, funciones y similares funcionen
CREATE [OR REPLACE] VIEW vta_nombreVista [(campos)] AS correctamente, es necesario cambiar en forma temporal el delimitador
sentenciaSelect; usado por defecto en mysql, para ello usamos:
DELIMITER //
MOSTRAR VISTA: Aquí se creara la función o procedimiento
SELECT * FROM vta_nombreVista; //
DELIMITER ;
ALTER VIEW vta_nombreVista;
CREAR UN PROCEDIMIENTO
SHOW CREATE VIEW vta_nombreVista; Al crear un procedimiento se recomienda colocar la siguiente
abreviatura “proc_” al principio del nombre del mismo a fin de facilitar
DROP VIEW [IF EXISTS] nombreVista1 [,…, nombreVista2]; su reconocimiento
CREATE PROCEDURE proc_nombreProcedimiento ([parametros])
NIVEL II – CLASE Nº: 02 BEGIN
instrucciones;
FUNCIONES DE CONTROL DE FLUJO END;
CASE valor WHEN [valor1] THEN resultado1 [WHEN [valor2] THEN LLAMAR (CARGAR-EJECUTAR) PROCEDIMIENTO
resultado2] [ELSE resultadoX] END; CALL proc_nombreProcedimiento ([parametros]);
Se usa dentro del select ó del update
USO DE PARAMETROS
Para añadir un parámetro durante la creación de un procedimiento (o NIVEL II – CLASE Nº: 04
función) se usara la siguiente sintaxis:
IN nombreParametro tipo(tamaño) CICLOS: WHILE – REPEAT – LOOP – LEAVE
DISPARADORES: CREATE TRIGGER – DROP – USO
IMPORTANTE: Recuerde que para usar BEGIN – END; es necesario CURSORES: OPEN – FETCH – CLOSE – DECLARACION DE
cambiar temporalmente el delimitador CURSORES

MODIFICAR PROCEDIMIENTO EXISTENTE CONVERSION DE TIPOS


Para modificar un procedimiento es necesario primero eliminarlo
(DROP) y luego volverlo a crear ya que la clausula ALTER no CAST (expresión AS tipo);
funciona correctamente en estos casos (genera error) CONVERT (expresión, tipo);

ALTER {PROCEDURE | FUNCTION} nombreProcedimiento; TIPOS DE DATOS VALIDOS PARA CONVERSIÓN


CHAR, DATE, TIME, DATETIME, DECIMAL, SIGNED [INT],
ELIMINAR PROCEDIMIENTO UNSIGNED [INTEGER]
DROP PROCEDURE [IF EXISTS] nombreProcedimiento;
CICLO WHILE:
VARIABLES DE PROCEDIMIENTOS Primero verifica la condición y luego si esta se cumple ejecuta las
MySQL permite la creación y uso de variables locales dentro de sus instrucciones. Numero de Repeticiones: 0-N (este ciclo repite las
procedimientos y funciones instrucciones hasta que la condición sea falsa)
CREAR VARIABLE
DECLARE nombreVariable tipoVariable [DEFAULT valor]; WHILE condición DO instrucciones END WHILE;

ASIGNAR/MODIFICAR VALOR DE LA VARIABLE CICLO REPEAT:


SET nombreVariable = expresión; Primero ejecuta las instrucciones y luego verifica la condición si esta
NO se cumple repite el ciclo. Numero de Repeticiones: 1-N (este ciclo
IF PARA FUNCIONES repite las instrucciones hasta que la condición sea verdadera)
IF (condicion1) THEN (instrucciones1)
[ELSE IF (condicion2) THEN (instrucciones2)] REPEAT instrucciones UNTIL condición END REPEAT;
[ELSE (instruccionesN)]
END IF; CICLO LOOP
[etiquetaInicioLoop:] LOOP instrucciones END LOOP
CASE variable [etiquetaFinLoop];
WHEN valor1 THEN instrucciones1;
WHEN valorN THEN instruccionesN; LEAVE etiqueta:
ELSE instruccionesX; Para salir de un LOOP se usa LEAVE etiqueta (esta sentencia debe
END CASE; estar incluida entre las instrucciones del ciclo)

CASE DISPARADORES (TRIGGERS)


WHEN condicion1 THEN instrucciones1; Son funciones internas (asociadas a una tabla especifica) que se
WHEN condicion2 THEN instrucciones2; activan en forma automática (predeterminada) ANTES (BEFORE) o
END CASE; DESPUÉS (AFTER) de la ejecución de ciertos eventos SQL
(INSERT, UPDATE, DELETE). Requieren que el usuario tenga el
privilegio SUPER
CREAR TRIGGER: RESPALDAR DATOS USANDO MySQL DUMP
CREATE TRIGGER trg_nombreDisparador momentoActivacion mysqldump [opciones] BD [tablas];
eventoActivador ON nombreTabla FOR EACH ROW BEGIN mysqldump [opciones] –databases [BD1, …, BDX];
instrucciones END; Guardarlo como archivo .wsf
Mantenimiento de Tablas
IMPORTANTE: ANALIZE
 Aunque el Trigger esta vinculado directamente a una tabla CHECK
especifica, el nombre del disparador debe ser único para toda la OPTIMIZE
BD ALTER
 Recordar que siempre que usemos BEGIN – END es necesario REPAIR
cambiar el delimitador. CONVERTIR BD
 Un disparador puede invocar cualquier función existente en la BD MYSQL MIGRATION TOOLKIT

COMBINACIONES MOMENTO – EVENTO


(VALIDAS PARA UNA MISMA TABLA)
1. BEFORE INSERT: Antes de añadir un nuevo registro
2. AFTER INSERT: Despues de añadir un nuevo registro
3. BEFORE UPDATE: Antes de modificar un registro existente
4. AFTER UPDATE: Despues de modificar un registro existente
5. BEFORE DELETE: Antes de eliminar un registro existente
6. AFTER DELETE: Despues de eliminar un registro existente

Ademas de especificar el momento y evento que activaran el trigger


es necesario tener en consideración los tipos de acceso validos
(NEW – OLD) para cada evento
 INSERT  NEW.campo (ya que es un nuevo registro y no existen
datos anteriores)
 DELETE  OLD.campo (ya que elimina un registro y no existen
datos nuevos)
 UPDATE  NEW.campo, OLD.campo (ya que en este caso
existen tanto datos viejos como nuevos acerca del registro en
cuestión)

Mostrar triggers de tabla, botón derecho  alter table  triggers

NIVEL II – CLASE Nº: 05


CURSORES
Estructura de control usada para el recorrido y potencial
procesamiento de los registros de una consulta
Se pueden usar en procedimientos y funciones almacenadas

DECLARE cur_nombreCursor CURSOR FOR sentenciaSelect;


OPEN cur_nombreCursor;

Potrebbero piacerti anche