DAM - DAW - MP 0484 Bases de Dades - NF3
Pràctica 14: - EXERCICIS DDL
Aquesta pràctica la podem realitzar a la base test.
-
Crea una taula
DEPARTbasant-te en la següent informació. Confirma que s'ha creat la taula.Nom Columna Tipus de clau Nul/Únic Taula de claus foranes Columna de claus foranes Tipus de dada Longitud CODI_DEP PRIMARY KEY INT 2 NOM VARCHAR 20 En MariaDB i MySQL, la longitud dels numeros no es té en compte. Mana el tipus.
Possible Solució
CREATE TABLE DEPART( CODI_DEP INT(2) PRIMARY KEY, NOM VARCHAR(20) ); DESCRIBE DEPART;o bé si volem donar-li nom a la Clau Primària (que en MariaDB/MySQL no ens farà cas)
CREATE TABLE DEPART( CODI_DEP INT(2), NOM VARCHAR(20), CONSTRAINT PK_DEPART PRIMARY KEY(CODI_DEP) ); DESCRIBE DEPART; -
Crea una taula
EMPLEATbasant-te amb el següent esquema:Nom Columna Tipus de clau Nul/Únic Taula de claus foranes Columna de claus foranes Tipus de dada Longitud CODI_EMP PRIMARY KEY INT 4 NOM VARCHAR 25 OFICI VARCHAR 12 CODI_DEP DEPART CODI_DEP INT 2 Possible Solució
CREATE TABLE EMPLEAT( CODI_EMP INT(4) PRIMARY KEY, NOM VARCHAR(25), OFICI VARCHAR(12), CODI_DEP INT(2), FOREIGN KEY (CODI_DEP) REFERENCES DEPART(CODI_DEP) ); DESCRIBE EMPLEAT;o bé si volem donar-li nom a la Clau Primària (que en MariaDB/MySQL no ens farà cas) i a la clau forana
CREATE TABLE EMPLEAT( CODI_EMP INT(4), NOM VARCHAR(25), OFICI VARCHAR(12), CODI_DEP INT(2), CONSTRAINT PK_EMPLEAT PRIMARY KEY(CODI_EMP), CONSTRAINT FK_EMPLEAT_DEPART FOREIGN KEY(CODI_DEP) REFERENCES DEPART(CODI_DEP) ); DESCRIBE EMPLEAT; -
Modifica la taula
EMPLEATper permetre que el camp NOM tingui una mida de 30 caràcters.Possible solució
ALTER TABLE EMPLEAT MODIFY NOM VARCHAR(30); DESCRIBE EMPLEAT; -
Comprova que les taules
EMPLEATiDEPARTs’han creat al diccionari de dadesPossible solució
SELECT TABLE_NAME, TABLE_SCHEMA, TABLE_TYPE FROM information_schema.tables WHERE TABLE_NAME IN ('EMPLEAT', 'DEPART'); -
Crea una taula
EMPL2basant-te amb el següent esquema:Nom Columna Tipus de clau Nul/Únic Taula de claus foranes Columna de claus foranes Tipus de dada Longitud NUM PRIMARY KEY NOT NULL INT 4 NOM VARCHAR 25 OFICI VARCHAR 12 SOU DECIMAL 11,2 CODI_DEP DEPART CODI_DEP INT 4 En MariaDB i MySQL, la longitud dels numeros no es té en compte. Mana el tipus. Per tant, una columna
INT(4)pot referenciar una columnaINT(2)d'una altra taula.Possible Solució
CREATE TABLE EMPL2( CODI_EMP INT(4), NOM VARCHAR(25), OFICI VARCHAR(12), SOU DECIMAL(11,2), CODI_DEP INT(4), CONSTRAINT PK_EMPL2 PRIMARY KEY(CODI_EMP), CONSTRAINT FK_EMPL2_DEPART FOREIGN KEY(CODI_DEP) REFERENCES DEPART(CODI_DEP) ); DESCRIBE EMPL2; -
Elimina la taula
EMPLEAT. Confirma que s’ha esborrat consultant el diccionari de dades.Possible solució
DROP TABLE EMPLEAT; SELECT TABLE_NAME, TABLE_SCHEMA, TABLE_TYPE FROM information_schema.tables WHERE TABLE_NAME IN ('EMPLEAT', 'DEPART', 'EMPL2'); -
Canvia el nom de la taula
EMPL2perEMPLEAT. Confirma que s’ha fet el canvi consultant el diccionari de dades.Possible solució
RENAME TABLE EMPL2 TO EMPLEAT; SELECT TABLE_NAME, TABLE_SCHEMA, TABLE_TYPE FROM information_schema.tables WHERE TABLE_NAME IN ('EMPLEAT', 'DEPART', 'EMPL2'); -
Elimina la columna
SOUde la taulaEMPLEAT. Confirma que s’ha fet la modificació de la taula.Possible solució
ALTER TABLE EMPLEAT DROP COLUMN SOU; DESCRIBE EMPLEAT; -
Elimina les taules
EMPLEATiDEPART.Possible solució
DROP TABLE EMPLEAT; DROP TABLE DEPART;o bé en una sola comanda
DROP TABLE EMPLEAT, DEPART;Compte amb l'ordre de les taules. No podem eliminar una taula que té claus foranes apuntant a ella, per tant, cal eliminar primer les taules filles
Error en cas d'elimiar abans una taula pareERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails