G*INICIAR MYSQL
mysql -u usuario -p
solicitara contraseña y colocar contraseña que hayan creado
*CREAR BASE DE DATOS
CREATE DATABASE nombre_base_de_datos;
*VER BASES DE DATOS
SHOW DATABASES;
*DEFINIR BASE DE DATOS A USAR
USE DATABASE nombre;
*CREAR TABLA
CREATE TABLE nombre_tabla (campo tipo_de_dato(tamaño), ...);
*VER TABLAS
SHOW TABLES;
*VISUALIZAR ESTRUCTURA DE TABLA
DESCRIBE nombre_tabla;
*ELIMINAR TABLA
DROP TABLE nombre_tabla;
*CREAR INDICES
primer modo
CREATE INDEX nombre_index ON nombre_tabla (columna);
Segundo modo
ALTER TABLE tabla ADD INDEX nombre_indice (columna);
*ELIMINAR INDICES
ALTER TABLE tabla DROP INDEX nombre_indice;
*VER INDICES
SHOW INDEX FROM tabla;
*CREAR VISTA
CREATE VIEW nombre_vista [lista_columnas] AS consulta;
CREATE VIEW nombreVista AS SELECT campo1, campo2, campo3 FROM nombreTabla WHERE
campo><="condicion";
SELECT * FROM nombreVista;
*DELIMITADOR CAMBIO DE SIGNO
DELIMITER $$ - nuevo signo
DELIMITER ; - restaurar signo
*CREAR TRIGGER o DISPARADOR
DELIMITER $$
CREATE TRIGGER nombreTrigger
-> BEFORE UPDATE ON nombreTabla
-> FOR EACH ROW
-> BEGIN
-> IF [Link] <> [Link]
-> THEN
-> SET NEW.campo1 = [Link] * 2;
-> END IF;
-> END$$
DELIMITER ;
*ACTUALIZAR CAMPO
UPDATE nombreTabla SET campo = cambio WHERE id = numero;
*CONSULTAR TABLA
SELECT * FROM nombreTabla;
*CONSULTAR CAMPOS
SELECT campo1, campo2 FROM nombreTabla;
*CONSULTAR TABLA CON UNA CONDICION WHERE ESPECIFICA
SELECT * FROM nombreTabla WHERE campo='condicion';
*SUBCONSULTA CON DOS TABLAS
SELECT campo1, campo2 FROM nombreTabla1 WHERE campo1 IN(SELECT campo1 FROM
nombreTabla2);
*SUBCONSULTA DENTRO DE LA MISMA TABLA CON FUNCION
SELECT campo1 FROM nombreTabla WHERE campo3=(SELECT FUNCION(campo3) FROM
nombreTabla);
*SUBCONSULTA CON DOS TABLAS ESPECIFICANDO EL CAMPO
SELECT campo1, campo2 FROM nombreTabla1 WHERE id_nombreTabla2 IN(SELECT id FROM
nombreTbla2 WHERE campo2='condicion');
*ACTUALIZAR CON SUBCONSULTA
UPDATE nombreTabla SET campo=campo+condicion WHERE id IN(SELECT id_nombreTbla FROM
nombreTabla WHERE campo='criterio');
PROCEDIMIENTOS ALMACENADOS
*PROCEDIMIENTO ALMACENADO IN
DELIMITER $$
CREATE PROCEDURE nombredelprocedimiento(IN nombre_variable VARCHAR(TAMAÑO))
BEGIN
SELECT * FROM nombreTabla WHERE campo = nombre_campo;
END$$
DELIMITER ;
*INVOCAR AL PROCEDIMIENTO IN
CALL nombredelprocedimiento('valor');
*PROCEDIMIENTO ALMACENADO OUT
DELIMITER $$
CREATE PROCEDURE nombredelprocedimiento(
IN nombre_campo VARCHAR(TAMAÑO),
OUT variable INT)
BEGIN
SELECT count(campo o id)
INTO variable
FROM nombreTabla
WHERE campo = nombre_campo;
END$$
DELIMITER ;
INVOCAR AL PROCEDIMIENTO OUT
CALL nombredelprocedimiento('valor', @variable);
SELECT @variable AS nombre_columna;
TRANSACCIONES
*INICIAR TRANSACCION
START TRANSACTION;
*VERIFICAR Y FINALIZAR TRANSACCION
COMMIT;
*REINICIAR DATOS ANTES DE LA TRANSACCION
ROLLBACK;
ENCRIPTACIÓN
*PASSWORD
PASSWORD ('cadena_a_cifrar')
SELECT PASSWORD ('cadena');
*MD5
MD5 ('cadena');
SELECT MD5 ('cadena');
*SHA1
SHA('CADENA');
SELECT SHA ('cadena');
*DES_ENCRYPT(Para cifrar)
DES_ENCRYPT ( cadena [ , { llave_numero | llave_cadena } ]
SELECT DES_ENCRYPT ('cadena','llave');
SIN LLAVE
INSERT INTO tabla VALUES (DES_ENCRYPT ('cadena1'), cadena2);
*DES_DECRYPT (Para descifrar)
SELECT * FROM agenda WHERE DES_DECRYPT(nombrecampo)='cadena1';
CON LLAVE
INSERT INTO tabla VALUES (DES_ENCRYPT ('cadena1','llave'), cadena2);
SELECT * FROM agenda WHERE DES_DECRYPT(nombrecampo,'llave')='cadena1';
*AES_ENCRYPT (Para cifrar)
AES_ENCRYPT ( 'cadena', 'llave')
SIN LLAVE
INSERT INTO tabla VALUES (AES_ENCRYPT ('cadena1'), cadena2);
*DES_DECRYPT (Para descifrar)
AES_DECRYPT ('cadena', 'llave')
SELECT * FROM agenda WHERE AES_DECRYPT(nombrecampo)='cadena1';
CON LLAVE
INSERT INTO tabla VALUES (AES_ENCRYPT ('cadena1','llave'), cadena2);
SELECT * FROM agenda WHERE AES_DECRYPT(nombrecampo,'llave')='cadena1';
Si se desea extraer todos los campos cifrados:
SELECT AES_DECRYPT(nombre, 'mi_llave'), AES_DECRYPT(edad, 'mi_llave') FROM agenda";