jueves, 27 de septiembre de 2012

MYSQL: Creacion, actualización, mostrar y eliminar tablas (create table - show tables - describe - drop table)

En este tutorial aprenderemos como crear una tabla, actualizarla, mostrar sus campos y eliminarla de la base de datos MYSQL.
 Primero empezaremos creando la base de datos llamada empleados si no la tenemos creada;

create database empleados;/*Esta clausula crea la base de datos empleados*/ drop table if exists empleados;/*Esta clausula elimina la tabla empleados si existe*/ create table empleados/*Clausula para crear una tabla en MYSQL*/( emp_no int(11) not null default 0 comment 'Numero de Identificacion del empleado', fecha_nacimiento date not null comment 'Fecha de nacimiento del empleado', nombres varchar(30) not null comment'Nombres del empleado', apellidos varchar (30) not null comment'Apelidos del empleado', sexo enum('m','f')not null default 'm' comment 'Sexo del empleado M= Masculino , F= Femenino', fecha_entrada date not null comment'Fecha de entrada del empleado a la empresa', primary key (emp_no) comment 'Llave primaria de la tabla' )/*Escojemos como vamos a guardar nuestros datos*/ENGINE=InnoDB DEFAULT /*Tipo de formato de codificacion de caracteres*/CHARSET=latin1; ALTER TABLE empleados CHANGE COLUMN emp_numero emp_no INT(11) /*Cambia el nombre de la columna emp_numero a emp_no*/ NOT NULL COMMENT 'Numero de Identificacion del empleado' ; ALTER TABLE empleados CHANGE COLUMN emp_no emp_numero INT(11) NOT NULL COMMENT 'Numero de Identificacion del empleado' ; ALTER TABLE empleados DROP PRIMARY KEY; /*Elimina la clave primaria de la tabla empleados*/; ALTER TABLE empleados DROP COLUMN fecha_nacimiento;/*Elimina la columna fecha_nacimeinto*/ ALTER TABLE empleados ADD COLUMN campo_prueba VARCHAR(45) NULL comment 'Este es un campo agregado de prueba' AFTER fecha_entrada; describe empleados;/*Esta clausula muestra la estructura de la tabla*/

martes, 25 de septiembre de 2012

Sintaxis de SHOW TABLES en MYSQL

Bueno esta es una clausula de MYSQL la cual te muestra las tablas que se encuentran en la base de datos.

Como estamos trabajando con la base de datos Employee la sintaxis seria la siguiente:
 show tables ;/* esta clausula me devuelve los nombres de las tablas que hay en la base de datos employees pero antes hay que darle la clausula use employees;*/

Show tables from employees; /* Esta clausula me devuelve los nombres de las tablas que se han especificado en el from */ 

Show tables from employees like '%d%';

/*Esta clausula me devuelve los nombres de las tablas de la base de datos employees y ademas las que empiezan con la letra d*/

Importar la base de datos Employees MYSQL

En este tutorial utilizáremos una base de datos llamada Employees la cual la podemos descargar de la siguiente pagina https://launchpad.net/test-db para ir aprendiendo a usar las diferentes clausulas de MYSQL. Después de descargado descomprimimos el archivo y buscamos uno que se llama employees.sql y ejecutamos la siguiente consulta para cargar los archivos a la base de datos.

cargar employees consola mysql
Donde –u es nuestro usuario –p es nuestra clave
Buscamos nuestro ejecutable de mysql.exe.
Nota: en el archivo employees.sql buscamos las siguientes clausulas en ella modificamos la ruta donde se encuentra nuestro archivo en mi caso los coloque en D:/employees_db/ le hacemos el cambio y listo.

SELECT 'LOADING departments' as 'INFO';
source D:/employees_db/load_departments.dump ;
SELECT 'LOADING employees' as 'INFO';
source D:/employees_db/load_employees.dump ;
SELECT 'LOADING dept_emp' as 'INFO';
source D:/employees_db/load_dept_emp.dump ;
SELECT 'LOADING dept_manager' as 'INFO';
source D:/employees_db/load_dept_manager.dump ;
SELECT 'LOADING titles' as 'INFO';
source D:/employees_db/load_titles.dump ;
SELECT 'LOADING salaries' as 'INFO';
source D:/employees_db/load_salaries.dump ;

 Cuando haya finalizado estamos listos para empezar a realizar nuestras consultas a la base de datos de prueba employee

Introducción y definición MYSQl Sistema de administración de bases de datos

MYSQL es uno de los sistemas de administración de bases de datos relacional más popular de la actualidad, de código abierto. 

MYSQL usa el estándar SQL Structure Query Language (Lenguaje de Consulta Estructurado), el cual es un lenguaje de programación para bases de datos relacional como Oracle, Sql server, Db2, Postgres etc. 

Este motor de base de datos permite crear bases de datos, tablas, insertar datos, modificarlos, eliminarlos, ordenarlos, hacer consultas y realizar muchas operaciones, etc.

 MYSQL se ejecuta en diferentes plataformas tales como: Linux, Windows, Mac OS, Solaris, AIX de IBM etc.

 MYSQL se ofrece bajo la licencia GNU GPL, pero para aquellas empresas que desean incorporarlos en productos privativos deben pagar una licencia que le permita este uso. Los derechos de autor del código fuente pertenecen a un autor individual

jueves, 2 de febrero de 2012

TRIGGER y subida avanzada de archivos load data local infile MYSQL

En el siguiente Tutorial vamos a aprender a realizar un TRIGGER en Mysql e insertar datos a la base de datos de una manera mas Optima y rápida con load data local infile.
El trigger es el encargado de llenar todas las tablas de las bases de datos con un archivo de texto plano en formato .csv
Lo primero que hacemos es crear la base de datos que es la siguiente:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de datos: `bdnarly`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `asesor`
--

CREATE TABLE IF NOT EXISTS `asesor` (
  `ase_id` int(11) NOT NULL AUTO_INCREMENT,
  `ase_nom` varchar(100) NOT NULL,
  `ase_usu` varchar(50) NOT NULL,
  `ase_cla` varchar(50) NOT NULL,
  `ase_per` int(11) NOT NULL,
  PRIMARY KEY (`ase_id`),
  KEY `ase_usu` (`ase_usu`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Volcar la base de datos para la tabla `asesor`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `barrio`
--

CREATE TABLE IF NOT EXISTS `barrio` (
  `bar_id` int(11) NOT NULL AUTO_INCREMENT,
  `bar_idmun` int(11) NOT NULL,
  `bar_nom` varchar(250) NOT NULL,
  PRIMARY KEY (`bar_id`),
  KEY `bar_idmun` (`bar_idmun`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=252 ;

--
-- Volcar la base de datos para la tabla `barrio`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `catastro`
--

CREATE TABLE IF NOT EXISTS `catastro` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `CICLO` double DEFAULT NULL,
  `ESTRATO` varchar(255) DEFAULT NULL,
  `NIC` varchar(50) DEFAULT NULL,
  `NIS` varchar(50) DEFAULT NULL,
  `NOMBRE` varchar(255) DEFAULT NULL,
  `DIRECCION` varchar(255) DEFAULT NULL,
  `MUNICIPIO` varchar(255) DEFAULT NULL,
  `BARRIO` varchar(255) DEFAULT NULL,
  `CARTERA` double DEFAULT NULL,
  `FINANCIADO` double DEFAULT NULL,
  `SITUACION` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=90985 ;

--
-- (Evento) desencadenante `catastro`
--
DROP TRIGGER IF EXISTS `bdnarly`.`actualizarTodasLastablas`;
DELIMITER //
CREATE TRIGGER `bdnarly`.`actualizarTodasLastablas` AFTER INSERT ON `bdnarly`.`catastro`
 FOR EACH ROW begin 
set @municipio:=(select mun_id from municipio where (mun_nom)=(new.municipio));
set @barrio:='';
if(@municipio is null)then 

insert into municipio (mun_nom) values((new.municipio));

set @municipio:=(select mun_id from municipio where (mun_nom)=(new.municipio));

insert into barrio (bar_idmun ,bar_nom ) values ((@municipio),(new.barrio));

set @barrio:=(select bar_id from barrio where (bar_nom)=(new.barrio) limit 1);

else

set @barrio:=(select bar_id from barrio where (bar_nom)=(new.barrio) limit 1);

if(@barrio is null) then 

insert into barrio (bar_idmun,bar_nom) values ((@municipio),(new.barrio));

set @barrio:=(select bar_id from barrio where (bar_nom)=(new.barrio) limit 1);

end if;

end if;

set @ciclo:=(select cic_id from ciclo where (cic_id)=(new.ciclo));

if(@ciclo is null) then 

insert into ciclo (cic_id, cic_fec) values ((new.ciclo),now());

set @ciclo:=(select cic_id from ciclo where (cic_id)=(new.ciclo));

end if;



set @estrato:=(select est_id from estrato where (est_nom)=(new.estrato));

if(@estrato is null) then 

insert into estrato ( est_nom) values ((new.estrato));

set @estrato:=(select est_id from estrato where (est_nom)=(new.estrato));

end if;

set @situacion:=(select sit_id from situacion where (sit_nom)=(new.situacion));

if(@situacion is null) then 

insert into situacion ( sit_nom) values ((new.situacion));

set @situacion:=(select sit_id from situacion where (sit_nom)=(new.situacion));

end if;

set @cliente:=(select cli_id from cliente where (cli_nic)=(new.nic) 

and (cli_nis)=(new.nis));

if(@cliente is null) then 

insert into cliente ( cli_nis, cli_nic, clic_nom, cli_dir, cli_sit, cli_barid, cli_estid)

values ((new.nis),(new.nic),(new.nombre),(new.direccion),(

@situacion),(@barrio),(@estrato));

set @cliente:=(select cli_id from cliente where (cli_nic)=(new.nic) 

and (cli_nis)=(new.nis));

end if;



set @clienteciclo:=( SELECT clicic_id  FROM clienteciclo 

where (clicic_nis)=(new.nis)

and (clicic_nic)=(new.nic)

and (clicic_cic)= (new.ciclo)

);

if @clienteciclo is null then

insert into clienteciclo (clicic_nis, clicic_nic, clicic_cic, clicic_car, clicic_fin, clicic_ase)

values((new.nis),(new.nic),(new.ciclo),(new.cartera),(new.financiado),0);

end if;







end
//
DELIMITER ;

--
-- Volcar la base de datos para la tabla `catastro`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `ciclo`
--

CREATE TABLE IF NOT EXISTS `ciclo` (
  `cic_id` int(11) NOT NULL,
  `cic_fec` date NOT NULL,
  PRIMARY KEY (`cic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- (Evento) desencadenante `ciclo`
--
DROP TRIGGER IF EXISTS `bdnarly`.`actualizarRegistro`;
DELIMITER //
CREATE TRIGGER `bdnarly`.`actualizarRegistro` AFTER INSERT ON `bdnarly`.`ciclo`
 FOR EACH ROW begin 
set @val:=( SELECT cliente.cli_nis FROM cliente where cli_nis=1
);
if(@val is null) then 
insert into registro (registro) values('suceso');
end if;
end
//
DELIMITER ;

--
-- Volcar la base de datos para la tabla `ciclo`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `cliente`
--

CREATE TABLE IF NOT EXISTS `cliente` (
  `cli_id` int(11) NOT NULL AUTO_INCREMENT,
  `cli_nis` varchar(50) NOT NULL COMMENT 'Numero de identificacion del cliente',
  `cli_nic` varchar(50) NOT NULL,
  `clic_nom` varchar(255) NOT NULL,
  `cli_dir` varchar(255) NOT NULL,
  `cli_sit` int(11) NOT NULL,
  `cli_barid` int(11) NOT NULL,
  `cli_estid` int(11) NOT NULL,
  PRIMARY KEY (`cli_id`),
  UNIQUE KEY `cli_nis` (`cli_nis`,`cli_nic`),
  KEY `cli_nic` (`cli_nic`),
  KEY `cli_barid` (`cli_barid`),
  KEY `cli_estid` (`cli_estid`),
  KEY `cli_sit` (`cli_sit`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=90985 ;

--
-- Volcar la base de datos para la tabla `cliente`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `clienteciclo`
--

CREATE TABLE IF NOT EXISTS `clienteciclo` (
  `clicic_id` int(11) NOT NULL AUTO_INCREMENT,
  `clicic_nis` varchar(50) NOT NULL,
  `clicic_nic` varchar(50) NOT NULL,
  `clicic_cic` int(11) NOT NULL,
  `clicic_car` double NOT NULL COMMENT 'cartera del cliente',
  `clicic_fin` double NOT NULL COMMENT 'Financiacion del cliente',
  `clicic_ase` int(11) NOT NULL DEFAULT '0',
  `clicic_cau` int(11) NOT NULL,
  `clicic_fecv` date NOT NULL DEFAULT '1000-01-01',
  `clicic_feca` date NOT NULL DEFAULT '1000-02-01',
  `clicic_des` varchar(255) NOT NULL,
  `clicic_tel` varchar(20) NOT NULL,
  `clicic_est` int(1) NOT NULL,
  PRIMARY KEY (`clicic_id`),
  UNIQUE KEY `clicic_nis_2` (`clicic_nis`,`clicic_nic`,`clicic_cic`),
  KEY `clicic_nis` (`clicic_nis`),
  KEY `clicic_cic` (`clicic_cic`),
  KEY `clicic_nic` (`clicic_nic`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=90985 ;

--
-- Volcar la base de datos para la tabla `clienteciclo`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `estrato`
--

CREATE TABLE IF NOT EXISTS `estrato` (
  `est_id` int(11) NOT NULL AUTO_INCREMENT,
  `est_nom` varchar(50) NOT NULL,
  PRIMARY KEY (`est_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

--
-- Volcar la base de datos para la tabla `estrato`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `fecha`
--

CREATE TABLE IF NOT EXISTS `fecha` (
  `idfecha` int(11) NOT NULL,
  PRIMARY KEY (`idfecha`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Volcar la base de datos para la tabla `fecha`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `municipio`
--

CREATE TABLE IF NOT EXISTS `municipio` (
  `mun_id` int(11) NOT NULL AUTO_INCREMENT,
  `mun_nom` varchar(50) NOT NULL,
  PRIMARY KEY (`mun_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Volcar la base de datos para la tabla `municipio`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `registro`
--

CREATE TABLE IF NOT EXISTS `registro` (
  `registro` varchar(150) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Volcar la base de datos para la tabla `registro`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `situacion`
--

CREATE TABLE IF NOT EXISTS `situacion` (
  `sit_id` int(11) NOT NULL AUTO_INCREMENT,
  `sit_nom` varchar(150) NOT NULL,
  PRIMARY KEY (`sit_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

--
-- Volcar la base de datos para la tabla `situacion`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `visitascausales`
--

CREATE TABLE IF NOT EXISTS `visitascausales` (
  `viscau_id` int(11) NOT NULL AUTO_INCREMENT,
  `vis_nom` varchar(255) NOT NULL,
  PRIMARY KEY (`viscau_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

--
-- Volcar la base de datos para la tabla `visitascausales`
--


--
-- Filtros para las tablas descargadas (dump)
--

--
-- Filtros para la tabla `barrio`
--
ALTER TABLE `barrio`
  ADD CONSTRAINT `barrio_ibfk_1` FOREIGN KEY (`bar_idmun`) REFERENCES `municipio` (`mun_id`) ON UPDATE CASCADE;

--
-- Filtros para la tabla `cliente`
--
ALTER TABLE `cliente`
  ADD CONSTRAINT `cliente_ibfk_4` FOREIGN KEY (`cli_sit`) REFERENCES `situacion` (`sit_id`) ON UPDATE CASCADE,
  ADD CONSTRAINT `cliente_ibfk_5` FOREIGN KEY (`cli_estid`) REFERENCES `estrato` (`est_id`) ON UPDATE CASCADE,
  ADD CONSTRAINT `cliente_ibfk_6` FOREIGN KEY (`cli_barid`) REFERENCES `barrio` (`bar_id`) ON UPDATE CASCADE;

--
-- Filtros para la tabla `clienteciclo`
--
ALTER TABLE `clienteciclo`
  ADD CONSTRAINT `clienteciclo_ibfk_1` FOREIGN KEY (`clicic_nis`) REFERENCES `cliente` (`cli_nis`),
  ADD CONSTRAINT `clienteciclo_ibfk_2` FOREIGN KEY (`clicic_cic`) REFERENCES `ciclo` (`cic_id`),
  ADD CONSTRAINT `clienteciclo_ibfk_3` FOREIGN KEY (`clicic_nic`) REFERENCES `cliente` (`cli_nic`);

Segundo Paso

Creamos una consulta la cual es la encargada de subir todos los datos , en cual el Trigger se encargara de repartir los datos por toda la base de datos.
ejecuta el siguiente Script desde la consola  de MYSQL o desde phpmyadmin

use bdnarly;

load data local infile'F:/CATASTRO.csv' REPLACE into table catastro fields terminated by ';' enclosed by '"'  lines terminated by '\r\n';

El trigger enpezara a llenar todas las tablas.

descarga el archivo bdnarly.sql.zip y el archivo catastro.csv de la siguiente dirección
pestaña archivos de descarga.

martes, 24 de enero de 2012

Modelo Entidad Relacion

-Entidades :objetos que se distinguen por características.
-Entidades Fuerte: No necesita de ningún atributo externo.



-Entidades Débil : Necesita de otro atributo, es decir depende de otra entidad.



Atributos: Son características de las entidades
Obligatorios: Tiene que tener un valor.



Opcionales. No tiene que tener valor.


Simples



Compuestos




Mono valorados: Toma un solo valor
Multivalorados: Toma varios valores.
Derivados: Resulta de otro
Ejemplo: Fecha de nacimiento
Llave Candidata: Son todos los atributos que identifican plenamente a una entidad.
Binarias: 2 entidades
Reflexivos: Relacion entre ellas mismas
N arias: Mas de dos Entidades

Relación de Uno a Uno(1 a 1)



Relación de Uno a Muchos (1 a *)




Relación de  Muchos  a Muchos (* a *)





Relación Reflexiva








Relacion N arias






jueves, 12 de enero de 2012

DML (LMD) Lenguaje de Manipulación de Datos.


(Data Manipulation Language), Lenguaje de Manipulación de Datos.
En los niveles de abstracción de los datos se aplica no solo a la definición o estructuración de datos, sino también a a la manipulación de los datos. Por manipulación de datos queremos decir a:
La recuperación de la información almacenada en la BD
La inserción de la información nueva en la BD
La eliminación de la información de la BD
La modificación de los datos almacenados en la BD
Algunas ejemplos de las sentencias de manipulación de datos son:
Insert
Delete
Update
Select