Comenzando con MySQL
En esta página
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%';