MySQL Tutorial
Empezando con MySQL
Buscar..
Observaciones
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", "[email protected]" );
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', '[email protected]' );
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 | [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 "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%';