MySQLEmpezando con MySQL

Observaciones

MySQL Logo

MySQL es un sistema de gestión de base de datos relacional de código abierto (RDBMS) desarrollado y soportado por Oracle Corporation.

MySQL es compatible con una gran cantidad de plataformas, incluidas las variantes de Linux, OS X y Windows. También tiene API para una gran cantidad de idiomas, incluidos C, C ++, Java, Lua, .Net, Perl, PHP, Python y Ruby.

MariaDB es una bifurcación de MySQL con un conjunto de características ligeramente diferente . Es totalmente compatible con MySQL para la mayoría de las aplicaciones.

Versiones

Versión Fecha de lanzamiento
1.0 1995-05-23
3.19 1996-12-01
3.20 1997-01-01
3,21 1998-10-01
3,22 1999-10-01
3,23 2001-01-22
4.0 2003-03-01
4.1 2004-10-01
5.0 2005-10-01
5.1 2008-11-27
5.5 2010-11-01
5.6 2013-02-01
5.7 2015-10-01

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 no hay dos filas que tengan la misma id en este caso), MySQL asignará automáticamente una nueva, valor único para el campo de 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", "myuser@example.com" );
 

Ejemplo de valor de retorno:

Consulta OK, 1 fila afectada (0.06 seg)

Las strings varchar aka también se pueden insertar utilizando comillas simples:

INSERT INTO mytable ( username, email )
VALUES ( 'username', 'username@example.com' );
 

Actualizar una fila en una tabla MySQL

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

Ejemplo de valor de retorno:

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 de retorno:

Consulta OK, 1 fila afectada (0.06 seg)

Esto borrará la fila que tiene id es 8.


Seleccionando filas basadas en condiciones en MySQL

SELECT * FROM mytable WHERE username = "myuser";
 

Valor de retorno:

+----+----------+---------------------+
| id | username | email               |
+----+----------+---------------------+
|  1 | myuser   | myuser@example.com  |
+----+----------+---------------------+
 

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 "esquema_información" 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.

Key refiere al tipo de clave que puede afectar el campo. Primario (PRI), Único (UNI) ...

n fila en conjunto (0,00 seg)

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


Creando usuario

Primero, debe crear un usuario y luego darle permisos de usuario 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 está alojada 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 de retorno:

Consulta OK, 0 filas afectadas (0.00 seg)

Añadiendo 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, por tanto, databaseName.tableName .

WITH GRANT OPTION debe WITH GRANT OPTION 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 usar palabras reservadas en SQL. Por ejemplo, es mejor evitar nombres como table o first name .

Si debe usar dichos nombres, póngalos entre los delimitadores `` tachar `` revés. Por ejemplo:

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

Una consulta que contenga los delimitadores de marca regresiva 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 inactivas 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 detallado 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 Stored Procedures palabras y los comodines.

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