Fundamentos Mysql
Fundamentos Mysql
Fundamentos Mysql
SERVER
Mysql Gestor de Base de Datos Open
Source: Caracteristicas Distintivas
Las siguientes características son implementadas únicamente por
MySQL:
•Múltiples motores de almacenamiento (MyISAM, Merge, InnoDB,
BDB, Memory/heap, MySQL Cluster, Federated, Archive, CSV,
Blackhole y Example en 5.x), permitiendo al usuario escoger la que
sea más adecuada para cada tabla de la base de datos.
SERVER
Mysql Gestor de Base de Datos Open
Source: Caracteristicas Generales
• Soporta gran cantidad de datos: MySQL Server tiene bases de
datos de hasta 50 millones de registros.
SERVER
Mysql Gestor de Base de Datos Open
Source: Arquitectura del Servidor
Podemos imaginar la arquitectura interna de MySQL dividida en tres
capas. Se trata de una división lógica, que no coincide necesariamente
con la división interna del código, pero ayuda a entender los
conceptos. Las tres capas son:
• Capa de Conexión: En la que reside la funcionalidad que
conecta MySQL con otros sistemas y lenguajes (APIs, sockets,
ODBC, etc.)
• Capa de Lógica: En la que reside la lógica para procesar
consultas SQL (sentencias, planificación, ejecución, cachés,
etc.)
• Capa de Almacenamiento: En la que reside la lógica para
almacenar y acceder a los datos de las tablas. Una
característica de MySQL es que puede utilizar distintos motores
de almacenamiento.
SERVER
Mysql Gestor de Base de Datos Open
Source: Arquitectura del Servidor
SERVER
Mysql Gestor de Base de Datos Open
Source: Motores de Almacenamiento
Al diseñar una base de datos con MySQL será necesario decidir qué
motores de almacenamiento se utilizaran. MySQL dispone, actualmente,
de los siguientes motores de almacenamiento:
•MyISAM: Es el motor por defecto. Es muy rápido pero no transaccional.
SERVER
Mysql Gestor de Base de Datos Open
Source: Motores de Almacenamiento
• CSV: Es una tabla que se almacena en un fichero de valores
separados por comas.
La decisión correcta depende en gran parte del uso futuro que tendrá la
base de datos, lo que suele ser difícil saberlo con exactitud durante el
diseño.
SERVER
El Cliente de MYSQL
Host: Especifica el ordenador donde está el servidor de bases de datos (host), es decir equipo donde
se encuentra MYSQL, por defecto llamado localhost.
Usuario: por defecto el usuario es root, es quien tiene los privilegios totales sobre los objetos
existentes del SGBD.
Parámetros "-h" y "-u" indican que los parámetros a continuación son, respectivamente, el nombre
del host y el usuario.
Parámetro "-p" indica que se debe solicitar una clave de acceso.
El Cliente de MYSQL
En versiones de MySQL anteriores a la 4.1.9 es posible abrir un
cliente de forma anónima sin especificar una contraseña. Pero esto es
mala idea, y de hecho, las últimas versiones de MySQL no lo permiten.
•Para los casos en los que se necesite una mayor precisión, utilice los
tipos enteros en lugar de los tipos de coma flotante (los errores de
redondeo afectan a los números de coma flotante).
Tipos de Datos en MYSQL
Tipos de Datos de Fecha y Hora
•TIMESTAMP: Contiene un valor del tipo timestamp. El rango está entre '1970-
01-01 00:00:00' y algún momento del año 2037. Desde MySQL 4.1,
TIMESTAMP se devuelve como una cadena con el formato 'AAAA-MM-DD
HH:MM:SS'. Para convertir este valor a un número, bastará con sumar el valor
0. Ya no se soportan distintas longitudes para estas columnas. Se puede
asignar fácilmente la fecha y hora actual a uno de estas columnas asignando el
valor NULL.
Tipo Descripcion
DATETIME AAAA-MM-DD HH:MM:SS desde
1000-01-01 00:00:00 a 9999-12-31 23:59:59.
DATE AAAA-MM-DD desde 1000-01-01 a 9999-12-31.
TIMESTAMP AAAAMMDDHHMMSS.
TIME HH:MM:SS.
YEAR AAAA.
Tipos de Datos en MYSQL
Tipos de Datos de Cadena
Cadenas de Caracteres
•Para limitar los contenidos de una columna a una opción, utilice ENUM.
|| INDEX
INDEX [nombre_index]
[nombre_index] (nombre_col_index,...)
(nombre_col_index,...)
|| [CONSTRAINT
[CONSTRAINT [símbolo]]
[símbolo]] UNIQUE
UNIQUE [INDEX]
[INDEX]
[nombre_index]
[nombre_index] [tipo_index]
[tipo_index] (nombre_col_index,...)
(nombre_col_index,...)
|| [FULLTEXT|SPATIAL]
[FULLTEXT|SPATIAL] [INDEX]
[INDEX] [nombre_index]
[nombre_index] (nombre_col_index,...)
(nombre_col_index,...)
|| [CONSTRAINT
[CONSTRAINT [símbolo]]
[símbolo]] FOREIGN
FOREIGN KEY
KEY
[nombre_index]
[nombre_index] (nombre_col_index,...)
(nombre_col_index,...) [definición_referencia]
[definición_referencia]
|| CHECK
CHECK (expr)
(expr)
DDL Lenguaje De Definicion De Datos:
CREATE TABLE
Para crear Índices: Existen tres tipos de índices:
• Claves Primarias: La sintaxis para definir claves primarias es:
definición_columnas | PRIMARY KEY (index_nombre_col,...).
Ejemplo:
Ejemplo:
CREATE TABLE telefonos3 (numero CHAR(12),
id INT NOT NULL,
KEY (id),
FOREIGN KEY (id) REFERENCES personas (id)
ON DELETE RESTRICT ON UPDATE CASCADE)
ENGINE=InnoDB;
DDL Lenguaje De Definicion De Datos:
CREATE TABLE
• Si se intenta borrar una fila de 'personas' con un determinado valor
de 'id', se producirá un error si existen filas en la tabla 'telefonos3'
con mismo valor en la columna 'id'. La fila de 'personas' no se
eliminará, a no ser que previamente eliminemos las filas con el
mismo valor de clave foránea en 'teléfonos3'.
Ejemplo:
DROP VIEW listado;
Query OK, 0 rows affected (0.75 sec)
Ejemplo:
DROP DATABASE prueba;
Query OK, 0 rows affected (0.75 sec)
•Al borrar la base de datos, desapareceran todas sus tablas asi como
cualquier objeto (vistas, consultas, procedimientos, usuarios) definidos en
ella.
•Se puede adicionar la palabra IF EXISTS para evitar recibir mensajes de
error si la base de datos no esta definida.
SHOW
SHOW CREATE
CREATE VIEW
VIEW nombre_vista
nombre_vista
DDL Lenguaje De Definicion De Datos:
SHOW CREATE TABLE
Muestra la sentencia CREATE TABLE que se utilizó para crear la tabla.
•Esta sentencia fue introducida en MySQL 5.0.1.
SHOW
SHOW CREATE
CREATE TABLE
TABLE nombre_tabla
nombre_tabla
Ejemplo:
mysql> SHOW CREATE TABLE clientes;
CREATE TABLE clientes (id int(11) NOT NULL AUTO_INCREMENT,
nomape varchar(60) NOT NULL,
fecnac date NOT NULL,
PRIMARY KEY (`id`))
ENGINE=InnoDB;
DML Lenguaje De Manipulación De Datos:
INSERT
INSERT inserta nuevos registros en una tabla existente.
La forma INSERT ... VALUES inserta registros basados en valores
explícitamente especificados.
La forma INSERT ... SELECT inserta registros seleccionados de otra
tabla o tablas.
INSERT
INSERT INTO
INTO <tabla>
<tabla> [(<lista
[(<lista de
de campos>)]
campos>)]
VALUES
VALUES (<lista
(<lista de
de valores>|<expresión
valores>|<expresión select>)
select>)
tabla: es la tabla en que los registros deben insertarse.
lista de campos: las columnas para las que el comando proporciona
valores. Si no especifica la lista de columnas los valores se pasaran en el
orden como muestra el DESCRIBE tabla.
lista de valores: son los valores que seran asociados a cada uno de los
campos de la tabla.
Ejemplo:
INSERT INTO PEDIDO (NRO_PED, RUT_PROV)
VALUES (130, ’50.155.842-K’);
DML Lenguaje De Manipulación De Datos:
INSERT
La instrucción SQL INSERT permite crear dos registros, de la siguiente forma:
mysql> INSERT INTO Empleado (idemp,apellido,nombre,comision)
VALUES(1, 'Rive', 'Soll',10),
(2, 'Gordimer ', 'Charlene' ,15) ;
•Es necesario encerrar el valor del campo de cadena y/o fecha/hora (un campo de
CHAR o VARCHAR o DATE o TIME o TIMESTAMP o DATETIME) entre comillas
simple, tal es el caso de los campos (apellido, nombre).
•En el caso de los campos numéricos (idemp, comision) no es necesario usar la
comilla simple.
Existe otra forma mas sencilla de introducir datos con la instrucción INSERT,
como se muestra en la siguiente secuencia:
mysql> INSERT INTO Empleado
VALUES(1, 'Rive', 'Soll',10),
(2, 'Gordimer ', 'Charlene' ,15) ;
En este caso, los valores de los campos son los mismos solo que no se escribe
los campos a los que se le asociara el valor asumiendo el orden del describe de la
tabla.
DML Lenguaje De Manipulación De Datos:
UPDATE
Actualiza columnas en registros de tabla existentes con nuevos valores.
•La cláusula SET indica qué columna modificar y los valores que puede
recibir.
•La cláusula WHERE, si se da, especifica qué registros deben
actualizarse. En caso que se omita actualiza todos los registros.
•Si la cláusula ORDER BY se especifica, los registros se actualizan en el
orden que se especifica.
•La cláusula LIMIT es el límite de registros a actualizar.
UPDATE
UPDATE [LOW_PRIORITY]
[LOW_PRIORITY] [IGNORE]
[IGNORE] tbl_name
tbl_name
SET
SET col_name1=expr1
col_name1=expr1 [,[, col_name2=expr2
col_name2=expr2 ...]
...]
[WHERE
[WHERE where_definition]
where_definition]
[ORDER
[ORDER BYBY ...]
...]
[LIMIT
[LIMIT row_count]
row_count]
DML Lenguaje De Manipulación De Datos:
UPDATE
Ejemplo:
UPDATE clientes
SET descuento=0.1, edad=30
WHERE YEAR(fecnac)=1981
ORDER BY idcli;
UPDATE items,month
SET items.price=month.price
WHERE items.id=month.id;
Este ejemplo muestra un inner join usando el operador coma, pero los
comandos UPDATE de múltiples tablas pueden usar cualquier tipo de join
permitido en comandos SELECT tales como LEFT JOIN.
Estos comandos usan las tres tablas al buscar registros a borrar, pero
borrar los registros coincidentes sólo para las tablas t1 y t2.
DML Lenguaje De Manipulación De Datos:
SELECT
Permite efectuar consultas sobre la BD. La operación de extraer
información de una tabla resulta sencilla. Para ello, puede utilizar el
potente comando SELECT.
SELECT
SELECT [DISTINCT]
[DISTINCT] <lista
<lista de
de campos>
campos>
FROM
FROM <lista
<lista de
de tablas>
tablas>
[WHERE
[WHERE <condiciones
<condiciones lógicas>]
lógicas>]
[ORDER
[ORDER BY
BY <lista
<lista de
de campos>]
campos>]
[GROUP
[GROUP BY
BY <lista
<lista de
de campos>]
campos>]
Ejemplo:
SELECT idcli, nombre, apellido
FROM clientes
WHERE idcli<= 10
ORDER BY apellido Desc;
DML Lenguaje De Manipulación De Datos:
SELECT
La instruccion SELECT consta de varias partes:
•La primera, inmediatamente después del comando SELECT, es la lista
de campos o el carácter comodín (*) para devolver todos los campos de
una tabla en el orden como se ven con el describe.
•La segunda, es después del FROM en esta se listan la tabla o tablas que
se emplearan para recuperar los datos.