SQL y SGBDRs
SQL (Structured Query Languaje) lenguaje de consulta estructurado. Es el lenguaje estndar de los DBMS relacionales.
Creado por IBM en los aos 70s En 1986 ANSI e ISO lo estandarizan en SQL-86 Otras versiones: SQL-92, SQL-99
Sistema Gestor de Bases de Datos (SGBD o DBMS) es una herramienta que permite crear y manipular una BD as como sus datos.
Por qu MySQL?
MySQL es el SGBDR gratuito ms popular del mundo. Es un software libre en un esquema de licenciamiento dual. Caractersticas principales de las versiones de MySQL
VERSIN MySQL 4.0 CARACTERSTICAS Bsquedas en texto binario Uniones
4.1
5.0
Subconsultas
Procedimientos almacenados (Store Procedures) Vistas (Views) Cursores (Cursors)
5.0 y 5.1
Disparadores (Triggers)
3
Tipos de datos
En MySQL existen tres tipos de datos bsico:
nmeros textos y fechas & horas
Tipos numricos
TIPO TINYINT[long] SMALLINT[long] MEDIUMINT[long] INT[long] BIGINT[long] FLOAT[long, deci] RANGO De -128 a 127 o UNSIGNED de 0 a 255 De -32768 a 32767 o UNSIGNED de 0 a 65535 De -8,388,608 a 8,388607 o UNSIGNED de 0 a 16,777,215 De -2,147,483,648 a 2,147,483,647 o UNSIGNED de 0 a 4,294,967,295 De -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 o UNSIGNED de 0 a 18,446,744,073,709,551,615 Nmero pequeo con punto flotante. (versin 5.0.18 no ms de decenas de milln)
DOUBLE[long, deci]
DECIMAL[long, deci]
[long]: indica la longitud mnima de los nmeros, alcanzando tal tamao con ceros a la izquierda. Slo aplica
con la propiedad ZEROFILL. p. ej.: SMALLINT(3) ZEROFILL; -15 000; 1001; 93009300
[long, deci]: long indica el numero de dgitos; deci indica cuantos dgitos de long se toman como
parte decimal, p. ej.: DOUBLE(6,1) almacenara como valor mximo: 99999.9
5
Tipos de texto
TIPO CHAR(long) RANGO Cadena de texto de tamao long. Los espacios sobrantes sern llenados con espacios en blanco. Si la cadena a guardar se excede se trunca. Cadena de texto de tamao long. Los espacios sobrantes sern reutilizados porqu se agrega un carcter de fin de cadena indicando que los dems espacios pueden ser ocupados para otro fin. Si la cadena a guardar se excede se trunca. Cadena de texto de tamao mximo de 255 caracteres. Cadena de texto de tamao mximo de 65535 caracteres. Cadena de texto de tamao mximo de 16,777,215 caracteres. VARCHAR(long)
LONGTEXT
BINARY(long) VARBINARY(long)
Tipos de texto
TIPO RANGO
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB ENUM
SET
DATE
DATETIME TIMESTAMP
TIME
YEAR
Las fechas y horas son validadas de manera que sean reales, p. ej.: asignarle como valor a un atributo tipo DATE el 2010-02-30 est errneo y colocar: 0000-00-00
10
Recuerda que el o los atributos que forman la PK no pueden contener valores nulos.
11
ndices
Los ndices son un sistema en las BDs que ayudan a mejorar el rendimiento en tiempo. MySQL permite entre 16 y 64 ndices por tabla, dependiendo del motor de bsqueda. A su vez, cada ndice puede estar conformado por 1-15 columnas.
No excederse en el uso de ndices, aunque mejorarn el rendimiento en la lectura, empeorar el rendimiento en las actualizaciones, ya que los cambios deben registrarse tambin en los ndices. En MySQL existen tres tipos de ndices:
INDEX: para atributos utilizados en:
el WHERE o el ORDER BY de una consulta; en los JOINs cuando el atributo tenga valores en su mayora diferentes
PRIMARY KEY: para la PK (llave primaria) UNIQUE: para atributos no repetibles, es decir, las claves alternativas, por ejemplo: email, username. MySQL slo aceptar un nico null.
12
14
Cambiarse de BD:
USE nombre_bd;
17
Creacin de tablas
Crear una tabla:
CREATE TABLE nombre_tabla ( nombre_col1 descripcin, nombre_col2 descripcin, tipodendice (nombre_columnas), tipodendice (nombre_columnas) ) ENGINE = nombre_motorCHARACTER SET nombre_conj COLLATE nombre_col;
Si no defines un motor de almacenamiento a la tabla, MySQL asigna el default, InnoDB en Windows y MyISAM en otro caso. Mostrar tablas de una BD: SHOW TABLES; Mostrar los metadatos de una tabla:
SHOW COLUMNS FROM nombre_tabla; DESCRIBE nombre_tabla;
18
Motor de almacenamiento ENGINE = motor, aunque tambin TYPE = motor (ver. antes 4.0.18)
MyISAM, aunque bien podra ser InnoDB
20
USE `empresa`;
CREATE TABLE `facturas`( `facturaid` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, `clienteid` SMALLINT UNSIGNED NOT NULL, `fecha` TIMESTAMP NOT NULL, `invoice_amount` DECIMAL(10,2) UNSIGNED NOT NULL, `descripcion` TINYTEXT, `fechapago` DATE, PRIMARY KEY(`facturaid`), INDEX(`fecha`), INDEX(`clienteid`) ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_spanish_ci;
21