Professional Documents
Culture Documents
INTRODUCCIÓ
El DML (Llenguatge de Manipulación de Dades) és una de les parts fonamentals del
llenguatge SQL. Ho formen les instruccions capaces de modificar (afegir, canviar o
eliminar) les dades de les taules.
En totes les instruccions DML, l'única dada retornada pel sistema és el nombre de files
que s'han modificat en executar la instrucció.
Que queden en una cua d'instruccions, que permet tirar arrere. En aquest cas, es diu
que les instruccions de la cua estan pendents de validació, i l'usuari ha d'executar,
quan el creu convenient, una instrucció per a validar-les (anomenada COMMIT) o
una instrucció per a tirar arrere (anomenada ROLLBACK ).
Aquest funcionament implica que els efectes de les instruccions pendents de validació
no es veuen per la resta de connexions de la base de dades, però sí que són accessibles
des de la connexió on s'han efectuat. En executar la COMMIT, totes les connexions
accedeixen a l'efecte de les instruccions validades. En cas d'executar ROLLBACK, les
instruccions desapareixen de la cua i cap connexió (ni la pròpia ni la resta) no accedeix
als efectes corresponents, és a dir, és com si mai hagueren existit.
Així, per exemple, un SGBD MySQL funciona amb validació automàtica després de cada
instrucció d'actualització de dades no s'indica el contrari i, en canvi, un SGBD Oracle
funciona amb la cua d'instruccions pendents de confirmació.
SET autocommit = 0;
Recorda reconnectar amb el servidor perquè la nova configuració tinga efecte. Dues
opcions:
3. INSERCIÓ DE DADES
El comando INSERT de SQL permet introduir dades en una taula o en una vista de la
base de dades (les vistes no les considerarem). La sintaxi d’INSERT és la següent:
INSERT INTO nom_taula [(columna1 [, columna2]...)]
En ella podem distingir les paraules reservades INSERT INTO seguides del nom de la
taula en la qual guardarem les noves dades.
Opcionalment podem posar entre parèntesi els noms dels camps en en els camps en
els quals volem posar valors, si no els incloem, s'hauran de col·locar tots els valors en
el mateix ordre en què van ser creats els camps(és l'ordre de columnes segons les
retorna el comando DESCRIBE), perquè en cas contrari es produirà un error si els tipus
no coincideixen o s'emmagatzemarà la informació de manera errònia en cas que els
tipus de dades dels camps siguen compatibles.
Cada nova fila requereix un parèntesi amb els seus valors. Es poden introduir diverses
files amb un sol INSERT separant cada parèntesi amb comes.
En cada nova fila els valors han de correspondre's amb l'ordre de les columnes.
Suposem que tenim el següent disseny físic d'una taula (Comprova-ho en el SGBD) :
USE PROVA;
DATANAIX date);
Com es pot observar, els camps LOCALITAT i DATANAIX no són obligatoris pel que
podríem optar per no emplenar-los. En aqueix cas, hauríem de definir en INSERT quins
camps emplenarem i en quin ordre. Per exemple:
Si un camp té valor per defecte (DEFAULT) i l’INSERT no especifica valor per al camp,
se li asigna el valor per defecte.
També podem no especificar els camps a omplir i en aquest cas hem d'assignar valors
a tots els camps en l'ordre de creació. Per exemple:
És obligatori introduir valors per als camps COD i NOM. Aquests camps no poden tindre
valor NULL.
Columnes auto_increment
La columnes auto_increment tenen per objecte establir una clau quan no tenim en
una taula una clau clara.
Encara que també podrien tindre la restricció UNIQUE en lloc de la de Primary Key.
El seu objecte és que el sistema assigne un valor al camp de manera que sempre
assigna un valor diferent (d’acord a una secuencia).
També és possible inserir dades en una taula que hagen sigut obtinguts d'una consulta
realitzada a una altra taula o altres taules. La seua forma és:
SELECT ...
Ha de respectar-se el que s'ha dit anteriorment respecte als camps. La consulta SELECT
ha de retornar la mateixa quantitat i tipus de camps compatibles amb els definits en la
taula.
Com en el cas anterior, podem optar per especificar o no els camps a omplir. Per
exemple, suposant que disposem d'una taula BUS_OSUNA amb el següent disseny:
NOM VARCHAR(50));
RESUM INSERT
Podem inserir en una taula el resultat d'una consulta sobre una altra taula. En aquest cas
normalment s'inseriran diverses files amb una sola sentència. Utilitzarem el següent format:
Notació: la llista de columnes en les quals inserim va és opcional, per la qual cosa va entre
claudàtors.
En el format anterior podem destacar:
· La llista de columnes és opcional però haurà d'especificar-se quan les columnes que retorna
la consulta no coincideixen en número o en ordre amb les columnes de la taula destine.
· La consulta pot ser qualsevol comando de selecció vàlid sempre que existisca una
correspondència entre les columnes retornades i les columnes de la taula destine, o la llista de
columnes.
EXERCICIS BD JARDINERIA
Creeu les taules PedidosHistorico i DetallePedidos_historico amb els camps i les
restriccions següents que es corresponen amb els de Pedidos i DetallePedidos.
Per a PedidosHistorico afegirem un camp, FechaIntro, on introduirem la data
actual.
En el cas de DetallePedidos_historico, la clau aliena serà cap a
PedidosHistorico.