CreacióN De Objetos En MySQL

Post on 13-Jun-2015

9.956 views 2 download

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

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

Creación de una tabla

• Se usa la orden CREATE TABLE

CREATE TABLE NombreTabla

(Columna1 Tipo_dato [NOT NULL],

Columna2 Tipo_dato [NOT NULL],

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

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)

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.

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));

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é?

restricciones. primary key

• PRIMARY KEY para añadir claves primarias.

CREATE TABLE provincias(

codigo INTEGER PRIMARY KEY,

nombre VARCHAR(20) NOT NULL);

Restricciones. primary key

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

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

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));

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’);

valores por defecto.default

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

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

SELECT * FROM ciudades;

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.

AUTO_INCREMENT

CREATE TABLE animales(

id INT NOT NULL AUTO_INCREMENT,

nombre VARCHAR(30) NOT NULL,

PRIMARY KEY(id));

AUTO_INCREMENT

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

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

• SELECT * FROM animales;

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)

CLAVES AJENAS

CREATE TABLE personas(

nombre VARCHAR(20),

edad INTEGER NOT NULL,

provincia INTEGER,

PRIMARY KEY(nombre),

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

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.

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.

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;

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;

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);

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

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.

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

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.

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)));

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)));

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;

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;

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

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;

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’));

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);

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);

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;

BORRADO DE TABLAS

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

• DROP TABLE tabla1, tabla2.

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.

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.

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.

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);

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;

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;

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;