Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tipos de Dato
Texto
Char (1-255) -> Si tiene menos que lo marcado, rellena para
completar.
Varchar (1-255)
TinyText (255)
Text (65535)
MediumText (16777215)
LongText (4294967295)
Numrico
TinyInt, SmallInt, Int, MediumInt, BigInt
Float (M,D)
Double (M,D)
Decimal (M,D)
Fecha
Date, DateTime, Timestamp(N), Time, Year(D)
Sentencias
Creacin Base de Datos
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] nombreBD
[DEFAULT] CHARACTER SET [=] charset_name
Estructura de Tabla
DROP TABLE [IF EXISTS] `nombreTabla`;
CREATE TABLE [IF NOT EXISTS] ` nombreTabla ` (
ALTER TABLE
Ver caractersticas de una tabla:
DESCRIBE agent1;
Agregar Campo:
ALTER TABLE `nombreTabla` ADD nombreCampo tipoDato(Mximo);
Eliminar Campo:
ALTER TABLE `nombreTabla` DROP (nombreCampo);
nuevoTipoDato(nuevoMax));
Agregar clave primaria de Campo:
ALTER TABLE `nombreTabla` ADD CONSTRAINT nombreClavePrimaria
PRIMARY KEY(nombreCampo);
Consultas
SELECT [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name}
Inserciones
INSERT INTO < table name > (col1,col2,col3...col n)
VALUES (value1,value2,value3value n);
Actualizacin/Modificacin de Datos
UPDATE < table name >
SET<column1>=<value1>,<column2>=<value2>,.....
WHERE <condition>;
Eliminar Datos
DELETE FROM nombreTabla WHERE condicion;
Subconsultas
SELECT a.studentid, a.name, b.total_marks FROM student a, marks b
WHERE a.studentid = b.studentid AND b.total_marks > (SELECT
total_marks FROM marks WHERE studentid = 'V002');
JOINS
Vistas
Crear
CREATE VIEW agentview AS SELECT * FROM agents;
(SELECT * FROM agentview;)
Modificar
ALTER VIEW agentview AS SELECT * FROM ;
Eliminar
DROP VIEW nombreVista;
Programacin
DEFINE varprueba INT; #definimos la variable y su tipo
SET varprueba = 10; #le damos un valor concordante con el tipo
IF THEN ELSE:
El condicional simple IF que tenemos en la mayora de los lenguajes de programacin,
que puede ser complementado o no con un ELSE para el caso de que no se cumpla. La
sintaxis es IF condicin THEN (el ELSE si hace falta) END IF. Podis ver un ejemplo:
delimiter $$
CREATE procedure ej(IN val int)
begin
/* Parmetro de entrada */
IF val = 0 then
INSERT INTO tbejemplo VALUES('No disponible');
else
INSERT INTO tbejemplo VALUES(val);
end IF;
end$$
delimiter ;
CASE:
Condicional que nos permite evaluar el valor de una variable y realizar diversas
acciones segn varias posibilidades. Es una forma de abreviar un montn de IF
anidados. En este caso el ELSE nos permite definir un valor por defecto (como el
default en un switch/case de C, Java o PHP):
delimiter $$
CREATE procedure ej(IN val int)
Begin
/* Parmetro de entrada */
case val
when 5 then INSERT INTO prueba VALUES('Suficientes');
when 4 then INSERT INTO prueba VALUES('Reserva');
WHILE:
Un bucle que hace que un procedimiento se repita mientras se de una condicin. Si
la condicin ya no se da antes de entrar al bucle, no entra.
delimiter $$
CREATE procedure ej(IN val int)
Begin
/* Parmetro de entrada */
define i int;
set i = 0;
while i<5 do
INSERT INTO prueba VALUES (i);
set i=i+1;
end while;
end$$
delimiter ;
REPEAT:
Lo contratio que WHILE, repeat es un bucle UNTIL, se realiza hasta que se de una
condicin. Si bien tambin comparte con el DOWHILE de C (y Java, y PHP)
que siempre se ejecuta al menos una vez.
1
2
3
4
5
6
7
8
9
10
11
12
delimiter $$
CREATE procedure ej(IN val int)
begin
define i int;
set i = 0;
repeat
/* Parmetro de entrada */
Modificar
ALTER {PROCEDURE | FUNCTION} object_name
[( {parameter_name datatype }[, ...] )]
[NAME new_object_name]
[LANGUAGE {ADA | C | FORTRAN | MUMPS | PASCAL | PLI | SQL}]
[PARAMETER STYLE {SQL | GENERAL}]
[NO SQL | CONTAINS SQL | READS SQL DATA | MODIFIES SQL DATA]
[RETURN NULL ON NULL INPUT | CALL ON NULL INPUT]
[DYNAMIC RESULT SETS int]
[CASCADE | RESTRICT]
Eliminar
DROP PROCEDURE proc_name
Funcin
Ejecuta una serie de instrucciones tras proporcionarle ninguna, una o ms
variables. Devuelve valores.
Crear
DELIMITER //
CREATE FUNCTION EXT_PRIORIDAD (cliente_prioridad VARCHAR(5)) RETURNS
VARCHAR(20)
BEGIN
CASE cliente_prioridad
WHEN 'A' THEN
RETURN 'Alto';
WHEN 'M' THEN
RETURN 'Medio';
WHEN 'B' THEN
RETURN 'Bajo';
ELSE
RETURN 'NN';
END CASE;
END//
DELIMITER ;
SELECT NOMBRE, APELLIDO, EXT_PRIORIDAD(PRIORIDAD)
FROM CLIENTE;
Modificar
Eliminar
DROP FUNCTION nombre_funcion
Disparador/Trigger
Serie de instrucciones que se ejecutan automticamente al producirse una
modificacin que hemos especificado en la base de datos.
Crear
-- TRIGGER PARA INSERT
DELIMITER //
CREATE TRIGGER PEDIDO_BI_TRIGGER
BEFORE INSERT ON PEDIDO
FOR EACH ROW
BEGIN
DECLARE cantidad_filas INT;
SELECT COUNT(*)
INTO cantidad_filas
FROM TOTAL_VENTAS
WHERE idcliente=NEW.idcliente;
IF cantidad_filas > 0 THEN
UPDATE TOTAL_VENTAS
SET total=total+NEW.total
WHERE idcliente=NEW.idcliente;
ELSE
INSERT INTO TOTAL_VENTAS
(idcliente,total)
VALUES(NEW.idcliente,NEW.total);
END IF;
END//
-- TRIGGER PARA UPDATE
CREATE TRIGGER PEDIDO_BU_TRIGGER
BEFORE UPDATE ON PEDIDO
FOR EACH ROW
BEGIN
UPDATE TOTAL_VENTAS
SET total=total+(NEW.total-OLD.total)
WHERE idcliente=NEW.idcliente;
END//
-- TRIGGER PARA DELETE
CREATE TRIGGER PEDIDO_BD_TRIGGER
BEFORE DELETE ON PEDIDO
FOR EACH ROW
BEGIN
UPDATE TOTAL_VENTAS
SET total=total-OLD.total
WHERE idcliente=OLD.idcliente;
END//
Eliminar
DROP TRIGGER [IF EXISTS] nombre_trigger