1. Cheat sheet MySQL
By Daniel Gorena
Correr archivos SQL
SOURCE file_name.sql;
Comandos de inicio
mysql-ctl cli ejecutar el shell interactivo
mysql-ctl start iniciar MySQL
mysql-ctl stop detener MySQL
Manejo de bases de datos
SHOW DATABASES; Lista de DB
DROP DATABASE <tablename>; Borrar DB
USE <DB_name>; Selecciona la DB a usar
CREATE DATABASE <tablename>; Crea una BD
SELECT DATABASE(); Para saber que BD está en uso
Manejo de tablas
SHOW TABLES; muestra las tablas que hay en la BD
SHOW COLUMNS FROM <tablename>; muestra que columnas
tiene la tabla
DESC <tablename>; describe las columnas de la tabla
Create
CREATE TABLE <tablename>(
Col_name1 TIPO_DATO NOT NULL DEFAULT “valor * defecto”,
Col_name2 TIPO_DATO NOT NULL DEFAULT “valor * defecto”,
PRIMARY KEY (col_name)
);
*NOT NULL cuando se quiere dejar sin datos la celda.
*DEFAULT para dejar un valor por defecto si no se
incluye un dato para la celda.
*PRIMARY KEY crea la llave primaria de la tabla.
Read
SELECT*FROM <tablename>; visualiza toda la tabla
SELECT col_name1,col_name2,.. FROM<tablename>; solo
columnas especificadas
SELECT*FROM <tablename> WHERE col_name1=#; seleciona
datos que son iguales al número o dato especificado.
Update (reemplazar/actualizar valores)
UPDATE <tablename> AS colname = “Text” WHERE colname =
“Text”; cambia valores determinados por otros. Se pueden
tomar diferentes columnas.
Delete TENER CUIDADO YA QUE SI SE BORRAN LOS
DATOS NO SE RECUPERAN
DELETE FROM <tablename> WHERE col_name=x; borra datos
coincidentes con la secuencia lógica.
Tipos básicos de datos
Numéricos:
VARCHAR (#de
caracteres)
Una cadena de longitud variable hasta
65535.
CHAR Una variable de caracteres de longitud
fija.
TEXT Para almacenar cadenas de texto de
formato largo como artículos.
TINY
TEXTTINYTEXT
Se utiliza para almacenar cadenas
cortas de información. Almacena hasta
255 caracteres
MEDIUMTEXT Cadenas de texto más grandes como
documentos técnicos. 16MB de inf.
LONGTEXT Cadenas de texto extremadamente largas.
4GB de inf.
BLOB Estas son cadenas binarias que se
tratan como valores numéricos. Imágenes
y videos
Numéricas:
INT Se utiliza para almacenar un valor
entero entre -2147483648 a 2147483647,
o el doble sin signo
SMALLINT Entero pequeño / -32768 a 32767
TINYINT Entero pequeño / de -128 a 127
MEDIUMINT Entero pequeño/ de -8388608 a 8388607
BIGINT Entero grande
rango con signo es -2E63 a 2E63 -1
FLOAT Número de punto flotante de precisión
simple/ -3.402823466E + 38 a -
1.175494351E-38
DOUBLE Número de coma flotante de doble
precisión -1.7976931348623157E + 308 a
-2.2250738585072014E-308
DECIMAL Se utiliza para almacenar un valor
decimal exacto de coma fija. Número
máximo de dígitos es 65, Número máximo
de decimales es 30.
BIT Almacena valores de bits.
Fechas:
DATE Valor de fecha -AAAA-MM-DD
DATETIME Formato AAAA-MM-DD hh: mm: ss.
TIMESTAMP combinación de fecha y hora dentro del
rango 1970-01-01 00:00:00 UTC a 2038-
01-19 03:14:07 UTC, Usa menor espacio.
TIME Devuelve la hora actual.
Funciones de cadena
SELECT SUBSTRING('Hello World', 1, 4); para dividir una
cadena, desde la 1ª letra hasta la 4ª.
CONCAT (col1, “text”, col2); junta diferentes columnas y
cadenas de texto.
CONCAT_WS('text', col1,col2, ...) concatena varias
columnas, y entre ellas pone el mismo texto.
Corta las primeras 10 letras de una columna y le agrega
...
SELECT CONCAT
(SUBSTRING(title, 1, 10),
'...'
)AS 'short title'
FROM books;
SELECT REPLACE(col1, “texto a ser remplazado”, “texto
que reemplazara”); reemplaza partes de cadenas por
otras.
SELECT REVERSE('text'); devuelve el texto al revez.
SELECT CHAR_LENGTH('text');devuelve el numero de letras
de un texto.
SELECT UPPER('Hello World'); cambia texto a mayusculas
SELECT LOWER('Hello World'); cambia texto a minúsculas
2. Cheat sheet MySQL
By Daniel Gorena
Búsqueda, Selección y Consultas
SELECT DISTINCT col1,col2 FROM <tablename>; Muestra los
datos pero quitando los duplicados
SELECT col1,col2 FROM <tablename> LIMIT #; Muestra un
número limitado de filas. #,# se puede usar un rango
entre dos números.
SELECT col1 FROM <tablename> WHERE col LIKE “%text%”;
busca el texto en algún lugar de la columna col
*% busca cualquier texto antes o después del texto
*”_ _ _” busca un numero determinado de caracteres o
datos
Funciones agregadas
SELECT COUNT col1 FROM <tablename>; Cuenta los datos que
tiene una columna.
SELECT COUNT (DISTINCT col1) FROM <tablename>; Cuenta
los valores distintos que hay.
SELECT col1, col2 FROM <tablename> GROUP BY col1; agrupa
datos repetidos y los muestra como uno solo
SELECT col1,COUNT(*) FROM <tablename> GROUP BY col1;
cuenta el número de cada grupo de valores.
SELECT MIN(col1) FROM <tablename>; Selecciona el valor
mínimo de esa columna.
SELECT MAX(col1) FROM <tablename>; Selecciona el valor
mínimo de esa columna.
SELECT SUM(col) FROM <tablename>; suma de toda una
columna.
SELECT AVG(col) FROM <tablename>; promedio de toda una
columna.
La función HAVING se utiliza para incluir condiciones
con alguna función SQL del tipo SUM, MAX, COUNT
ORDER BY Ordena de menor a mayor o (DESC) viceversa
SubQueries
Devuelve el valor mínimo para compararlo a una columna y
muestra la fila que contenga el valor mínimo de la
columna. Valido también con valores máximos.
SELECT*FROM <tablename>
WHERE col1= (select MIN(col)
FROM <tablename>
);
*son algo más lentos que un query normal.
Min y Max junto con GROUP BY
Devuelve el mínimo de cada valor agrupado
SELECT
Col1,col2,
MIN(col3)
FROM <tablename>
GROUP BY col1,col2;
Funciones de tiempo
ADDDATE() Agrega valores de tiempo (intervalos) a
un valor de fecha
DATE_ADD() Agrega valores de tiempo (intervalos) a
un valor de fecha
DAY() Sinónimo de DAYOFMONTH()
DAYNAME() Devuelve el nombre del día de la semana
DAYOFMONTH() Devuelve el día del mes (0-31)
DAYOFWEEK() Devuelve el índice de días de la semana
del argumento
DAYOFYEAR() Devuelve el día del año (1-366)
NOW() Devuelve la fecha y hora actual
TIME() Extrae la parte de tiempo de la
expresión pasada
Formato de la fecha
DATE_FORMAT(fecha, “formato”); Devuelve la fecha con un
formato determinado.El formato debe ir especificado
entre comillas ej “%D %M %H”
%D Day of the month with English suffix
(0th, 1st, 2nd, 3rd, …)
%d Day of the month, numeric (00..31)
%H Hour (00..23)
%h Hour (01..12)
%i Minutes, numeric (00..59)
%M Month name (January..December)
%m Month, numeric (00..12)
%p AM or PM
%r Time, 12-hour (hh:mm:ss followed
by AM or PM)
%S Seconds (00..59)
%s Seconds (00..59)
%T Time, 24-hour (hh:mm:ss)
%W Weekday name (Sunday..Saturday)
%w Day of the week (0=Sunday..6=Saturday)
%Y Year, numeric, four digits
%y Year, numeric (two digits)
%% A literal % character
Operadores lógicos
AND, && Y
NOT, ! No
OR, || O
XOR Xor
Comparadores
> Mayor que
>= Mayor igual
< Menor que
<= Menor igual
<>, != Diferente de
= Igual
BETWEEN Vmin AND Vmax Valor entre
IN() Dentro del conjunto
NOT IN() Fuera del conjunto
Flujos de control
WHEN
Se usa para varios casos y acciones, no solo se
reemplaza con texto, pueden ser funciones también o
declaraciones
CASE
WHEN condición THEN “Texto”
WHEN condición_2 THEN “Texto” ...
ELSE “Texto”
END AS col
IF
En vez de texto se pueden poner funciones o
declaraciones.
IF condición THEN “Texto”
ELSEIF condición_2 THEN “Texto”...
ELSE “Texto”
END IF
WHILE
[begin_label:] WHILE condición DO
declaraciones
END WHILE [end_label]
3. Cheat sheet MySQL
By Daniel Gorena
Tablas relacionales
CREATE TABLE table_1(
id INT AUTO_INCREMENT PRIMARY KEY,
col_1 VARCHAR(100),
col_2 VARCHAR(100)
);
CREATE TABLE table_2(
id INT AUTO_INCREMENT PRIMARY KEY,
col_1 DATE,
table_1_id INT,
FOREIGN KEY(table_1_id) REFERENCES table_1(id)
ON DELETE CASCADE
);
Sentencias JOIN
Se usan para usar datos de dos tablas
Combinación interna (INNER JOIN)
Forma explícita
SELECT *
FROM empleado
INNER JOIN departamento
ON empleado.IDDepartamento
= departamento.IDDepartamento
Forma implícita
SELECT *
FROM empleado, departamento
WHERE empleado.IDDepartamento =
departamento.IDDepartamento
LEFT JOIN
SELECT *
FROM empleado
LEFT OUTER JOIN departamento
ON empleado.IDDepartamento
= departamento.IDDepartamento
LEFT JOIN excluyendo la intersección
SELECT *
FROM empleado
LEFT OUTER JOIN departamento
ON empleado.IDDepartamento =
departamento.IDDepartamento
WHERE departamento.IDDepartamento IS NULL
RIGHT OUTER JOIN o RIGHT JOIN
SELECT *
FROM empleado
RIGHT OUTER JOIN departamento
ON empleado.IDDepartamento =
departamento.IDDepartamento
Combinación completa (FULL OUTER JOIN)
SELECT *
FROM empleado
FULL OUTER JOIN departamento
ON empleado.IDDepartamento =
departamento.IDDepartamento
Conección entre JS Y MySQL (NODE)
Paso 1 instalar node
Install node
Paso 2 istalar interfase de mysql
npm install mysql
paso 3 Código para crear una aplicación en JS
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root', // your root username
database : 'join_us' // the name of your db
});
var q = 'SELECT CURTIME() as time, CURDATE() as date,
NOW() as now';
connection.query(q, function (error, results, fields) {
if (error) throw error;
console.log(results[0].time);
console.log(results[0].date);
console.log(results[0].now);
});
Paso 4 correr el archive js
node nombre_archivo.js
extra, código para imprimir en pantalla en js
console.log(“hola mundo”)
Activadores(triggers)
Se “disparan” cuando algo pasa con las bases de datos.
CREATE TRIGGER trigger_name
trigger_time trigger_event ON table_name FOR EACH ROW
BEGIN
...
END;
trigger_time trigger_event ON table_name
BEFORE INSERT photos
AFTER UPDATE users
DELETE