FANDOM


Algunos enlaces Editar

Operaciones sobre tablas Editar

¿Dónde, dentro del sistema de archivos, están las bases de datos?

SHOW VARIABLES LIKE 'datadir';

Creación de la base de datos para pruebas Editar

DROP DATABASE IF EXISTS pruebas;
CREATE DATABASE pruebas;

Creación de una tabla Editar

USE pruebas;

CREATE TABLE persona(
  id INT NOT NULL,
  nombre VARCHAR(16) NOT NULL,
  apellidos VARCHAR(64) NOT NULL DEFAULT ''
);

Modificación de una tabla Editar

USE pruebas;

ALTER TABLE persona
  MODIFY nombre VARCHAR(32) NOT NULL,
  ADD edad INT NOT NULL;

Cambio de nombre de una tabla Editar

USE pruebas;

RENAME TABLE persona TO individuo;

Borrado de una tabla Editar

USE pruebas;

DROP TABLE IF EXISTS individuo;

Tipos de tabla Editar

¿Qué tipos de tabla puede utilizar en el servidor actual?

SHOW ENGINES;

Utilice la siguiente instrucción para ver el tipo de una determinada tabla:

SHOW CREATE TABLE nombre_tabla;

InnoDB Editar

Creación de la tabla:

USE pruebas;

DROP TABLE IF EXISTS cuenta;
CREATE TABLE cuenta(
  idcliente INT NOT NULL,
  saldo DOUBLE NOT NULL DEFAULT 0
)
ENGINE = InnoDB;

Inserción de valores iniciales:

USE pruebas;

INSERT INTO cuenta VALUES(212, 220.50);
INSERT INTO cuenta VALUES(555, 1200.00);

Transferencia:

USE pruebas;

UPDATE
  cuenta
SET
  saldo = saldo + 300
WHERE
  idcliente = 212;
  
UPDATE
  cuenta
SET
  saldo = saldo - 300
WHERE
  idcliente = 555;

Transferencia segura gracias a las transacciones:

USE pruebas;

START TRANSACTION;

UPDATE
  cuenta
SET
  saldo = saldo + 300
WHERE
  idcliente = 212;
  
UPDATE
  cuenta
SET
  saldo = saldo - 300
WHERE
  idcliente = 555;
  
COMMIT;

MERGE Editar

Una tabla para guardar citas:

USE pruebas;

CREATE TABLE citas(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

Varias tablas, una por mes, para la misma tarea:

USE pruebas;

CREATE TABLE citas_enero(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_febrero(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_marzo(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_abril(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_mayo(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_junio(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_julio(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_agosto(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_septiembre(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_octubre(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_noviembre(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

CREATE TABLE citas_diciembre(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MyISAM;

Agrupar estas doce tablas en una sola de tipo MERGE:

USE pruebas;

DROP TABLE IF EXISTS citas; 
CREATE TABLE citas(
  id INT NOT NULL,
  descripcion VARCHAR(64) NOT NULL,
  fecha DATE NOT NULL,
  hora TIME NOT NULL
)
ENGINE = MERGE
UNION = (
  citas_enero,
  citas_febrero,
  citas_marzo,
  citas_abril,
  citas_mayo,
  citas_junio,
  citas_julio,
  citas_agosto,
  citas_septiembre,
  citas_octubre,
  citas_noviembre,
  citas_diciembre
);

Inserción en la tabla de un mes:

USE pruebas;

INSERT INTO citas_enero VALUES(
  1,
  'Una cita',
  '2006-01-07',
  '17:00'
);

Consulta en la tabla MERGE:

USE pruebas;

SELECT * FROM citas;

Tipos de datos Editar

Tipos de texto Editar

Tabla para pruebas:

USE pruebas;

DROP TABLE IF EXISTS texto;
CREATE TABLE texto(
  cadena VARCHAR(32)
);

Inserción de valores:

USE pruebas;

INSERT INTO texto VALUES('d');
INSERT INTO texto VALUES('a');
INSERT INTO texto VALUES('A');
INSERT INTO texto VALUES('b');

Consulta de los registros, por orden alfabético:

USE pruebas;

SELECT
  *
FROM
  texto
ORDER BY
  cadena;

Volver a crear la tabla, pero con una diferencia:

USE pruebas;

DROP TABLE IF EXISTS texto;
CREATE TABLE texto(
  cadena VARCHAR(32) BINARY
);

Volver a insertar los valores:

USE pruebas;

INSERT INTO texto VALUES('d');
INSERT INTO texto VALUES('a');
INSERT INTO texto VALUES('A');
INSERT INTO texto VALUES('b');

Consulta de los registros, por orden alfabético. Ahora el resultado será diferente:

USE PRUEBAS;

SELECT
  *
FROM
  texto
ORDER BY
  cadena;

Un ejemplo de enumeración:

USE pruebas;

DROP TABLE IF EXISTS pelicula;
CREATE TABLE pelicula(
  titulo VARCHAR(64),
  soporte ENUM(
    'VHS',
    'DVD'
  )
);

Inserciones:

USE pruebas;

INSERT INTO
  pelicula
VALUES
  ('Alien', 'VHS');
  
INSERT INTO
  pelicula
VALUES
  ('TRON', 'DVD');

Inserción de un valor no previsto:

USE pruebas;

INSERT INTO pelicula VALUES(
  'Blade Runner', 'VCD'
);

Ejemplo de conjuntos:

USE pruebas;

DROP TABLE IF EXISTS pelicula;
CREATE TABLE pelicula(
  titulo VARCHAR(64),
  categoria SET(
    'ciencia-ficción',
    'terror',
    'thriller'
  )
);

Inserciones:

USE pruebas;

INSERT INTO
  pelicula
VALUES(
  'Alien',
  'ciencia-ficción,terror'
);

INSERT INTO
  pelicula
VALUES(
  'Blade Runner',
  'ciencia-ficción,thriller'
);

INSERT INTO
  pelicula
VALUES(
  'Contact',
  'ciencia-ficción'
);

Tipos numéricos Editar

Tabla con un campo de tipo INT:

USE pruebas;

DROP TABLE IF EXISTS enteros;
CREATE TABLE enteros(entero INT);

Misma tabla, sólo valores sin signo:

USE pruebas;

DROP TABLE IF EXISTS enteros;
CREATE TABLE enteros(entero INT UNSIGNED);

Uso de ZEROFILL:

USE pruebas;

DROP TABLE IF EXISTS enteros;
CREATE TABLE enteros(
  entero INT(4) UNSIGNED ZEROFILL
);

Inserciones de prueba:

USE pruebas;

INSERT INTO enteros values(1);
INSERT INTO enteros values(10);
INSERT INTO enteros values(100);
INSERT INTO enteros values(1000);

Inserción de un valor de más de cuatro dígitos:

USE pruebas;

INSERT INTO enteros VALUES(10000);

Para jugar con los números en coma flotante, cree una tabla de pruebas:

USE pruebas;

DROP TABLE IF EXISTS decimales;
CREATE TABLE decimales(
  precio FLOAT(6,2)
);

Inserte algunos valores de prueba:

USE pruebas;

INSERT INTO decimales VALUES(29.99);
INSERT INTO decimales VALUES(30);
INSERT INTO decimales VALUES(199.994);
INSERT INTO decimales VALUES(199.995);

Si realiza una consulta de selección podrá comprobar que el tercer valor que obtiene no es el mismo que insertó. Lo mismo ocurre con el cuarto.

Otro ejemplo, otra tabla:

USE pruebas;

DROP TABLE IF EXISTS decimales2;
CREATE TABLE decimales2(
  precio FLOAT(10,5)
);

Una inserción:

USE pruebas;

INSERT INTO
  decimales2
VALUES(
  3835.38000
);

Comprobará que el valor obtenido en una consulta de selección no coincide con el insertado.

Fechas y horas Editar

Crear una tabla para probar:

USE pruebas;

DROP TABLE IF EXISTS pelicula;
CREATE TABLE pelicula(
  titulo VARCHAR(64),
  modificado TIMESTAMP
);

Insertar un registro:

USE pruebas;

INSERT INTO
  pelicula(titulo)
VALUES('Alieni');

Compruebe que el valor del campo modificado ha cambiado, aunque no se ha indicado valor alguno de forma explícita.

Modifique el título para que sea correcto:

USE pruebas;

UPDATE
  pelicula
SET
  titulo = 'Alien'
WHERE
  titulo = 'Alieni';

Podrá comprobar que el valor del campo modificado es diferente al anterior.

¡Interferencia de bloqueo de anuncios detectada!


Wikia es un sitio libre de uso que hace dinero de la publicidad. Contamos con una experiencia modificada para los visitantes que utilizan el bloqueo de anuncios

Wikia no es accesible si se han hecho aún más modificaciones. Si se quita el bloqueador de anuncios personalizado, la página cargará como se esperaba.