

























































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Este documento proporciona una introducción a las bases de datos relacionales, centrándose en el sistema de gestión de bases de datos mysql. Se explica la creación de bases de datos, tablas y columnas, incluyendo la definición de tipos de datos, valores por defecto, claves primarias y comentarios. También se abordan las operaciones de modificación de tablas, inserción de filas y el uso de operadores booleanos y aritméticos. El documento incluye ejemplos prácticos de código sql para ilustrar los conceptos.
Tipo: Esquemas y mapas conceptuales
1 / 65
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
ÍNDICE
Introducción a MySQL
Crear una base de datos
mysql>CREATE DATABASE prueba; Query OK, 1 row affected (0.03 sec)
mysql>SHOW DATABASES; +--------------------+ | Database | +--------------------+ | mysql | | prueba | | test | +--------------------+ 3 rows in set (0.00 sec)
mysql>USE prueba; Database changed
Valores nulos
mysql>CREATE TABLE ciudad1 (nombre CHAR(20) NOT NULL, poblacion INT NULL); Query OK, 0 rows affected (0.98 sec) Valores por defecto
mysql>CREATE TABLE ciudad2 (nombre CHAR(20) NOT NULL, poblacion INT NULL DEFAULT 5000); Query OK, 0 rows affected (0.09 sec)
Claves Primarias
Para claves primarias t ambién se puede definir una clave primaria sobre un atributo, usando la palabra clave KEY o PRIMARY KEY. Sólo puede existir una clave primaria en cada tabla, y el atributo sobre el que se define una clave primaria no puede tener valores NULL. Si esto no se especifica de forma explícita, MySQL lo hará de forma automática. Por ejemplo, si queremos asignar la clave primaria a “ nombre” de la tabla de ciudades, crearemos la tabla así: mysql> CREATE TABLE ciudad3 (nombre CHAR(20) NOT NULL PRIMARY KEY, poblacion INT NULL DEFAULT 5000); Query OK, 0 rows affected (0.20 sec) Usar NOT NULL PRIMARY KEY equivale a PRIMARY KEY , NOT NULL KEY o sencillamente KEY. Existe una sintaxis alternativa para crear claves primarias, que en general es preferible, ya que es más potente. De hecho, la anterior es un alias para la forma general, que no admite todas las funciones (como por ejemplo, crear claves primarias sobre varias columnas). Veremos esta otra alternativa más adelante.
Columnas Autoincrementadas
mysql>CREATE TABLE ciudad5 (clave INT AUTO_INCREMENT PRIMARY KEY, -> nombre CHAR(20) NOT NULL, -> poblacion INT NULL DEFAULT 5000); Query OK, 0 rows affected (0.11 sec) Para establecer un número específico del que partiren el auto_increment hay que crear la tabla de la siguiente manera:
Query OK, 0 rows affected (0.28 sec) mysql> describe prueba; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec)
Comentarios
mysql>CREATE TABLE ciudad -> (clave INT AUTO_INCREMENT PRIMARY KEY COMMENT 'Clave principal', -> nombre CHAR(50) NOT NULL, -> poblacion INT NULL DEFAULT 5000); Query OK, 0 rows affected (0.08 sec)
Modificar estructura de una tabla
mysql>ALTER TABLE ciudad6 RENAME granciudad; Query OK, 0 rows affected (0.03 sec)
mysql>ALTER TABLE granciudad DROP COLUMN poblacion; Query OK, 0 rows affected (1.28 sec) Records: 0 Duplicates: 0 Warnings: 0
mysql>ALTER TABLE granciudad DROP PRIMARY KEY; Query OK, 1 row affected (1.20 sec) Records: 1 Duplicates: 0 Warnings: 0
mysql>ALTER TABLE granciudad ADD fecha date; Query OK, 1 row affected (1.20 sec) Records: 1 Duplicates: 0 Warnings: 0
mysql>ALTER TABLE granciudad ADD origen VARCHAR(50) AFTER nombre; Query OK, 0 rows affected (0.70 sec) Records: 0 Duplicates: 0 Warnings: 0
mysql>ALTER TABLE granciudad ADD id INT FIRST; Query OK, 0 rows affected (0.72 sec) Records: 0 Duplicates: 0 Warnings: 0
mysql>ALTER TABLE granciudad ADD PRIMARY KEY(id);
mysql>ALTER TABLE granciudad MODIFY COLUMN id INT auto_increment;
Query OK, 0 rows affected (0.08 sec)
Query OK, 0 rows affected (0.00 sec)
Además existe una alternativa que consiste en indicar un valor para cada columna:
Query OK, 1 row affected (0.08 sec) mysql> select * from granciudad; +------+------+-----------+----------+------------+ | id2 | id | nombre | origen | fecha | +------+------+-----------+----------+------------+ | 1 | 1 | barcelona | barcino | 2011-01-01 | | 2 | 2 | madrid | madrilus | 1111-01-02 | | 3 | 3 | valencia | valentia | 3214-01-03 | | NULL | 4 | zaragoza | NULL | NULL | | NULL | 5 | Bilbao | NULL | NULL | +------+------+-----------+----------+------------+ 5 rows in set (0.01 sec)
Reemplazar Filas
partimos de esta tabla: mysql> select * from granciudad; +----+----------+----------+------------+ | id | nombre | origen | fecha | +----+----------+----------+------------+ | 2 | madrid | madrilus | 1111-01-02 | | 3 | valencia | valentia | 3214-01-03 | | 4 | zaragoza | NULL | NULL | | 5 | Bilbao | NULL | NULL | +----+----------+----------+------------+ 4 rows in set (0.00 sec) Siendo “id” la PRIMARY KEY, queremos reemplazar la columna ‘origen’ de Zaragoza de NULL a ‘caesaraugusta’: mysql> REPLACE INTO granciudad (id, nombre, origen) VALUES (4,'zaragoza','caesaraugusta'); Query OK, 2 rows affected (0.03 sec) mysql> SELECT * FROM granciudad; +----+----------+---------------+------------+ | id | nombre | origen | fecha | +----+----------+---------------+------------+ | 2 | madrid | madrilus | 1111-01-02 | | 3 | valencia | valentia | 3214-01-03 | | 4 | zaragoza | caesaraugusta | NULL | | 5 | Bilbao | NULL | NULL | +----+----------+---------------+------------+ 4 rows in set (0.00 sec)
Eliminar Filas
Query OK, 5 rows affected (0.05 sec) En este caso se han eliminado TODAS las filas de la tabla ‘ciudades’. Si deseamos eliminar solo determinadas filas usamos la cláusula WHERE: filas. mysql> SELECT * FROM granciudad; +----+----------+----------------+------------+ | id | nombre | origen | fecha | +----+----------+----------------+------------+ | 2 | madrid | ciudad_iberica | 1111-01-02 | | 3 | valencia | ciudad_iberica | 3214-01-03 | | 4 | zaragoza | caesaraugusta | NULL | | 5 | Bilbao | ciudad_iberica | NULL | | 6 | malaga | ciudad_iberica | NULL | +----+----------+----------------+------------+ 5 rows in set (0.00 sec) mysql> DELETE FROM granciudad WHERE id=6; Query OK, 1 row affected (0.08 sec) mysql> SELECT * FROM granciudad; +----+----------+----------------+------------+ | id | nombre | origen | fecha | +----+----------+----------------+------------+ | 2 | madrid | ciudad_iberica | 1111-01-02 | | 3 | valencia | ciudad_iberica | 3214-01-03 | | 4 | zaragoza | caesaraugusta | NULL | | 5 | Bilbao | ciudad_iberica | NULL | +----+----------+----------------+------------+ 4 rows in set (0.00 sec) Como podemos observar solo se eliminó la fila cuyo id era 6, es decir, la de ‘malaga’
También podemos usar las cláusulas LIMIT y ORDER BY en la sentencia DELETE , por ejemplo, para eliminar los últimos o primeros registros de una tabla. Por ejemplo , si queremos eliminar las dos primeras ciudades que aparecen en la tabla ordenando alfabéticamente por su nombre realizaríamos lo siguiente: mysql> select * from granciudad; +----+----------+----------------+------------+ | id | nombre | origen | fecha | +----+----------+----------------+------------+ | 2 | madrid | ciudad_iberica | 1111-01-02 | | 3 | valencia | ciudad_iberica | 3214-01-03 | | 4 | zaragoza | caesaraugusta | NULL | | 5 | Bilbao | ciudad_iberica | NULL | +----+----------+----------------+------------+ 4 rows in set (0.00 sec) mysql> DELETE FROM granciudad ORDER BY nombre ASC LIMIT 2; Query OK, 2 rows affected (0.27 sec) mysql> SELECT * from granciudad; +----+----------+----------------+------------+ | id | nombre | origen | fecha | +----+----------+----------------+------------+ | 3 | valencia | ciudad_iberica | 3214-01-03 | | 4 | zaragoza | caesaraugusta | NULL | +----+----------+----------------+------------+ 2 rows in set (0.00 sec) mysql> Como podemos observar ha eliminado ‘madrid’ y ‘bilbao’ que son las dos primeras ciudades si ordenamos la lista alfabéticamente por el campo ‘nombre’. Si en LIMIT hubiésemos puesto 1 solo habría eliminado Bilbao. Si hubiésemos puesto 3 habría eliminado ‘bilbao’ ‘madrid’ y ‘valencia’.