Está en la página 1de 8

MySQL

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)

Binario (Almacena archivos)


TinyBlob, Blob, MediumBlob, LongBlob

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

Seleccionar Base de Datos


USE nombreBaseDatos;

Estructura de Tabla
DROP TABLE [IF EXISTS] `nombreTabla`;
CREATE TABLE [IF NOT EXISTS] ` nombreTabla ` (

`nombreCampo1` tipoDato(maxCaracteres) Unsigned Not Null


Default '0' Auto_increment [Primary Key],

FOREIGN KEY [campoAReferenciar]


REFERENCES [nombreTablaReferencia] (campoReferencia)
[PRIMARY KEY (`nombreCampo`)]
) ENGINE=InnoDB/MyIsam DEFAULT CHARSET=utf8;

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);

Modificar Campo con valor por defecto .05:


ALTER TABLE `nombreTabla` MODIFY nombreCampo DEFAULT .05;

Modificar tipo de dato y tamao de campo:


ALTER TABLE `nombreTabla` MODIFY (nombreCampo

nuevoTipoDato(nuevoMax));
Agregar clave primaria de Campo:
ALTER TABLE `nombreTabla` ADD CONSTRAINT nombreClavePrimaria
PRIMARY KEY(nombreCampo);

Eliminar clave primaria/foranea de Campo:


ALTER TABLE `nombreTabla` DROP CONSTRAINT nombreClave;

Crear clave fornea:


ALTER TABLE `nombreTabla` ADD CONSTRAINT nombreClaveForanea

FOREIGN KEY (nombreCampoReferente) REFERENCES


nombreTablaReferencia(nombreCampoReferencia);

Consultas
SELECT [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name}

Select tabla.campo1, tabla.campo2, [*] From tabla Where


condiciones;
Condiciones:
1. = < > <= >= != BETWEEN AND OR

2. LIKE (Compara cadenas de caracteres) -> Where


empleado.nombre LIKE ([%]A[%]);
3. IS NULL
4. valor IN(60,90,100)
5. ORDER BY nombreCampoPreferenciaOrdenar [ASC/DESC]
GROUP BY:
Sustituye a Where.
SELECT department_id,COUNT(*) FROM employees GROUP BY
department_id;

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');

else INSERT INTO prueba VALUES ('Insuficientes);


end case;
end$$
delimiter;

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 */

INSERT INTO prueba VALUES (i);


set i=i+1;
until i <= 5;
end repeat;
end$$
delimiter ;

Procedimiento, Funciones y Disparadores


Procedimiento
Ejecuta una serie de instrucciones tras proporcionarle ninguna, una o ms
variables. No devuelve valores.
Crear
CREATE PROCEDURE STUDENT_MARKS
(IN STUDENT_REG_NO CHAR(15),IN TOTAL_MARKS DECIMAL(7,2), NO_SUBJECTS
INT(3))
LANGUAGE SQL MODIFIES SQL DATA
UPDATE STUDENTMAST.MARKS
SET PERCENTAGE = TOTAL_MARKS/NO_SUBJECT
WHERE REG_NO = STUDENT_REG_NO

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

ALTER FUNCTION promedio_huespedes


COMMENT 'Calculo del promedio diario de huspedes entre una
fecha inicial y una fecha final';

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

También podría gustarte