CreacióN De Objetos En MySQL

43
CREACIÓN DE OBJETOS EN MYSQL OPERACIONES CON BASES DE DATOS OFIMÁTICAS Y CORPORATIVAS

description

Presentación que muestra la forma de crear tablas, vistas y otros objetos en bases de datos MySQL

Transcript of CreacióN De Objetos En MySQL

Page 1: CreacióN De Objetos En MySQL

CREACIÓN DE OBJETOS EN

MYSQL

CREACIÓN DE OBJETOS EN

MYSQLOPERACIONES CON BASES DE DATOS

OFIMÁTICAS Y CORPORATIVASOPERACIONES CON BASES DE DATOS

OFIMÁTICAS Y CORPORATIVAS

Page 2: CreacióN De Objetos En MySQL

Creación de una tabla

• Se usa la orden CREATE TABLE

CREATE TABLE NombreTabla

(Columna1 Tipo_dato [NOT NULL],

Columna2 Tipo_dato [NOT NULL],

..........................);

Page 3: CreacióN De Objetos En MySQL

Tipos de datos

• Tipo_dato indica el tipo de dato de cada columna. Los más utilizados son los siguientes:

INTEGER: Número

DECIMAL(N,M): Número de N cifras con M decimales

DATE: Fecha (AAAA-MM-DD)

TIME: Hora (HH:MM:SS)

Page 4: CreacióN De Objetos En MySQL

Tipos de datos

VARCHAR(N): Cadena variable de longitud N (máximo 255)

TEXT: Cadena variable de longitud tan grande como se quiera.

Hay más tipos de datos: TINYINT, SAMLLINT, FLOAT, DOUBLE, TIMESTAMP, BLOB, etc.

Page 5: CreacióN De Objetos En MySQL

creación de una tabla

CREATE TABLE alumnos(

numero_matricula INTEGER NOT NULL,

nombre VARCHAR(15) NOT NULL,

fecha_nacimiento DATE,

direccion VARCHAR(30),

localidad VARCHAR(15));

Page 6: CreacióN De Objetos En MySQL

creación de una tabla

• INSERT INTO ALUMNOS VALUES(1234,‘Alejandro Pérez’,‘1990/06/05’,’C/ Junterones, 9’,‘Lorca’);

• INSERT INTO ALUMNOS(numero_matricula, direccion) VALUES(4321,’C/ Gran Vía, 4’);

• Error en la última sentencia. ¿Por qué?

Page 7: CreacióN De Objetos En MySQL

restricciones. primary key

• PRIMARY KEY para añadir claves primarias.

CREATE TABLE provincias(

codigo INTEGER PRIMARY KEY,

nombre VARCHAR(20) NOT NULL);

Page 8: CreacióN De Objetos En MySQL

Restricciones. primary key

INSERT INTO provincias VALUES(1,‘Lorca’);

INSERT INTO provincas VALUES(1,‘Alhama de Murcia’) => ERROR

Page 9: CreacióN De Objetos En MySQL

restricciones.primary key

CREATE TABLE

(calle VARCHAR(20) NOT NULL,

numero INT NOT NULL,

piso INT NOT NULL,

puerta INT NOT NULL,

codigo_postal INT,

PRIMARY KEY(calle, numero,piso,puerta));

Page 10: CreacióN De Objetos En MySQL

valores por defecto.default

• Para asignar valores por defecto a las columnas se usa DEFAULT.

CREATE TABLE ciudades

(nombre VARCHAR(20),

habitantes INTEGER,

pais VARCHAR(20) DEFAULT ‘España’);

Page 11: CreacióN De Objetos En MySQL

valores por defecto.default

INSERT INTO ciudades(nombre,habitantes) VALUES(‘MURCIA’,300000);

INSERT INTO ciudades(nombre,habitantes) VALUES(‘ALICANTE’,250000);

SELECT * FROM ciudades;

Page 12: CreacióN De Objetos En MySQL

AUTO_INCREMENT• Se utiliza para columnas con

valores enteros y definidas como claves primarias

• Sólo puede haber una columna AUTO_INCREMENT por cada tabla.

• Cuando se inserta un valor NULL o 0 en una columna AUTO_INCREMENT, la columna tomará el valor mayor actual para la columna +1.

Page 13: CreacióN De Objetos En MySQL

AUTO_INCREMENT

CREATE TABLE animales(

id INT NOT NULL AUTO_INCREMENT,

nombre VARCHAR(30) NOT NULL,

PRIMARY KEY(id));

Page 14: CreacióN De Objetos En MySQL

AUTO_INCREMENT

• INSERT INTO animales(nombre) VALUES(‘PERRO’);

• INSERT INTO animales(nombre) VALUES(‘GATO’);

• SELECT * FROM animales;

Page 15: CreacióN De Objetos En MySQL

CLAVES AJENAS

• Una clave ajena está formada por una varias columnas que están asociadas a una clave primaria de otra o de la misma tabla.

• Se pueden definir tantas como sea preciso.

• FOREIGN KEY(campo1) REFERENCES nombre_tabla(campo2)

Page 16: CreacióN De Objetos En MySQL

CLAVES AJENAS

CREATE TABLE personas(

nombre VARCHAR(20),

edad INTEGER NOT NULL,

provincia INTEGER,

PRIMARY KEY(nombre),

FOREIGN KEY(provincia) REFERENCES provincias(codigo));

Page 17: CreacióN De Objetos En MySQL

claves ajenas

• Las reglas que se pueden utilizar al definir claves ajenas son las siguientes.

• ON DELETE CASCADE: cuando se borran filas con claves primarias, también se borrarán las filas con las claves ajenas que las referencian.

• ON UPDATE CASCADE: cuando se actualicen filas con claves primarias, también se actualizarán las filas con las claves ajenas que las referencian.

Page 18: CreacióN De Objetos En MySQL

claves ajenas

• ON DELETE/UPDATE SET NULL: elimina o actualiza la clave primaria y automáticamente asigna valor nulo a la/s columna/s que formen parte de la clave ajena.

• ON DELETE/UPDATE NO ACTION: Valor por defecto. No se puede eliminar o modificar una clave primaria si es referenciada por una clave ajena.

Page 19: CreacióN De Objetos En MySQL

Claves ajenas

• ZONAS(cod_zona, nombre);

• PERSONAS(dni, nombre, dirección, población, codzona);

CREATE TABLE zonas(

cod_zona INT PRIMARY KEY,

nombre VARCHAR(15)) ENGINE=INNODB;

Page 20: CreacióN De Objetos En MySQL

Claves ajenas

CREATE TABLE peronas(

dni VARCHAR(10) PRIMARY KEY,

nombre VARCHAR(30),

codzona INTEGER NOT NULL,

FOREIGN KEY(codzona) REFERENCES zonas(cod_zona) ON DELETE CASCADE) ENGINE=INNODB;

Page 21: CreacióN De Objetos En MySQL

Restricción unique

• Evita valores repetidos en la misma columna.

• Admite valores NULL.

CREATE TABLE unica(

dni VARCHAR(10) PRIMARY KEY,

nombre VARCHAR(30) UNIQUE);

Page 22: CreacióN De Objetos En MySQL

Restricción unique

• Es similar a PRIMARY KEY

• Son posibles varias columnas UNIQUE definidas en una tabla

INSERT INTO unica VALUES(‘111’,‘Pepa’);

INSERT INTO unica VALUES(‘112’,‘Pepa’); => ERROR

Page 23: CreacióN De Objetos En MySQL

Verificación de restricciones. check

• Con una restricción de verificación se puede expresar una condición que ha de cumplirse para todas y cada una de las filas de la tabla.

• CHECK actúa como una cláusula WHERE

• Puede controlar los valores que se colocan en una columna.

Page 24: CreacióN De Objetos En MySQL

Verificación de restricciones. check

• Actualmente la cláusula CHECK no hace nada

• MySQL la proporciona por compatibilidad, para simplificar la portabilidad de código desde otros servidores SQL y para arrancar aplicaciones que crean tablas con referencias

Page 25: CreacióN De Objetos En MySQL

Verificación de restricciones. Ejemplo

• DNI no puede ser nulo

• La clave primaria es el DNI

• La edad ha de estar comprendida entre 5 y 20 años

• El nombre ha de estar en mayúsculas

• El curso sólo puede almacenar 1, 2 o 3 y no puede ser nulo.

Page 26: CreacióN De Objetos En MySQL

Verificación de restricciones. EjemploCREATE TABLE condiciones(

dni VARCHAR(10),

nombre VARCHAR(30),

edad INTEGER,

curso INTEGER NOT NULL,

CONSTRAINT clave_p PRIMARY KEY(dni),

CONSTRAINT comp_edad CHECK(edad BETWEEN 5 AND 20),

CONSTRAINT nombre_mayus CHECK(nombre=upper(nombre)),

CONSTRAINT comp_curso CHECK(curso IN(1,2,3)));

Page 27: CreacióN De Objetos En MySQL

Verificación de restricciones. Ejemplo

CREATE TABLE condiciones(

dni VARCHAR(10) NOT NULL PRIMARY KEY,

nombre VARCHAR(30) CHECK (nombre=UPPER(nombre)),

edad INTEGER CHECK(edad BETWEEN 5 AND 20),

curso INTEGER NOT NULL CHECK(curso IN(1,2,3)));

Page 28: CreacióN De Objetos En MySQL

Creación de una tabla con datos recuperados DE UNA CONSULTA

• Se lleva a cabo esta acción colacando AS al final de la orden CREATE TABLE

• CREATE TABLE NombreTabla(

• .......

• .......) AS consulta;

Page 29: CreacióN De Objetos En MySQL

Creación de una tabla con datos recuperados DE UNA CONSULTA

• No es necesario especificar tipos ni tamaño de las columnas, ya que vienen determinados por los tipos y tamaños de las recuperadas en la consulta.

• CREATE TABLE emple30 AS SELECT * FROM emple WHERE dept_no=30;

Page 30: CreacióN De Objetos En MySQL

MODIFICACIÓN DE TABLAS

• Con la orden ALTER TABLE.

• ADD para añadir columnas

• DROP para eliminar columnas

• MODIFY para modificar una columna

• ADD PRIMARY KEY para añadir una clave primaria

Page 31: CreacióN De Objetos En MySQL

Modificación de tablas• Añadimos a la tabla ejemplo2 dos

columnas: sexo e importe

• ALTER TABLE ejemplo2 ADD(sexo VARCHAR(1) NOT NULL, importe INTEGER);

• Modificamos las columnas sexo e importe

• ALTER TABLE ejemplo2 MODIFY sexo VARCHAR(10), MODIFY importe INTEGER;

Page 32: CreacióN De Objetos En MySQL

MODIFICACIÓN DE TABLAS

• Se añade a la columna SEXO una restricción para que sólo pueda almacenar los valores “Hombre”, “Mujer”.

• ALTER TABLE ejemplo2 ADD CHECK(sexo IN(‘Hombre’,‘Mujer’));

Page 33: CreacióN De Objetos En MySQL

MODIFICACIÓN DE TABLAS

• Eliminamos las columnas SEXO e importe de la tabla EJEMPLO2.

• ALTER TABLE ejemplo2 DROP COLUMN sexo, DROP COLUMN importe;

• Añadir restricción de clave primaria.

• ALTER TABLE ejemplo2 ADD PRIMARY KEY(dni);

Page 34: CreacióN De Objetos En MySQL

MODIFICACIÓN DE TABLAS

• Se borra la restricción de clave primaria

• ALTER TABLE ejemplo2 DROP PRIMARY KEY;

• Se añade restricción de clave ajena

• ALTER TABLE ejemplo2 ADD FOREIGN KEY(codig) REFERENCES provincias(codigo);

Page 35: CreacióN De Objetos En MySQL

MODIFICACIÓN DE TABLAS

• Cambiamos el nombre de la tabla

• ALTER TABLE ejemplo2 RENAME tablanueva;

• Se borra la restricción de clave ajena

• ALTER TABLE ejemplo2 DROP FOREIGN KEY clave_ajena;

Page 36: CreacióN De Objetos En MySQL

BORRADO DE TABLAS

• La orden DROP TABLE suprime una o varias tablas de la base de datos.

• DROP TABLE tabla1, tabla2.

Page 37: CreacióN De Objetos En MySQL

MANIPULACIÓN DE VIStas

• Una vista es una tabla lógica que permite acceder a la información de una o varias tablas.

• No contienen información por sí mismas, sino que su información está basada en la que contienen otras tablas.

• Si se suprime una tabla, la vista asociada se invalida.

Page 38: CreacióN De Objetos En MySQL

MANIPULACIÓN DE VISTAS

CREATE VIEW NombreVista(columna1, columna2, ....)

AS consulta;

• columna1, columna2 ... son los nombres de las columnas. Si no se ponen, se asumen los nombres de columna devueltos por la consulta.

Page 39: CreacióN De Objetos En MySQL

MANIPULACIÓN DE VISTAS

CREATE VIEW dep30

AS SELECT apellido,oficio,salario

FROM emple WHERE dept_no=30;

• La vista creada se puede usar como si se tratase de una tabla

• Se puede consultar, se pueden borrar filas, actualizar filas siempre y cuando las columnas a actualizar no sean expresiones.

Page 40: CreacióN De Objetos En MySQL

MANIPULACIÓN DE VISTAS

• Se pueden insertar registros en una vista siempre y cuando todas las columnas obligatorias de la tabla asociada estén presentes en la vista.

• La siguiente inserción da error, ¿por qué?

INSERT INTO dept30 VALUES(‘CASTILLO’,‘EMPLEADO’,1300);

Page 41: CreacióN De Objetos En MySQL

MANIPULACIÓN DE VISTAS

• Modificación en la vista del salario de los empleados (también se actualizan en la tabla emple)

• UPDATE dept30 SET sal=sal+1000;

• Borramos todos los registros de la vista (también se borran en la tabla EMPLE)

• DELTE FROM dept30;

Page 42: CreacióN De Objetos En MySQL

CREACIÓN DE VISTAS COMPLEJAS

• Se definen sobre más de una tablaCREATE VIEW emp_dept(emp_no,apellido,dept_no,dnombre)

AS SELECT emp_no,apellido,emple.dept_no,dnombre

FROM emple,depart

WHERE emple.dept_no=depart.dept_no;

Page 43: CreacióN De Objetos En MySQL

CREACIÓN DE VISTAS COMPLEJAS

• Creamos una vista con el número de empleados de cada departamento.

CREATE VIEW Contador AS

SELECT dept_no, count(*)

FROM emple

GROUP BY dept_no;