2. ¿Que es una base de datos?
▪ Una base de datos o banco de datos es un conjunto de datos
pertenecientes a un mismo contexto y almacenados sistemáticamente
para su posterior uso.
▪ Una biblioteca puede considerarse una base de datos compuesta en su
mayoría por documentos y textos impresos en papel e indexados para su
consulta.
▪ Actualmente, y debido al desarrollo tecnológico de campos como
la informática y la electrónica, la mayoría de las bases de datos están en
formato digital (electrónico), y por ende se ha desarrollado y se ofrece un
amplio rango de soluciones al problema del almacenamiento de datos.
Introduccion a Bases de Datos y SQL
3. Distintos SGBD
▪ Las principales marcas del mercado son ORACLE, MySQL, SQL Server,
PostGreSQL, SQL Lite
Introduccion a Bases de Datos y SQL
Open source: Significa que es posible para cualquiera usar y modificar el
software. Cualquiera puede bajar el software MySQL desde internet y
usarlo sin pagar nada. Si lo desea, puede estudiar el código fuente y
cambiarlo para adaptarlo a sus necesidades. El software MySQL usa la
licencia GPL (GNU General Public License).
MariaDB: Es un fork de MySQL creado por
Michael Widenius (Fundador de MySQL).
4. ¿Que es MySQL?
▪ MySQL es un sistema de gestión de bases de
datos relacional, multihilo y multiusuario.
Introduccion a Bases de Datos y SQL
SGBD (Sistema de gestión de bases de datos)
=
DBMS (Database Management System)
5. Servicios/Demonios
▪ Un demonio o servicio es un tipo especial de proceso informático no
interactivo, es decir, que se ejecuta en segundo plano en vez de ser
controlado directamente por el usuario. Este tipo de programas se
ejecutan de forma continua (infinita).
Introduccion a Bases de Datos y SQL
6. ¿Que es la arquitectura Cliente/Servidor?
Introduccion a Bases de Datos y SQL
▪ Servidor: Se encarga de
recoger, interpretar y ejecutar
todas las peticiones de los
usuarios de la base de datos.
▪ Cliente: Es la parte con la que
trabajarán directamente los
usuarios.
10. Tipos de conectividad entre Cliente/Servidor
▪ ODBC: El objetivo de ODBC es hacer posible el acceder a cualquier dato
desde cualquier aplicación, sin importar qué sistema de gestión de bases
de datos(SGBD) almacene los datos. ODBC logra esto al insertar una
capa intermedia (CLI) denominada nivel de Interfaz de Cliente SQL, entre
la aplicación y el SGBD.
▪ OLE-DB: Es una actualización creada para las aplicaciones en 32-bits.
Fue creada para ser más rápida y eficiente y estable que ODBC. ODBC y
OLE-DB son interfaces de bajo nivel; una aplicación típica o un
desarrollador web no usaría estos APIs directamente.
▪ ADO: Es un conjunto de componentes del software que pueden ser
usados por los programadores para acceder a datos y a servicios de
datos. Es una parte de la biblioteca de clases base que están incluidas en
el Microsoft .NET Framework.
▪ Hay mas conectores.
Introduccion a Bases de Datos y SQL
11. ¿Que es el motor de la base de datos?
Los motores de base de dato sirven para definir, construir y manipular una
base de datos.
▪ Definir una base de datos: Consisten en especificar los tipos de datos,
estructuras y restricciones para los datos que se almacenaran.
▪ Construir una base de datos: Es el proceso de almacenar los datos sobre
algun medio de almacenamiento. Ver: Motores de almacenamiento
▪ Manipular una base de datos: Incluye funciones como consultas,
actualizacion, etc. de bases de datos.
Introduccion a Bases de Datos y SQL
12. Motores de almacenamiento
▪ InnoDB
o Soporte de transacciones.
o Bloqueo de registros.
o Nos permite tener las características ACID (Atomicity, Consistency, Isolation
and Durability), garantizando la integridad de nuestras tablas.
o Es probable que si nuestra aplicación hace un uso elevado de INSERT y
UPDATE notemos un aumento de rendimiento con respecto a MyISAM.
▪ MyISAM
o Mayor velocidad en general a la hora de recuperar datos.
o Recomendable para aplicaciones en las que dominan las sentencias SELECT
ante los INSERT / UPDATE.
o Ausencia de características de atomicidad ya que no tiene que hacer
comprobaciones de la integridad referencial, ni bloquear las tablas para realizar
las operaciones, esto nos lleva como los anteriores puntos a una mayor
velocidad.
Introduccion a Bases de Datos y SQL
13. ACID
Introduccion a Bases de Datos y SQL
Atomicidad (Atomicity): La Atomicidad requiere que cada transacción sea "todo o nada": si una
parte de la transacción falla, todas las operaciones de la transacción fallan, y por lo tanto la base
de datos no sufre cambios. Un sistema atómico tiene que garantizar la atomicidad en cualquier
operación y situación, incluyendo fallas de alimentación eléctrica, errores y caidas del sistema.
Consistencia (Consistency): La propiedad de Consistencia se asegura que cualquier transacción
llevará a la base de datos de un estado válido a otro estado válido. Cualquier dato que se
escriba en la base de datos tiene que ser válido de acuerdo a todas las reglas definidas,
incluyendo (pero no limitado a) los constraints, los cascades, los triggers, y cualquier
combinación de estos.
Aislamiento (Isolation): El aislamiento ("Isolation" en inglés) se asegura que la ejecución
concurrente de las transacciones resulte en un estado del sistema que se obtendría si estas
transacciones fueran ejecutadas una atrás de otra. Cada transacción debe ejecutarse en
aislamiento total; por ejemplo, si T1 y T2 se ejecutan concurrentemente, luego cada una debe
mantenerse independiente de la otra.
Durabilidad (Durability): La durabilidad significa que una vez que se confirmó una transacción
(commit), quedará persistida, incluso ante eventos como pérdida de alimentación eléctrica,
errores y caidas del sistema. Por ejemplo, en las bases de datos relacionales, una vez que se
ejecuta un grupo de sentencias SQL, los resultados tienen que almacenarse inmediatamente
(incluso si la base de datos se cae inmediatamente luego).
14. ¿Que es SQL y ANSI SQL?
El SQL es un lenguaje de acceso a bases de datos que explota la
flexibilidad y potencia de los sistemas relacionales y permite así gran
variedad de operaciones.
Introduccion a Bases de Datos y SQL
15. Comentarios en SQL
Podemos ver que hay tres formas de hacer comentarios, las tres tiene el
mismo objetivos (Documentar el SQL).
Además MySQL soporta comentarios (Ejecutables) del tipo.
/*! 40101 MySQL-specific code */
En general vamos a ver estos comentarios en la generación del script del
backup o en hints.
Introduccion a Bases de Datos y SQL
16. Comandos vs SQL
Debemos distinguir lo que es un comando de lo que son sentencias SQL.
Introduccion a Bases de Datos y SQL
▪ SQL (Structured Query Language): Es un lenguaje declarativo de acceso a
bases de datos relacionales.
▪ Comando: Son instrucciones que brinda el servidor de bases de datos para
obtener determinada información.
19. Tipos de datos MySQL
Introduccion a Bases de Datos y SQL
Tipo de Campo Tamaño de Almacenamiento
TINYINT 1 byte
SMALLINT 2 bytes
MEDIUMINT 3 bytes
INT, INTEGER 4 bytes
BIGINT 8 bytes
FLOAT 4 bytes
FLOAT(x)
4 bytes if 0 <= x <= 24, 8 bytes if 25 <= x
<= 53
DOUBLE 8 bytes
DECIMAL(M,D), NUMERIC (M,
D)
BIT(M) Aproximadamente (M+7)/8 bytes
Tipo de Campo Tamaño de Almacenamiento
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte
Tipo de columna Almacenamiento requerido Máxima Longitud
CHAR(M) M bytes, 0 <= M <= 255 255
VARCHAR(M) L+1 bytes, donde L <= M y 0 <= M <= 255 255
BINARY(M) M bytes, 0 <= M <= 255 255
VARBINARY(M) L+1 bytes, donde L <= M y 0 <= M <= 255 255
TINYBLOB, TINYTEXT L+1 byte, donde L < 2^8 255
BLOB, TEXT L+2 bytes, donde L < 2^16 65535
MEDIUMBLOB, MEDIUMTEXT L+3 bytes, donde L < 2^24 16,777,215
LONGBLOB, LONGTEXT L+4 bytes, donde L < 2^32 4,294,967,295
ENUM('value1','value2',...) 1 o 2 bytes, dependiendo del número de valores de la enumeración (65,535 valores máximo) 65,535 Miembros
SET('value1','value2',...) 1, 2, 3, 4, o 8 bytes, dependiendo del número de miembros del conjunto (64 miembros máximo) 64 Miembros
20. Tipos de datos (Numeros enteros)
Introduccion a Bases de Datos y SQL
21. Tipos de datos (Cadena de caracteres)
Introduccion a Bases de Datos y SQL
22. Tipos de datos (Fechas)
Introduccion a Bases de Datos y SQL
▪ Datetime: Almacena fechas en formato YYYY-MM-DD HH:MM:SS
▪ Date: Almacena fechas en formato YYYY-MM-DD
▪ Timestamp: Almacena fechas en formato YYYY-MM-DD HH:MM:SS pero
con conversión entre el Timezone actual y UTC.
▪ Time: Almacena HH:MM:SS
▪ Year: Almacena el año en formato YYYY o YY.
25. Atributos para columnas
Introduccion a Bases de Datos y SQL
▪ PK (Primary Key): Indica si la columna forma parte de la clave principal.
Hay claves simples o compuestas (Mas de una columna). En general toda
tabla tiene PK.
▪ NN (Not Null): Indica que esta columna no puede ser NULL. NULL no es
vacio ni 0, seria como indefinido.
▪ UQ (Unique Index): Indica que esta columna no tendrá ningún valor
repetido.
▪ BIN (Is Binary Column): Indica que esta columna se almacenara en modo
“Binario”. Respeta mayúsculas y minúsculas usando el collation binario.
▪ UN (Unsigned Data Type): Indica que esta columna no usara un byte para
el signo, ósea números positivos solamente.
▪ ZF (Zero Fill): El campo se completara con ceros si es numérico.
▪ AI (Auto Incremental): El campo incrementa solo su valor. Cada tabla solo
acepta un auto incremental y si hay tiene que formar parte de la PK.
26. Dump/Backup DB I
Introduccion a Bases de Datos y SQL
▪ Al hacer un backup en nuestro
caso estamos realizando un
script de exportación.
▪ Cuando se hace un backup o
dump se esta dejando una
copia igual a la base
productiva.
28. Charset/Collation I
Introduccion a Bases de Datos y SQL
▪ Charset: Es el conjunto de caracteres que esa tabla, o columna aceptaran
como validos, el charset se puede configurar a nivel de MySQL/Base de
datos/Tabla/Campos.
▪ Collation: Indica la forma en que el valor debe comparar el campo y
ordenarlo, un ejemplo claro es cuando usamos un collation no binario en el
cual no se respetan las mayúsculas y minúsculas.
30. Charset/Collation III
Introduccion a Bases de Datos y SQL
▪ Lo primero que cabe destacar es que el CHARSET ASCII no permite
ingresar otra cosa que no esté en la tabla ASCII predeterminada, así que la
letra "Ñ" y aquellas letras con tilde quedan absolutamente descartadas.
▪ Como vemos, en UTF-8 se guardaron 7 bytes de información (un byte extra
en la letra "Ñ", otro byte extra en la letra "ú") pero el largo de cada cadena
en cada caso es de 5 caracteres.
31. Charset/Collation IV
Introduccion a Bases de Datos y SQL
▪ Las primeras 3 (CHARSET utf8 COLLATE utf8_general_ci) devolverán un
registro cada uno, mientras que de las últimas 3 (CHARSET utf8 COLLATE
utf8_bin) sólo el último devolverá un resultado positivo.
Esto se debe a que la columna "name01" tiene COLLATION utf8-general-ci,
que, entre otras cosas, considera como sinónimo la letra "N" y "Ñ", y
además es case-insensitive (utf8-general-ci). Esto también se aplica a los
tildes, de forma que si buscamos por ñandu (sin tilde) el resultado
entregado será el mismo que si buscamos por "Ñandú". De igual forma,
"ÑaÑdU" igual entregará un resultado positivo para "Ñandú".
En las últimas 3 sin embargo, si no buscamos exactamente por lo
ingresado en la base de datos no se devolverá ningún registro, así que
cualquier cosa que no sea un match exacto de "Ñandú" simplemente se
descartará.
32. Charset/Collation V
Introduccion a Bases de Datos y SQL
▪ Una COLLATION utf8_spanish_ci ordenará los registros de una forma
mientras que utf8_spanish2_ci la ordenará de otra, debido a que el español
tradicional considera "ch" como una letra entre la "C" y la "D". Asimismo,
considera el uso de la letra "LL" como una letra entre la "L" y "M".