SlideShare una empresa de Scribd logo
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Unidad IV: El Lenguaje de Base de Datos SQL
Objetivo de la Unidad:
Al finalizar esta unidad de aprendizaje los alumnos comprenden e interpreta el lenguaje SQL en el
SGBD MYSQL
Desarrollo
La necesidad de una base de datos SQL para aplicaciones Web, llevaron a Michael “Monty” Widenius
y David Axmark, con la ayuda de Allan Larsson a desarrollar una base de datos comercial inspirada en
proyectos de código abierto (open source), MySQL comenzó a desarrollarse en 1994.
MySQL nace del intento de conectar el gestor mSQL a unas tablas usando rutinas de bajo nivel. Tras
unas primeras pruebas, vieron que mSQL no era lo suficientemente flexible para lo que necesitaban,
por lo que tuvieron que desarrollar nuevas funciones.
Esto resultó en una interfaz SQL totalmente compatible a mSQL. MySQL AB fue fundada en 1995
por 2 expertos en código abierto (open source), Michael “Monty” Widenius y David Axmark, con la
ayuda de Allan Larsson. El logo del MySQL (Delfín) fue escogido por los fundadores de MySQL AB,
el nombre del delfín “Sakila” fue seleccionado de una lista de sugerencias de usuarios, basados en un
concurso.
Características principales de MySQL
La siguiente es una lista que describe las principales características de MySQL separadas por categorías:
Internas y de portabilidad
 Escrito en C y C++.
 Está disponible en diferentes plataformas: Linux, Solaris, FreeBSB, Mac OS X, HP-UX, AIX, Windows,
etc.
 Disponibilidad de APIs para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby y Tcl.
 Aprovecha la potencia de sistemas multiprocesador, gracias a su implementación multihilo.
 Tablas Hash en memoria, son usadas como tablas temporales.
 El código de MySQL ha sido probado (Tested) con las principales herramientas del mercado.
Introducción
MySQL, es un Sistema de Administración de Base de Datos de código abierto, es licenciado bajo la
GPL (General Public License) de la GNU. Fue creada por la empresa sueca MySQL AB, que mantiene
el copyright (derechos de autor) del código fuente del servidor SQL, así como de la marca.
MySQL es el sistema administrador de base de datos más usado en el mundo del software libre,
debido a su gran rapidez, confiabilidad y facilidad de uso. Esto principalmente se debe, a que existen
infinidad de librerías y otras herramientas que permiten su uso a través de gran cantidad de lenguajes
de programación, además de su fácil instalación y configuración.
MySQL es parte de LAMP (Linux, Apache, MySQL, PHP / Perl / Python), fuente de rápido
crecimiento de software de código abierto para negocios. Muchas compañías están usando LAMP
como alternativa del costoso software propietario.
Objetivo de la guía
Dar a conocer el sistema gestor de base de datos MYSQL
Requerimientos.
Se debe contar con: Un (1) computador teniendo como mínimo el Sistema Operativo Libre
( Canaima/Ubuntu), SGBD MYSQL (phpmyadmin)
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
 El servidor está disponible como un programa separado para ser usado en un ambiente cliente/servidor.
Tipos de Columna
 Algunos de los tipos soportados son: Entero (INTEGER) con signo/sin-signo de 1, 2, 3,
 4, y 8 bytes de longitud, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE,
 TIME, DATETIME, TIMESTAMP, YEAR y tipos espaciales OpenGIS (Geographic Information Systems).
Seguridad
 Maneja un sistema de privilegios muy seguro, la verificación se hace basado en host.
Escalabilidad y Límites
 Maneja base de datos grandes. Su uso se extiende a más de 50 millones de registros. Se tiene conocimiento
de algunos usuarios que usan el servidor
 MySQL con más de 60,000 tablas y cerca de 5.000.000.000 de filas.
 Se permiten hasta 64 índices por tabla. Cada índice puede consistir de 1 a 16 columnas.
Conectividad
 Los clientes pueden conectarse al servidor MySQL usando TCP/IP sobre cualquier plataforma.
 El conector/ODBC (MyODBC) provee soporte a programas cliente que usen ODBC (Open Database
Connectivity).
 La interfase conector/J provee soporte para programas cliente java que usan JDBC.
Motor de Almacenamiento de MySQL
El motor de almacenamiento (storage engine) es el software que se encarga del manejo de los datos; es decir,
cómo se organizan y qué relaciones tienen, cómo se almacenan y de qué forma son accedidos, cómo se gestiona
el acceso de distintos usuarios y los bloqueos pertinentes, sus medidas de seguridad y la integridad.
MySQL soporta varios motores de almacenamiento que actúan como manejadores de tablas. Los motores de
almacenamiento de MySQL incluyen el manejo de tablas transaccionales y tablas no-transaccionales.
Motor de Almacenamiento MyISAM
MyISAM es el motor de almacenamiento por defecto en MySQL desde la serie 3.23.
Cada tabla MyISAM es almacenada en el disco en tres archivos. Los nombres de los archivos comienzan con el
nombre de la tabla y tienen una extensión que indica el tipo de archivo, un archivo .frm almacena la definición
de la tabla. Un archivo .myd almacena la data y el archivo .myi indica la información sobre los índices.
Para especificar explícitamente una tabla MyISAM, se indica a través de ENGINE o TYPE para indicar el tipo
de tabla:
CREATE TABLE t (i INT) ENGINE = MYISAM;
CREATE TABLE t (i INT) TYPE = MYISAM;
MyISAM es el motor de almacenamiento por defecto en MySQL, a menos que haya sido cambiado no es
necesario especificar ENGINE o TYPE para especificar una tabla MyISAM.
Motor de Almacenamiento InnoDB
InnoDB provee a MySQL un motor de almacenamiento con soporte a transacciones (propiedades ACID) con
capacidades para commit y rollback.
Algunas de las características más importantes de las tablas InnoDB son:
• InnoDB permite el bloqueo a nivel de registros, además ofrece un mecanismo de no bloqueo en caso de
sentencias SELECT. Estas características incrementan la posibilidad de manejo de usuarios concurrentes y
mejoran el desempeño del servidor.
• InnoDB soporta la definición de claves foráneas (FOREIGN KEY).
• Es posible que en una sentencia SELECT puedan mezclarse diferentes tipos de tablas.
• InnoDB ha sido diseñado para máximo rendimiento cuando se procesan grandes volúmenes de datos.
• Integrada completamente con el servidor MySQL, InnoDB mantiene su propio buffer pool para mantener
datos e índices en memoria principal. InnoDB almacena la información de las tablas e índices en espacios de
tablas (tablespace), los cuales consisten de un conjunto de archivos (a diferencia de ISAM y MyISAM donde
cada tabla es almacenada en un archivo distinto).
• No existe un límite de tamaño predefinido para las tablas InnoDB.
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
• InnoDB es usado en numerosos lugares a nivel de ambientes de producción, principalmente en sitios que
requieren alto desempeño.
• Para especificar explícitamente que se quiere trabajar con el motor InnoDB, se indica a través de las opciones
ENGINE o TYPE:
CREATE TABLE t3 (i INT) ENGINE = InnoDB;
CREATE TABLE t3 (i INT) TYPE = InnoDB;
• Es más seguro. Si ocurren problemas de hardware o MySQL falla, es posible recuperar la información ya sea
por una recuperación automática o desde un archivo log de transacciones de respaldo.
• Es posible combinar muchas sentencias y aceptar todas al mismo tiempo con la sentencia COMMIT (si el
autocommit está desactivado).
• Para ignorar los cambios realizados se ejecuta la sentencia ROLLBACK (si el autocommit está desactivado).
• Si una actualización falla todos los cambios son revertidos (en un ambiente no transaccional todos los cambios
hechos son permanentes).
• Los motores transaccionales proporcionan un mejor desempeño sobre tablas que tienen muchas
actualizaciones concurrentes.
Seguridad en MySQL
Para los administradores de base de datos la seguridad de la información es uno de los puntos más importantes.
Un nivel de seguridad aceptable puede lograrse bloqueando el acceso al servidor y a la base de datos a usuarios
no autorizados. Cuando se habla de seguridad de información, también se deben tomar medidas con los usuarios
que tienen autorización de acceder a la base de datos,. El mecanismo más usado es restringir el acceso a la
información, ya que ellos pueden causar daño a la información de manera accidental o maliciosa. Estos usuarios
podrían ejecutar sentencias SQL delete o update.
El sistema de seguridad en MySQL es referido como el Sistema de Privilegios de Acceso. Permite la
autenticación de los usuarios del servidor de MySQL y la verificación de las actividades de todos los usuarios
sobre el servidor y las bases de datos.
La seguridad en MySQL es aplicada en dos niveles: Nivel de servidor y Nivel de Base de Datos. Cuando un
usuario trata de acceder a una base de datos, primero se verifica si el usuario tiene privilegio para acceder al
servidor de base de datos, después el servidor verifica si el usuario tiene privilegios para conectarse a una base
de datos. La verificación de conexión al servidor y la verificación de conexión a la base de datos son dos
procesos que MySQL siempre lleva a cabo.
MySQL realiza la verificación de privilegios del servidor y la base de datos usando unas tablas del sistema
llamadas tablas de concesión. Estas tablas contienen toda la información necesaria para aplicar las políticas de
seguridad convenientes. Todos los host (otros computadores) y usuarios que se conectan al servidor MySQL
deben estar representados en las tablas de concesión.
Ejecución de Sentencias SQL con MySQL
Tipos de Datos en MySQL
Cada columna de una tabla debe ser de un tipo de dato, este tipo de dato va relacionado con el tipo definido en
el diseño de la base de datos y se debe ajustar a un óptimo uso del espacio de almacenamiento. A continuación
se describe los tipos de datos soportados por MySQL.
Los tipos de datos soportados por MySQL se pueden agrupar en tres grandes grupos:
 Tipo de dato Numérico.
 Tipo de dato Fecha.
 Tipo de dato Cadena.
Tipo de Datos Numéricos
tinyint: Es un entero de un byte con o sin signo, con signo el rango va desde -128 a 127, sin signo el rango de
valores es de 0 a 255.
tinyint(p) especifica la cantidad de dígitos permitidos, donde p es igual al número de dígitos a ser representados,
la máxima longitud son 3 dígitos.
TINYINT[(P)] [UNSIGNED]
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
smallint: Es un entero de dos bytes con o sin signo, con signo el rango de valores va desde -32768 a 32767, sin
signo el rango de valores es de 0 a 65535. smallint(p) especifica la cantidad de dígitos permitidos, donde p es
igual al número de dígitos a ser representados, la máxima longitud son 5 dígitos.
SMALLINT[(P)] [UNSIGNED]
mediumint: Es un entero de tres bytes con o sin signo, con signo el rango de valores va desde -8.388.608 a
8.388.607, sin signo el rango va desde 0 a16777215.
mediumint(p) especifica la cantidad de dígitos permitidos, donde p es igual al número de dígitos a ser
representados, la máxima longitud son 8 dígitos.
MEDIUMINT[(P)] [UNSIGNED]
integer, int: Es un entero de cuatro bytes con o sin signo, con signo el rango de valores va desde -2147483648 a
2147483647, sin signo el rango va desde 0 a 429.4967.295.
int(p) especifica la cantidad de dígitos permitidos, donde p es igual al número de dígitos a ser representados, la
máxima longitud son 10 dígitos.
INT[(P)] [UNSIGNED]
bigint: Es un entero de ocho bytes con o sin signo, con signo el rango de valores va desde -
9.223.372.036.854.775.808 a 9.223.372.036.854.775.807, sin signo el rango va desde 0 a
18.446.744.073.709.551.615.
bigint(p) especifica la cantidad de dígitos permitidos, donde p es igual al número de dígitos a ser representados,
la máxima longitud son 20 dígitos.
BIGINT[(P)] [UNSIGNED]
float: Maneja números con punto flotante de precisión simple, el rango de valores para una columna van desde -
3.402823466e+38 a -1.175494351e-38 para valores negativos, 0 y desde 1.175494351e-38 a 3.402823466e+38
para valores positivos.
float(p,m) donde m es el número de dígitos en la mantisa o la porción decimal y p es la precisión o la cantidad
de dígitos para todo el número.
FLOAT[(P,M)] [UNSIGNED]
xreal, double: Número en coma flotante de precisión doble. Los valores permitidos van desde -
1.7976931348623157e+308 a -2.2250738585072014e-308 para valores negativos, 0 y desde
2.2250738585072014e-308 a 1.7976931348623157e+308 para valores positivos.
double(p,m) donde m es el número de dígitos en la mantisa o la porción decimal y p es la precisión o la cantidad
de dígitos para todo el número.
DOUBLE[(P,M)] [UNSIGNED].
decimal (m,d), dec(m,d), numeric(m,d): Un valor decimal es un número decimal empaquetado con una coma
decimal implícita, el número se almacena como una cadena. decimal (m,d) donde m es la cantidad de dígitos
para todo el número y d es el número máximo de dígitos en la mantisa o la porción decimal.
DECIMAL[(M[,D])] [UNSIGNED]
Tipos de Datos Fecha
MySQL permite definir columnas de tablas que puedan almacenar fechas, sobre estos tipos de datos no hay
verificación estricta si una fecha es válida o no, simplemente el servidor MySQL comprueba que el mes está
comprendido entre 0 y 12, y que el día está comprendido entre 0 y 31.
date: Tipo fecha, el rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999, el formato de
almacenamiento es de año-mes-día AAAA-MM-DD.
datetime: Combinación de fecha y hora, el rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0
minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos, el formato de
almacenamiento es de año-mes-día horas:minutos:segundos AAAA-MM-DD HH:MM:SS.
timestamp: Combinación de fecha y hora, el rango va desde el 1 de enero de 1970 al año 2037. El formato de
almacenamiento depende del tamaño del campo:
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
time: Es una representación genérica de valores de tiempo expresado en horas, minutos y segundos, el rango de
horas va desde -838 horas, 59 minutos y 59 segundos a 838 horas, 59 minutos y 59 segundos. El formato de
almacenamiento es de 'hh:mm:ss'.
year: Tipo de dato usado para representar un año calendario, el rango de valores permitidos va desde el año
1901 al año 2155, el campo puede tener tamaño dos o tamaño 4, dependiendo de si se quiere almacenar el año
con dos o cuatro dígitos.
Tipos de cadena
El tipo de dato cadena encapsula a todos los tipos de datos usados para almacenar caracteres, cadenas, datos
alfanuméricos y valores NULL, adicionalmente todos los tipos cadena pueden almacenar cadenas vacías („‟),
cuando se inserta un valor en un tipo de datos cadena y éste excede al máximo permitido por el tipo el dato es
truncado.
char(n): Almacena una cadena de longitud fija, la cadena podrá contener desde 0 a 255 caracteres.
varchar(n): Almacena una cadena de longitud variable, la cadena podrá contener desde 0 a 255 caracteres.
text(n): Es un tipo de datos cadena usado para almacenar datos alfanuméricos, las consultas hechas sobre las
columnas text no son sensibles a mayúsculas y minúsculas, rango de valores para el n de 0 a 65535 caracteres.
blob(n): Es un tipo cadena usado para almacenar datos binarios, como por ejemplo archivos de imagen, video,
etc. El tipo de datos blob si es sensible a minúsculas y mayúsculas, el tamaño máximo para un blob es de 65535
bytes.
Sentencias DDL
CREATE TABLE: Esta sentencia es utilizada para crear una tabla y definir las columnas que contiene.
Cuando no se especifica el motor de almacenamiento, por defecto el manejador usa el MyISAM.
Es importante tener en cuenta que cuando una columna se define como clave primaria es obligatorio que antes
se haya especificado la restricción NOT NULL sobre la columna.
MySQL es sensible a minúsculas y mayúsculas con los nombres de las tablas, es importante mantener un
estándar en el nombramiento de estos objetos de base de datos.
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
CREATE TABLE cliente(
id_cliente INT NOT
NULL,
nombre VARCHAR(20),
PRIMARY KEY
(id_cliente)
) TYPE = INNODB;
Se define la tabla cliente la cual tiene dos columnas (id_cliente y nombre), siendo la columna
id_cliente la clave primaria, además se indica el motor de almacenamiento es INNODB (Soporte a
transacciones).
CREATE TABLE PRUEBA(
ID INT AUTO_INCREMENT
PRIMARY KEY,
PREGUNTA VARCHAR(20),
RESPUESTA VARCHAR(20)
)
AUTO_INCREMENT = 10;
AUTO_INCREMENT puede ser agregada como opción a una columna, si al insertar una fila se omite
el valor de la columna auto_incrementada o si se inserta un valor nulo para esa columna, su valor se
calcula automáticamente, tomando el valor más alto de esa columna y sumándole una unidad. Esto
permite crear, de una forma sencilla, una columna con un valor único para cada fila de la tabla., por
defecto esta inicializado en uno, aunque puede ser configurado, en el ejemplo anterior el valor inicial
para el auto_incremento es 10.
Índices
Para definir índices sobre una columna o sobre varias se usan indistintamente las opciones KEY o INDEX.
Índices Únicos
Para definir índices únicos sobre una columna o sobre varias se usa la opción UNIQUE.
La diferencia entre un índice único y uno normal es que en los únicos no se permite la inserción de filas con
valores repetidos. La excepción es el valor NULL, que sí se puede repetir.
Claves Foráneas
Para que una columna sea una clave foránea, esta necesita ser definida como tal al momento de crear la tabla. Se
pueden definir claves foráneas en cualquier tipo de tabla de MySQL, pero únicamente tienen sentido cuando se
usan tablas del tipo InnoDB, en los otros motores de almacenamiento no se verifica si una clave foránea existe
realmente en la tabla referenciada, y que no se eliminan filas de una tabla con una definición de clave foránea.
Para hacer esto hay que usar tablas InnoDB.
Ejemplo:
CREATE TABLE cliente (
id_cliente INT NOT NULL,
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
nombre VARCHAR(30),
PRIMARY KEY (id_cliente)
) TYPE = INNODB;
CREATE TABLE factura (
id_factura INT NOT NULL,
id_cliente INT NOT NULL,
monto DOUBLE,
PRIMARY KEY(id_factura),
FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente) ON DELETE CASCADE
) TYPE = INNODB;
Es obligatorio que la columna que contiene una definición de clave foránea esté indexada. Pero esto no debe ser
motivo de preocupación, ya que si no se realiza de forma explícita, MySQL lo hará de forma implícita.
Sintaxis completa para la definición de clave foránea es:
[CONSTRAINT nombre_restricción] FOREIGN KEY
(nombre_columna, ...
REFERENCES nombre_tabla (nombre_columna,
...)
[ON DELETE CASCADE ]
ALTER TABLE. La sintaxis es:
ALTER TABLE nombre_tabla ADD [CONSTRAINT
nombre_restricción] FOREIGN KEY(nombre_columna, ...)
REFERENCES otra_tabla(nombre_columna, ...)
[acciones_ON_DELETE];
ALTER TABLE: En muchas oportunidades es posible que se requiera cambiar la estructura de las tablas, estos
cambios suceden por muchas razones: Cambios en las reglas del negocio, actualizaciones de las aplicaciones,
etc. Con ALTER TABLE se puede dar respuestas a esas necesidades.
Sintaxis:
ALTER TABLE nombre_de_tabla
[ADD COLUMN (Definición_de_columna,..,..)]
[ADD INDEX [nombre_indice] (nombre_columna,..,..)]
[ADD PRIMARY KEY (nombre_columna,..,..)]
[ADD UNIQUE [nombre_indice] (nombre_columna,..,..)]
ADD [CONSTRAINT nombre_restricción] FOREIGN
KEY(nombre_columna, ...)
REFERENCES otra_tabla(nombre_columna, ...)
[acciones_ON_DELETE]
[DROP COLUMN nombre_columna]
[DROP PRIMARY KEY]
[DROP INDEX nombre_indice]
Sentencias DML
INSERT: Sentencia usada para insertar datos en una tabla:
Sintaxis:
INSERT INTO
nombre_tabla[(nombre_columna1,nombre_columna2,..,..)]
VALUES(valor1,valor2,..);
Es posible usar INSERT con SELECT para insertar muchas filas en una sola sentencia.
INSERT INTO nombre_tabla1 (col1,col2,...) SELECT
col1,col2,.. FROM nombre_tabla2;
Ejemplos:
INSERT INTO cliente values (1,'Juancho',54121);
INSERT INTO cliente values (2,
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
'Luis',45687.25),(3,'Pedro',5487.54),(4,'Pedro',54877.59),
(5,'Pedro',54875.25),(6,'Pablo',125478.25),(7,'Nelson',126
57.36),(8,'Nelson',54875.25) ,(9,'Jesus',5647.25)
,(10,'Jesus',5487) ,(11,'Miguel',45877)
,(12,'Miguelina',45877) ,(13,'Pedrito',458377);
INSERT INTO factura values(1,1,5878787.26);
UPDATE: La sentencia UPDATE es usada para actualizar valores de columnas de una tabla. La cláusula SET
indica cual o cuales columna(s) va(n) a ser modificada(s) y los nuevos valores. La cláusula WHERE es usada
para especificar las filas que van a ser afectadas. La cláusula LIMIT indica la cantidad máxima de filas
(registros) que van a ser actualizadas.
Sintaxis:
UPDATE nombre_tabla
SET nombrecol1=valor, [nombrecol2=valor, ...]
[WHERE Condición]
[LIMIT #];
Ejemplo:
UPDATE cliente
SET nombre='Luis'
Where id_cliente=1;
DELETE: La sentencia DELETE es usada para eliminar registros de una tabla.
Sentencias DQL
SELECT: La sentencia SELECT se usa para recuperar filas seleccionadas de una o más tablas.
Sintaxis:
SELECT [ALL | DISTINCT | DISTINCTROW]
nombrecolumna1,nombrecolumna2,....
FROM tabla1[,tabla2...]
WHERE condiciones
[GROUP BY (nombre_col)]
[HAVING condiciones]
[ORDER BY nombre_col]
[ASC | DESC]
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
[LIMIT contador]
Ejemplo:
SELECT * FROM cliente;
DISTINCT y DISTINCTROW: Son usadas para restringir la aparición de filas repetidas.
Ejemplo.
SELECT [DISTINCT | DISTINCTROW] nombre FROM cliente;
WHERE: La mejor utilidad de una base de datos es la posibilidad de hacer consultas en función de ciertas
condiciones. Generalmente, será de interés saber qué filas se ajustan a determinados parámetros. Esto se realiza
con la cláusula WHERE del SELECT.
Ejemplo:
SELECT * FROM cliente WHERE nombre='Luis';
ALIAS: El alias se usa como un nombre de columna en expresiones para la salida de la consulta, también es
posible definir alias a las tablas de la cláusula FROM.
Por ejemplo:
SELECT CONCAT(nombre,', ',salario) AS Nombre_Salario
FROM cliente ORDER BY Nombre_Salario;
El AS es opcional cuando se define un alias sobre una expresión o columna. El ejemplo anterior se puede
escribir como:
SELECT CONCAT(nombre,', ',salario) Nombre_Salario
FROM cliente ORDER BY Nombre_Salario;
Para definir alias a una referencia de una tabla se usará la siguiente sintaxis:
SELECT t1.col1, t2.col2 FROM tabla1 AS t1, tabla2 AS t2
WHERE t1.col1 = t2.col2;
GROUP BY: Es posible agrupar filas en la salida de una sentencia SELECT usando la cláusula GROUP BY.
Ejemplo:
SELECT id_cliente, nombre FROM cliente GROUP BY nombre;
La principal utilidad de la cláusula GROUP BY es que permite usar funciones de resumen o reunión (funciones
agregadas), tales como: COUNT(), MAX(), MIN(), SUM(), AVG(), etc.
Ejemplo:
SELECT COUNT(nombre) FROM cliente GROUP BY nombre;
HAVING: La cláusula HAVING permite hacer selecciones sobre datos agrupados.
Observe un ejemplo:
SELECT nombre, count(nombre) FROM cliente GROUP BY nombre HAVING
COUNT(nombre) >= 2;
La salida para esta consulta es el nombre del cliente y la cantidad de veces que aparece ese nombre, con la
condición de que sólo se mostrarán los nombres que estén repetidos más de dos veces.
ORDER BY: Es usada para dar ordenamiento a los datos recuperados en una sentencia
SELECT.
Las columnas seleccionadas pueden ser referenciadas usando nombres de columna, alias de columna o
posiciones de columna. Las posiciones de columna son enteros que empiezan en 1.
Para ordenar en orden inverso se añade la palabra clave DESC (descendente). Por defecto el orden es
ascendente, pero puede ser especificado explícitamente por la palabra clave ASC. El uso de posiciones de
columna no se aconseja, ya que esa sintaxis ha sido eliminada de SQL estándar.
Ejemplo:
SELECT * FROM cliente ORDER BY id_cliente, nombre;
LIMIT: La cláusula LIMIT permite limitar el número de filas recuperadas por la sentencia SELECT:
Ejemplo:
SELECT * FROM cliente LIMIT 3;
La salida de la anterior consulta sólo muestra tres registros.
Operador IN: El operador IN se usa para realizar comparaciones con una lista de valores.
SELECT * FROM cliente WHERE nombre = 'Jesus' OR nombre= 'Pedro' OR nombre='Nelson';
Esta sentencia puede ser reescrita como:
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
SELECT * FROM cliente WHERE nombre IN ('Jesus','Pedro','Nelson');
Operador BETWEEN: El operador BETWEEN se usa para comprobar si cierto valor está dentro de un rango
dado. Por ejemplo, asuma que se está interesado en encontrar a todos los clientes que gana salarios dentro un
rango de [$1,000 a $50,000] (ambos inclusive). ¿Cómo se escribe esta consulta?
SELECT id_cliente,nombre FROM cliente WHERE salario >= 1000 AND salario <= 50000;
La consulta anterior se puede escribir también usando el operador BETWEEN.
SELECT id_cliente,nombre FROM cliente WHERE salario BETWEEN 1000 AND 50000;
Operador IS: Los operadores IS NULL e IS NOT NULL son utilizados para verificar si una expresión
determinada es o no nula.
SELECT * FROM cliente WHERE nombre IS NOT NULL;
Operador LIKE: Se usa para hacer comparaciones entre cadenas y patrones. El resultado es verdadero (1) si la
cadena se ajusta al patrón, y falso (0) en caso contrario.
Los patrones son cadenas de caracteres en las que se pueden encontrar en cualquier posición los caracteres
especiales '%' y '_'.
„%‟ Es usado para hacer coincidir cualquier número de caracteres, incluso ninguno. „_‟ Es usado para hacer
coincidir con un único carácter.
SELECT * FROM cliente WHERE nombre LIKE 'Miguel%';
Consultas Multitablas
Los datos están distribuidos en diferentes tablas debido a la normalización. La normalización se realiza para
evitar la redundancia y para integrar los datos almacenados en distintas tablas. Cuando el usuario quiere obtener
información completa consultando más de una tabla, debe JOIN (UNIR) los datos de las distintas tablas.
. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
PRODUCTO CARTESIANO (CARTESIAN JOIN): El producto cartesiano de dos tablas son todas las
combinaciones de todas las filas de las dos tablas. Usando una sentencia SELECT se hace proyectando todos los
atributos de ambas tablas. Los nombres de las tablas se indican en la cláusula FROM separados con comas:
SELECT * FROM personal, division;
INNER JOIN: Las composiciones internas (INNER JOIN) se definen a partir de un producto cartesiano,
eliminado las filas que no cumplen la condición de composición.
Estas composiciones se denominan internas porque en la salida no aparece ninguna fila que no esté presente en
el producto cartesiano, es decir, la composición se hace en el interior del producto cartesiano de las tablas.
Ejemplo:
SELECT * FROM personal,division WHERE
personal.no_division=division.no_division;
Reescribiendo la sentencia anterior con JOIN:
SELECT <columnas> FROM tabla1 [INNER] JOIN tabla2 ON
<condiciones> | USING (Lista_columnas);
La coma que separa las tablas que se usan en una consulta y JOIN son equivalentes, y la palabra INNER es
opcional.
La condición en la cláusula ON puede ser cualquier expresión válida para una cláusula WHERE, de hecho, en la
mayoría de los casos, son equivalentes.
La cláusula USING permite usar una lista de atributos que deben ser iguales en las dos tablas a componer.
Si se desea elegir determinadas columnas de ambas tablas en lugar de seleccionar todas, se puede hacer esto
indicando en la sentencia SELECT el nombre(s) de las(s) columna(s) que se quiere mostrar.
Ejemplo:
SELECT division.no_division,nombre_division,ubicacion,
no_personal,nombre_personal,cargo,salario FROM personal INNER JOIN division ON
(personal.no_division=division.no_division);
En el ejemplo anterior la columna no_división existe en las dos tablas, por lo tanto, se debe colocar el nombre
de la tabla de donde se va a extraer la información. Para ello, existe una sintaxis alternativa que permite obtener
el mismo resultado sin tener que especificar las columnas en la condición.
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
SELECT * FROM personal NATURAL JOIN division;
Sub-consultas
Una sub-consulta es una sentencia SELECT dentro de otra sentencia MySQL da soporte para cualquier forma
de sub-consulta basado en el estándar SQL.
SELECT * FROM tabla1 WHERE col1 =(2:SELECT col1 FROM tabla2);
1 Consulta Padre. 2 Consulta Hija.
Existen dos tipos de sub-consultas: correlacionadas y no-correlacionadas, cuando la subconsulta hija hace
referencia a una o más columnas de la subconsulta padre se dice que es una subconsulta correlacionada, si no
existe referencia de las columnas entonces se dice que es no-correlacionada.
Ejemplo sub-consulta no-correlacionada:
SELECT * FROM personal WHERE no_division = (SELECT no_division FROM division WHERE
nombre_division='HARDWARE');
En el ejemplo anterior si la consulta interna retorna más de un valor resultaría en un error, en estos casos cuando
el resultado de la sub-consulta interna es un conjunto de datos utilizamos operador IN.
Ejemplo de sub-consulta correlacionada:
SELECT division.nombre_division FROM división WHERE EXISTS (SELECT no_division
FROM personal WHERE personal.no_division = division.no_division);
Autoevaluación
1.- MySQL mantiene las tablas temporales en memoria principal como__________.
a) Tablas MyISAM.
b) Tablas InnoDB.
c) Tablas Hash.
d) Ninguna de las anteriores
2.- MySQL fue escrito en ___________.
a) Java y ASM.
b) Pascal y Clipper
c) C y C++
d) Cobol y Fortran.
3.- MySQL puede manejar muchas tareas y requerimientos al mismo tiempo
a) Verdadero
b) Falso
4.- Para definir clave foránea, hay que usar el motor de almacenamiento MyISAM
a) Verdadero
b) Falso
5.- Cuando no se especifica el motor de almacenamiento, por defecto el manejador usa el InnoDB.
a) Verdadero
b) Falso
Referencias Bibliográficas
IBM Capacitación (2008) Base de Datos I

Más contenido relacionado

La actualidad más candente (18)

Bases distribuidas en mysql
Bases distribuidas en mysqlBases distribuidas en mysql
Bases distribuidas en mysql
 
Fundamentos microsoft sql server (T-Sql) (Parte I) – conceptos básicos sql e...
Fundamentos microsoft sql server (T-Sql)  (Parte I) – conceptos básicos sql e...Fundamentos microsoft sql server (T-Sql)  (Parte I) – conceptos básicos sql e...
Fundamentos microsoft sql server (T-Sql) (Parte I) – conceptos básicos sql e...
 
Ssis2008 r2 castellano
Ssis2008 r2 castellanoSsis2008 r2 castellano
Ssis2008 r2 castellano
 
MySQL
MySQLMySQL
MySQL
 
Sql server(1)
Sql server(1)Sql server(1)
Sql server(1)
 
Tipos de datos en MySQL Workbench
Tipos de datos en  MySQL  WorkbenchTipos de datos en  MySQL  Workbench
Tipos de datos en MySQL Workbench
 
Presentación1
Presentación1Presentación1
Presentación1
 
SQLite
SQLiteSQLite
SQLite
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Base de datos en sql
Base de datos en sqlBase de datos en sql
Base de datos en sql
 
F:\basesdatos teo2 sistemas_db
F:\basesdatos teo2 sistemas_dbF:\basesdatos teo2 sistemas_db
F:\basesdatos teo2 sistemas_db
 
Datos
DatosDatos
Datos
 
Yupa cesar bdii_t7
Yupa cesar bdii_t7Yupa cesar bdii_t7
Yupa cesar bdii_t7
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
SQLITE-CONCEPTO
SQLITE-CONCEPTOSQLITE-CONCEPTO
SQLITE-CONCEPTO
 
Tablespaces En Oracle
Tablespaces En OracleTablespaces En Oracle
Tablespaces En Oracle
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Base datos sql
Base datos sqlBase datos sql
Base datos sql
 

Similar a Sistema Gestor de Base de Datos MYSQL

Los gestores de base de datos
Los gestores de base de datosLos gestores de base de datos
Los gestores de base de datosEduardo Agila
 
Otoniel hernandez datashow - los gestores de base de datos
Otoniel hernandez   datashow - los gestores de base de datosOtoniel hernandez   datashow - los gestores de base de datos
Otoniel hernandez datashow - los gestores de base de datosomar5544
 
Otoniel hernandez datashow - los gestores de base de datos
Otoniel hernandez   datashow - los gestores de base de datosOtoniel hernandez   datashow - los gestores de base de datos
Otoniel hernandez datashow - los gestores de base de datosOtoniel Hernandez
 
Sgbd roberto escriche marcelo hualoto
Sgbd roberto escriche marcelo hualotoSgbd roberto escriche marcelo hualoto
Sgbd roberto escriche marcelo hualotoKenny24
 
Tres gestores de bases de datos
Tres gestores de bases de datosTres gestores de bases de datos
Tres gestores de bases de datossatakin_armando7
 
Los gestores de base de datos
Los gestores de base de datosLos gestores de base de datos
Los gestores de base de datosBetyllo Ocegueda
 
Bd eq.3 comparacion entre microsoft sql y my sql actividad extra
Bd eq.3 comparacion entre microsoft sql y my sql actividad extraBd eq.3 comparacion entre microsoft sql y my sql actividad extra
Bd eq.3 comparacion entre microsoft sql y my sql actividad extraKARY
 

Similar a Sistema Gestor de Base de Datos MYSQL (20)

Expo mysql
Expo mysqlExpo mysql
Expo mysql
 
My sql clase_1
My sql clase_1My sql clase_1
My sql clase_1
 
My SQL
My SQLMy SQL
My SQL
 
Mysql
MysqlMysql
Mysql
 
Los gestores de base de datos
Los gestores de base de datosLos gestores de base de datos
Los gestores de base de datos
 
Otoniel hernandez datashow - los gestores de base de datos
Otoniel hernandez   datashow - los gestores de base de datosOtoniel hernandez   datashow - los gestores de base de datos
Otoniel hernandez datashow - los gestores de base de datos
 
Otoniel hernandez datashow - los gestores de base de datos
Otoniel hernandez   datashow - los gestores de base de datosOtoniel hernandez   datashow - los gestores de base de datos
Otoniel hernandez datashow - los gestores de base de datos
 
Sgbd roberto escriche marcelo hualoto
Sgbd roberto escriche marcelo hualotoSgbd roberto escriche marcelo hualoto
Sgbd roberto escriche marcelo hualoto
 
Historiade mysql
Historiade mysqlHistoriade mysql
Historiade mysql
 
Tres gestores de bases de datos
Tres gestores de bases de datosTres gestores de bases de datos
Tres gestores de bases de datos
 
MySQL - Guillermo Jiménez
MySQL - Guillermo JiménezMySQL - Guillermo Jiménez
MySQL - Guillermo Jiménez
 
Sistemas de g base de datos
Sistemas de g base de datosSistemas de g base de datos
Sistemas de g base de datos
 
Sistemas de Gestion de Base de Datos
Sistemas de Gestion de Base de DatosSistemas de Gestion de Base de Datos
Sistemas de Gestion de Base de Datos
 
Gbd2
Gbd2Gbd2
Gbd2
 
My sql server
My sql serverMy sql server
My sql server
 
Los gestores de base de datos
Los gestores de base de datosLos gestores de base de datos
Los gestores de base de datos
 
Tema LOS SGBD O DBMS.pptx
Tema LOS SGBD O DBMS.pptxTema LOS SGBD O DBMS.pptx
Tema LOS SGBD O DBMS.pptx
 
Bd eq.3 comparacion entre microsoft sql y my sql actividad extra
Bd eq.3 comparacion entre microsoft sql y my sql actividad extraBd eq.3 comparacion entre microsoft sql y my sql actividad extra
Bd eq.3 comparacion entre microsoft sql y my sql actividad extra
 
My sql
My sqlMy sql
My sql
 
trabajo numero 3
trabajo numero 3trabajo numero 3
trabajo numero 3
 

Más de lissette_torrealba (20)

Guia reportes
Guia reportesGuia reportes
Guia reportes
 
Guiajquery
GuiajqueryGuiajquery
Guiajquery
 
Plan de evaluación proyecto i 2 teoría
Plan de evaluación proyecto i 2 teoríaPlan de evaluación proyecto i 2 teoría
Plan de evaluación proyecto i 2 teoría
 
Plan de evaluación proyecto i 2 metodología
Plan de evaluación proyecto i 2 metodologíaPlan de evaluación proyecto i 2 metodología
Plan de evaluación proyecto i 2 metodología
 
Plan de evaluacion proyecto i 2 práctica
Plan de evaluacion proyecto i 2 prácticaPlan de evaluacion proyecto i 2 práctica
Plan de evaluacion proyecto i 2 práctica
 
Guiajsvalidacion
GuiajsvalidacionGuiajsvalidacion
Guiajsvalidacion
 
Guiajs2
Guiajs2Guiajs2
Guiajs2
 
Rubrica 2021 electiva 2
Rubrica 2021 electiva 2Rubrica 2021 electiva 2
Rubrica 2021 electiva 2
 
Mapa Tecnopedagogia
Mapa TecnopedagogiaMapa Tecnopedagogia
Mapa Tecnopedagogia
 
Matriz DOFA lissette
Matriz DOFA lissetteMatriz DOFA lissette
Matriz DOFA lissette
 
Planevaluacionproyectoivpractica
PlanevaluacionproyectoivpracticaPlanevaluacionproyectoivpractica
Planevaluacionproyectoivpractica
 
Rubrica bd 2021
Rubrica  bd  2021Rubrica  bd  2021
Rubrica bd 2021
 
Proyecto formativo iv metodologia
Proyecto formativo iv metodologiaProyecto formativo iv metodologia
Proyecto formativo iv metodologia
 
Plan evaluacion teoria
Plan evaluacion teoriaPlan evaluacion teoria
Plan evaluacion teoria
 
Plan de Evaluacion
Plan de EvaluacionPlan de Evaluacion
Plan de Evaluacion
 
Ejemplos de interfaz grafica
Ejemplos de  interfaz grafica Ejemplos de  interfaz grafica
Ejemplos de interfaz grafica
 
Rubrica bd 2021
Rubrica bd 2021 Rubrica bd 2021
Rubrica bd 2021
 
Rubrica Programación II 2021
Rubrica Programación II 2021 Rubrica Programación II 2021
Rubrica Programación II 2021
 
Rup
RupRup
Rup
 
Documentosistema
DocumentosistemaDocumentosistema
Documentosistema
 

Último

Creación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webCreación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webinformatica4
 
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptxMódulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptxPabloPazmio14
 
Proyecto integrador Vereda Cujacal Centro.pptx
Proyecto integrador Vereda Cujacal Centro.pptxProyecto integrador Vereda Cujacal Centro.pptx
Proyecto integrador Vereda Cujacal Centro.pptxvanessaavasquez212
 
Diagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de BarbacoasDiagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de Barbacoasadvavillacorte123
 
2º conclusiones descriptivas educacion fisica (1).docx
2º conclusiones descriptivas educacion fisica (1).docx2º conclusiones descriptivas educacion fisica (1).docx
2º conclusiones descriptivas educacion fisica (1).docxRobertoCarlosFernand14
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalYasneidyGonzalez
 
True Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfTrue Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfMercedes Gonzalez
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfDemetrio Ccesa Rayme
 
Lección 1: Los complementos del Verbo ...
Lección 1: Los complementos del Verbo ...Lección 1: Los complementos del Verbo ...
Lección 1: Los complementos del Verbo ...odalisvelezg
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24auxsoporte
 
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxc3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxMartín Ramírez
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Proyecto Integrador 2024. Archiduque entrevistas
Proyecto Integrador 2024. Archiduque entrevistasProyecto Integrador 2024. Archiduque entrevistas
Proyecto Integrador 2024. Archiduque entrevistasELIANAMARIBELBURBANO
 
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docxPLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docxDavidAlvarez758073
 
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNETPRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNETCESAR MIJAEL ESPINOZA SALAZAR
 
Poemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºPoemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºCEIP TIERRA DE PINARES
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfsandradianelly
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONMasielPMP
 

Último (20)

Creación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webCreación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio web
 
El fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amorEl fundamento del gobierno de Dios. El amor
El fundamento del gobierno de Dios. El amor
 
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptxMódulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
Módulo No. 1 Salud mental y escucha activa FINAL 25ABR2024 técnicos.pptx
 
Proyecto integrador Vereda Cujacal Centro.pptx
Proyecto integrador Vereda Cujacal Centro.pptxProyecto integrador Vereda Cujacal Centro.pptx
Proyecto integrador Vereda Cujacal Centro.pptx
 
Sesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdfSesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdf
 
Diagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de BarbacoasDiagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de Barbacoas
 
2º conclusiones descriptivas educacion fisica (1).docx
2º conclusiones descriptivas educacion fisica (1).docx2º conclusiones descriptivas educacion fisica (1).docx
2º conclusiones descriptivas educacion fisica (1).docx
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
 
True Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfTrue Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdf
 
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdfAsistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
 
Lección 1: Los complementos del Verbo ...
Lección 1: Los complementos del Verbo ...Lección 1: Los complementos del Verbo ...
Lección 1: Los complementos del Verbo ...
 
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24CALENDARIZACION DEL MES DE JUNIO - JULIO 24
CALENDARIZACION DEL MES DE JUNIO - JULIO 24
 
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxc3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
 
Proyecto Integrador 2024. Archiduque entrevistas
Proyecto Integrador 2024. Archiduque entrevistasProyecto Integrador 2024. Archiduque entrevistas
Proyecto Integrador 2024. Archiduque entrevistas
 
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docxPLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
 
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNETPRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
PRESENTACION DE LA SEMANA NUMERO 8 EN APLICACIONES DE INTERNET
 
Poemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºPoemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6º
 
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfUn libro sin recetas, para la maestra y el maestro Fase 3.pdf
Un libro sin recetas, para la maestra y el maestro Fase 3.pdf
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
 

Sistema Gestor de Base de Datos MYSQL

  • 1. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Unidad IV: El Lenguaje de Base de Datos SQL Objetivo de la Unidad: Al finalizar esta unidad de aprendizaje los alumnos comprenden e interpreta el lenguaje SQL en el SGBD MYSQL Desarrollo La necesidad de una base de datos SQL para aplicaciones Web, llevaron a Michael “Monty” Widenius y David Axmark, con la ayuda de Allan Larsson a desarrollar una base de datos comercial inspirada en proyectos de código abierto (open source), MySQL comenzó a desarrollarse en 1994. MySQL nace del intento de conectar el gestor mSQL a unas tablas usando rutinas de bajo nivel. Tras unas primeras pruebas, vieron que mSQL no era lo suficientemente flexible para lo que necesitaban, por lo que tuvieron que desarrollar nuevas funciones. Esto resultó en una interfaz SQL totalmente compatible a mSQL. MySQL AB fue fundada en 1995 por 2 expertos en código abierto (open source), Michael “Monty” Widenius y David Axmark, con la ayuda de Allan Larsson. El logo del MySQL (Delfín) fue escogido por los fundadores de MySQL AB, el nombre del delfín “Sakila” fue seleccionado de una lista de sugerencias de usuarios, basados en un concurso. Características principales de MySQL La siguiente es una lista que describe las principales características de MySQL separadas por categorías: Internas y de portabilidad  Escrito en C y C++.  Está disponible en diferentes plataformas: Linux, Solaris, FreeBSB, Mac OS X, HP-UX, AIX, Windows, etc.  Disponibilidad de APIs para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby y Tcl.  Aprovecha la potencia de sistemas multiprocesador, gracias a su implementación multihilo.  Tablas Hash en memoria, son usadas como tablas temporales.  El código de MySQL ha sido probado (Tested) con las principales herramientas del mercado. Introducción MySQL, es un Sistema de Administración de Base de Datos de código abierto, es licenciado bajo la GPL (General Public License) de la GNU. Fue creada por la empresa sueca MySQL AB, que mantiene el copyright (derechos de autor) del código fuente del servidor SQL, así como de la marca. MySQL es el sistema administrador de base de datos más usado en el mundo del software libre, debido a su gran rapidez, confiabilidad y facilidad de uso. Esto principalmente se debe, a que existen infinidad de librerías y otras herramientas que permiten su uso a través de gran cantidad de lenguajes de programación, además de su fácil instalación y configuración. MySQL es parte de LAMP (Linux, Apache, MySQL, PHP / Perl / Python), fuente de rápido crecimiento de software de código abierto para negocios. Muchas compañías están usando LAMP como alternativa del costoso software propietario. Objetivo de la guía Dar a conocer el sistema gestor de base de datos MYSQL Requerimientos. Se debe contar con: Un (1) computador teniendo como mínimo el Sistema Operativo Libre ( Canaima/Ubuntu), SGBD MYSQL (phpmyadmin)
  • 2. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba  El servidor está disponible como un programa separado para ser usado en un ambiente cliente/servidor. Tipos de Columna  Algunos de los tipos soportados son: Entero (INTEGER) con signo/sin-signo de 1, 2, 3,  4, y 8 bytes de longitud, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE,  TIME, DATETIME, TIMESTAMP, YEAR y tipos espaciales OpenGIS (Geographic Information Systems). Seguridad  Maneja un sistema de privilegios muy seguro, la verificación se hace basado en host. Escalabilidad y Límites  Maneja base de datos grandes. Su uso se extiende a más de 50 millones de registros. Se tiene conocimiento de algunos usuarios que usan el servidor  MySQL con más de 60,000 tablas y cerca de 5.000.000.000 de filas.  Se permiten hasta 64 índices por tabla. Cada índice puede consistir de 1 a 16 columnas. Conectividad  Los clientes pueden conectarse al servidor MySQL usando TCP/IP sobre cualquier plataforma.  El conector/ODBC (MyODBC) provee soporte a programas cliente que usen ODBC (Open Database Connectivity).  La interfase conector/J provee soporte para programas cliente java que usan JDBC. Motor de Almacenamiento de MySQL El motor de almacenamiento (storage engine) es el software que se encarga del manejo de los datos; es decir, cómo se organizan y qué relaciones tienen, cómo se almacenan y de qué forma son accedidos, cómo se gestiona el acceso de distintos usuarios y los bloqueos pertinentes, sus medidas de seguridad y la integridad. MySQL soporta varios motores de almacenamiento que actúan como manejadores de tablas. Los motores de almacenamiento de MySQL incluyen el manejo de tablas transaccionales y tablas no-transaccionales. Motor de Almacenamiento MyISAM MyISAM es el motor de almacenamiento por defecto en MySQL desde la serie 3.23. Cada tabla MyISAM es almacenada en el disco en tres archivos. Los nombres de los archivos comienzan con el nombre de la tabla y tienen una extensión que indica el tipo de archivo, un archivo .frm almacena la definición de la tabla. Un archivo .myd almacena la data y el archivo .myi indica la información sobre los índices. Para especificar explícitamente una tabla MyISAM, se indica a través de ENGINE o TYPE para indicar el tipo de tabla: CREATE TABLE t (i INT) ENGINE = MYISAM; CREATE TABLE t (i INT) TYPE = MYISAM; MyISAM es el motor de almacenamiento por defecto en MySQL, a menos que haya sido cambiado no es necesario especificar ENGINE o TYPE para especificar una tabla MyISAM. Motor de Almacenamiento InnoDB InnoDB provee a MySQL un motor de almacenamiento con soporte a transacciones (propiedades ACID) con capacidades para commit y rollback. Algunas de las características más importantes de las tablas InnoDB son: • InnoDB permite el bloqueo a nivel de registros, además ofrece un mecanismo de no bloqueo en caso de sentencias SELECT. Estas características incrementan la posibilidad de manejo de usuarios concurrentes y mejoran el desempeño del servidor. • InnoDB soporta la definición de claves foráneas (FOREIGN KEY). • Es posible que en una sentencia SELECT puedan mezclarse diferentes tipos de tablas. • InnoDB ha sido diseñado para máximo rendimiento cuando se procesan grandes volúmenes de datos. • Integrada completamente con el servidor MySQL, InnoDB mantiene su propio buffer pool para mantener datos e índices en memoria principal. InnoDB almacena la información de las tablas e índices en espacios de tablas (tablespace), los cuales consisten de un conjunto de archivos (a diferencia de ISAM y MyISAM donde cada tabla es almacenada en un archivo distinto). • No existe un límite de tamaño predefinido para las tablas InnoDB.
  • 3. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba • InnoDB es usado en numerosos lugares a nivel de ambientes de producción, principalmente en sitios que requieren alto desempeño. • Para especificar explícitamente que se quiere trabajar con el motor InnoDB, se indica a través de las opciones ENGINE o TYPE: CREATE TABLE t3 (i INT) ENGINE = InnoDB; CREATE TABLE t3 (i INT) TYPE = InnoDB; • Es más seguro. Si ocurren problemas de hardware o MySQL falla, es posible recuperar la información ya sea por una recuperación automática o desde un archivo log de transacciones de respaldo. • Es posible combinar muchas sentencias y aceptar todas al mismo tiempo con la sentencia COMMIT (si el autocommit está desactivado). • Para ignorar los cambios realizados se ejecuta la sentencia ROLLBACK (si el autocommit está desactivado). • Si una actualización falla todos los cambios son revertidos (en un ambiente no transaccional todos los cambios hechos son permanentes). • Los motores transaccionales proporcionan un mejor desempeño sobre tablas que tienen muchas actualizaciones concurrentes. Seguridad en MySQL Para los administradores de base de datos la seguridad de la información es uno de los puntos más importantes. Un nivel de seguridad aceptable puede lograrse bloqueando el acceso al servidor y a la base de datos a usuarios no autorizados. Cuando se habla de seguridad de información, también se deben tomar medidas con los usuarios que tienen autorización de acceder a la base de datos,. El mecanismo más usado es restringir el acceso a la información, ya que ellos pueden causar daño a la información de manera accidental o maliciosa. Estos usuarios podrían ejecutar sentencias SQL delete o update. El sistema de seguridad en MySQL es referido como el Sistema de Privilegios de Acceso. Permite la autenticación de los usuarios del servidor de MySQL y la verificación de las actividades de todos los usuarios sobre el servidor y las bases de datos. La seguridad en MySQL es aplicada en dos niveles: Nivel de servidor y Nivel de Base de Datos. Cuando un usuario trata de acceder a una base de datos, primero se verifica si el usuario tiene privilegio para acceder al servidor de base de datos, después el servidor verifica si el usuario tiene privilegios para conectarse a una base de datos. La verificación de conexión al servidor y la verificación de conexión a la base de datos son dos procesos que MySQL siempre lleva a cabo. MySQL realiza la verificación de privilegios del servidor y la base de datos usando unas tablas del sistema llamadas tablas de concesión. Estas tablas contienen toda la información necesaria para aplicar las políticas de seguridad convenientes. Todos los host (otros computadores) y usuarios que se conectan al servidor MySQL deben estar representados en las tablas de concesión. Ejecución de Sentencias SQL con MySQL Tipos de Datos en MySQL Cada columna de una tabla debe ser de un tipo de dato, este tipo de dato va relacionado con el tipo definido en el diseño de la base de datos y se debe ajustar a un óptimo uso del espacio de almacenamiento. A continuación se describe los tipos de datos soportados por MySQL. Los tipos de datos soportados por MySQL se pueden agrupar en tres grandes grupos:  Tipo de dato Numérico.  Tipo de dato Fecha.  Tipo de dato Cadena. Tipo de Datos Numéricos tinyint: Es un entero de un byte con o sin signo, con signo el rango va desde -128 a 127, sin signo el rango de valores es de 0 a 255. tinyint(p) especifica la cantidad de dígitos permitidos, donde p es igual al número de dígitos a ser representados, la máxima longitud son 3 dígitos. TINYINT[(P)] [UNSIGNED]
  • 4. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba smallint: Es un entero de dos bytes con o sin signo, con signo el rango de valores va desde -32768 a 32767, sin signo el rango de valores es de 0 a 65535. smallint(p) especifica la cantidad de dígitos permitidos, donde p es igual al número de dígitos a ser representados, la máxima longitud son 5 dígitos. SMALLINT[(P)] [UNSIGNED] mediumint: Es un entero de tres bytes con o sin signo, con signo el rango de valores va desde -8.388.608 a 8.388.607, sin signo el rango va desde 0 a16777215. mediumint(p) especifica la cantidad de dígitos permitidos, donde p es igual al número de dígitos a ser representados, la máxima longitud son 8 dígitos. MEDIUMINT[(P)] [UNSIGNED] integer, int: Es un entero de cuatro bytes con o sin signo, con signo el rango de valores va desde -2147483648 a 2147483647, sin signo el rango va desde 0 a 429.4967.295. int(p) especifica la cantidad de dígitos permitidos, donde p es igual al número de dígitos a ser representados, la máxima longitud son 10 dígitos. INT[(P)] [UNSIGNED] bigint: Es un entero de ocho bytes con o sin signo, con signo el rango de valores va desde - 9.223.372.036.854.775.808 a 9.223.372.036.854.775.807, sin signo el rango va desde 0 a 18.446.744.073.709.551.615. bigint(p) especifica la cantidad de dígitos permitidos, donde p es igual al número de dígitos a ser representados, la máxima longitud son 20 dígitos. BIGINT[(P)] [UNSIGNED] float: Maneja números con punto flotante de precisión simple, el rango de valores para una columna van desde - 3.402823466e+38 a -1.175494351e-38 para valores negativos, 0 y desde 1.175494351e-38 a 3.402823466e+38 para valores positivos. float(p,m) donde m es el número de dígitos en la mantisa o la porción decimal y p es la precisión o la cantidad de dígitos para todo el número. FLOAT[(P,M)] [UNSIGNED] xreal, double: Número en coma flotante de precisión doble. Los valores permitidos van desde - 1.7976931348623157e+308 a -2.2250738585072014e-308 para valores negativos, 0 y desde 2.2250738585072014e-308 a 1.7976931348623157e+308 para valores positivos. double(p,m) donde m es el número de dígitos en la mantisa o la porción decimal y p es la precisión o la cantidad de dígitos para todo el número. DOUBLE[(P,M)] [UNSIGNED]. decimal (m,d), dec(m,d), numeric(m,d): Un valor decimal es un número decimal empaquetado con una coma decimal implícita, el número se almacena como una cadena. decimal (m,d) donde m es la cantidad de dígitos para todo el número y d es el número máximo de dígitos en la mantisa o la porción decimal. DECIMAL[(M[,D])] [UNSIGNED] Tipos de Datos Fecha MySQL permite definir columnas de tablas que puedan almacenar fechas, sobre estos tipos de datos no hay verificación estricta si una fecha es válida o no, simplemente el servidor MySQL comprueba que el mes está comprendido entre 0 y 12, y que el día está comprendido entre 0 y 31. date: Tipo fecha, el rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999, el formato de almacenamiento es de año-mes-día AAAA-MM-DD. datetime: Combinación de fecha y hora, el rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos, el formato de almacenamiento es de año-mes-día horas:minutos:segundos AAAA-MM-DD HH:MM:SS. timestamp: Combinación de fecha y hora, el rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo:
  • 5. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba time: Es una representación genérica de valores de tiempo expresado en horas, minutos y segundos, el rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de 'hh:mm:ss'. year: Tipo de dato usado para representar un año calendario, el rango de valores permitidos va desde el año 1901 al año 2155, el campo puede tener tamaño dos o tamaño 4, dependiendo de si se quiere almacenar el año con dos o cuatro dígitos. Tipos de cadena El tipo de dato cadena encapsula a todos los tipos de datos usados para almacenar caracteres, cadenas, datos alfanuméricos y valores NULL, adicionalmente todos los tipos cadena pueden almacenar cadenas vacías („‟), cuando se inserta un valor en un tipo de datos cadena y éste excede al máximo permitido por el tipo el dato es truncado. char(n): Almacena una cadena de longitud fija, la cadena podrá contener desde 0 a 255 caracteres. varchar(n): Almacena una cadena de longitud variable, la cadena podrá contener desde 0 a 255 caracteres. text(n): Es un tipo de datos cadena usado para almacenar datos alfanuméricos, las consultas hechas sobre las columnas text no son sensibles a mayúsculas y minúsculas, rango de valores para el n de 0 a 65535 caracteres. blob(n): Es un tipo cadena usado para almacenar datos binarios, como por ejemplo archivos de imagen, video, etc. El tipo de datos blob si es sensible a minúsculas y mayúsculas, el tamaño máximo para un blob es de 65535 bytes. Sentencias DDL CREATE TABLE: Esta sentencia es utilizada para crear una tabla y definir las columnas que contiene. Cuando no se especifica el motor de almacenamiento, por defecto el manejador usa el MyISAM. Es importante tener en cuenta que cuando una columna se define como clave primaria es obligatorio que antes se haya especificado la restricción NOT NULL sobre la columna. MySQL es sensible a minúsculas y mayúsculas con los nombres de las tablas, es importante mantener un estándar en el nombramiento de estos objetos de base de datos.
  • 6. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba CREATE TABLE cliente( id_cliente INT NOT NULL, nombre VARCHAR(20), PRIMARY KEY (id_cliente) ) TYPE = INNODB; Se define la tabla cliente la cual tiene dos columnas (id_cliente y nombre), siendo la columna id_cliente la clave primaria, además se indica el motor de almacenamiento es INNODB (Soporte a transacciones). CREATE TABLE PRUEBA( ID INT AUTO_INCREMENT PRIMARY KEY, PREGUNTA VARCHAR(20), RESPUESTA VARCHAR(20) ) AUTO_INCREMENT = 10; AUTO_INCREMENT puede ser agregada como opción a una columna, si al insertar una fila se omite el valor de la columna auto_incrementada o si se inserta un valor nulo para esa columna, su valor se calcula automáticamente, tomando el valor más alto de esa columna y sumándole una unidad. Esto permite crear, de una forma sencilla, una columna con un valor único para cada fila de la tabla., por defecto esta inicializado en uno, aunque puede ser configurado, en el ejemplo anterior el valor inicial para el auto_incremento es 10. Índices Para definir índices sobre una columna o sobre varias se usan indistintamente las opciones KEY o INDEX. Índices Únicos Para definir índices únicos sobre una columna o sobre varias se usa la opción UNIQUE. La diferencia entre un índice único y uno normal es que en los únicos no se permite la inserción de filas con valores repetidos. La excepción es el valor NULL, que sí se puede repetir. Claves Foráneas Para que una columna sea una clave foránea, esta necesita ser definida como tal al momento de crear la tabla. Se pueden definir claves foráneas en cualquier tipo de tabla de MySQL, pero únicamente tienen sentido cuando se usan tablas del tipo InnoDB, en los otros motores de almacenamiento no se verifica si una clave foránea existe realmente en la tabla referenciada, y que no se eliminan filas de una tabla con una definición de clave foránea. Para hacer esto hay que usar tablas InnoDB. Ejemplo: CREATE TABLE cliente ( id_cliente INT NOT NULL,
  • 7. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba nombre VARCHAR(30), PRIMARY KEY (id_cliente) ) TYPE = INNODB; CREATE TABLE factura ( id_factura INT NOT NULL, id_cliente INT NOT NULL, monto DOUBLE, PRIMARY KEY(id_factura), FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente) ON DELETE CASCADE ) TYPE = INNODB; Es obligatorio que la columna que contiene una definición de clave foránea esté indexada. Pero esto no debe ser motivo de preocupación, ya que si no se realiza de forma explícita, MySQL lo hará de forma implícita. Sintaxis completa para la definición de clave foránea es: [CONSTRAINT nombre_restricción] FOREIGN KEY (nombre_columna, ... REFERENCES nombre_tabla (nombre_columna, ...) [ON DELETE CASCADE ] ALTER TABLE. La sintaxis es: ALTER TABLE nombre_tabla ADD [CONSTRAINT nombre_restricción] FOREIGN KEY(nombre_columna, ...) REFERENCES otra_tabla(nombre_columna, ...) [acciones_ON_DELETE]; ALTER TABLE: En muchas oportunidades es posible que se requiera cambiar la estructura de las tablas, estos cambios suceden por muchas razones: Cambios en las reglas del negocio, actualizaciones de las aplicaciones, etc. Con ALTER TABLE se puede dar respuestas a esas necesidades. Sintaxis: ALTER TABLE nombre_de_tabla [ADD COLUMN (Definición_de_columna,..,..)] [ADD INDEX [nombre_indice] (nombre_columna,..,..)] [ADD PRIMARY KEY (nombre_columna,..,..)] [ADD UNIQUE [nombre_indice] (nombre_columna,..,..)] ADD [CONSTRAINT nombre_restricción] FOREIGN KEY(nombre_columna, ...) REFERENCES otra_tabla(nombre_columna, ...) [acciones_ON_DELETE] [DROP COLUMN nombre_columna] [DROP PRIMARY KEY] [DROP INDEX nombre_indice] Sentencias DML INSERT: Sentencia usada para insertar datos en una tabla: Sintaxis: INSERT INTO nombre_tabla[(nombre_columna1,nombre_columna2,..,..)] VALUES(valor1,valor2,..); Es posible usar INSERT con SELECT para insertar muchas filas en una sola sentencia. INSERT INTO nombre_tabla1 (col1,col2,...) SELECT col1,col2,.. FROM nombre_tabla2; Ejemplos: INSERT INTO cliente values (1,'Juancho',54121); INSERT INTO cliente values (2,
  • 8. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba 'Luis',45687.25),(3,'Pedro',5487.54),(4,'Pedro',54877.59), (5,'Pedro',54875.25),(6,'Pablo',125478.25),(7,'Nelson',126 57.36),(8,'Nelson',54875.25) ,(9,'Jesus',5647.25) ,(10,'Jesus',5487) ,(11,'Miguel',45877) ,(12,'Miguelina',45877) ,(13,'Pedrito',458377); INSERT INTO factura values(1,1,5878787.26); UPDATE: La sentencia UPDATE es usada para actualizar valores de columnas de una tabla. La cláusula SET indica cual o cuales columna(s) va(n) a ser modificada(s) y los nuevos valores. La cláusula WHERE es usada para especificar las filas que van a ser afectadas. La cláusula LIMIT indica la cantidad máxima de filas (registros) que van a ser actualizadas. Sintaxis: UPDATE nombre_tabla SET nombrecol1=valor, [nombrecol2=valor, ...] [WHERE Condición] [LIMIT #]; Ejemplo: UPDATE cliente SET nombre='Luis' Where id_cliente=1; DELETE: La sentencia DELETE es usada para eliminar registros de una tabla. Sentencias DQL SELECT: La sentencia SELECT se usa para recuperar filas seleccionadas de una o más tablas. Sintaxis: SELECT [ALL | DISTINCT | DISTINCTROW] nombrecolumna1,nombrecolumna2,.... FROM tabla1[,tabla2...] WHERE condiciones [GROUP BY (nombre_col)] [HAVING condiciones] [ORDER BY nombre_col] [ASC | DESC]
  • 9. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba [LIMIT contador] Ejemplo: SELECT * FROM cliente; DISTINCT y DISTINCTROW: Son usadas para restringir la aparición de filas repetidas. Ejemplo. SELECT [DISTINCT | DISTINCTROW] nombre FROM cliente; WHERE: La mejor utilidad de una base de datos es la posibilidad de hacer consultas en función de ciertas condiciones. Generalmente, será de interés saber qué filas se ajustan a determinados parámetros. Esto se realiza con la cláusula WHERE del SELECT. Ejemplo: SELECT * FROM cliente WHERE nombre='Luis'; ALIAS: El alias se usa como un nombre de columna en expresiones para la salida de la consulta, también es posible definir alias a las tablas de la cláusula FROM. Por ejemplo: SELECT CONCAT(nombre,', ',salario) AS Nombre_Salario FROM cliente ORDER BY Nombre_Salario; El AS es opcional cuando se define un alias sobre una expresión o columna. El ejemplo anterior se puede escribir como: SELECT CONCAT(nombre,', ',salario) Nombre_Salario FROM cliente ORDER BY Nombre_Salario; Para definir alias a una referencia de una tabla se usará la siguiente sintaxis: SELECT t1.col1, t2.col2 FROM tabla1 AS t1, tabla2 AS t2 WHERE t1.col1 = t2.col2; GROUP BY: Es posible agrupar filas en la salida de una sentencia SELECT usando la cláusula GROUP BY. Ejemplo: SELECT id_cliente, nombre FROM cliente GROUP BY nombre; La principal utilidad de la cláusula GROUP BY es que permite usar funciones de resumen o reunión (funciones agregadas), tales como: COUNT(), MAX(), MIN(), SUM(), AVG(), etc. Ejemplo: SELECT COUNT(nombre) FROM cliente GROUP BY nombre; HAVING: La cláusula HAVING permite hacer selecciones sobre datos agrupados. Observe un ejemplo: SELECT nombre, count(nombre) FROM cliente GROUP BY nombre HAVING COUNT(nombre) >= 2; La salida para esta consulta es el nombre del cliente y la cantidad de veces que aparece ese nombre, con la condición de que sólo se mostrarán los nombres que estén repetidos más de dos veces. ORDER BY: Es usada para dar ordenamiento a los datos recuperados en una sentencia SELECT. Las columnas seleccionadas pueden ser referenciadas usando nombres de columna, alias de columna o posiciones de columna. Las posiciones de columna son enteros que empiezan en 1. Para ordenar en orden inverso se añade la palabra clave DESC (descendente). Por defecto el orden es ascendente, pero puede ser especificado explícitamente por la palabra clave ASC. El uso de posiciones de columna no se aconseja, ya que esa sintaxis ha sido eliminada de SQL estándar. Ejemplo: SELECT * FROM cliente ORDER BY id_cliente, nombre; LIMIT: La cláusula LIMIT permite limitar el número de filas recuperadas por la sentencia SELECT: Ejemplo: SELECT * FROM cliente LIMIT 3; La salida de la anterior consulta sólo muestra tres registros. Operador IN: El operador IN se usa para realizar comparaciones con una lista de valores. SELECT * FROM cliente WHERE nombre = 'Jesus' OR nombre= 'Pedro' OR nombre='Nelson'; Esta sentencia puede ser reescrita como:
  • 10. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba SELECT * FROM cliente WHERE nombre IN ('Jesus','Pedro','Nelson'); Operador BETWEEN: El operador BETWEEN se usa para comprobar si cierto valor está dentro de un rango dado. Por ejemplo, asuma que se está interesado en encontrar a todos los clientes que gana salarios dentro un rango de [$1,000 a $50,000] (ambos inclusive). ¿Cómo se escribe esta consulta? SELECT id_cliente,nombre FROM cliente WHERE salario >= 1000 AND salario <= 50000; La consulta anterior se puede escribir también usando el operador BETWEEN. SELECT id_cliente,nombre FROM cliente WHERE salario BETWEEN 1000 AND 50000; Operador IS: Los operadores IS NULL e IS NOT NULL son utilizados para verificar si una expresión determinada es o no nula. SELECT * FROM cliente WHERE nombre IS NOT NULL; Operador LIKE: Se usa para hacer comparaciones entre cadenas y patrones. El resultado es verdadero (1) si la cadena se ajusta al patrón, y falso (0) en caso contrario. Los patrones son cadenas de caracteres en las que se pueden encontrar en cualquier posición los caracteres especiales '%' y '_'. „%‟ Es usado para hacer coincidir cualquier número de caracteres, incluso ninguno. „_‟ Es usado para hacer coincidir con un único carácter. SELECT * FROM cliente WHERE nombre LIKE 'Miguel%'; Consultas Multitablas Los datos están distribuidos en diferentes tablas debido a la normalización. La normalización se realiza para evitar la redundancia y para integrar los datos almacenados en distintas tablas. Cuando el usuario quiere obtener información completa consultando más de una tabla, debe JOIN (UNIR) los datos de las distintas tablas.
  • 11. . Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba PRODUCTO CARTESIANO (CARTESIAN JOIN): El producto cartesiano de dos tablas son todas las combinaciones de todas las filas de las dos tablas. Usando una sentencia SELECT se hace proyectando todos los atributos de ambas tablas. Los nombres de las tablas se indican en la cláusula FROM separados con comas: SELECT * FROM personal, division; INNER JOIN: Las composiciones internas (INNER JOIN) se definen a partir de un producto cartesiano, eliminado las filas que no cumplen la condición de composición. Estas composiciones se denominan internas porque en la salida no aparece ninguna fila que no esté presente en el producto cartesiano, es decir, la composición se hace en el interior del producto cartesiano de las tablas. Ejemplo: SELECT * FROM personal,division WHERE personal.no_division=division.no_division; Reescribiendo la sentencia anterior con JOIN: SELECT <columnas> FROM tabla1 [INNER] JOIN tabla2 ON <condiciones> | USING (Lista_columnas); La coma que separa las tablas que se usan en una consulta y JOIN son equivalentes, y la palabra INNER es opcional. La condición en la cláusula ON puede ser cualquier expresión válida para una cláusula WHERE, de hecho, en la mayoría de los casos, son equivalentes. La cláusula USING permite usar una lista de atributos que deben ser iguales en las dos tablas a componer. Si se desea elegir determinadas columnas de ambas tablas en lugar de seleccionar todas, se puede hacer esto indicando en la sentencia SELECT el nombre(s) de las(s) columna(s) que se quiere mostrar. Ejemplo: SELECT division.no_division,nombre_division,ubicacion, no_personal,nombre_personal,cargo,salario FROM personal INNER JOIN division ON (personal.no_division=division.no_division); En el ejemplo anterior la columna no_división existe en las dos tablas, por lo tanto, se debe colocar el nombre de la tabla de donde se va a extraer la información. Para ello, existe una sintaxis alternativa que permite obtener el mismo resultado sin tener que especificar las columnas en la condición.
  • 12. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba SELECT * FROM personal NATURAL JOIN division; Sub-consultas Una sub-consulta es una sentencia SELECT dentro de otra sentencia MySQL da soporte para cualquier forma de sub-consulta basado en el estándar SQL. SELECT * FROM tabla1 WHERE col1 =(2:SELECT col1 FROM tabla2); 1 Consulta Padre. 2 Consulta Hija. Existen dos tipos de sub-consultas: correlacionadas y no-correlacionadas, cuando la subconsulta hija hace referencia a una o más columnas de la subconsulta padre se dice que es una subconsulta correlacionada, si no existe referencia de las columnas entonces se dice que es no-correlacionada. Ejemplo sub-consulta no-correlacionada: SELECT * FROM personal WHERE no_division = (SELECT no_division FROM division WHERE nombre_division='HARDWARE'); En el ejemplo anterior si la consulta interna retorna más de un valor resultaría en un error, en estos casos cuando el resultado de la sub-consulta interna es un conjunto de datos utilizamos operador IN. Ejemplo de sub-consulta correlacionada: SELECT division.nombre_division FROM división WHERE EXISTS (SELECT no_division FROM personal WHERE personal.no_division = division.no_division); Autoevaluación 1.- MySQL mantiene las tablas temporales en memoria principal como__________. a) Tablas MyISAM. b) Tablas InnoDB. c) Tablas Hash. d) Ninguna de las anteriores 2.- MySQL fue escrito en ___________. a) Java y ASM. b) Pascal y Clipper c) C y C++ d) Cobol y Fortran. 3.- MySQL puede manejar muchas tareas y requerimientos al mismo tiempo a) Verdadero b) Falso 4.- Para definir clave foránea, hay que usar el motor de almacenamiento MyISAM a) Verdadero b) Falso 5.- Cuando no se especifica el motor de almacenamiento, por defecto el manejador usa el InnoDB. a) Verdadero b) Falso Referencias Bibliográficas IBM Capacitación (2008) Base de Datos I