Consta de tres instrucciones bsicas como es el CREATE, el ALTER y el DROP. Los elementos de las bases de datos que se le puede aplicar estas instrucciones son :crear y borrar una bases de datos (DATABASE), crear, borrar y alterar una tablas (TABLE) en la base de datos, crear o borrar un ndices (INDEX) de una tabla y crear o borrar una vistas (VIEW).
Obsrvese que las bases de datos, ndices y vistas solo pueden ser creadas (CREATE) o borradas (DROP), mientras que las tablas pueden tambin de las anteriores alterarse. La sentencia general es:
Creacin de Elementos
NOMB_INSTRUCCION ELEMENTO Nomb_Elemento
Miremos un ejemplo de cada uno, para ellos trabajaremos con una base de datos ejemplo. Ver anexo 1. la base de datos es de COMPRAS, las cuales tienen unos proveedores, unas partes y suministros; empezaremos creando la base de datos. a) Creacin de una base de datos CREATE DATABASE COMPRAS; b) Creacin de una tabla CREATE TABLE PROVEEDORES (VNRO CHAR(4) NOT NULL, VNOMBRE CHAR(30) NOT NULL, SITUACION INT, CIUDAD CHAR(15), PRIMARY KEY (VNRO));
CREATE TABLE PARTES (PNRO CHAR(4) NOT NULL, PNOMBRE CHAR(30) NOT NULL, COLOR CHAR(15), PESO DECIMAL(4,1), PRIMARY KEY (PNRO));
CREATE TABLE SUMINISTROS (VNRO CHAR(4) NOT NULL, PNRO CHAR(4) NOT NULL, CANTIDAD INT, PRIMARY KEY (VNRO,PNRO), FOREIGN KEY VNRO REFERENCE PROVEEDORES(VNRO), FOREIGN KEY PNRO REFERENCE PARTES (PNRO));
Vase que la tabla de suministros tiene dos campos que heredan de las tablas proveedores y partes, por lo que son llaves forneas.
2) Lenguaje de manipulacin de datos
B. Lenguaje de Manipulacin de Datos DML
Como se dijo, este lenguaje permite la creacin, modificacin, borrado y consultas de datos. Para ello cuenta con las siguientes instrucciones:
INSERTE: sirve para insertar filas a las tablas UPDATE: sirve para modificar datos de una tabla DELETE: sirve para borrar datos de una tabla SELECT: sirve para consultar datos de una o varias tablas. Esta sentencia es la razn de ser de toda la filosofa de las bases de datos relacional, ya que con esto se creo un mtodo para consultar los datos en una forma no procedimental, es aqu donde mas aplica las operaciones algebraicas vistas en el captulo anterior.
Insertar filas en una tabla
INSERT INTO PROVEEDORES (VNRO,VNOMBRE,CIUDAD,SITUACION) VALUES(P01,Arturo Seplveda,Cartagena);
Aqu, cada vez que se necesite insertar una fila debe repetirse toda la instruccin, pues ella sirve solo para inserta UNA SOLA FILA, no varias.
Actualizar un dato en una o varias fila, segn la condicin.
Vamos a actualizar la ciudad de los proveedores que se encuentran en la ciudad de Venecia, locolocamos Bogot.
UPDATE PROVEEDORES SET CIUDAD = Bogota WHERE CIUDAD = Venecia:
Aqu es conveniente hacer varias precisiones. La clusula WHERE, es opcional, si es as, entonces todas las ciudades de los proveedores quedan con Bogot, cosa que no es comn que ocurra. En cambio, con la clusula WHERE, solo quedan con Bogot, aquellos proveedores cuya ciudad es Venecia. Viendo as las cosas, podemos decir que la clusula WHERE en la prctica, no es tan opcional.
Para insertar dos filas en la tabla de proveedores, la instruccin vlida es:
1. INSERT INTO PROVEEDORES (VNRO,VNOMBRE,CIUDAD,SITUACION) VALUES(P01,Arturo Seplveda,Cartagena); INSERT INTO PROVEEDORES (VNRO,VNOMBRE,CIUDAD,SITUACION) VALUES(P02,Carlos Uribe,Medellin); 2. INSERT INTO PROVEEDORES (VNRO,VNOMBRE,CIUDAD,SITUACION) VALUES(P01,Arturo Seplveda,Cartagena), VALUES(P02,Carlos Uribe,Medellin);
3. INSERT INTO PROVEEDORES VALUES(P01,Arturo Seplveda,Cartagena);
INSERT INTO PROVEEDORES VALUES(P02,Carlos Uribe,Medellin);
4. INSERT INTO PROVEEDORES (VNRO,VNOMBRE,CIUDAD,SITUACION); VALUES(P01,Arturo Seplveda,Cartagena);
INSERT INTO PROVEEDORES (VNRO,VNOMBRE,CIUDAD,SITUACION); VALUES(P02,Carlos Uribe,Medellin);
Consultas de datos Para mirar toda la potencialidad de la sentencia SELECT, hemos organizado las consultas de menor a mayor grado de dificultad, por cuestiones pedaggicas. Comenzaremos con consultas sobre una sola tabla hasta finalizar con subconsultas, donde intervienen ms de una tabla. Miremos la sentencia general
SELECT Campo1[,Campo 2, R..] FROM Tabla 1[,Tabla 2, RR] WHERE Condicin 1 [AND Condicin 2][OR Condicin 2][RR.] ORDER BY Campo 1 [,Campo 2, R.] GROUP BY Campo 1 [,Campo 2, R.] HAVING Condicin de Grupo [AND Condicin 2][OR Condicin 2][RR.]
Consultas Simples Consulta de un determinado campo. Consultar el nombre del proveedor con su respectiva ciudad.
SELECT PROVEEDORE,CIUDAD FROM PROVEEDORES; Consultas de Reunin Reunin simple. Consultar el nombre de los proveedores que han suministrado partes a algn proyecto. SELECT DISTINCT PROVEEDORES FROM PROVEEDORES,SUMINISTROS WHERE PROVEEDORES.VNRO=SUMINISTROS.VNRO; Nota: Obsrvese que se utiliza el distinct para que no salgan repetidos el nombre del proveedor. Si desea qutele el distinct y observe el resultado.
Reunin con condicin. Consultar el nombre del proveedor, el nombre de las partes y el nombre del proyecto, con sus respectivas cantidas suministradas, solo para los proyectos de MONITOR yCONSOLA. SELECT PROVEEDOR,PARTE,PROYECTO FROM PROVEEDORES,PARTES,PROYECTOS,SUMINISTROS WHERE PROVEEDORES.VNRO=SUMINISTROS.VNRO ANDPARTES.PNRO=SUMINISTROS.PNRO AND PROY ECTOR.YNRO=SUMINISTROS.YNRO AND(PROYECTO=MONITOR OR PROYECTO=CONSOLA);
Consultas con Funciones Agregadas. COUNT(*): Cuenta los registros de una tabla COUNTO(Campo): Cuenta los registros por un campo determinado. Si el campo tiene un valor nulo, no lo cuenta. SUM(Campo): Suma todos los valores del campo. No suma nulos. el campo debe ser numrico. AVG(Campo): Promedia el campo. No tiene en cuenta los nulos y el campo debe ser numrico. MAX(Campo): Selecciona el valor mximo del campo. No cuenta el valor nulo. MIN(Campo): Selecciona el valor mnimo del campo. No cuenta el valor nulo. Consultas para contar filas. Consultar el nmero total de proyectos. SELECT COUNT(*) FROM PROYECTOS; Consultas para contar final con condicin. Obtener la cantidad total de proveedores que se encuentran en la ciudad de LONDRES. SELECT COUNT(VNRO) FROM PROVEEDORES WHERE CIUDAD=LONDRES ;
Consultas con agrupacin. Obtener el nmero total de proyectos por proveedor SELECT VNRO,COUNT(YNRO) FROM SUMINISTROS GROUP BY VNRO;
Consultas con agrupacin y reunin de tablas. Consultar el nombre del proveedor con su respectivo nmero total de proyectos. SELECT PROVEEDOR,COUNT(YNRO) FROM PROVEEDORES,SUMINISTROS WHERE PROVEEDORES.VNRO=SUMINISTROS.VNRO GROUP BY PROVEEDOR;
Consultas con condicin de agrupacin. Consultar el nombre del proveedor, con su respectiva cantidad total suministrada; solo aquellos proveedores que han suministrado cantidades mayores a 800. SELECT PROVEEDOR,SUM(CANT) FROM PROVEEDORES,SUMINISTROS WHERE PROVEEDORES.VNRO=SUMINISTROS.VNRO GROUP BY PROVEEDOR HAVING SUM(CANT)>800;
Consultas con condicin y agrupamiento varios. Consultar el nombre del proveedor, y el nombre de las partes, con su respectiva cantidad suministrada. Solo los proveedores de la ciudad de LONDRES Y PARIS, y que hayan suministrado mas de 500. SELECT PROVEEDOR,PARTE,SUM(CANT) FROM PROVEEDORES,PARTES,SUMINISTROS WHERE PROVEEDORES.VNRO=SUMINISTROS.VNRO ANDPARTES.PNRO=SUMINISTROS.PNRO AND (PROV EEDORES.CIUDAD=LONDRES ORPROVEEDORES.CIUDAD=PARIS) GROUP BY PROVEEDOR,PARTE HAVING SUM(CANT)>500;