Comenzando con MySQL

Empezando

Creando una base de datos en MySQL

CREATE DATABASE mydb;

Valor de retorno:

Consulta OK, 1 fila afectada (0.05 seg)


Usando la base de datos creada mydb

USE mydb;

Valor de retorno:

Base de datos cambiada

Creando una tabla en MySQL

CREATE TABLE mytable
(
  id              int unsigned NOT NULL auto_increment,
  username        varchar(100) NOT NULL,
  email           varchar(100) NOT NULL,
  PRIMARY KEY     (id)
);

CREATE TABLE mytable creará una nueva tabla llamada mytable.

id int unsigned NOT NULL auto_increment crea la columna id, este tipo de campo asignará una ID numérica única a cada registro en la tabla (lo que significa que dos filas no pueden tener la misma id en este caso), MySQL automáticamente asignará un nuevo valor único al campo id del registro (comenzando con 1).

Valor de retorno:

Consulta OK, 0 filas afectadas (0.10 seg)


Insertar una fila en una tabla MySQL

INSERT INTO mytable ( username, email )
VALUES ( "myuser", "[email protected]" );

Ejemplo de valor devuelto:

Consulta OK, 1 fila afectada (0.06 seg)

El varchar a.k.a strings también se puede insertar usando comillas simples:

INSERT INTO mytable ( username, email )
VALUES ( 'username', '[email protected]' );

Actualizando una fila en una tabla MySQL

UPDATE mytable SET username="myuser" WHERE id=8

Ejemplo de valor devuelto:

Consulta OK, 1 fila afectada (0.06 seg)

El valor int se puede insertar en una consulta sin comillas. Las cadenas y las fechas deben estar entre comillas simples ' o comillas dobles ".


Eliminar una fila en una tabla MySQL

DELETE FROM mytable WHERE id=8

Ejemplo de valor devuelto:

Consulta OK, 1 fila afectada (0.06 seg)

Esto eliminará la fila que tiene id es 8.


Selección de filas según las condiciones en MySQL

SELECT * FROM mytable WHERE username = "myuser";

Valor de retorno:

+----+----------+---------------------+
| id | username | email               |
+----+----------+---------------------+
|  1 | myuser   | [email protected]  |
+----+----------+---------------------+

1 fila en conjunto (0.00 seg)


Mostrar lista de bases de datos existentes

SHOW databases;

Valor de retorno:

+-------------------+
| Databases         |
+-------------------+
| information_schema|
| mydb              |
+-------------------+

2 filas en conjunto (0.00 seg)

Puede pensar en “information_schema” como una “base de datos maestra” que proporciona acceso a los metadatos de la base de datos.


Mostrar tablas en una base de datos existente

SHOW tables;

Valor de retorno:

+----------------+
| Tables_in_mydb |
+----------------+
| mytable        |
+----------------+

1 fila en conjunto (0.00 seg)


Mostrar todos los campos de una tabla

DESCRIBE databaseName.tableName;

o, si ya está utilizando una base de datos:

DESCRIBE tableName;

Valor de retorno:

+-----------+----------------+--------+---------+-------------------+-------+
| Field     | Type           | Null   | Key     | Default           | Extra |
+-----------+----------------+--------+---------+-------------------+-------+
| fieldname | fieldvaluetype | NO/YES | keytype | defaultfieldvalue |       |
+-----------+----------------+--------+---------+-------------------+-------+

Extra puede contener auto_increment por ejemplo.

Clave se refiere al tipo de clave que puede afectar el campo. Primaria (PRI), Única (UNI)…

n fila en conjunto (0.00 seg)

Donde n es el número de campos de la tabla.


Creando usuario

Primero, debe crear un usuario y luego otorgarle permisos en ciertas bases de datos/tablas. Al crear el usuario, también debe especificar desde dónde se puede conectar este usuario.

CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_password';

Creará un usuario que solo puede conectarse en la máquina local donde se aloja la base de datos.

CREATE USER 'user'@'%' IDENTIFIED BY 'some_password';

Creará un usuario que puede conectarse desde cualquier lugar (excepto la máquina local).

Ejemplo de valor devuelto:

Consulta OK, 0 filas afectadas (0.00 seg)

Agregar privilegios

Otorgue privilegios básicos comunes al usuario para todas las tablas de la base de datos especificada:

GRANT SELECT, INSERT, UPDATE ON databaseName.* TO 'userName'@'localhost';

Otorgue todos los privilegios al usuario para todas las tablas en todas las bases de datos (atención con esto):

GRANT ALL ON *.* TO 'userName'@'localhost' WITH GRANT OPTION;

Como se demostró anteriormente, *.* apunta a todas las bases de datos y tablas, databaseName.* apunta a todas las tablas de la base de datos específica. También es posible especificar la base de datos y la tabla como databaseName.tableName.

CON OPCIÓN DE CONCESIÓN debe omitirse si el usuario no necesita poder otorgar privilegios a otros usuarios.

Los privilegios pueden ser cualquiera

ALL

o una combinación de los siguientes, cada uno separado por una coma (lista no exhaustiva).

SELECT
INSERT
UPDATE
DELETE
CREATE
DROP

Nota

En general, debe intentar evitar el uso de nombres de columnas o tablas que contengan espacios o el uso de palabras reservadas en SQL. Por ejemplo, es mejor evitar nombres como “tabla” o “nombre”.

Si debe usar dichos nombres, colóquelos entre los delimitadores de `` de comillas invertidas. Por ejemplo:

CREATE TABLE `table`
(   
   `first name` VARCHAR(30)
);

Una consulta que contenga los delimitadores de tilde invertida en esta tabla podría ser:

 SELECT `first name` FROM `table` WHERE `first name` LIKE 'a%';

Ejemplos de esquemas de información

Lista de procesos

Esto mostrará todas las consultas activas y dormidas en ese orden y luego por cuánto tiempo.
SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;

Esto es un poco más de detalle sobre los marcos de tiempo, ya que está en segundos de forma predeterminada.

SELECT ID, USER, HOST, DB, COMMAND, 
TIME as time_seconds, 
ROUND(TIME / 60, 2) as time_minutes, 
ROUND(TIME / 60 / 60, 2) as time_hours, 
STATE, INFO
FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;

Búsqueda de procedimientos almacenados

Busque fácilmente en todos los Procedimientos almacenados palabras y comodines.

SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%word%';