CREACIÓN DE OBJETOS EN MYSQL OPERACIONES 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 PRIMARY KEY para añadir claves primarias. CREATE TABLE provincias( codigo INTEGER PRIMARY KEY, nombre VARCHAR(20) NOT NULL);
Restricciones.  primary key primary key INSERT INTO provincias VALUES(1,‘Lorca’); INSERT INTO provincas VALUES(1,‘Alhama de Murcia’) => ERROR
restricciones. primary key 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 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 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. Ejemplo CREATE 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 tabla CREATE 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;

CreacióN De Objetos En MySQL

  • 1.
    CREACIÓN DE OBJETOSEN MYSQL OPERACIONES CON BASES DE DATOS OFIMÁTICAS Y CORPORATIVAS
  • 2.
    Creación de unatabla Se usa la orden CREATE TABLE CREATE TABLE NombreTabla (Columna1 Tipo_dato [NOT NULL], Columna2 Tipo_dato [NOT NULL], ..........................);
  • 3.
    Tipos de datosTipo_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)
  • 4.
    Tipos de datosVARCHAR(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.
  • 5.
    creación de unatabla CREATE TABLE alumnos( numero_matricula INTEGER NOT NULL, nombre VARCHAR(15) NOT NULL, fecha_nacimiento DATE, direccion VARCHAR(30), localidad VARCHAR(15));
  • 6.
    creación de unatabla 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é?
  • 7.
    restricciones. primarykey primary key PRIMARY KEY para añadir claves primarias. CREATE TABLE provincias( codigo INTEGER PRIMARY KEY, nombre VARCHAR(20) NOT NULL);
  • 8.
    Restricciones. primarykey primary key INSERT INTO provincias VALUES(1,‘Lorca’); INSERT INTO provincas VALUES(1,‘Alhama de Murcia’) => ERROR
  • 9.
    restricciones. primary keyprimary 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));
  • 10.
    valores por defecto.default 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’);
  • 11.
    valores por defecto.default default INSERT INTO ciudades(nombre,habitantes) VALUES(‘MURCIA’,300000); INSERT INTO ciudades(nombre,habitantes) VALUES(‘ALICANTE’,250000); SELECT * FROM ciudades;
  • 12.
    AUTO_INCREMENT Se utilizapara 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.
  • 13.
    AUTO_INCREMENT CREATE TABLEanimales( id INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(30) NOT NULL, PRIMARY KEY(id));
  • 14.
    AUTO_INCREMENT INSERT INTOanimales(nombre) VALUES(‘PERRO’); INSERT INTO animales(nombre) VALUES(‘GATO’); SELECT * FROM animales;
  • 15.
    CLAVES AJENAS Unaclave 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)
  • 16.
    CLAVES AJENAS CREATETABLE personas( nombre VARCHAR(20), edad INTEGER NOT NULL, provincia INTEGER, PRIMARY KEY(nombre), FOREIGN KEY(provincia) REFERENCES provincias(codigo));
  • 17.
    claves ajenas Lasreglas 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.
  • 18.
    claves ajenas ONDELETE/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.
  • 19.
    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;
  • 20.
    Claves ajenas CREATETABLE 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;
  • 21.
    Restricción unique Evitavalores repetidos en la misma columna. Admite valores NULL. CREATE TABLE unica( dni VARCHAR(10) PRIMARY KEY, nombre VARCHAR(30) UNIQUE );
  • 22.
    Restricción unique Essimilar 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
  • 23.
    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.
  • 24.
    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
  • 25.
    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.
  • 26.
    Verificación de restricciones.Ejemplo CREATE 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)));
  • 27.
    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)));
  • 28.
    Creación de unatabla 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;
  • 29.
    Creación de unatabla 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;
  • 30.
    MODIFICACIÓN DE TABLASCon 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
  • 31.
    Modificación de tablasAñ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;
  • 32.
    MODIFICACIÓN DE TABLASSe 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’));
  • 33.
    MODIFICACIÓN DE TABLASEliminamos 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);
  • 34.
    MODIFICACIÓN DE TABLASSe 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);
  • 35.
    MODIFICACIÓN DE TABLASCambiamos 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;
  • 36.
    BORRADO DE TABLASLa orden DROP TABLE suprime una o varias tablas de la base de datos. DROP TABLE tabla1, tabla2.
  • 37.
    MANIPULACIÓN DE VIStasUna 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.
  • 38.
    MANIPULACIÓN DE VISTASCREATE 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.
  • 39.
    MANIPULACIÓN DE VISTASCREATE 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.
  • 40.
    MANIPULACIÓN DE VISTASSe 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);
  • 41.
    MANIPULACIÓN DE VISTASModificació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;
  • 42.
    CREACIÓN DE VISTASCOMPLEJAS Se definen sobre más de una tabla CREATE 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;
  • 43.
    CREACIÓN DE VISTASCOMPLEJAS 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;