Practica Introducción A MySQL - LDD
Practica Introducción A MySQL - LDD
En este apartado se presenta una visión general de SQL basada en la norma SQL-92
ampliamente implementada. El lenguaje SQL tiene varios componentes:
Lenguaje de definición de datos (LDD): El LDD de SQL proporciona órdenes para
la definición de esquemas de relación, borrado de relaciones, creación de índices y
modificación de esquemas de relación.
Lenguaje interactivo de manipulación de datos
(LMD): El LMD de SQL incluye un lenguaje de
consultas, basado tanto en el álgebra relacional como
en el cálculo relacional de tuplas. Incluye también
órdenes para insertar, borrar y modificar tuplas
(registros) de la base de datos.
El DDL (en inglés Data Definition Language, o DDL) es la parte del lenguaje SQL que
realiza la función de definición de datos del SGBD. Fundamentalmente se encarga
de la creación, modificación y eliminación de los objetos de la base de datos (es decir
de los metadatos). Por supuesto es el encargado de la creación de las tablas.
Cada usuario de una base de datos posee un esquema. El esquema suele tener el
mismo nombre que el usuario y sirve para almacenar los objetos de esquema, es
decir los objetos que posee el usuario.
Esos objetos pueden ser: tablas, vistas, índices y otros objetos relacionados con la
definición de la base de datos. Los objetos son manipulados y creados por los
usuarios.
1
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Los comandos más importantes del lenguaje de definición de datos (DDL) SQL son
los siguientes:
o CREATE TABLE
o CREATE INDEX
o ALTER TABLE
o RENAME TABLE
o DROP TABLE
o DROP INDEX
Para iniciar una nueva sesión contra el servidor de MySQL deberemos utilizar una
aplicación cliente que nos permita comunicar las peticiones que queremos indicarle
al servidor. Para iniciar un nuevo cliente: Abrir una consola del SO.
Veamos que significan cada uno de los parámetros pasados al cliente: u identifica
que usuario intenta acceder. h el host o máquina del cliente, identifica desde que
computador nos queremos conectar. p petición de password iterativo. Por defecto
nos estamos conectando como root (administrador) pero pueden conectarse al
sistema múltiples usuarios una vez que han sido agregados. Para salir del Shell mysql
exit
Comandos de MYSQL
mysql> help
2
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Desactivar tee
prompt Significado
3
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
4
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Lógicamente sólo es posible crear una base de datos si se tienen privilegios DBA
(DataBase Administrator).
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
}
CREATE DATABASE crea una base de datos con el nombre que se establece en
db_name. Para usar esta declaración, necesita el privilegio CREATE para la base de
datos. CREATE SCHEMA es sinónimo de CREATE DATABASE.
Cada uno create_option especifica una característica de la base de datos. Las
características de la base de datos se almacenan en el diccionario de datos.
5
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Este comando crea una base de datos con el nombre que se indique.
Ejemplo:
Cuando se usa la cláusula IF NOT EXISTS, MySQL devolverá una advertencia en lugar
de un error si la base de datos especificada ya existe.
Ejemplo:
Ejemplos:
Mysql nos devuelve error al intentar crear dos veces la misma base de datos (no
puede repetirse el nombre).
Al visualizar las advertencias de MySQL se aprecia que la base de datos anterior (db1)
no se creó porque ya existe.
6
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
USE db_name
El comando USE db_name le dice a MySQL que use la base de datos db_name como
la base de datos por defecto para los comandos siguientes. Sigue siendo la base
de datos por defecto hasta el final de la sesión o hasta que se realiza otro
comando USE.
Ejemplos:
SHOW DATABASES enumera las bases de datos en el host del servidor MySQL. SHOW SCHEMAS
es sinónimo de SHOW DATABASES.
La cláusula LIKE , si está presente, indica qué nombres de base de datos deben
coincidir. La cláusula WHERE se puede dar para seleccionar filas usando condiciones
más generales.
Solo ve las bases de datos para las que tiene algún tipo de privilegio, a menos que
tenga el privilegio global SHOW DATABASES.
7
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Ejemplo:
modificaciones:
[DEFAULT] CHARACTER SET nombre_charset
| [DEFAULT] COLLATE nombre_collate
Ejemplo
En este ejemplo se creará una base de datos llamada modificar con formato latin y
collation latin1_spanish_ci, luego se modifica a formato utf16 y collation
utf16_general_ci.
8
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
DROP DATABASE elimina todas las tablas de la base de datos y elimina la base de
datos. Para usar DROP DATABASE, necesita el privilegio DROP en la base de datos.
IF EXISTS se utiliza para evitar que se produzca un error si la base de datos no existe.
La declaración DROP DATABASE elimina del directorio de base de datos dado aquellos
archivos y directorios que MySQL puede crear durante el funcionamiento normal.
Ejemplos:
Antes de eliminar las bases de datos en los siguientes ejemplos, comprobaremos los
esquemas que han sido creados en el servidor, para ello se utiliza la sentencia SHOW
DATABASES:
9
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
En este ejemplo se elimina la base de datos db1 y luego comprobamos que se haya
eliminado:
para evitar que retorne error al eliminar una base de datos no existe, se utiliza IF
EXISTS:
10
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Sin embargo, como se mencionaba anteriormente esta sintaxis puede ser muy
compleja porque existen muchas opciones a la hora de crear una tabla, por lo que
una apreciación más extendida de la sintaxis CREATE TABLE podría ser de la siguiente
forma:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nombre_tabla
(create_definition,...)
[table_options]
[partition_options]
CREATE TABLE crea una tabla con el nombre dado. Debe tener el permiso CREATE
para la tabla. De forma predeterminada, las tablas se crean en la base de datos
predeterminada, utilizando el motor InnoDB de almacenamiento. Se produce un
error si la tabla existe, si no hay una base de datos predeterminada o si la base de
datos no existe.
Ejemplo:
Mysql> CREATE TABLE proveedores (nombre VARCHAR(25));
11
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Ejemplo:
En este caso con el comando anterior se crea una tabla llamada persona en la base
de datos en uso. La tabla contiene tres columnas, nombre, dirección y teléfono todas
de tipo carácter y de longitudes de 30, 40 y 15 respectivamente. Si se intenta guardar
en ellas valores que sobrepasen esos límites, serán truncados para poderlos
almacenar.
Ejemplo:
El siguiente ejemplo crea una tabla llamada "persona2" que contiene cinco
columnas: ID , Apellido , Nombre , Dirección y Ciudad :
CREATE TABLE persona2 (
ID INT,
Apellido VARCHAR(255),
Nombre VARCHAR (255),
Dirección VARCHAR (255),
Ciudad VARCHAR(255)
);
12
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Se puede observar que en esta ocasión no hubo necesidad de ejecutar la orden USE
base_de_datos, puesto que una vez se especifica la base de datos donde se trabajara
esta será la que permanezca en uso hasta finalizar la sesión o hasta especificar otra
base de datos con la orden USE nuevamente.
Ejemplo
CREATE TABLE usuario(
idsuario INT ,
nombre VARCHAR(30),
clave VARCHAR (30)
);
13
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
El comando SHOW TABLES le permite mostrar si una tabla es una tabla base o una
vista. Para incluir el tipo de tabla en el resultado, utilice la siguiente forma de SHOW
TABLES.
14
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Ejemplo:
15
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Ejemplo:
Mysql> DESCRIBE persona2 Apellido;
Esta instrucción tiene una repercusión más drástica que la instrucción: delete from.
16
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Sintaxis:
TRUNCATE TABLE nombre_tabla;
TRUNCATE TABLE vacía una tabla por completo. Requiere el privilegio DROP.
Lógicamente, TRUNCATE TABLEes similar a una DELETE declaración que elimina
todas las filas, o una secuencia de declaraciones DROP TABLE y CREATE TABLE.
Ejercicios Resueltos
1- Cree una tabla que contenga los siguientes atributos:
17
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Usuario
Columna Tipo de dato Longitud
ID_Usuario Entero 6
Nombre Cadena variable 25
Email Cadena variable 50
Fecha_Registro Cadena variable 20
Telefono Cadena fija 8
2- Escriba el código SQL necesario para crear la tabla Empleado con las siguientes
características:
Empleados
Columna Tipo de dato Longitud máx.
ID_Empleado INTEGER
Apellido VARCHAR 20
Nombre VARCHAR 10
Titulo VARCHAR 30
Titulo_Cortesia VARCHAR 25
Fecha_Nac DATE
Fecha_Alta DATE
Direccion VARCHAR 60
Ciudad VARCHAR 15
Region VARCHAR 15
Cod_Postal VARCHAR 10
Pais VARCHAR 15
Region VARCHAR 15
Cod_Postal CHAR 5
Ciudad VARCHAR 15
Telefono VARCHAR 8
Extension CHAR 4
Fotografia LONGBLOB
18
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Notas MEDIUMTEXT
Salario FLOAT
19
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Ejercicios Propuestos
1- Escriba el código SQL necesario para crear las siguientes tres tablas:
Tabla turista:
Tabla Hotel:
20
BASE DE DATOS I – LENGUAJE DE DEFINICIÓN DE DATOS
Tabla Reserva:
21